Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Leax Mini JLI'ler
Anmeldedatum: 15.07.2003 Beiträge: 43
Medaillen: Keine
|
Verfasst am: 17.07.2003, 09:27 Titel: Verwirrender Formatierungsfehler |
|
|
Also ich habe gerade mal was für eine HL Mod gecodet und da kommt beim Kompilieren ein Fehler:
C:\Day of Kills\SDK\Multiplayer Source\dlls\teamplay_gamerules.cpp(626) : error C2065: 's' : nichtdeklarierter Bezeichner
C:\Day of Kills\SDK\Multiplayer Source\dlls\teamplay_gamerules.cpp(626) : error C2296: '%' : Ungültig, da der linke Operand vom Typ 'char [1]' ist
C:\Day of Kills\SDK\Multiplayer Source\dlls\teamplay_gamerules.cpp(626) : error C2059: Syntaxfehler : '%'
Code: |
//Zeile 626
UTIL_LogPrintf( ""%s<%i>" has joined %sn", STRING( pPlayer->pev->netname ), GETPLAYERUSERID( pPlayer->edict() ), pTeamName ); |
Wie kann ich den Fehler beheben? |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 17.07.2003, 10:08 Titel: |
|
|
Code: |
UTIL_LogPrintf( "\"%s<%i>\" has joined %sn"...
|
|
|
Nach oben |
|
|
Leax Mini JLI'ler
Anmeldedatum: 15.07.2003 Beiträge: 43
Medaillen: Keine
|
Verfasst am: 17.07.2003, 10:33 Titel: |
|
|
danke.
kannst du mir bitte sagen, was die Zeile eigentlich bedeutet, damit ich den Fehler verstehe? |
|
Nach oben |
|
|
Mr.X Junior JLI'ler
Anmeldedatum: 15.04.2003 Beiträge: 88
Medaillen: Keine
|
Verfasst am: 17.07.2003, 11:00 Titel: |
|
|
Wenn ich das richtig interpretiere, dann sorgt die Funktion "UTIL_LogPrintf" nur dafür, das in eine Textdatei (Logfile) eine Zeile geschrieben wird, in welcher steht welcher Spieler (->netname) gerade welchem team (pTeamname) beigetreten ist.
Dein Fehler lag allerdings darin, das Du einen ungültigen Funktionsaufruf hattest. Du sollst der Funktion als ersten Parameter einen String übergeben. Dieser fängt mit einem " an und hört mit einem " auch auf. Innerhalb dieses Strings hasst Du ebenfalls " verwendet, ohne aber diese Zeichen maskiert zu haben (vorangestelltes Backslash \), womit der Compiler bereits beim ersten " den String für beendet hielt und alles danach nur Undefiniertes für den Compiler war. Daher die Fehlermeldung!
Zuletzt bearbeitet von Mr.X am 17.07.2003, 11:02, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 17.07.2003, 11:02 Titel: |
|
|
Naja, da wird in ein Logfile der Name, die Id und der Teamname ausgegeben, könnte in der Log-Datei z.B. so aussehen:
"Leax<42>" has joined JLI-Teamn (was das n soll weiss ich nicht)
In der LogPrintf oder auch printf-Funktion wird das %s durch den ersten String ( pPlayer->pev->netname) ersetzt, das %i durch den Wert GETPLAYERUSERID( pPlayer->edict() ) und das letzte %s durch pTeamName. Schau dir mal die Dokumentation von printf an.
Christian |
|
Nach oben |
|
|
Leax Mini JLI'ler
Anmeldedatum: 15.07.2003 Beiträge: 43
Medaillen: Keine
|
Verfasst am: 17.07.2003, 11:45 Titel: |
|
|
laut meinem Wissen ist printf doch ein Befehl aus C, oder?
Also das mit der Logdatei kann man so sagen, das wird dann eben in die Spielkonsole geschrieben. |
|
Nach oben |
|
|
|