Fragen zum Memory

11/02/2010 19:45 Try2HoldMeDown#1
hi leute,

ich beschäftige mich in den letzten tagen mit den memory funktionen und habe unter anderem dazu auch die beiträge hier im forum durch gelesen. jetzt sind jedoch ein paar fragen aufgekommen, wo es super wäre, wenn ihr mir da vielleicht helfen könntet....


fangen wir bei den adressen an...
manche werte haben nur einen bereich von 0 bis/oder 1. zb leben/tot, laufen/stehen oder die lebensanzeige, welche ja relativ 0 bis 1 angegeben wird. diese kann man noch irgentwo im speicher suchen, aber wie finde ich werte heraus, die mir komplett unbekannt sind ? wie die
- x und y koordinate
- die ids von npcs
- oder denn gerade ladenden skillz ?

ich laß was von wegen unchanged, same as first, changed, aber meistens bringt das am ende trozdem kein ergebnis. ich weiß es gibt tools dafür, aber ich würde das ganz gerne selbst machen.

dann zu den offsets....
habe ich das richtig verstanden, dass offsets sowas wie verschieber sind ? also suche die adresse des pointers und gehe x schritte weiter ?

und dann hatte ich in einem beitrag hier im forum einen code zum auslesen der lebens- und energie punkte. ich fand dazu noch woanders die aktuelle adresse und habe es kurz ein wenig formatiert (p1 = pointer1)

ist es richtig, dass man hier die adresse aus p1 und nem offset 104 nimmt, und dazu jeweils verschiedene offsets, je nach anliegen ? falls ja, wozu geht man dann über pointer1 ?

Code:
#include "NomadMemory.au3"
Local $PID = WinGetProcess("Guild Wars")
Global $hprocess = _MemoryOpen($PID)

; Adressen
Global $HP_EP	= 0xd41538


Func _MEN_HP_EP ()
	Local $p1 = _MemoryRead($HP_EP,       $hprocess)
	Local $p2 = _MemoryRead($p1+0x104, $hprocess)

	Global $ep_max = _MemoryRead($p2 + 0x18, $hprocess)
	Global $hp_max = _MemoryRead($p2 + 0x2C, $hprocess)

	Global $ep_cur	= Floor($ep_max * _MemoryRead($p2 + 0x14, $hprocess, "float")) ; von relativ in absolute ganzzahl
	Global $hp_cur	= Floor($hp_max * _MemoryRead($p2 + 0x28, $hprocess, "float")) ; von relativ in absolute ganzzahl
EndFunc
Schon mal danke im vorraus

MfG

derindarbe
11/02/2010 20:15 NBA#2
Also zu nummer 1:
Wenn du eine Adresse fuer einen wert suchst, brauchst du etwas was diesen genauen wert aendert.
Dann kannst du (zumindest in CE) nach einem "unchanged value" suchen, sollte sich der wert noch nicht geaendert haben. Wenn du den wert aenderst, suchst du nach einem "changed value".
Danach wiederholst du das, wobei du den wert stetig aenderst und manchmal gleich laesst und nat. nach den "unchanged" oder "changed" value suchst. Irgentwann hast du dann eine kleine Auswahl an werten, es kann auch sein, dass mehrere addressen den wert enthalten. Von da an musst du zu Hand suchen.

Ungefaehr so habe ich es in Erinnerung.
Sorry wenn iwas nicht ganz stimmt, ist ne ganze weile her, das ich sowas gemacht habe.

evtl. koennen dir da wadim oder azu helfen, aber die sind nicht (mehr) auf diesem board.
11/02/2010 21:18 Try2HoldMeDown#3
Hey, erst danke, aber ich hatte mir eigentlich erhofft, dass mir jemand eine konkrete vorgehenweise schildern könnte, wie man die

- x und y koordinate
- die ids von npcs
- oder denn gerade ladenden skills

rausfindet
11/02/2010 23:03 kknb#4
wo ist das problem? immer wenn du gelaufen bist-> changed value, stehen geblieben -> unchanged value. ab und zu mal stehen bleiben und irgendwas anderes ändern wie fenster öffnen, verschieben, waffen wechseln usw und dann nach unchanged suchen. selbe prinzip bei npc ids. skills gehen auf die art und weise nicht glaub ich.

bitte.
11/03/2010 17:31 Barra Sargtlin#5
Quote:
Originally Posted by derindarbe View Post
ist es richtig, dass man hier die adresse aus p1 und nem offset 104 nimmt, und dazu jeweils verschiedene offsets, je nach anliegen ? falls ja, wozu geht man dann über pointer1 ?

Code:
#include "NomadMemory.au3"
Local $PID = WinGetProcess("Guild Wars")
Global $hprocess = _MemoryOpen($PID)

; Adressen
Global $HP_EP	= 0xd41538


Func _MEN_HP_EP ()
	Local $p1 = _MemoryRead($HP_EP,       $hprocess)
	Local $p2 = _MemoryRead($p1+0x104, $hprocess)

	Global $ep_max = _MemoryRead($p2 + 0x18, $hprocess)
	Global $hp_max = _MemoryRead($p2 + 0x2C, $hprocess)

	Global $ep_cur	= Floor($ep_max * _MemoryRead($p2 + 0x14, $hprocess, "float")) ; von relativ in absolute ganzzahl
	Global $hp_cur	= Floor($hp_max * _MemoryRead($p2 + 0x28, $hprocess, "float")) ; von relativ in absolute ganzzahl
EndFunc
Hat wer hierzu vielleicht noch eine Antwort ?
11/03/2010 19:49 buFFy!#6
[Only registered and activated users can see links. Click Here To Register...]