Kann mir jemand dabei helfen das zu reparieren?
Also..ich würde das so nicht machen...
Da der Code...wenn du keinen DEBUG an hast...trotzdem ausgeführt wird..während er Laufzeit..und dann eben anstatt dem print einfach nur eine 0 wiedergibt.
Besser wäre, folgendes:
#if defined DEBUG
printf("Hier dein DEBUG Code",x,y,z);
#endif
Immer direkt da zu machen wo du den Code brauchst.
Da wenn du das #define DEBUG rausnimmst, auch der Code nicht mehr in die .amx kommt.
Allerdings ist das dann immer n bissl doof zu schreiben..das seh ich ein 
Allerdings wäre nur eine alternative...dass du eine globale Variable nutzt..und das über if-Abfragen machst...
Allerdings hättest du dann immer noch die if-Abfragen...allerdings sind if-Abfragen effizienter als permanent so große Funktionen wie du sie da hast aufzurufen & nur 0 auszugeben 
//Edit: Ah ich sollte mal den ganzen Text lesen xD
Also das mit der Globalen Variable sähe z.B. so aus:
new DEBUG = true;
#define debugmsg(%0) DEBUG=(DEBUG)?(printf(%0),DEBUG):DEBUG
//Wird dann alles nur ausgegeben, wenn DEBUG = true ist
new x;
debugmsg("Hallo%d",++x);
debugmsg("Hallo%d",x);
debugmsg("Hallo");
Alles anzeigen