1. Используй упакованные строки, ибо strcat позволяет это сделать.
PHP код:
string[MAX_CHATBUBBLE_LENGTH+1 char];
PHP код:
strcat(string, params);
strcat(string, !" (");
strcat(string, name);
strcat(string, !")");
2. Использовать функцию GetPlayerPoolSize при каждой итерации - плохо.
PHP код:
for(new i = -1; ++i != GetPlayerPoolSize();)
3. Не стоит забывать о тех, кто ещё сидит на версии 0.3e.
PHP код:
#if defined foreach
foreach (new i: Player)
#else
#if defined GetPlayerPoolSize
for (new i = GetPlayerPoolSize(); --i != -1;)
#else
for (new i = -1; ++i != MAX_PLAYERS;)
#endif
if (IsPlayerConnected(i) == 0 || IsPlayerNPC(i) != 0) continue;
else
#endif
{}
UPD:
PHP код:
CMD:do(playerid, params[])
{
if (isnull(params))
return SendClientMessage(playerid, -1, !"Введите: /do <текст>");
new
Float:PosX, Float:PosY, Float:PosZ, world, interior,
name[MAX_PLAYER_NAME], string[MAX_CHATBUBBLE_LENGTH+1 char];
GetPlayerPos(playerid, PosX, PosY, PosZ);
GetPlayerName(playerid, name, sizeof(name));
world = GetPlayerVirtualWorld(playerid);
interior = GetPlayerInterior(playerid);
strcat(string, params);
strcat(string, !" (");
strcat(string, name);
strcat(string, !")");
#if defined foreach
foreach(new i: Player)
#else
#if defined GetPlayerPoolSize
for(new i = GetPlayerPoolSize() + 1; --i != -1;)
#else
for(new i = -1; ++i != MAX_PLAYERS;)
#endif
if ((0 == IsPlayerConnected(i)) || (0 != IsPlayerNPC(i))) continue;
else
#endif
{
if(0 == IsPlayerInRangeOfPoint(i, 15.0, PosX, PosY, PosZ)) continue;
if((GetPlayerVirtualWorld(i) != world )
|| (GetPlayerInterior(i) != interior)) continue;
SendClientMessage(i, 0xE600FFFF, string);
}
SetPlayerChatBubble(playerid, params, 0xE600FFFF, 30.0, 10000);
return 1;
}