Naja, du hattest ja kurz deinen Code gepostet.
Du solltest es vermeiden alles innerhalb der While-Schleife des Skriptes zu haben.
Erstelle lieber einzelne Funktionen, die du immer wieder aufrufst, anstatt innerhalb der Skript-Schleife alles per Do-Until zu machen.
Z.B.:
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $StateMatch = "Start"
Global $Color_HalbzeitEins = 0x373937, $Color_HalbzeitZwei = 0x181919
Opt("GUIOnEventMode", 1)
; Fenster zum Starten und Überwachen des aktuellen Fortschrittes
$W_Main = GUICreate("Form1", 208, 143, -1, -1)
$Btn_Start = GUICtrlCreateButton("Start", 64, 40, 75, 25)
$Ll_State = GUICtrlCreateLabel("Status: ", 16, 96, 40, 17)
$Ll_State_Dat = GUICtrlCreateLabel("Label2", 64, 96, 116, 33)
GUICtrlSetOnEvent($Btn_Start, "_GuiControl")
GUISetOnEvent($GUI_EVENT_CLOSE, "_GuiControl")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func _GameController()
AdlibRegister("_ShowGameState", 500) ; Generiert einen permanenten Tooltip mit aktuellen Informationen und aktualisiert das UI
GUICtrlSetState($Btn_Start, $GUI_DISABLE) ; deaktiviert den Start-Button bis 1 Runde beendet wurde
_Spielvorbereitung()
_HalbZeitAktionen(1)
_HalbZeitAktionen(2)
GUICtrlSetState($Btn_Start, $GUI_ENABLE) ; aktiviert den Start-Button wieder
_StopLoops()
EndFunc
Func _StopLoops()
AdlibUnRegister("_ShowGameState")
AdlibUnRegister("_GameController")
EndFunc
Func _Spielvorbereitung()
$StateMatch = "Vorbereitung"
Sleep(10000)
Send("{Enter}")
Sleep(1000)
Send("{Enter}")
Sleep(1000)
Send("{down}")
Sleep(1000)
Send("{Enter}")
Sleep(1000)
; Turnierauswahl
Send("{Left}")
Sleep(1000)
Send("{Enter}")
Sleep(400)
Send("{Up}")
Sleep(250)
Send("{Enter}")
Sleep(1000)
; Spielplan
For $i = 1 To $i = 7 Step 1
Send("{Enter}")
Sleep(1500)
Next
EndFunc
Func _HalbZeitAktionen($pHalbzeit = 1)
Local $Farbe
Select
Case $pHalbzeit = 1 ; 1. Halbzeit
$StateMatch = "1. Halbzeit"
Do
Sleep(10)
Send("{d down}")
Sleep(1000)
Send("{d up}")
send("{space down}")
sleep(50)
send("{space up}")
Sleep(10)
$Farbe = PixelGetColor (560, 520)
Until $Farbe = $Color_HalbzeitEins
send("{enter}")
Sleep(1000)
Case $pHalbzeit = 2 ; 2. Halbzeit
$StateMatch = "2. Halbzeit"
Do
Sleep(10)
Send("{d down}")
Sleep(1000)
Send("{d up}")
send("{space down}")
sleep(50)
send("{space up}")
Sleep(10)
$Farbe = PixelGetColor (112, 972)
Until $Farbe = $Color_HalbzeitZwei
EndSelect
EndFunc
Func _ShowGameState($pInfo = 0)
Local $tDisplaypData
Select
Case $pInfo = 0 ; Standard: Zeigt aktuellen Spielstatus
$tDisplaypData = "Aktueller Spielstatus: " & $StateMatch
Case $pInfo = 1 ; Skript pausiert
$tDisplaypData = "Skript pausiert!" & @CRLF & "Spielstatus: " & $StateMatch
EndSelect
ToolTip($tDisplaypData, -1, -1, "Fortschritt") ; aktualisiert den Tooltip
GUICtrlSetData($Ll_State_Dat, $tDisplaypData) ; aktualisiert das GUI
EndFunc
Func _GuiControl()
Select
Case @GUI_CtrlId = $GUI_EVENT_CLOSE ; schließen button des Fenster gedrückt
Exit
Case @GUI_CtrlId = $Btn_Start ; start gedrückt
AdlibRegister("_GameController")
EndSelect
EndFunc