|
You last visited: Today at 17:19
Advertisement
Pointer + Offsets in AutoIt beschreiben
Discussion on Pointer + Offsets in AutoIt beschreiben within the AutoIt forum part of the Coders Den category.
05/15/2010, 22:40
|
#1
|
elite*gold: 15
Join Date: Apr 2010
Posts: 987
Received Thanks: 2,101
|
Pointer + Offsets in AutoIt beschreiben
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.
Dazu ein Screen aus Moonlight Engine
Pointeradresse ist "0069D8F0"
Offset 1 : A20
Offset 2 : 42c
..bringen mich zu der Adresse mit der ich im Spiel "visible" bzw "invisible" bin.
So nun meine Frage ist wie ich Pointer + die Offsets im AutoIt script so verbaue ,dass sie durch einen Buttonklick aktiviert werden.
Bis dahin komme ich zuzeit aber weiter weiß ich nicht mehr.
PHP Code:
#include <NomadMemory.au3> $open = _MemoryOpen(ProcessExists("TClient.exe")) $pointer = 0x0069D8F0 Dim $Offset [3] $offset[0] = 0 $offset[1] = 0x42C $offset[2] = 0xA20
der Anfang müsste doch so richtig sein oder?
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 ^^
PHP Code:
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)
|
|
|
05/16/2010, 02:03
|
#2
|
elite*gold: 0
Join Date: Nov 2009
Posts: 927
Received Thanks: 1,317
|
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.
Gruß
|
|
|
05/16/2010, 13:41
|
#3
|
elite*gold: 15
Join Date: Apr 2010
Posts: 987
Received Thanks: 2,101
|
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
|
|
|
05/18/2010, 17:55
|
#4
|
elite*gold: -186
Join Date: Jul 2009
Posts: 94
Received Thanks: 109
|
wo kann ich die Pointer.au3 runterladen
|
|
|
05/18/2010, 18:29
|
#5
|
elite*gold: 0
Join Date: Nov 2009
Posts: 927
Received Thanks: 1,317
|
Einfach mal googlen
|
|
|
05/22/2010, 19:38
|
#6
|
elite*gold: 15
Join Date: Apr 2010
Posts: 987
Received Thanks: 2,101
|
so hab jetzt noch eine Frage ..
das mit pointern beschreiben hab ich verstanden danke nochmal
also:
ich hab einen Radio(-button?)
so ich weiß wie ich nun auslese
und beschreibe:
PHP Code:
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^^
PHP Code:
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  )
|
|
|
05/22/2010, 20:18
|
#7
|
elite*gold: 0
Join Date: Nov 2009
Posts: 927
Received Thanks: 1,317
|
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.
|
|
|
05/22/2010, 21:07
|
#8
|
elite*gold: 15
Join Date: Apr 2010
Posts: 987
Received Thanks: 2,101
|
Danke für deine Antwort 
...Mh also verstanden hab ichs aber der Wert setzt sich leider immer noch zurück.
Mein Code:
PHP Code:
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 ^^)
|
|
|
05/22/2010, 21:29
|
#9
|
elite*gold: 0
Join Date: Nov 2009
Posts: 927
Received Thanks: 1,317
|
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
|
|
|
05/22/2010, 22:06
|
#10
|
elite*gold: 15
Join Date: Apr 2010
Posts: 987
Received Thanks: 2,101
|
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^^
|
|
|
05/22/2010, 22:43
|
#11
|
elite*gold: 0
Join Date: May 2010
Posts: 6
Received Thanks: 1
|
Hier so sollte es gehen:
Code:
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, Dec("A08"), Dec("474")]
_MemoryPointerWrite($pointer1, $open, $EOffset, "424")
EndIf
EndFunc ;==>BeschreibeAdresse
|
|
|
05/22/2010, 22:54
|
#12
|
elite*gold: 15
Join Date: Apr 2010
Posts: 987
Received Thanks: 2,101
|
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.^^
|
|
|
05/22/2010, 23:03
|
#13
|
elite*gold: 0
Join Date: Nov 2009
Posts: 927
Received Thanks: 1,317
|
Quote:
Originally Posted by Chillex
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")
EndIf
Endfunc
Probier's so
|
|
|
05/23/2010, 18:51
|
#14
|
elite*gold: 15
Join Date: Apr 2010
Posts: 987
Received Thanks: 2,101
|
asoo 
okay danke ..so wird die funktion also immer wiederholt^^
|
|
|
05/23/2010, 20:28
|
#15
|
elite*gold: 0
Join Date: Nov 2009
Posts: 927
Received Thanks: 1,317
|
Quote:
Originally Posted by Chillex
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.
Gruß
|
|
|
 |
|
Similar Threads
|
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...
|
All times are GMT +1. The time now is 17:19.
|
|