axeqwer
Новичок
Добрый вечер, возникла не большая проблема. Буквально сегодня все отлично работало, сейчас крашится сервер, видимо где то накосячил... Проблема в SendFormatMessage, а именно -
[17:31:26] [debug] #1 00081a1c in SendFormatMessage (playerid=0, color=-13057, fstring[]=@0018fb40 "", ... <2 arguments>) at see.pwn:3584
[17:31:26] [debug] #2 0008cde0 in public cmd_test (playerid=0, params[]=@00192898 "") at see.pwn:4088
Команда test:
SendFormatMessage взят у Y_Less, строка 3584:
Краш идет когда в строке две переменные, с одной все ок, в чем проблема может быть?:bc:
На всякий случай весь формат
[17:31:26] [debug] #1 00081a1c in SendFormatMessage (playerid=0, color=-13057, fstring[]=@0018fb40 "", ... <2 arguments>) at see.pwn:3584
[17:31:26] [debug] #2 0008cde0 in public cmd_test (playerid=0, params[]=@00192898 "") at see.pwn:4088
Команда test:
PHP:
CMD:test(playerid, params[])
{
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, COLOR_WHITE, "/test [id] [lvl]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Игрок не подключен");
pInfo[params[0]][Admin] = params[1];
SendFormatMessage(playerid, 0xFFFFCCFF, "%s назначен на должность администратора %d уровня.", Name[params[0]], params[1]);
return 1;
}
PHP:
n += BYTES_PER_CELL;
На всякий случай весь формат
PHP:
stock SendFormatMessage(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);
#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);
}
}
