Проблема в функции вывода сообщения
#1

Доброго времени суток.

Сама функция:

PHP Code:
stock SendAdminMessageEx(colorfstring[], {Float_}:...)
{
    
#define BYTES_PER_CELL (cellbits / 8)
    
static const STATIC_ARGS 3;
    new 
= (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
    if(
n)
    {
        new 
message[128], arg_startarg_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
        
+= 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 SendAdminMessage(colormessage);
    }
    else return 
SendAdminMessage(colorfstring);
}
stock SendAdminMessage(colorstring[])
{
    foreach(
i)
    {
        if(
PI[i][AdminRank] >= 1SendClientMessage(icolorstring);
    }
    return 
true;

Проблема: Не выводится последний %s, %d, %i и т.п

Пример:
PHP Code:
SendAdminMessageEx(COLOR_BROWN,"[ADM]: %s %s[ID %d] выходит на админ дежурство."PI[playerid][AdminName], GetPlayerNameEx(playerid), playerid); 
В чате будет только
[ADM]: %s %s[ID ] выходит на админ дежурство. - последний %d в чат не попадет.
Reply
#2

static const STATIC_ARGS = 3;
change to
static const STATIC_ARGS = 4;

И лучше не занимайтесь мазохизмом.
Reply
#3

Quote:
Originally Posted by White_116
View Post
И лучше не занимайтесь мазохизмом.
Спасибо. Но...
Почему это мазохизм?
Reply
#4

Потому что судя по тестам данная функция куда медленнее обычного формата.
Reply
#5

Quote:
Originally Posted by OKStyle
View Post
Потому что судя по тестам данная функция куда медленнее обычного формата.
Но... это же почти тот же самый формат.
Или нет?
Reply
#6

Quote:
Originally Posted by Makar007
View Post
Но... это же почти тот же самый формат.
Или нет?
Даже не близко...
Reply
#7

Quote:
Originally Posted by OKStyle
View Post
Потому что судя по тестам данная функция куда медленнее обычного формата.
А примерно на сколько медленнее?
Подскажите пожалуйста.
Reply
#8

Quote:
Originally Posted by Makar007
View Post
А примерно на сколько медленнее?
Подскажите пожалуйста.
Составить тест на скорость работы, состоящий из нескольких строк(<15), вам не позволяет лень или религия?!
Ставлю на последний вариант, ибо на лицо влияние церкви на мозг.
Reply
#9

http://pawno.su/showthread.php?t=95514 - в самом низу первого сообщения ссылка на тест скорости подобной конструкции.
Reply
#10

Если бы она не нужна была бы, ****** бы ее не делал. Тем более там Ассемблер.
Reply
#11

Ага. А ****** стал эталоном программирования? Или ты видел хоть одну его полезную для профессионалов работу? Я - нет. Тем более Ассемблер тут не нужен. 80% англоговорящего форума делают одни и те же скрипты - это делает их нужными что-ли?
Да и вообще - в чём проблема скачать код тестов и проверить разницу скорости по аналогии?
Reply
#12

foreach
Reply
#13

Quote:
Originally Posted by SPAWN_METAL
View Post
foreach
Как по мне - ужасная работа. Лично для себя переписал. И код меньше в разы и работает быстрее. Собственно, многие кто разбирается так же сделали.
Reply
#14

Quote:
Originally Posted by XemyL
View Post
Как по мне - ужасная работа. Лично для себя переписал. И код меньше в разы и работает быстрее. Собственно, многие кто разбирается так же сделали.
Смотрим, и там куча связанного: http://forum.sa-mp.com/showthread.ph...40#post1678140
Reply
#15

Quote:
Originally Posted by SPAWN_METAL
View Post
foreach
Это для нубов, я спрашивал про профессиональные разработки. Кому нужен этот тормозной и неоптимизированный форич с кучей свистелок и перделок от которых сервер заикается? ))
Reply
#16

OKStyle, я конечно не хочу тебя унизить, оскорбить или еще что в этом роде. Но ты хоть знаешь каким образом работает этот скрипт(SendMes)? Ты хоть знаешь функции Ассемблера, директиву #emit от и до. Ну тогда сможешь описать любое действие в данном скрипте?
Reply
#17

Quote:
Originally Posted by Urukhay
View Post
OKStyle, я конечно не хочу тебя унизить, оскорбить или еще что в этом роде. Но ты хоть знаешь каким образом работает этот скрипт(SendMes)? Ты хоть знаешь функции Ассемблера, директиву #emit от и до. Ну тогда сможешь описать любое действие в данном скрипте?
А ты ссылку выше вообще смотрел? Судя по всему нет.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)