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 );
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.
Nun, da es sich bei einem LPCTSTR um nen TCHAR Zeiger (bin mir nich sicher, ob TCHAR, aber Zeiger) handelt, wird mit szName nur auf Token der CScanner Klasse gezeigt. Die Addresse gibst du an den anderen Zeiger, unBug_SzName, weiter, sodass auch er auf Token von CScanner zeigt.
Du solltest einen TCHAR bzw char Array erstellen, evtl via TCHAR *szName = new TCHAR[strlen(scanner.Token)+1], via strcpy oder memcpy den Wert von Token in szName kopieren (strcpy(szName,scanner.Token); ) und anschließend das ende des Arrays nullen (szName[strlen(scanner.Token)] = 0.
Nun, da es sich bei einem LPCTSTR um nen TCHAR Zeiger (bin mir nich sicher, ob TCHAR, aber Zeiger) handelt, wird mit szName nur auf Token der CScanner Klasse gezeigt. Die Addresse gibst du an den anderen Zeiger, unBug_SzName, weiter, sodass auch er auf Token von CScanner zeigt.
Du solltest einen TCHAR bzw char Array erstellen, evtl via TCHAR *szName = new TCHAR[strlen(scanner.Token)+1], via strcpy oder memcpy den Wert von Token in szName kopieren (strcpy(szName,scanner.Token); ) und anschließend das ende des Arrays nullen (szName[strlen(scanner.Token)] = 0.
Das sollte dein Problem lösen.
Awas, denk doch nicht so kompliziert.
PHP Code:
#ifdef __WORLDSERVER int nGold; CUser* pUser = (CUser*)scanner.dwValue; scanner.GetToken(); u_long idPlayer = CPlayerDataCenter::GetInstance()->GetPlayerId( scanner.token ); CUser* pTarget = g_UserMng.GetUserByPlayerID( idPlayer ); if ( IsValidObj( pTarget ) ) { pUser->AddText("Der Spieler ist nicht Online und kann somit nicht auf die Wanted Liste gesetzt werden"); return FALSE;
}else{
nGold = scanner.GetNumber(); if ( nGold > 200000000 || nGold < 1000 ) { pUser->AddText("Die Kopfgeld Summe muss zwischen 1000 und 200 000 000 Penya liegen"); return FALSE;
Wäre halt die einfachste Methode.
Würde den Namen nicht extra speichern lassen.
Kannst aber auch so:
PHP Code:
#ifdef __WORLDSERVER int nGold; CUser* pUser = (CUser*)scanner.dwValue; scanner.GetToken(); u_long idPlayer = CPlayerDataCenter::GetInstance()->GetPlayerId( scanner.token ); 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(); if ( nGold > 200000000 || nGold < 1000 ) { pUser->AddText("Die Kopfgeld Summe muss zwischen 1000 und 200 000 000 Penya liegen"); return TRUE;
Achja, man sollte wenn die ID z.B nicht valid ist oder so, nicht TRUE returnen, da es ja keinen Grund gibt, und die Funktion einfach abbricht. Also bleib lieber bei FALSE.
Naja war nen Flüchtigkeitsfehler von mir, war ziemlich spät.
Ich muss den Scanner mit Scanner.GetToken() nur nochmals anweisen den
nächsten Token zu scannen.
CUser verwende ich jetzt aber dennoch, da ich eine User Message ausgeben lasse.
Hat sich also geklärt,
danke für eure Hilfe.
Biete Dein VIrus Scanner + Source Suche e*G / psc 02/25/2012 - elite*gold Trading - 33 Replies Guten Tag,
Ich verkaufe Heute Meine Source + Die Exe Von Den Virus Scanner
Das Ganze hat Viel Arbeit Gekostet Und Gedult
Das Ganze In autoit geschrieben.
Dein Pc Nach Viren Prüfen
Er Schiebt Die Viren/Funde In Die Quarantäne.
[Scanner Problem]Mustek Be@rPaw 1200 08/24/2011 - Technical Support - 1 Replies Hallo,
ich habe gestern meinen alten Scanner (Mustek Be@rPaw 1200)
mal wieder ausgepackt. Treiber installiert etc.. Es funktuniert fast alles aber das Scannen nicht :rolleyes:
Jedes mal wenn ich Scanne kommt diese Meldung:
http://s7.directupload.net/images/110823/ion8jgwy .jpg
Ich habe jetzt in den Einstellungen was gefunden, jedoch kann ich nichts ändern.
[Source Problem] Source auf LANG 6 compilien [D-Flyff Font] 04/13/2011 - Flyff Private Server - 10 Replies Hey Leutz,
ich komme da mal mit nem mehr oder weniger kleinen Problem.
Aufgrund der Misserfolge nur die Neuz in LANG 6 zu compilien, hat man mir geraten die kompletten Bins auf LANG 6 zu setzen.
Seitdem funktioniert die D-Flyff Schrift super, es ist nichts verrutscht, Login klappt auch etc.
Problem ist jetzt nur das ich keine inGame Rechte mehr habe.
Habe extra neuen acc erstellt, neuen char bin sämtliche Operatoren ( L, M, N, O, P, Z) durchgegangen nur leider habe ich immer noch...
Memory scanner problem... How Can solve? 04/28/2010 - General Coding - 1 Replies Hello all! I'm new in the world of game hacking so I started whit learning c++. After few months i have make a(my frist prg) Memory Scanner .. Whit a littel help by gimeamilk(thanks).
So the problems are:
I'm new.:D
The Memory Scanner can't scan in the memory pages of S4League(only traing don't write questions about..), anybody can explain me why?
------------------------------------------------- ----------------------
I did some search, but i didn't find anything...