Hallo Leute,
ich bin gerade einem Problem begegnet was ich wirklich nicht zuordnen kann.
Ich hole mir mit dem Scanner 2 Werte, einmal den Charakternamen und ein Penya Betrag.
Der Name Wird erkannt, es wird die ID abgerufen, auch der Penyawert wird erkennt, aber sobald ich den Penya Wert mit Scanner.Token habe, werden
die 2 Variablen für den Charakternamen WOHL? mit dem des Penyas überschrieben, was für mich einfach keinen Sinn ergibt.
So sieht die Funktion aus:
In meinem Error Log ist auch gut zu erkennen, dass er beide Werte erst einmal richtig bekommt:
2012/ 8/12 00:26:40 Name: MadeMyDay // richtig
2012/ 8/12 00:26:40 nGold 4000 // richtig
2012/ 8/12 00:26:40 Name: 4000 // nicht korrekt
2012/ 8/12 00:26:40 SetWanted: 4000, 4, 4000, System Kill
Hat jemand eine Idee woran das liegen könnte, und wie ich dem vorbeugen kann ?
Edit:
Ich habe den Spieler um den es geht, jetzt als CUser pTarget ausgelegt und beziehe den Namen aus der CUser Klasse ( getName() ). Allerdings finde ich das doch ein wenig umständlich nur wegen dem Namen noch einmal eine Klasse zu initalisieren. Vorschläge sind gern gesehen.
ich bin gerade einem Problem begegnet was ich wirklich nicht zuordnen kann.
Ich hole mir mit dem Scanner 2 Werte, einmal den Charakternamen und ein Penya Betrag.
Der Name Wird erkannt, es wird die ID abgerufen, auch der Penyawert wird erkennt, aber sobald ich den Penya Wert mit Scanner.Token habe, werden
die 2 Variablen für den Charakternamen WOHL? mit dem des Penyas überschrieben, was für mich einfach keinen Sinn ergibt.
So sieht die Funktion aus:
PHP Code:
#ifdef __WORLDSERVER
int nGold;
LPCTSTR szName;
LPCTSTR unBug_SzName;
CUser* pUser = (CUser*)scanner.dwValue;
scanner.GetToken();
szName = scanner.Token;
unBug_SzName = szName; // Mein Versuch das Ergebnis gleich zu sichern
Error( "Name: %s", szName );
u_long idPlayer = CPlayerDataCenter::GetInstance()->GetPlayerId((char*)szName );
if ( idPlayer == 0 )
{
pUser->AddText("Der Spieler ist nicht Online und kann somit nicht auf die Wanted Liste gesetzt werden");
return TRUE;
}else{
nGold = scanner.GetNumber();
Error("nGold %d", nGold );
Error( "Name: %s",unBug_SzName );
if ( nGold > 200000000 || nGold < 1000 )
{
pUser->AddText("Die Kopfgeld Summe muss zwischen 1000 und 200 000 000 Penya liegen");
return TRUE;
}else{
Error("SetWanted: %s, %d, %d, %s", unBug_SzName, idPlayer, nGold, "System Kill" );
g_DPCoreClient.SendWCWantedGold( unBug_SzName , idPlayer, nGold, "System Kill" );
}
}
#endif
In meinem Error Log ist auch gut zu erkennen, dass er beide Werte erst einmal richtig bekommt:
2012/ 8/12 00:26:40 Name: MadeMyDay // richtig
2012/ 8/12 00:26:40 nGold 4000 // richtig
2012/ 8/12 00:26:40 Name: 4000 // nicht korrekt
2012/ 8/12 00:26:40 SetWanted: 4000, 4, 4000, System Kill
Hat jemand eine Idee woran das liegen könnte, und wie ich dem vorbeugen kann ?
Edit:
Ich habe den Spieler um den es geht, jetzt als CUser pTarget ausgelegt und beziehe den Namen aus der CUser Klasse ( getName() ). Allerdings finde ich das doch ein wenig umständlich nur wegen dem Namen noch einmal eine Klasse zu initalisieren. Vorschläge sind gern gesehen.