PDA

Просмотр полной версии : [Function] SendFormatedText



Pr0C
24.06.2013, 15:27
Функция совмещает в себе функцию format и SendClientMessage. То есть, вам не придется создавать переменную, форматировать текст через format и потом уже отправлять сообщение через SendClientMessage.


stock SendFormatedText(playerid, color, fstring[], {Float, _}:...)
{
#if !defined BYTES_PER_CELL
const BYTES_PER_CELL = cellbits/charbits;
#endif
static const STATIC_ARGS = 3;
new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
if(n == 0)
return SendClientMessage(playerid, color, fstring);
new message[128], arg_start, arg_end;
#emit CONST.alt fstring
#emit LCTRL 5
#emit ADD
#emit STOR.S.pri arg_start

#emit LOAD.S.alt n
#emit ADD
#emit STOR.S.pri arg_end
do{
#emit LOAD.I
#emit PUSH.pri
arg_end -= BYTES_PER_CELL;
#emit LOAD.S.pri arg_end
}while(arg_end > arg_start);

#emit PUSH.S fstring
#emit PUSH.C 128
#emit PUSH.ADR message

n += BYTES_PER_CELL * 3;
#emit PUSH.S n
#emit SYSREQ.C format

n += BYTES_PER_CELL;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4

return SendClientMessage(playerid, color, message);
}

Пример использования функции:

public OnPlayerConnect(playerid)
{
new pname[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, pname, sizeof(pname));
SendFormatedText(playerid, 0xFFFFFF, "На сервер зашел %s", pname);
return 1;
}