Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
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();
}
}

--

zum Seitenanfang zum Seitenende Profil || Suche
001
24.12.2003, 13:24
Onkel Dittmeyer



Erstmal:
Files liest man Zeile für Zeile in C so aus:
Quellcode: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.

--

zum Seitenanfang zum Seitenende Profil || Suche