Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 16:08

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



While schleife wird ignoriert

Discussion on While schleife wird ignoriert within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
SpieleHacksInfo's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
While schleife wird ignoriert

Ich habe ein Problem und zwar, dass meine While Schleife zwei mal durch geführt und dann ignoriert bzw. das Script beendet wird. Ich bin atm. am verzweifeln und würde mich über eine hilfreiche Antwort freuen.
Und der Code da unten ist nur ein Snippet eigtl. soll VIEL mehr in der Schleife stehen. Ich habe eine alternativ Lösung für das Problem trotzdem würde ich gerne Wissen warum er da einfach "abhaut".
Code:
#RequireAdmin
#include <NomadMemory.au3>
#include <Array.au3>
Dim $x[99]
Dim $y[99]
Dim $z[99]
Dim $addier[99]
Dim $sum[99]
$base = 0x2330388
$pid = ProcessExists("t6zm.exe")
$handle = _MemoryOpen($pid)
While 1
	$playz = _MemoryRead( 0x2E490D58, $handle, "float")
$playy = _MemoryRead( 0x2E490D54, $handle, "float")
$playx = _MemoryRead( 0x2E490D50, $handle, "float")

$numofz = _MemoryRead($base,$handle);,"byte[4]")
;MsgBox(0,"",$numofz)
$base = $base + 0x44
For $i = 1 To $numofz
	$x[$i] = _MemoryRead($base,$handle,"float")
	$ybase = $base + 0x4
	$y[$i] =  _MemoryRead($ybase,$handle,"float")
	$zbase =  $ybase + 0x4
	$z[$i] =  _MemoryRead($zbase,$handle,"float")
    $base = $base + 0x30
	$i = $i + 1
	$x[$i] = _MemoryRead($base,$handle, "float")
	$ybase = $base + 0x4
	$y[$i] = _MemoryRead($ybase,$handle, "float")
	$zbase =  $ybase + 0x4
	$z[$i] = _MemoryRead($zbase,$handle, "float")
	$base = $base + 0x5C
Next
Sleep(500)
WEnd
//edit: Gerade als Funktion ausprobiert. Nach 2x benutzen beendet das Script wie in der Schleife.
SpieleHacksInfo is offline  
Old 10/09/2013, 15:57   #2
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Wenn der aus der Schleife "abhaut", dann liegt das wohl daran das du einen _MemoryRead falsch angewendet hast, poste doch mal den Fehler der in SciTE angezeigt wird, sonst können wir dir nicht helfen, oder du hast einfach die Arraygröße überschritten.
alpines is offline  
Old 10/09/2013, 15:59   #3
 
SpieleHacksInfo's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
Nope. Es gibt keinen Fehler.

Code:
>"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\SHI\Desktop\whynot.au3" /UserParams    
+>15:54:43 Starting AutoIt3Wrapper v.2.1.2.9    Environment(Language:0407  Keyboard:00000407  OS:WIN_8/  CPU:X64 OS:X64)
>Running AU3Check (1.54.22.0)  from:C:\Program Files (x86)\AutoIt3
+>15:54:43 AU3Check ended.rc:0
>Running:(3.3.8.1):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\SHI\Desktop\whynot.au3"    
--> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
Das alles steht nach beenden darin.
SpieleHacksInfo is offline  
Old 10/09/2013, 16:05   #4
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Es liegt vielleicht an einem anderen Teil des Codes, so ein kleines Snippet bringt einen auch nicht weiter.
alpines is offline  
Old 10/09/2013, 16:09   #5
 
SpieleHacksInfo's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
Kann nicht sein. Dieser Code alleine stürzt ab bzw. beendet nach 2 mal.
SpieleHacksInfo is offline  
Old 10/09/2013, 20:02   #6
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
Code:
#AutoIt3Wrapper_UseX64 = n

#RequireAdmin
#include <KDMemory.au3>

Dim $x, $y, $z
Dim $handles = 0, $processName = "t6zm.exe"

While True
    $processId = ProcessExists($processName)
    If $processId == 0 Then
        If IsArray($handles) Then
            _KDMemory_CloseHandles($handles)
            $handles = 0
        EndIf
    Else
        If $handles == 0 Then
            $handles = _KDMemory_OpenProcess($processId)
            If @error Then
                ;MsgBox()
                ContinueLoop
            EndIf
        EndIf

        $base = 0x2330388
        $count = _KDMemory_ReadProcessMemory($handles, $base, "DWORD")

        ReDim $x[$count]
        ReDim $y[$count]
        ReDim $z[$count]

        $base += 0x44
        For $i = 0 To $count - 1
            $x[$i] = _KDMemory_ReadProcessMemory($handles, $base, "float")
            $base2 = $base + 0x04
            $y[$i] = _KDMemory_ReadProcessMemory($handles, $base2, "float")
            $base2 += 0x04
            $z[$i] = _KDMemory_ReadProcessMemory($handles, $base2, "float")

            $i += 1
            If $i >= $count Then ExitLoop

            $base += 0x30
            $x[$i] = _KDMemory_ReadProcessMemory($handles, $base, "float")
            $base2 = $base + 0x04
            $y[$i] = _KDMemory_ReadProcessMemory($handles, $base2, "float")
            $base2 += 0x04
            $z[$i] = _KDMemory_ReadProcessMemory($handles, $base2, "float")

            $base += 0x5C
        Next
        ;_ArrayDisplay()
    EndIf
    Sleep(500)
WEnd
Ich spar es mir an dieser Stelle mal alle Änderungen zu nennen. Kann es aber gerne noch machen, sofern gewünscht.
KDeluxe is offline  
Thanks
1 User
Old 10/09/2013, 20:04   #7
 
SpieleHacksInfo's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
Danke sehr lieb von dir. Ich sehe die Änderungen schon.
Ich schau gleich mal nach.
//edit: geht leider doch nicht
SpieleHacksInfo is offline  
Old 10/09/2013, 20:42   #8
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
es ist absolut NICHT möglich, das das von dir gepostete tool nach 2 durchläufen aus der schleife springt (zumindest ohne error), da es keinerlei abbruchbedingungen in der schleife gibt.

wahrscheinlichste fehlerursache in deinem script ist ein zu hoher array index, da du in keinem fall auf den maximalen index prüfst.
lolkop is offline  
Thanks
1 User
Old 10/09/2013, 21:00   #9
 
SpieleHacksInfo's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
Ich bekomme es einfach nicht hin. Ich weiss, dass es eigtl. nicht möglich ist. -.-
Bei meinem komplettem Code beendet er schon vor vollständigem Durchlauf.

Code:
#RequireAdmin
#include <Array.au3>
#include <NomadMemory.au3>

$base = 0x2330388
$pid = ProcessExists("t6zm.exe")
$handle = _MemoryOpen($pid)
HotKeySet("{Numpad0}","aim")


While 1
Sleep(1000)
WEnd





Func aim()
	MsgBox(0,"","aim")
	$playz = _MemoryRead( 0x2E490D58, $handle, "float")
$playy = _MemoryRead( 0x2E490D54, $handle, "float")
$playx = _MemoryRead( 0x2E490D50, $handle, "float")

$numofz = _MemoryRead($base,$handle)
	$base = $base + 0x44
	Dim $x[$numofz]
Dim $y[$numofz]
Dim $z[$numofz]
Dim $addier[$numofz]
Dim $sum[$numofz]
For $i = 1 To $numofz
	$x[$i] = _MemoryRead($base,$handle,"float")
	$ybase = $base + 0x4
	$y[$i] =  _MemoryRead($ybase,$handle,"float")
	$zbase =  $ybase + 0x4
	$z[$i] =  _MemoryRead($zbase,$handle,"float")
    $base = $base + 0x30
	$i = $i + 1
	$x[$i] = _MemoryRead($base,$handle, "float")
	$ybase = $base + 0x4
	$y[$i] = _MemoryRead($ybase,$handle, "float")
	$zbase =  $ybase + 0x4
	$z[$i] = _MemoryRead($zbase,$handle, "float")
	$base = $base + 0x5C
Next

;_ArrayDisplay($x)
;_ArrayDisplay($y)
;_ArrayDisplay($z)

For $i = 1 To $numofz
	$addier[$i] = $x[$i] + $y[$i]
Next

;_ArrayDisplay($addier)
$playaddier = $playx + $playy
;near
$near = 0
For $i = 1 To $numofz
$sum[$i] = $addier[$i] - $playaddier
Next
For $i = 1 To $numofz
	If $near > $sum[$i] Then
		$near = $sum[$i]
		$numofnear = $i
	EndIf
Next
$mx = _MemoryRead(0x2D3EFB40, $handle, "float")
$my = _MemoryRead(0x2D3EFB3C, $handle, "float") ;höhe
$zw1y = $my / 360
$zw1x = $mx / 180
$zw2y = $zw1y * $y[$numofnear]
$zw2x = $zw1x * $x[$numofnear]
_MemoryWrite(0x2D3EFB40, $handle, $zw2x, "float")
_MemoryWrite(0x2D3EFB3C, $handle, $zw2y, "float")
MsgBox(0,"","aimed")
EndFunc
Ich musste meinen Pc letztens neu aufsetzen und habe Autoit komplett neu heruntergeladen.
SpieleHacksInfo is offline  
Old 10/09/2013, 21:41   #10
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Du kannst den Sleep auf 100ms reduzieren.
Strukturier mal deinen Code besser, da erkennt man ja gar nichts.

Setz am besten in jede Zeile deiner Funktion eine MsgBox mit einer bestimmten Zahl, wenn keine MsgBox mehr angezeigt wird, weist du welche Funktion dein Script rauskickt.
alpines is offline  
Old 10/09/2013, 23:10   #11
 
SpieleHacksInfo's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
Sooooo die Lösung. Als erstes möchte ich mich sehr sehr sehr bei KDeluxe bedanken.

Das Problem war, dass wie er in seinem Skript schon gezeigt hatte fängt eine Matrix bzw. ein Array ja bei 0 an zu zählen und $i fängt ja leider nach meiner Definition bei 1 an also ist die Lösung bei jedem For $i = 1 To $numofz. Das ganze so zu ersetzen. For $i = 0 To $numofz. Interessant, dass das bei der Autoit Console nicht als Fehler angezeigt wird.
SpieleHacksInfo is offline  
Old 10/09/2013, 23:13   #12
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by SpieleHacksInfo View Post
Sooooo die Lösung. Als erstes möchte ich mich sehr sehr sehr bei KDeluxe bedanken.

Das Problem war, dass wie er in seinem Skript schon gezeigt hatte fängt eine Matrix bzw. ein Array ja bei 0 an zu zählen und $i fängt ja leider nach meiner Definition bei 1 an also ist die Lösung bei jedem For $i = 1 To $numofz. Das ganze so zu ersetzen. For $i = 0 To $numofz. Interessant, dass das bei der Autoit Console nicht als Fehler angezeigt wird.
das ist kein grund für das script vorzeitig zu enden... frühzeitiges ende durch fehler kann nur bei überschreitung der arraydimension auftauchen...

ein ende des scriptes ohne fehler ist in deinem fall in keinem falle möglich...
lolkop is offline  
Old 10/09/2013, 23:16   #13
 
SpieleHacksInfo's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
Quote:
Originally Posted by lolkop View Post
das ist kein grund für das script vorzeitig zu enden... frühzeitiges ende durch fehler kann nur bei überschreitung der arraydimension auftauchen...

ein ende des scriptes ohne fehler ist in deinem fall in keinem falle möglich...
Komischer Weise lief es so bis gerade eben. Jetzt läuft er wieder nur noch einmal durch. -.- Trotzdem danke an alle die mir geholfen haben.
SpieleHacksInfo is offline  
Old 10/10/2013, 00:14   #14
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by SpieleHacksInfo View Post
Code:
Dim $x[$numofz]
Dim $y[$numofz]
Dim $z[$numofz]
For $i = 1 To $numofz
	[...]
	$i = $i + 1
	$x[$i] = _MemoryRead($base,$handle, "float")
	$ybase = $base + 0x4
	$y[$i] = _MemoryRead($ybase,$handle, "float")
	$zbase =  $ybase + 0x4
	$z[$i] = _MemoryRead($zbase,$handle, "float")
	$base = $base + 0x5C
Next
eigentlich ist ganz klar was hier passiert...

du deklarierst drei arrays der größe $numofz... dementsprechend ist das letzte element der arrays $array[$numofz-1]. deine schleife hingegen läuft bis $numofz. ist dieser letzte schritt erreicht, so inkrementierst du den index sogar nochmals und kommst so auf $x[$numofz+1] womit die arraygröße sogar um 2 überschritten wird....

abstürzen tut das ganze aber schon bei $i=$numofz-1 da hier das inkrementieren bereits zu einer überschreitung der maximalen größe führt....
lolkop is offline  
Old 10/10/2013, 00:30   #15
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Er meinte aber, das das Script ohne Fehler durchläuft.
Das kann aber nicht stimmen wenn es wegen der Arraygröße abstürzt.
alpines is offline  
Reply


Similar Threads Similar Threads
Hosts Datei wird ignoriert
07/10/2013 - Technical Support - 8 Replies
Hallo Leute ich hab ein kleines Problem mit meiner Hosts Datei. Also erstmal was ich alles darin stehen hab: 127.0.0.1 youtube.com 127.0.0.1 facebook.com Eigentlich sollte das richtig sein da es früher immer geklappt hat.
Quest-> Schleife in einer Schleife?
04/15/2013 - Metin2 Private Server - 3 Replies
Hallo Community, ist es möglich in einer bestehenden Schleife eine weitere einzufügen die unabhängig von der 1. schleife agiert?
10 mal Schleife, dann 5 Sekunden Pause, dann wieder 10 mal Schleife, ...
05/06/2012 - AutoIt - 6 Replies
Hallo, wie mache ich es, dass nach 10 Mal Schleife einmal Sleep (5000) gemacht wird? Danach soll die Schleife wieder aufgenommen werden. LG Zottel
[AutoIt3] Schleife wird nicht erkannt
12/24/2010 - AutoIt - 5 Replies
Ich versuche einen Color aimbot zu programmieren. Ich habe eine Schleife eingebaut, die endet, wenn er den Bildschirm von links nach rechts untersucht hat (Erstmal nur mit der Größe von meinen Monitor) AutoIt erkennt aus irgendeinem Grund aber nicht die Schleife und denkt, das Until währe falsch. Die Meldung : " "Until" statement with no matching "Do" statement.: Until $x = 1280 " Gelöst Gelöst Hier mal ein Ausschnitt aus meinem Code (Die Variablen habe ich schon definiert, nicht,...
while-schleife cast x | schleife ende cast y
07/26/2010 - Diablo 2 Programming - 6 Replies
ich kann nicht einschlafen und versuche gerade halbwach herauszufinden, wie ich den bot etwas casten lassen kann, um ihn anschließend nach 10-15 casts etwas anderes casten zu lassen. if(NTA_GetResistance(target, NTA_DAMAGE_PHYSICAL) >= 100) { if((target.name == "Pindleskin") && NTA_GetResistance(target, NTA_DAMAGE_PHYSICAL) >= 100) { var i =0; while(i<15) { return NTC_CastSkill(106, NTC_HAND_LEFT, target); i++;



All times are GMT +1. The time now is 16:09.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.