Pointer + Offsets in AutoIt beschreiben

05/31/2010 00:40 Chillex#31
Danke schonmal für die antworten :D
werde es dann später ausprobieren da ich den pc grad runtergefahren hab.
Schau hier grad noch von meinem iPod aus rein ^^
will mich jez auch mal hinlegen..
Jedenfalls danke und gut Nacht. :D
05/31/2010 01:33 Neku!#32
Quote:
Originally Posted by huberhans View Post
Schonmal den indirekten Weg probiert?

PHP Code:
$Wert _Memorypointerread($pointer,$open,$Offset))
GUICtrlSetData($Label1$Wert[1]) 
Mit dieser Antwort hast du auch mir sehr geholfen huberhans. Möchte nur wissen warum das so sein soll. Also damit meine ich jetzt speziell die [1] nach dem $Wert.

Du hast ja $Wert bei Zeile 1 ganz normal definiert ohne dieses "[1]", warum aber muss das dann in der zweiten Zeile stehen?
Es funktioniert, aber ich möchte es auch gerne verstehen.
Auf jedenfall bekommst du dafür ein Thanks.
05/31/2010 11:21 huberhans#33
Quote:
Originally Posted by Jack990 View Post
Mit dieser Antwort hast du auch mir sehr geholfen huberhans. Möchte nur wissen warum das so sein soll. Also damit meine ich jetzt speziell die [1] nach dem $Wert.

Du hast ja $Wert bei Zeile 1 ganz normal definiert ohne dieses "[1]", warum aber muss das dann in der zweiten Zeile stehen?
Es funktioniert, aber ich möchte es auch gerne verstehen.
Auf jedenfall bekommst du dafür ein Thanks.
Weil _memorypointerread aus der "Variable" $Wert ein Array macht, was ja mehrere Werte enthalten kann. mit der [1] "sagen" wir dem Script, daß es den ersten Wert des Arrays verwenden soll.

Gruß
05/31/2010 12:51 BestOfElite#34
Huberhans kannste mir vllt auch nochmal helfen?? zur Not können wir das auch per pn machen damit das hier nicht so vollgespammt wirt mit dem freezen un zur Leiche telepotieren
05/31/2010 12:58 huberhans#35
Quote:
Originally Posted by BestOfElite View Post
Huberhans kannste mir vllt auch nochmal helfen?? zur Not können wir das auch per pn machen damit das hier nicht so vollgespammt wirt mit dem freezen un zur Leiche telepotieren
Freezen is einfach... per Button oder Checkbox eine Variable setzen bzw. Checkbox abfragen.
In der Hauptschleife eine Funktion aufrufen, in der die Memory geschrieben wird, etwa so:

PHP Code:
$CBX Guictrlcreatecheckbox()

While 
1
.
.
.

Freezefunktion()
WEnd

Func Freezefunktion
()
   If 
GUICtrlRead($CBX) = $GUI_CHECKED Then
      _MemoryPointerWrite
($Pointer$Prozess$Offset$WERT)
   EndIf
EndFunc 
Damit läuft die Funktion immerzu mit durch und wenn die CBX gesetzt ist, wird die Memory geschrieben. Freezen an sich geht nicht, aber im Millisekundentakt neu schreiben klappt genauso.

Gruß

P.S.: Musste jetzt schnell gehen, muß gleich auf Arbeit... Wenn noch Fragen sind, dann bitte bis nach 23 Uhr warten.
05/31/2010 13:28 BestOfElite#36
wenn u wieder da bist dann hab ich Die Frage wenn ich das per buttonklik machen will muss ich dann nicht überall checkbox eingeben sonder Butten oder :D

es soll ja auf einem Button gefrezzt werden und auf einem anderen defrezzt also muss er immer abfragen
ob der defrezzbutoon schon geklickt wurde oder?
05/31/2010 20:50 Chillex#37
so danke jetzt gehts also HP wert auslesen und in einem label anzeigen^^.
habe jetzt aber ein kleines Problem weil der Wert in der GUI immer so flackert.
das hast du ja schon auf Seite 2 angesprochen aber so richtig verstanden hab ichs nicht, wie ich es nun vermeiden kann dass es nicht mehr flackert.
@BestOfElite schau auch mal Seite 2 da steht wie man die Adresse durch Buttonklick sozusagen freezen kann. :D
05/31/2010 22:56 BestOfElite#38
Jaaaaaa hab ich grad gesehen :D ich hab's mir vorher nicht so genau angeguck xD und das mit den hp muss ich mit auch noma anguckn :D
05/31/2010 23:52 huberhans#39
So, jetzt nochmal zum flackern...
Wenn man den einfachen Weg nimmt:
PHP Code:
$Wert _Memorypointerread($pointer,$open,$Offset))
GUICtrlSetData($Label1$Wert[1]) 
flackert die GUI, da bei jedem Durchlauf des Scripts der Wert im Label neu geschrieben wird.

Um das zu umgehen, setzen wir einfach ne Bedingung, die das Label nur aktualisiert, wenn sich die HP geändert haben. Das sieht dann folgendermaßen aus:

1. Wir definieren VOR der Hauptschleife schonmal eine Variable:
PHP Code:
Global $AKT_HP 
2. In der While-Schleife machen wir das dann wie folgt:
PHP Code:
$HP _Memorypointerread($pointer,$open,$Offset_HP))
If 
$HP[1] <> $AKT_HP Then
   $AKT_HP 
$HP[1]
   
GUICtrlSetData($Label_HP$AKT_HP)
EndIf 
Zur Erklärung:
  1. $HP wird von der Memory beschrieben
  2. wir vergleichen den Wert in $HP[1] mit $Akt_HP
  3. Wenn nun eine Differenz festgestellt wird, setzen wir $Akt_HP gleich $HP[1] (dem Wert aus der Memory)
  4. und beschriften $Label_HP in der GUI neu
Wird keine Abweichung festgestellt, wird auch das Label nicht neu gesetzt.

Hoffe es war verständlich jetzt

Gruß
06/01/2010 03:19 KDeluxe#40
Das mit Buttons lässt sich in C++ besser umsetzen (wie so vieles), mit einem Trick funktioniert es aber auch mit AutoIt.

PHP Code:
;...
Global 
$Write

While True
    $msg 
GUIGetMsg()
    Switch 
$msg
        
Case -3
            
Exit
        Case 
$Button1
            $Write 
Not $Write
    
EndSwitch

    If 
$Write Then
        
;_MemoryPointerWrite()
    EndIf
WEnd 
Ungetestet, sollte aber funktionieren.
06/01/2010 07:16 BestOfElite#41
K werd's gleich Mal probieren
06/01/2010 12:32 huberhans#42
Ich mach's halt so:

PHP Code:
Global $Write 0

While True
    $msg 
GUIGetMsg()
    Switch 
$msg
        
Case -3
            
Exit
        Case 
$Button1
            
If $Write 0 Then
               $Write 
1
            
ElseIf $Write 1 Then
               $Write 
0
            
EndIf
    EndSwitch

    If 
$Write 1 Then
        
;_MemoryPointerWrite()
    EndIf
WEnd 
06/01/2010 13:08 BestOfElite#43
ok das mit dem button klappt jetzt und jetzt zum thema HP ^^ muss ich das in der while schleife aber nach endswitch mein label heißt label_HP mein offset Offset_HP aber wenn ich den code nehme dann passiert garnichts ;(
06/01/2010 13:16 KDeluxe#44
PHP Code:
$HP _Memorypointerread($pointer,$open,$Offset_HP)
$AKT_HP GUICtrlRead($label_HP)
If 
$HP[1] <> $AKT_HP Then GUICtrlSetData($Label_HP$HP[1]) 
06/01/2010 13:57 BestOfElite#45
aso ich wusste es ich hatte $AKT_HP nicht beschrieben aber jetzt kommt
$HP = _Memorypointerread($pointer,$open,$Offset_HP)) <-- voführ die doppelklammer??
$HP = ^ ERROR

sagen wirs mal so in meinem label ist jetzt ein kleiner punkt