• Страница 1 из 1
  • 1
Форум » Программирование в Pawno » Стандартные функции » SendMes(playerid, color, fstring[], {Float, _}:...)
SendMes(playerid, color, fstring[], {Float, _}:...)
Добавлено 12.05.2016 в 00:52 | Сообщение №1
Сообщений: 265 Репутация: 0
Администраторы
Функция позволяет использовать SendClientMessage без string, что повышает быстродействие

В начало мода:
Код
#define BYTES_PER_CELL (cellbits / 8)

Это куда нибудь в свободное место:
Код
stock SendMes(playerid, 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, 0xFFFFFF, message);
    }
    else return SendClientMessage(playerid, 0xFFFFFF, fstring);
}

Код
stock SendMesAll(fstring[], {Float, _}:...)
{
    static const STATIC_ARGS = 2;
    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 SendClientMessageToAll(0xFFFFFF, message);
    }
    else return SendClientMessageToAll(0xFFFFFF, fstring);
}

Пример использования:
Код
SendMes(playerid, "{FF0000}Твой левел равен :{000000} %d",level);
SendMesAll("{FF0000}%s левел равен :{000000} %d",PlayerName,level);

Автор: Неизвестен


Программист любитель :)
Форум » Программирование в Pawno » Стандартные функции » SendMes(playerid, color, fstring[], {Float, _}:...)
  • Страница 1 из 1
  • 1
Поиск: