stock SendMes(playerid, color, fstring[], {Float, _}:...)
{
static const
STATIC_ARGS = 3;
new
n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
if (n)
{
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);
// Push the static format parameters.
#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);
}
else
{
return SendClientMessage(playerid, color, fstring);
}
}
new format_string [144];
#define SCMF(%0,%1,%2,%3) format(format_string, 144, %2,%3) && SCM(%0, %1, format_string)
SCMF(playerid,COLOR_WHITE,"blabla %d", blabla);
или все-таки лучше format(string,sizeof(string),
SCMF\
(\
playerid, COLOR_WHITE,\
"blablablablablablablablablablablablabla %d %d %d %d %d",\
blabla, blabla, blabla, blabla, blabla\
);
Лично я использую 2-ой, хотя в нём есть маленький недостаток:
Если мы желаем раскрыть 'ф-ию', то придётся постоянно ставить символ обратного слэша \, ибо без него при компиляции будут ошибки. PHP Code:
|
или тратит весь 144 |
не надо в format(string,цыфру самому писать? |