Heyho Jungs,
Ich verstehe einiges vom Scripten darunter aber überhaupt nicht's bei dem was ich hier gerade versuche.
Gehofft habe ich auf Copy & Paste der klappt, leider nicht der Fall und warum das so ist will ich gerne wissen und möglichst eine Lösung.
Also ich möchte gerne "printf" durch eine neue Funktion "debugmsg" (mehr oder weniger) ersetzen weil ich nur eine Nachricht ausgeben möchte sofern #define DEBUG vorhanden ist.
Da ich zu faul bin jede bereits vorhandene Debug Nachricht mit printf umzuschreiben von 1 Zeile auf 3 Zeilen, wollte ich das per neuen Funktion klären
die von den Argumenten genau wie printf ist.
Die Funktion lautet:
stock debugmsg(fstring[], {Float, _}:...)
{
#if !defined BYTES_PER_CELL
const BYTES_PER_CELL = cellbits/charbits;
#endif
static const STATIC_ARGS = 3;
new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
if(n == 0)
{
#if defined DEBUG
return print(fstring);
#else
return 0;
#endif
}
new message[128], arg_start, arg_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);
#emit PUSH.S fstring
#emit PUSH.C 128
#emit PUSH.ADR message
n += BYTES_PER_CELL * 3;
#emit PUSH.S n
#emit SYSREQ.C format
n += BYTES_PER_CELL;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
#if defined DEBUG
return print(message);
#else
return 0;
#endif
}
Leider gibt sie nicht das richtige aus sondern gibt %s, %d, %i... nur als Plaintext aus sprich eine Nachricht sieht dann so aus:
[20:21:43] MP5 %i: %i
anstatt:
[19:56:34] Messer 21: 0
Kann mir jemand dabei helfen das zu reparieren?
Lg