forward my_printf(format[], {Float,_}:...) public my_printf(format[], {Float,_}:...) { return printf(format, {Float,_}:...); }
stock AC_printf(const fmat[], {Float, _}:...) {
static output[128], frm_header[3];
const output_size = sizeof(output);
#emit LCTRL 5
#emit CONST.alt frm_header
#emit MOVS 12
#emit ADD.C 12
#emit SCTRL 4
#emit PUSH.C output_size
#emit PUSH.C output
#emit LOAD.S.pri 8
#emit ADD.C 8
#emit PUSH.pri
#emit SYSREQ.C format
#emit LCTRL 5
#emit SCTRL 4
#emit MOVE.alt
#emit CONST.pri frm_header
#emit MOVS 12
#emit LOAD.S.pri 8
#emit ADD.C 12
#emit MOVE.alt
#emit LCTRL 5
#emit ADD
#emit LOAD.I
#emit STOR.S.pri 20
//your function
static debugmsg[128];
format(debugmsg,128,"DBG: %s",output);
MSGToAdmins(-1, debugmsg, true, LEVEL_ADMIN3);
return print(output);
#pragma unused fmat
}
//hook
#if defined _ALS_printf
#undef printf
#else
#define _ALS_printf
#endif
#define printf AC_printf
I found such a hook on printf
You can use it ![]() I do not understand how it works, but it works: D |