000
24.12.2003, 12:29
toji
|
Hi,
will ein hilfe system für mein metamod addon machen und will dafür das selbe wie bei der MOTD nehmen... hab ne funktion gebaut die irgendwie nicht geht:
FILE *fp; char in[1024]; if( (fp=fopen(file,"r")) != NULL) { memset(&in,0x00,sizeof(in)); while (fgets(in,1024,fp) != NULL) { MESSAGE_BEGIN( MSG_ONE, REG_USER_MSG( "MOTD", -1 ), NULL, client ); WRITE_BYTE( in ? FALSE : TRUE ); WRITE_STRING( in ); MESSAGE_END(); } }
--
|
|
Profil || Suche
|
001
24.12.2003, 13:24
Onkel Dittmeyer
|
Erstmal: Files liest man Zeile für Zeile in C so aus:
FILE* fp; char line[1024];
if (!(fp = fopen(file, "r")) return;
while (!feof(fp)) { fgets(line, 1024, fp); }
memset kannste dir sparen, da fgets eh alles überschreibt und terminiert. Dann kannst du nicht einfach REG_USER_MSG() in einer Schleife aufrufen... Das macht man in der player.cpp oder wo man in deinen Fall sonst bei einem Metamod diese Messages reg'ed. Dann packst du den index der Message in eine globable Variable oder schreibst dir ne Funktion wo du drauf zugreifen kannst. Last but not least: WRITE_BYTE( in ? FALSE : TRUE ); <- wird nie TRUE sein, da das der Schleifenkopf verhindert. Am besten du schickst einfach als Abschluss einen Nullstring an den Client mit dem TRUE Byte am Anfang um die MotD abzuschließen.
--
|
|
Profil || Suche
|