PDA

Просмотр полной версии : [Function] SendFormattedText [fixed]



middlematt
31.12.2016, 02:42
Приветствую, форумчане. В подфоруме 'Вопросы по Pawn-скриптингу' (http://pro-pawn.ru/forumdisplay.php?7-Вопросы-по-Pawn-скриптингу) изредка замечаю, что у есть ошибки с SendFormattedText от Y_Less (помойму), который сам форматирует строку. В одном из модов нашел такую-же функцию, в которой используется #emit, в прочем, вот и выкладываю данную функцию.


stock SendFormattedText(playerid, color, const str[], {Float,_}:...)
{
static
args,
start,
end,
string[144]
;
#emit LOAD.S.pri 8
#emit STOR.pri args

if (args > 12)
{
#emit ADDR.pri str
#emit STOR.pri start

for (end = start + (args - 12); end > start; end -= 4)
{
#emit LREF.pri end
#emit PUSH.pri
}
#emit PUSH.S str
#emit PUSH.C 144
#emit PUSH.C string
#emit PUSH.C args
#emit SYSREQ.C format

SendClientMessage(playerid, color, string);

#emit LCTRL 5
#emit SCTRL 4
#emit RETN
}
return SendClientMessage(playerid, color, str);
}

Автор функции: НЕИЗВЕСТНО

DeimoS
31.12.2016, 12:45
Так у многих именно эта функция с #emit и крашит.
Да и в чём трудность напряиую писать SendClientMessage+format? Куда вы так спешите?

vovandolg
31.12.2016, 14:24
Пусть мод будет без -d3 компиляции, пусть это JIT оптимизация, там так же нету поддержки #emit подобных веток в коде,
то бишь захочешь ты вывести ошибки - крашить будет, захочешь нагнать оптимизации - так же возможны краши,
лучше вручную форматировать или сделать набор своих готовых функций на несколько аругментов(под свой мод разве что).

middlematt
31.12.2016, 15:53
Пусть мод будет без -d3 компиляции, пусть это JIT оптимизация, там так же нету поддержки #emit подобных веток в коде,
то бишь захочешь ты вывести ошибки - крашить будет, захочешь нагнать оптимизации - так же возможны краши,
лучше вручную форматировать или сделать набор своих готовых функций на несколько аругментов(под свой мод разве что).

Выложил не для себя, а для ленивых кодеров. А так сам юзаю ручное форматирование)

- - - Добавлено - - -


Так у многих именно эта функция с #emit и крашит.
Да и в чём трудность напряиую писать SendClientMessage+format? Куда вы так спешите?

Выложил не для себя, а для тех, кому было лень писать форматирование