Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

SendFormatMessage

Статус
В этой теме нельзя размещать новые ответы.

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:
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; 
}
SendFormatMessage взят у Y_Less, строка 3584:
PHP:
n += BYTES_PER_CELL;
Краш идет когда в строке две переменные, с одной все ок, в чем проблема может быть?:bc:
На всякий случай весь формат
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);
    }
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу