Also ein HI an alle AutoIt'ler,
Erstmal ich bin AutoIt Anfänger. (nur so zur Info)
Jetzt auch schon sofort zur Frage:
Ich hab im Spiel "4story"(online Game) den Pointer + 2 Offsets für die Adresse gefunden ,die mich durch Beeinflussen
entweder sichtbar oder unsichtbar erscheinen lässt.
Nur ich weiß wirklich nicht wie ich nun die Pointer mit den Offsets benutzen soll.
Wenn ich Button1 anklicke soll ich unsichtbar werden.
(ahso value die einen unsichtbar macht 16842753)
so hätte ich es mir vorgestellt aber es klappt nicht ^^
Case $Button1 _MemoryWrite($pointer,$open,$Offset,16842753)
Hab schon im 4story bereich gefragt hab auch Antworten bekommen
bei denen ich anfangs dachte sie würden mir weiterhelfen
aber dem ist nicht so.
Nun hoffe ich hier auf Hilfe, dass mir jemand erklären kann wie man Pointer+ Offsets ins AutoItscript einbaut
und wie ich sie ,wie Adressen beschreiben(im Sinne verändern) kann
(Habe hier schon einige threads dazu gefunden (9stück) aber keiner hat mir wirklich weitergeholfen.
In Google hab ich auch schon lange Zeit gesucht aber nirgends gibts ein Beispiel an dem ich sehen könnte wies geht)
Du mußt erstmal nachsehen, ob deine NomadMemory.au3 die Funktionen _MemoryPointerRead und _MemoryPointerWrite hat.
Falls ja ist es ganz einfach:
PHP Code:
#include <NomadMemory.au3>
> Hier sollte irgendwo die GUI definiert werden <
GUISetState(@SW_SHOW, $GUI)
Global $Pointer = 0x0069D8F0 Global $Open = _MemoryOpen(ProcessExists("TClient.exe")) Global $Offset[3] = [0, 0xA20, 0x42c]
While 1 $NMG = GUIGetMsg() Switch $NMG Case $GUI_EVENT_CLOSE Exit Case $Button1 _MemoryPointerWrite($Pointer, $Open, $Offset, 16842753) EndSwitch WEnd
Wichtig hierbei: Bei den Offsets musst du die "0x" mit angeben, damit die Werte als Hex-Zahlen erkannt werden!
Wenn du nur die Funktion _MemoryWrite zur Verfügung hast, mußt du meines Wissens die Offsets auf den Pointer addieren, hab ich persönlich aber nie so gemacht, da die MemoryPointer-Geschichte einfacher in der Handhabung ist.
Meine Nomadmemory.au3 hat zwar MemoryPointerWrite und MemoryPointerRead nicht dafür hab ich die Pointer.au3 genommen.
Deine Antwort war mir eine wirklich groooße Hilfe
Es funktioniert, so mein Problem wäre damit gelöst
Case $Radio1 Global $EOffset[3] = [0, 0xA08 ,0x474] $check = GUICtrlRead($Radio1) _MemoryPointerWrite($pointer1,$open,$EOffset,$check,"424")
das "$check" müsste eigentlich nichtmal in den PointerWrite teil.
naja egal.
Es geht mir nur darum dass ich die Adresse nicht "freezen" kann wie bei CE zum bespiel.
Sobald ich im SPiel eine Aktion ausführe sezt sich der Wert "424" einfach zurück.
Und ich weiß nicht warum.
Bei anderen Adressen wie z.B bei "Invisible"(der Unsichtbarkeit) freezt sich der Wert und bei der nicht.
Hab es mal mit einer while Schleife probiert da "freezt" sich der Wert zwar dann aber ich kann in dem Fenster keine weiteren Sachen mehr anklicken.
Also habs mal so probiert nur so kann ich nichts mehr im Fenster machen^^
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit While 2 Case $Radio1 Global $EOffset[3] = [0, 0xA08 ,0x474] $check = GUICtrlRead($Radio1) _MemoryPointerWrite($pointer1,$open,$EOffset,$check,"424") Wend EndSwitch WEnd
hoffentlich kann mir jemand sagen wie man denn nun den einen Wert in AutoIt freezen kann.
(ahja der Wert ,um den es hier geht ist in CE freezbar nur in AutoIt schaff ich's nicht)
(edit. obwohl die adressen freezen sich bei mir nie so richtig nur ne zeit lang oder garnicht^^
also meine Frage lautet nun eher wie man jeden Wert in AutoIt freezt )
Freezen an sich kannst mit AutoIt nicht. Was du machen kannst, ist folgendes.
Du kannst die _MemoryPointerWrite()-Zeile in ner Schleife laufen lassen, dann wird dein Wert immer wieder neu gesetzt.
So, nun gibt's aber auf dem ersten Blick das Problem, daß das Script ja dann in dieser Schleife hängen bleibt. Dazu ist die Lösung eigentlich ganz simpel.
Eine Haupt-Schleife hast ja sowieso. Nun kannst du ja aus dieser Funktionien aufrufen.
Setz für den Wert, den du gefreezt haben willst einfach ne Checkbox als Bedingung, dann siehts folgendermaßen aus:
PHP Code:
While 1 . . .
Setze_Wert() ; Hier wird die Funktion zur Abarbeitung aufgerufen Wend
Func Setze_Wert() If GUICtrlRead($CheckBox) = $GUI_CHECKED THEN _MemoryPointerWrite() EndIf Endfunc
Kurz zur Erklärung:
Dein Script durchläuft ja immer die HauptSchleife von oben nach unten und springt von dort aus immer zu den aufgerufenen Funktionen und wieder zurück in die Schleife. Ist nun in der GUI die Bedingung erfüllt (Checkbox angehakt) dann setzt dein Script in der Funktion Setze_Wert() eben die Memory-Adresse jedes mal, wenn es an der Reihe ist (im Millisekunden-Takt) den Wert neu.
Fertig
Gruß
P.S.: Die Checkbox war nur zur Erklärung, die Bedingung kannst natürlich auch über 'n Radion-Button oder sonstiges festlegen.
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit
Case $Radio1 BeschreibeAdresse()
EndSwitch WEnd
Func BeschreibeAdresse() If GUICtrlRead($Radio1) = $GUI_CHECKED THEN Global $EOffset[3] = [0, 0xA08 , 0x474] _MemoryPointerWrite($pointer1,$open,$EOffset,"424")
EndIf Endfunc
Mach ich irgendetwas falsch?
Ich sehe in Cheat Engine dass sich der Wert in 424 ändert aber wenn ich im Spiel was mache ändert sich die Value wieder in eine ganz andere.
Das "$GUI_CHECKED" muss ich das vielleicht noch deffinieren in mein Script,
weil das ja eine variable ist?
Aber eigentlich ja nicht ,sonst hätte AutoIt ja schon gemekert dass es eine
nicht deffinierte variable ist und das hat es nicht.
Ich weiß nun wirklich nicht wie ich weitermachen soll
also wie ich adressen freezen soll.
Oder ist doch ein Fehler im dem Script von mir?
(sorry ,dass ich das ,von dir geschriebene nur doof kopiere und an meinem script leicht anpasse ,
aber hab leider nicht so viel Ahnung von AutoIt ^^)
Schreib mal den funktionsaufruf in der schleife nach dein EndSwitch.
Da in der Funktion die Bedingung sowieso abgefragt wird, brauchst sie nicht per Case $Radio1 aufrufen sondern einfach dauerhaft mit laufen lassen
Edit: Weil ich's grad seh, den Offset kannst auch vor der Schleife definiern, das muß nicht in der Funktion stehen
hm.
(1)okay Funktion hinter das EndSwitch getan aber jetzt kommt einer Error
"While Statment has no matching WEnd statement"
also die while schleife hat kein richtiges Ende.
Und es gibt ein "Wend".
(2)Und was ich noch nicht versteh ist dass ich das "Case $Radio1 " nicht brauche.
Das Programm muss doch wissen auf welche/n Radiobutton, Button Checkbox etc. ich die Funktion grade anwenden will?
(3) wenn ich dass Offset nicht vor den _MemoryPointerWrite teil schreibe dann sagt er mir dass er die variable $Offset nicht fiinden kann.
es geht nur wenn die Variable $Offset vor dem PointerWrite Teil steht.
Also hab das jetzt nicht ganz verstanden^^
auch danke für die antwort nur das habe ich ja schon bereits gemacht.^^
leider wird die Adresse dadurch nicht gefreezt.
und ich weiß nicht wie ich das richtig anstellen soll.^^
auch danke für die antwort nur das habe ich ja schon bereits gemacht.^^
leider wird die Adresse dadurch nicht gefreezt.
und ich weiß nicht wie ich das richtig anstellen soll.^^
PHP Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
BeschreibeAdresse()
WEnd
Func BeschreibeAdresse()
If GUICtrlRead($Radio1) = $GUI_CHECKED THEN
Global $EOffset[3] = [0, 0xA08 , 0x474]
_MemoryPointerWrite($pointer1,$open,$EOffset,"424")
asoo
okay danke ..so wird die funktion also immer wiederholt^^
Richtig! Jede Funktion, die so in der Haupt-Schleife aufgerufen wird wird bei jedem Durchlauf derselben abgearbeitet. In den Funktionen einfach mit If eine Bedingung festlegen, die du dann per Button, Checkbox, Radio, TimerInit/TimerDiff oder auch über ausgelesene Values ansteuer kannst.
Offsets/Pointer 04/14/2010 - World of Warcraft - 4 Replies Huhu,
hat wer die Offsets/Pointer für WoW 3.3.3a ?
Wäre n1!
ECSRO Pointer / Offsets 06/16/2009 - SRO PServer Guides & Releases - 28 Replies I'll release it here for all coders out there.
Charname = A00340
Server name = A002C0
Max HP = A01624
Max MP = A01628
STR = A0162C
INT = A0162E
Dynamic things:
[Help] Pointer,Offsets,Etc. 05/29/2009 - Kal Online - 10 Replies Heyjo,
Aaalso...
Ich hab mich vorher noch nie mit Artmoney befasst bzw. nur 1-2 mal für speedhack das wars aber auch schon.
Mir geht es jetzt um den Pointer, Offsets kram.
Wenn ich Pointer suchen möchte such ich erst mal die normale adresse...sagen wir jetzt von der X Coordinate
in meinem Fall jetzt:
085EBDA8
jetzt mach ich nen rechtsklick drauf --> Mehr... --> Suche.. --> Pointer zu dieser Adresse suchen:
0 Ergebnisse
Wenn ich Pointer ab Anfang des Speicherblocks suchen klicke, kriegt...
need help getting mob pointer and offsets 12/21/2008 - Silkroad Online - 1 Replies well as the topic sais i wanna get the memory adresses to read mobdata like playerdata
so far i found the adress for mobhp in the memory
the adress changes with each mob so i've set a breakpoint in olly and got the offset 0x440
with that offset i got the pointer for that client
u can c that here:
http://silkroad-planet.de/Magic/mob_hp.jpg
the mob was a movia(54hp) and the pointer was 0x9CE4E6C
well now i'm able to get the data of that client for each mob i select...