Составили код замены идентификаторов на ники (например: привет, @0" меняется на "привет, [ACF]OKStyle"). Полгода назад допилили на заказ, решил показать. На скрине недоработанная версия. Представленная срабатывает на все 100.
Update: в новых версиях SA-MP, начиная с 0.3.7, поменяли или испортили механизм получения размера text. Поэтому код пришлось переделать:
PHP:
public OnPlayerText(playerid, text[])
{
new PlayerName[MAX_PLAYER_NAME], message[144];
strcat(message, text);
for(new i = strfind(message, "@", true), a, tmp[4]; i != -1; i = strfind(message, "@", true, i + 1))
{
++i;
while(48 <= message[i] <= 57 && a != 4) tmp[a++] = message[i++];
if(tmp[0] == EOS) continue;
GetPlayerName(strval(tmp), PlayerName, sizeof(PlayerName));
strdel(message, i - a - 1, i);
strins(message, PlayerName, i - a - 1, 144);
a = 0;
}
SendPlayerMessageToAll(playerid, message);
return 0;
}
PHP:
public OnPlayerText(playerid, text[])
{
new PlayerName[MAX_PLAYER_NAME];
for(new i = strfind(text, "@", true), a = 0, tmp[4]; i != -1; i = strfind(text, "@", true, i))
{
++i, a = 0;
while(48 <= text[i] <= 57 && a != 4) tmp[a++] = text[i++];
if(tmp[0] == EOS) continue;
GetPlayerName(strval(tmp), PlayerName, sizeof(PlayerName));
strdel(text, i - a - 1, i);
strins(text, PlayerName, i - a - 1, 128);
}
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
format(text, 128, "%s: {FFFFF}%s", PlayerName, text);
SendClientMessageToAll(GetPlayerColor(playerid), text);
return 0;
}
Последнее редактирование: