Hallo ich programmiere grade mein ersten bot mit "ImageSearch" und habe das Problem das nach einer weile die Fehlermeldung stack overflow kommt und ich weis nicht wie ich das verhindern soll.
Ich arbeite mit autoit seit 2 Wochen und das ist mein Ergebnis.
Ich hoffe das ihr mir helfen könnt.
Danke.
Der autoit code
kann geclosed werden :)
Ich arbeite mit autoit seit 2 Wochen und das ist mein Ergebnis.
Ich hoffe das ihr mir helfen könnt.
Danke.
Der autoit code
Code:
#include<Misc.au3>
#include <windowsconstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <ImageSearch.au3>
#include <MsgBoxConstants.au3>
#include <ComboConstants.au3>
HotKeySet("{TAB}", "Iniciar")
HotKeySet("{ESC}","Salir")
HotKeySet("{PAUSE}", "Pausa")
Global $CorMap12_x1,$CorMap12_y1,$CorMap12_x2,$CorMap12_y2
global $CorMap11_x1,$CorMap11_y1,$CorMap11_x2,$CorMap11_y2
Global $CorMap10_x1,$CorMap10_y1,$CorMap10_x2,$CorMap10_y2
Global $CorMap9_x1,$CorMap9_y1,$CorMap9_x2,$CorMap9_y2
Global $CorMap8_x1,$CorMap8_y1,$CorMap8_x2,$CorMap8_y2
Global $CorMap7_x1,$CorMap7_y1,$CorMap7_x2,$CorMap7_y2
Global $CorMap6_x1,$CorMap6_y1,$CorMap6_x2,$CorMap6_y2
Global $CorMap5_x1,$CorMap5_y1,$CorMap5_x2,$CorMap5_y2
Global $CorMap4_x1,$CorMap4_y1,$CorMap4_x2,$CorMap4_y2
Global $CorMap3_x1,$CorMap3_y1,$CorMap3_x2,$CorMap3_y2
Global $CorMap2_x1,$CorMap2_y1,$CorMap2_x2,$CorMap2_y2
Global $CorMap1_x1,$CorMap1_Y1,$CorMap1_x2,$CorMap1_y2
Global $Mini_x1,$Mini_y1,$Mini_y2,$Mini_x2
Global $ImageSearch0 = @ScriptDir & "\palla.bmp"
Global $ImageSearch1 = @ScriptDir & "\bicho.bmp"
Global $ImageSearch2 = @ScriptDir & "\boss.bmp"
Global $ImageSearch3 = @ScriptDir & "\bonus.bmp"
$found_x=0
$found_y=0
$vercion="1.6"
;programa start
Func bichos()
While 1
$bicho=_ImageSearchArea( $ImageSearch1, 1, $CorMap1_x1,$CorMap1_y1,$CorMap1_x2,$CorMap1_y2,$found_X, $found_Y, 60 )
If $bicho=1 Then
MouseClick("LEFT",$found_x+40,$found_y-40)
Sleep(200)
Send( "{LCTRL}")
Sleep(1000)
boss()
ElseIf $bicho=0 Then
boss()
EndIf
WEnd
EndFunc
Func boss()
While 1
$bicho=_ImageSearchArea( $ImageSearch2, 1, $CorMap1_x1,$CorMap1_y1,$CorMap1_x2,$CorMap1_y2,$found_X, $found_Y, 60 )
If $bicho=1 Then
MouseClick("LEFT",$found_x+40,$found_y-40)
Sleep(500)
Send( "{LCTRL}")
Sleep(1000)
bichos()
ElseIf $bicho=0 Then
Iniciar()
EndIf
WEnd
EndFunc
Func Iniciar()
$a=$CorMap1_x2-$CorMap1_x1 ; larghezza CorMapangolo grande
$b=$CorMap1_y2-$CorMap1_y1; altezza CorMapangolo grande
;CorMapangolo 2
; coord alto sin
$CorMap2_x1=$CorMap1_x1+$a/24
$CorMap2_y1=$CorMap1_y1+$b/24
;coord basso dex
$CorMap2_x2=$CorMap2_x1+$a*11/12
$CorMap2_y2=$CorMap2_y1+$b*11/12
;CorMapangolo 3
; coord alto sin
$CorMap3_x1=$CorMap2_x1+$a/24
$CorMap3_y1=$CorMap2_y1+$b/24
;coord basso dex
$CorMap3_x2=$CorMap3_x1+$a*5/6
$CorMap3_y2=$CorMap3_y1+$b*5/6
;CorMapangolo 4
; coord alto sin
$CorMap4_x1=$CorMap3_x1+$a/24
$CorMap4_y1=$CorMap3_y1+$b/24
;coord basso dex
$CorMap4_x2=$CorMap4_x1+$a*3/4
$CorMap4_y2=$CorMap4_y1+$b*3/4
;CorMapangolo 5
; coord alto sin
$CorMap5_x1=$CorMap4_x1+$a/24
$CorMap5_y1=$CorMap4_y1+$b/24
;coord basso dex
$CorMap5_x2=$CorMap5_x1+$a*2/3
$CorMap5_y2=$CorMap5_y1+$b*2/3
;CorMapangolo 6
; coord alto sin
$CorMap6_x1=$CorMap5_x1+$a/24
$CorMap6_y1=$CorMap5_y1+$b/24
;coord basso dex
$CorMap6_x2=$CorMap6_x1+$a*7/12
$CorMap6_y2=$CorMap6_y1+$b*7/12
;CorMapangolo 7
; coord alto sin
$CorMap7_x1=$CorMap6_x1+$a/24
$CorMap7_y1=$CorMap6_y1+$b/24
;coord basso dex
$CorMap7_x2=$CorMap7_x1+$a/2
$CorMap7_y2=$CorMap7_y1+$b/2
;CorMapangolo 8
; coord alto sin
$CorMap8_x1=$CorMap7_x1+$a/24
$CorMap8_y1=$CorMap7_y1+$b/24
;coord basso dex
$CorMap8_x2=$CorMap8_x1+$a*5/12
$CorMap8_y2=$CorMap8_y1+$b*5/12
;CorMapangolo 9
; coord alto sin
$CorMap9_x1=$CorMap8_x1+$a/24
$CorMap9_y1=$CorMap3_y1+$b/24
;coord basso dex
$CorMap9_x2=$CorMap9_x1+$a/3
$CorMap9_y2=$CorMap9_y1+$b/3
;CorMapangolo 10
; coord alto sin
$CorMap10_x1=$CorMap9_x1+$a/24
$CorMap10_y1=$CorMap9_y1+$b/24
;coord basso dex
$CorMap10_x2=$CorMap10_x1+$a/4
$CorMap10_y2=$CorMap10_y1+$b/4
;CorMapangolo 11
; coord alto sin
$CorMap11_x1=$CorMap10_x1+$a/24
$CorMap11_y1=$CorMap10_y1+$b/24
;coord basso dex
$CorMap11_x2=$CorMap11_x1+$a/6
$CorMap11_y2=$CorMap11_y1+$b/6
;CorMapangolo 12
; coord alto sin
$CorMap12_x1=$CorMap11_x1+$a/24
$CorMap12_y1=$CorMap11_y1+$b/24
;coord basso dex
$CorMap12_x2=$CorMap12_x1+$a/12
$CorMap12_y2=$CorMap3_y1+$b/12
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap12_x1, $CorMap12_y1, $CorMap12_x2, $CorMap12_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
ElseIf $palla1=0 Then
area2()
EndIf
WEnd
EndFunc
Func area2()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap11_x1, $CorMap11_y1, $CorMap11_x2, $CorMap11_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area3()
EndIf
WEnd
EndFunc
Func area3()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap10_x1, $CorMap10_y1, $CorMap10_x2, $CorMap10_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area4()
EndIf
WEnd
EndFunc
Func area4()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap9_x1, $CorMap9_y1, $CorMap9_x2, $CorMap9_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area5()
EndIf
WEnd
EndFunc
Func area5()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap8_x1, $CorMap8_y1, $CorMap8_x2, $CorMap8_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area6()
EndIf
WEnd
EndFunc
Func area6()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap7_x1, $CorMap7_y1, $CorMap7_x2, $CorMap7_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area7()
EndIf
WEnd
EndFunc
Func area7()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap6_x1, $CorMap6_y1, $CorMap6_x2, $CorMap6_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area8()
EndIf
WEnd
EndFunc
Func area8()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap5_x1, $CorMap5_y1, $CorMap5_x2, $CorMap5_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area9()
EndIf
WEnd
EndFunc
Func area9()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap4_x1, $CorMap4_y1, $CorMap4_x2, $CorMap4_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area10()
EndIf
WEnd
EndFunc
Func area10()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap3_x1, $CorMap3_y1, $CorMap3_x2, $CorMap3_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area11()
EndIf
WEnd
EndFunc
Func area11()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap2_x1, $CorMap2_y1, $CorMap2_x2, $CorMap2_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
ElseIf $palla1=0 Then
area13()
EndIf
WEnd
EndFunc
#cs
Func area12()
While 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap1_x1, $CorMap1_y1, $CorMap1_x2, $CorMap1_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap1_x1, $CorMap1_y1, $CorMap1_x2, $CorMap1_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
Iniciar()
EndIf
ElseIf $palla1=0 Then
area13()
EndIf
WEnd
EndFunc
#ce
Func area13()
While 1
Local $RandomX1, $RandomY1
$RandomX1 = Random($Mini_x1,$Mini_x2,1)
$RandomY1 = Random($Mini_y1,$Mini_y2,1)
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap1_x1, $CorMap1_y1, $CorMap1_x2, $CorMap1_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
MouseClick("LEFT",$found_x,$found_y)
Sleep(2000)
ElseIf $palla1=0 Then
MouseClick("LEFT",$RandomX1,$RandomY1,1,0)
_rastreo()
EndIf
WEnd
EndFunc
Func _rastreo()
For $i=1 to 100 step 1
$palla1=_ImageSearchArea( $ImageSearch0, 1, $CorMap1_x1, $CorMap1_y1, $CorMap1_x2, $CorMap1_y2, $found_X, $found_Y, 60 )
If $palla1=1 Then
Iniciar()
ElseIf $palla1=0 Then
Sleep(100)
EndIf
$bicho=_ImageSearchArea( $ImageSearch1, 1, $CorMap1_x1,$CorMap1_y1,$CorMap1_x2,$CorMap1_y2,$found_X, $found_Y, 60 )
If $bicho=1 Then
bichos()
EndIf
Next
Iniciar()
EndFunc
;programa END
;~ ------------------------------------------------------------------------------------------------
;rectagulo de seleccion
;~ ------------------------------------------------------------------------------------------------
Func Select_rectangle()
Local $Selected=0
Local $Coordinate[4]
$area = GUICreate("", 1, 1, 1, 1, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x33FF00, $area)
WinSetTrans($area, "", 80)
GUISetState()
While $Selected = 0
If _IsPressed("1") Then
$mp = MouseGetPos()
WinMove($area, "", $mp[0], $mp[1], 1, 1)
While _IsPressed('01')
$pos = MouseGetPos()
global $lefts = Order($mp[0], $pos[0])
global $tops = Order($mp[1], $pos[1])
WinMove($area, "", $lefts[0], $tops[0], $lefts[1], $tops[1])
ConsoleWrite($lefts[0] & ', ' & $tops[0] & ', ' & $lefts[1] & ', ' & $tops[1] & @CRLF)
WEnd
$Coordinate[0]=$lefts[0]
$Coordinate[1]=$tops[0]
$Coordinate[2]=$lefts[0]+$lefts[1]
$Coordinate[3]=$tops[0]+ $tops[1]
$Selected=1
EndIf
Wend
Guidelete($area)
return $coordinate
EndFunc
Func Order($a, $b)
Dim $res[2]
If $a < $b Then
$res[0] = $a
$res[1] = $b - $a
Else
$res[0] = $b
$res[1] = $a - $b
EndIf
Return $res
EndFunc
;~ ____________________________________________________________________________
;MENU
;~ ____________________________________________________________________________
If FileExists(@ScriptDir &"\Data.ini") Then ; Si existe leer INI
$CorMap1_x1=int(IniRead( @ScriptDir &"\Data.ini" , "Alto_sin" , "x" ,0))
$CorMap1_y1=int(IniRead( @ScriptDir &"\Data.ini" , "Alto_sin" , "y" ,0))
$CorMap1_x2=int(IniRead( @ScriptDir &"\Data.ini" , "Basso_dest" , "x",0 ))
$CorMap1_y2=int(IniRead( @ScriptDir &"\Data.ini" , "Basso_dest" , "y" ,0))
$Mini_x1=int(IniRead( @ScriptDir &"\Data.ini" , "Mini_sin" , "x",0 ))
$Mini_y1=int(IniRead( @ScriptDir &"\Data.ini" , "Mini_sin" , "y" ,0))
$Mini_x2=int(IniRead( @ScriptDir &"\Data.ini" , "Mini_dest" , "x" ,0))
$Mini_y2=int(IniRead( @ScriptDir &"\Data.ini" , "Mini_dest" , "y" ,0))
Else ;si no existe mostar menu
#Region ### START Koda GUI section ### Form=C:\Users\Gamer\Desktop\MacroBot\Resurces\Form1.kxf
$Form1_1 = GUICreate("MacroBot by Sr.William v" &$vercion, 448, 353, 435, 154)
$Button1 = GUICtrlCreateButton("Select Pantalla", 8, 56, 137, 57)
$Button2 = GUICtrlCreateButton("Select Minimapa", 8, 120, 137, 57)
$Button3 = GUICtrlCreateButton("Guardar", 8, 184, 137, 57)
$Label1 = GUICtrlCreateLabel("Selecciona Pantalla de Juego", 152, 56, 292, 57)
$Label2 = GUICtrlCreateLabel("Selecciona area de la niebla en el MiniMapa", 152, 128, 292, 49)
$Label3 = GUICtrlCreateLabel("Guardar la configuracion del Bot", 152, 192, 292, 49)
$Label4 = GUICtrlCreateLabel("Teclas rapidas:", 8, 256, 428, 65)
$Label5 = GUICtrlCreateLabel("MacroBot - Pixelbot para Darkorbit, Recolector de Paladio", 8, 8, 428, 41)
$Label6 = GUICtrlCreateLabel("TABULADOR: Iniciar el Bot", 8, 280, 436, 17)
$Label7 = GUICtrlCreateLabel("PAUSA: Pausar el Bot", 8, 304, 436, 17)
$Label8 = GUICtrlCreateLabel("ESC: Salir del Bot", 8, 328, 436, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1 ;cordenadas de pantalla
GUISetState(@SW_HIDE, $Form1_1)
Local $cord= Select_rectangle()
$CorMap1_x1=$cord[0]
$CorMap1_y1=$cord[1]
$CorMap1_x2=$cord[2]
$CorMap1_y2=$cord[3]
GUISetState(@SW_show, $Form1_1)
Case $Button2 ;cordenadas de minimapa
GUISetState(@SW_HIDE, $Form1_1)
Local $cord2=Select_rectangle()
$Mini_x1=$cord2[0]
$Mini_y1=$cord2[1]
$Mini_x2=$cord2[2]
$Mini_y2=$cord2[3]
GUISetState(@SW_SHOW, $Form1_1)
Case $Button3; escribir INI
Guidelete($Form1_1)
IniWrite( @ScriptDir &"\Data.ini" , "Alto_sin" , "x" , $CorMap1_x1)
IniWrite( @ScriptDir &"\Data.ini" , "Alto_sin" , "y" , $CorMap1_y1)
IniWrite( @ScriptDir &"\Data.ini" , "Basso_dest" , "x" , $CorMap1_x2)
IniWrite( @ScriptDir &"\Data.ini" , "Basso_dest" , "y" , $CorMap1_y2)
IniWrite( @ScriptDir &"\Data.ini" , "Mini_sin" , "x" , $Mini_x1)
IniWrite( @ScriptDir &"\Data.ini" , "Mini_sin" , "y" , $Mini_y1)
IniWrite( @ScriptDir &"\Data.ini" , "Mini_dest" , "x" , $Mini_x2)
IniWrite( @ScriptDir &"\Data.ini" , "Mini_dest" , "y" , $Mini_y2)
EndSwitch
WEnd
EndIf
While 1 ;Pausa asta eleccion
sleep(9999)
WEnd
Func Salir() ;Salir del programa
exit 0
EndFunc
Func Pausa() ;Pausa temporal
While 1
Sleep(1)
WEnd
EndFunc
kann geclosed werden :)