Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 6 из 6
  1. #1
    Аватар для Bady
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2013
    Сообщений
    170
    Репутация:
    3 ±

    ASendMes и SendMes

    Есть ли какая то нагрузка или вред от ASendMes и SendMes.
    Или лучше использовать по старинке в форматах.
    Разъясните по подробнее желательно.
    Так же сталкивался с крашем сервера из за ASendMes и SendMes.

    PHP код:
    stock ASendMes(alevelcolorfstringg[], {Float_}:...)
    {
        static const
        
    STATIC_ARGS 3;
        new
        
    = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
        if (
    n)
        {
            new
            
    message[128],
            
    arg_start,
            
    arg_end;
            
    #emit CONST.alt        fstringg
            #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          fstringg
            #emit PUSH.C          128
            #emit PUSH.ADR         message

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

            
    += BYTES_PER_CELL;
            
    #emit LCTRL          4
            #emit LOAD.S.alt        n
            #emit ADD
            #emit SCTRL          4
            
    return ABroadCast(color,message,alevel);
        }
        else return 
    ABroadCast(color,fstringg,alevel);
    }
    stock SendMes(playeridcolorfstringg[], {Float_}:...)
    {
        static const
        
    STATIC_ARGS 3;
        new
        
    = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
        if (
    n)
        {
            new
            
    message[128],
            
    arg_start,
            
    arg_end;
            
    #emit CONST.alt        fstringg
            #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          fstringg
            #emit PUSH.C          128
            #emit PUSH.ADR         message

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

            
    += BYTES_PER_CELL;
            
    #emit LCTRL          4
            #emit LOAD.S.alt        n
            #emit ADD
            #emit SCTRL          4
            //SendClientMessagef(playerid, -1, "a SendMes %s", message);
            //if(message[0] != ' ') strins(message, " ", 0, 1);
            //SendClientMessagef(playerid, -1, "p SendMes %s symbol '%s'", message);
            
    return SendClientMessage(playeridcolormessage);
        }
        else
        {
            
    //if(fstringg[0] != ' ') strins(fstringg, " ", 0, 1);
            
    return SendClientMessage(playeridcolorfstringg);
        }


  2. #2
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Я уже подобное спрашивал =3

    Потом мне кто-то говорил, что при одновременном вызове этого формата несколькими игроками, ASM выигрывает по скорости, нежели формат. Правда, я не тестил это

  3. Пользователь сказал cпасибо:
    Bady (23.08.2015)
  4. #3
    Аватар для Bady
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2013
    Сообщений
    170
    Репутация:
    3 ±
    Цитата Сообщение от Zangetsu Посмотреть сообщение
    Я уже подобное спрашивал =3

    Потом мне кто-то говорил, что при одновременном вызове этого формата несколькими игроками, ASM выигрывает по скорости, нежели формат. Правда, я не тестил это
    Спасибо, может услышу еще новые мнения.

  5. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Zangetsu Посмотреть сообщение
    Потом мне кто-то говорил, что при одновременном вызове этого формата несколькими игроками, ASM выигрывает по скорости, нежели формат. Правда, я не тестил это
    Лишнее копирование аргументов в стеке, лишний вызов функции - не может это всё работать быстрее, чем стандартный метод с форматированием и отправкой сообщений по отдельности.

    Цитата Сообщение от Bady Посмотреть сообщение
    Так же сталкивался с крашем сервера из за ASendMes и SendMes.
    Тогда ответ должен быть очевиден. Между прочим, я тоже недавно пробовал сделать несколько функций с похожим принципом работы и выложить их здесь.
    Когда я их тестировал, они работали нормально, пока я не попробовал вызвать одну из них с помощью CallLocalFunction. Как оказалось, любой вызов таких функций не из функций на Pawn, а из нативного кода (CallLocalFunction/CallRemoteFunction/SetTimer/SetTimerEx), приводил к падению сервера.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. Пользователь сказал cпасибо:
    Desulaid (23.08.2015)
  7. #5
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Когда я их тестировал, они работали нормально, пока я не попробовал вызвать одну из них с помощью CallLocalFunction. Как оказалось, любой вызов таких функций не из функций на Pawn, а из нативного кода (CallLocalFunction/CallRemoteFunction/SetTimer/SetTimerEx), приводил к падению сервера.
    Куй в деле.

    Тут просто я заржал во весь голос

  8. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Куй в деле.

    Тут просто я заржал во весь голос
    Куй как-то говорил на sa-mp.com, что фиксит только самые критические баги, которые угрожат безопасности или крашат сервер. Но, похоже, он и тут "переоценил" себя, раз до сих пор не может исправить краш при установке пустого ника.

    И всё же, не пойму, как это относится к моему посту? Там описан совсем другой краш, который, скорее всего, связан с кодом интерпретатора Pawn. Я даже ради интереса пробовал вызвать функцию SendMes из плагина - сервер всё равно падал, хотя другие функции из плагина вызывались нормально.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •