08.05.2016, 11:52
Сделал функцию работающую по принципу format
Но она не желает обрабатывать передаваемые параметры тексту и попросту игнорирует их.
Вызов:
На выходе мы имеем:
Макрос вызова:
Сделав дебаг функции
Результат:
Так же функцию вызвал на прямую без макроса, результат тот же.
Но она не желает обрабатывать передаваемые параметры тексту и попросту игнорирует их.
PHP код:
stock Log_Gamemode(const path[], const str[], {Float,_}:...)
{
new
args,
start,
end,
string[1024]
;
#emit LOAD.S.pri 8
#emit STOR.pri args
if (args > 8)
{
#emit ADDR.pri str
#emit STOR.pri start
for (end = start + (args - 8); end > start; end -= 4)
{
#emit LREF.pri end
#emit PUSH.pri
}
#emit PUSH.S str
#emit PUSH.C 1024
#emit PUSH.C string
#emit PUSH.C args
#emit SYSREQ.C format
#emit LCTRL 5
#emit SCTRL 4
#emit RETN
Log_Write(path, string);
return true;
}
Log_Write(path, str);
return true;
}
PHP код:
GM:I("Gamemode successfully started for %d ms.", GetTickCount() - count);
PHP код:
Info: Gamemode successfully started for %d ms.
PHP код:
#define Log_GameI(%1); \
Log_Gamemode(log_path[LOG_GAMEMODE], "Info: " %1);
PHP код:
stock Log_Gamemode(const path[], const str[], {Float,_}:...)
{
new
args,
start,
end,
string[1024]
;
#emit LOAD.S.pri 8
#emit STOR.pri args
print("1");
if (args > 8)
{
#emit ADDR.pri str
#emit STOR.pri start
for (end = start + (args - 8); end > start; end -= 4)
{
#emit LREF.pri end
#emit PUSH.pri
}
#emit PUSH.S str
#emit PUSH.C 1024
#emit PUSH.C string
#emit PUSH.C args
#emit SYSREQ.C format
#emit LCTRL 5
#emit SCTRL 4
#emit RETN
print("2");
Log_Write(path, string);
return true;
}
print("3");
Log_Write(path, str);
return true;
}
PHP код:
1
3