|
You last visited: Today at 16:50
Advertisement
[Source]Scanner Problem
Discussion on [Source]Scanner Problem within the Flyff Private Server forum part of the Flyff category.
08/12/2012, 00:32
|
#1
|
elite*gold: 0
Join Date: Sep 2011
Posts: 195
Received Thanks: 65
|
[Source]Scanner Problem
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:
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.
|
|
|
08/12/2012, 03:10
|
#2
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
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.
|
|
|
08/12/2012, 04:15
|
#3
|
elite*gold: 0
Join Date: Jun 2012
Posts: 194
Received Thanks: 417
|
Quote:
Originally Posted by Pumbaaa
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;
}else{ g_DPCoreClient.SendWCWantedGold( pTarget->GetName(), idPlayer, nGold, "System Kill" ); }
} #endif
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;
}else{ ); g_DPCoreClient.SendWCWantedGold( g_UserMng.GetUserByPlayerID( idPlayer )->GetName(), idPlayer, nGold, "System Kill" ); }
} #endif
Sollte funktionieren, habs nicht getestet.
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.
|
|
|
08/12/2012, 10:47
|
#4
|
elite*gold: 0
Join Date: Sep 2011
Posts: 195
Received Thanks: 65
|
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.
|
|
|
08/12/2012, 17:22
|
#5
|
elite*gold: 18
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
|
#Closed
|
|
|
 |
Similar Threads
|
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...
|
All times are GMT +1. The time now is 16:52.
|
|