Originally Posted by OKStyle
pawn Код:
public OnPlayerText(playerid, text[]) { new PlayerName[MAX_PLAYER_NAME], string[144]; strcat(string, text); for(new i = strfind(string, "@", true), a = 0, tmp[4]; i != -1; i = strfind(string, "@", true, i)) { ++i, a = 0; while(48 <= string[i] <= 57 && a != 4) tmp[a++] = string[i++]; if(tmp[0] == EOS) continue; GetPlayerName(strval(tmp), PlayerName, sizeof(PlayerName)); format(PlayerName, MAX_PLAYER_NAME + 20, "{%06x}%s{FFFFFF}", GetPlayerColor(strval(tmp)) >>> 8, PlayerName); strdel(string, i - a - 1, i); strins(string, PlayerName, i - a - 1); } GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); format(string, sizeof(string), "%s: {FFFFFF}%s", PlayerName, string); SendClientMessageToAll(GetPlayerColor(playerid), string); return 0; }
Составили код замены идентификаторов на ники (например: привет, @0" меняется на "привет, [ACF]OKStyle"). Но не смотря на return 0, сообщение без замены выводится следом за сообщением, в котором ник вставлен (т.е. содержимое text[] посылается в чат). Если ID отсутствует, то ник не вставляется в сабж (так задумано). Ну и нестабильно работает при длинных строках. Где мы дно?
|