[AutoIt] PlayerBase / Storage Problem

11/03/2011 07:09 fliege#1
Hej, ich hoffe mal ich bin hier richtig .. :">
Also - aus einem Tutorial hab ich mal versucht schlau zu werden wie denn das mit dem Speicherauslesen funktioniert.. hier mal die Funktion:
Code:
Func _RefreshProcessData()
$WoWWindow = WinList("World of Warcraft")
$WoWProcess = _BMOpenProcess(WinGetProcess("World of Warcraft"))
$WoW_PlayerBase = _BMReadMemory($WoWProcess,
_BMReadMemory($WoWProcess, _BMReadMemory($WoWProcess, $PlayerBase, 'ptr') +
$PlayerBaseOffset1, 'ptr') + $PlayerBaseOffset2, 'ptr')
$WoW_PlayerStorage = BMReadMemory($WoWProcess, $WoW_PlayerBase +
0x8, 'ptr')
EndFunc
Dabei ist die $WoW_PlayerBase bei mir immer 0x00000000 - folglich dann auch der Storage.. Kann es vielleicht daran liegen das ich die falschen Adressen hab? - Aus einem Forum hab ich mir das rausgesucht:
Code:
0x00A32738

offset 1: 0x38
offset 2: 0x24
diese hab ich jetzt als einzelne Variablen innerhalb des Skripts stehen - kanns vielleicht auch daran liegen?

Ich hätt einfach nur gern eine Möglichkeit mir (falls vorhanden) den Bergbau bzw. Kräuterskill auszulesen, das Level des Spielers und perfekt wären natürlich auch seine aktuellen koordinaten.. nur hab ich absolut keinen Schimmer was ich dazu tun muss.. :/

b) Der Verfasser des Tutorials schreibt:
Quote:
Wie man an den
PlayerStorage kommt ist selbsterklärend.
ja.. halbwegs.. nur - was macht dieses +0x8 dort?

Wär echt super sollte sich jemand finden der mir das erklären könnte.. :">
11/10/2011 06:14 Endecs#2
Du musst zu deinem Offset "wow.exe" also den Prozess selbst dazu zählen.
Früher war es immer "400000" nun ändert es sich immer, hab das jetzt nicht mehr im Kopf wie das hieß, aber auf jeden Fall steht die Antwort oben, gab hier mal ein Thread von Bl@ze in dem auch ein AutoIt script vorhanden war, also wie es Funktioniert.

Such einfach nach allen Themen von Bl@ze
11/10/2011 07:33 Bodog6#3
Code:
$pid = WinGetProcess("World of Warcraft") ; hier besorge ich die PID
$hProcess = _MemoryOpen($pid)  ; ich öffne den Wert  mit dem oben herausbekommenen PID
$wowbase = _MemoryGetBaseAddress($hProcess, 1)
Zur wowBase addierst du dann den playerbase pointer und anschließend die zwei Offsets.
Das 0x8 könnte ein altes Offset für die playerbase gewesen sein, ansonsten scheint es mir komisch dadrin.