|
You last visited: Today at 07:17
Advertisement
[C#] Falscher Rückgabewert
Discussion on [C#] Falscher Rückgabewert within the WoW Bots forum part of the World of Warcraft category.
10/29/2010, 21:03
|
#1
|
elite*gold: 0
Join Date: Dec 2007
Posts: 438
Received Thanks: 191
|
[C#] Falscher Rückgabewert
Hallo,
ich habe ein Problem mit dem Auslesen von dem Level des Spieler's.
Dies ist was ich erhalte: 247078670
hier der Reading Befehl wie ich es erhalte:
Code:
LocalPlayer1.Level = Memory.Read<UInt32>(Memory.BaseAddress + 0x8 + 0x40);
LocalPlayer1.UnitFieldsAddress = Memory.Read<UInt32>(0x8);
LocalPlayer1.Level = Memory.Read<UInt32>(Memory.BaseAddress + LocalPlayer1.UnitFieldsAddress + 0x8 + 0x40);
(sind die 3 Methoden wie ich es bisher versucht habe.)
Ich Lese die Daten Relativ zu WoW aus.
Gruß CrimeTime
|
|
|
10/30/2010, 17:17
|
#2
|
elite*gold: 1
Join Date: Sep 2009
Posts: 858
Received Thanks: 603
|
Musst glaube ich 0x40*4 nehmen, dann sollte es richtig sein, aber ich bin mir nicht sicher.
|
|
|
10/30/2010, 17:43
|
#3
|
elite*gold: 0
Join Date: Dec 2007
Posts: 438
Received Thanks: 191
|
ne das is es nicht, meintest gewiss das es genauso benutzt wird wie das POWER unitfield
|
|
|
10/30/2010, 18:10
|
#4
|
elite*gold: 0
Join Date: Apr 2008
Posts: 60
Received Thanks: 7
|
das mit den *4 war schon richtig, du musst das so verwenden:
Code:
_BMReadMemory($hProcess, $objectbase + (0x8 + 0x40) *4, "uint")
|
|
|
10/30/2010, 18:22
|
#5
|
elite*gold: 0
Join Date: Dec 2007
Posts: 438
Received Thanks: 191
|
Code:
LocalPlayer1.Level = Memory.Read<UInt32>(Memory.BaseAddress + LocalPlayer1.UnitFieldsAddress + (0x8 + 0x40)*4);
Ergebniss 17744
jedenfalls wird die Zahl kleiner immerhin.
|
|
|
10/30/2010, 18:35
|
#6
|
elite*gold: 0
Join Date: Apr 2008
Posts: 60
Received Thanks: 7
|
ich mach derzeit noch alles in autoit, was macht die memory.baseadresse? ist das der rückgabe wert vom object manager? oder meinst du damit die wowbase die du bei den pointer hinzurechnen musst? post noch die memory function damit ich weß was diese macht, was passiert wenn du die memory.base.. weglässt
|
|
|
10/30/2010, 19:11
|
#7
|
elite*gold: 0
Join Date: Dec 2007
Posts: 438
Received Thanks: 191
|
dann kommt : 756740032 dabei raus.
Code:
public static uint BaseAddress
{
get { return (uint)MainModule.BaseAddress; }
}
wenn du mehr brauchst sag bescheid.
|
|
|
10/30/2010, 20:29
|
#8
|
elite*gold: 0
Join Date: Apr 2008
Posts: 60
Received Thanks: 7
|
also ich sag mal das das hinzurechnen der memory.baseadresse falsch ist, anbei wie ich das mache:
wichtig ist, das du den pointer den du vom objectmanger bekommst an die _GetLevel function übergibts!
Code:
const $UNIT_FIELD_LEVEL = 0x40
Func _GetUnitField($pUbergabe) ;OK
return _BMReadMemory($hProcess, $pUbergabe + 0x8,"uint")
endFunc
func _GetLevel($pUbergabe)
$pUbergabe = _GetUnitField($pUbergabe)
Return _BMReadMemory($hProcess, $pUbergabe + (0x8 + $UNIT_FIELD_LEVEL) *4, "uint")
EndFunc
|
|
|
10/30/2010, 20:58
|
#9
|
elite*gold: 0
Join Date: Sep 2007
Posts: 149
Received Thanks: 32
|
playerbase + 0x8 ->
ergebnis + (0x8 + 0x40) *4
:P
wie der vorposter schon sagte
|
|
|
10/31/2010, 02:17
|
#10
|
elite*gold: 0
Join Date: Dec 2007
Posts: 438
Received Thanks: 191
|
also ich kann mich auf den kopf stellen und mit dem ***** Fliegen fangen, aber bekomme immer wieder das selbe dabei raus "0"
hier die bisherigen versuche:
Code:
LocalPlayer1.Level = Memory.Read<UInt32>(Memory.Read<UInt32>(Memory.BaseAddress + LocalPlayer1.UnitFieldsAddress + 0x8) + (0x8 + 0x40) * 4);
LocalPlayer1.Level = Memory.Read<UInt32>(Memory.Read<UInt32>(LocalPlayer1.UnitFieldsAddress + 0x8) + (0x8 + 0x40) * 4);
LocalPlayer1.Level = Memory.Read<UInt32>((Memory.BaseAddress + LocalPlayer1.UnitFieldsAddress + 0x8) + (0x8 + 0x40) * 4);
LocalPlayer1.Level = Memory.Read<UInt32>((LocalPlayer1.UnitFieldsAddress + 0x8) + (0x8 + 0x40) * 4);
LocalPlayer1.Level = Memory.Read<UInt32>(LocalPlayer1.UnitFieldsAddress + 0x8 + (0x8 + 0x40) * 4);
usw..
|
|
|
10/31/2010, 02:22
|
#11
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
Du sollst einen Pointer nach dem anderen auslesen du eumel
Irgendwie so:
Memory.Read<UInt32>(LocalPlayer1.UnitFieldsAddress + 0x8) + 0x8) + 0x40) * 4);
Aber evtl auch so?
Memory.Read<UInt32>(<DWORD>(<DWORD>(<DWORD>(LocalP layer1.UnitFieldsAddress + 0x8) + 0x8) + 0x40);
Denke du musst die Pointer doch erstmal als dword auslesen bevor du an die letzte addresse kommst die du dann als int ausließt.
Hab von C# keine ahnung, aber so würds ich zumindest bei c++ machen.
|
|
|
10/31/2010, 02:28
|
#12
|
elite*gold: 0
Join Date: Dec 2007
Posts: 438
Received Thanks: 191
|
Also das dies in die Hose geht wuste ich bevor ich es getestet hab
Code:
LocalPlayer1.Level = Memory.Read<UInt32>(Memory.Read<UInt32>(Memory.Read<UInt32>(Memory.Read<UInt32>(LocalPlayer1.UnitFieldsAddress + 0x8) + 0x8) + 0x40) * 4);
resul=0
|
|
|
10/31/2010, 02:35
|
#13
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
War ja auch nicht als Copy & Paste gedacht sondern um's dir im groben zu zeigen.
gibts bei c# kein dword? les die pointer addressen mal als dword aus.
Als Admin den Hack gestartet?
E// WoW benutzt doch dieses Random Memory Allocation, das beachtet?
|
|
|
10/31/2010, 02:37
|
#14
|
elite*gold: 0
Join Date: Dec 2007
Posts: 438
Received Thanks: 191
|
kannst du mir erklären was ein dword ist? glaube nich das es sowas bei c# gibt
Ich habe Windows XP Prof da brauch man nich Run as Admin machen.
|
|
|
10/31/2010, 02:38
|
#15
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
Gerade gegoogled, UInt32 stimmt schon.
Ansonsten les die Addressen mal Schritt für Schritt aus. (D.h. dass dir jede Addresse angezeigt wird)
|
|
|
|
|
Similar Threads
|
Falscher Videomodus pls help
10/01/2010 - Technical Support - 5 Replies
hi habe ein problem kp ob ich das auch hier schreiben kann hoffe um hilfe xD fange mal an mein pc hat sehr viele laggs wenn ich spiele starte, ich wollte was deinstalieren aber habe ausversehen meinen driver deinstaliert -.- ich habe es versucht es wieder neuzuinstalieren doch dann kamm ein fehler xd habe einfach immer pc ausgeschaltet weil die programme net mehr geantwortet haben so wie ihr wisst wird die bildschirmanzeige geändert wenn man einen driver deinstaliert hat xD jetzt kommt ein...
|
GUICtrlCreateCheckbox Rückgabewert?
01/09/2010 - AutoIt - 9 Replies
Hallo, ich hab mal wieder eine Frage, ist sehr leicht zu beantworten.
$Fischkiller = GUICtrlCreateCheckbox ( "Fischkiller an?", 240, 200 )
Func _Fischtoeten()
Switch $Fischkiller
Case 0 ; Welchen Wert muss ich hier eintragen?
Sleep ( 10 )
Case Else
For $e = 1 To UBound ( $Fisch ) -1
|
sry falscher post
12/26/2009 - Metin2 Trading - 0 Replies
sry wegen doppelpost
|
Falscher Wert
10/21/2009 - AutoIt - 1 Replies
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <nomadmemory.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Werte", 633, 447, 192, 124)
$Zauber = GUICtrlCreateGroup("Zauber", 16, 16, 137, 201)
$Crit = GUICtrlCreateLabel("Kritisch", 22, 120, 78, 17)
$Tempo = GUICtrlCreateLabel("Tempowertung", 22, 152, 75, 17)
$SB = GUICtrlCreateLabel("Schadensboni", 22, 33, 80, 17)
|
All times are GMT +2. The time now is 07:17.
|
|