Hallo zusammen,
eines vorweg zur besseren Vorstellung: Ich spiele Diablo 2 und mache gerade sog. Speedruns. Dabei macht man in schnellen Durchgängen immer wieder das selbe und zählt die Anzahl der Runs mit.
Um das nicht alles selbst machen zu müssen, habe ich mir ein Script gebastelt, welches einfach nur schaut, wann die Speicherzeit des Charakters sich geändert hat.
Das funktioniert soweit auch wunderbar. Allerdings ist das Problem, dass er beim schließen des Fensters ewig nicht reagiert weil ich im "While" ein "Sleep(150)" eingebaut habe mit anschließender Prüfung des last changed Attributes.
Hier der Code:
#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
$frmMain = GUICreate("D2 Runcounter", 300, 50)
$lblCountText = GUICtrlCreateLabel("Runs:", 10, 10, 100, 25)
$lblCounter = GUICtrlCreateLabel("0", 120, 10, 100, 25)
GUISetState(@SW_SHOW, $frmMain)
Global $sTimeStamp = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC
Global $sFileTimeInit = FileGetTime("D:\\Diablo II\\D2\\Save\\_LOD_SharedStashSave.sss", 0, 1)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_Save()
ExitLoop
EndSwitch
Sleep(150)
_Counter()
WEnd
Func _Counter()
$sFileTimeCurr = FileGetTime("D:\\Diablo II\\D2\\Save\\_LOD_SharedStashSave.sss", 0, 1)
IF $sFileTimeInit < $sFileTimeCurr Then
$sFileTimeInit = $sFileTimeCurr
GUICtrlSetData($lblCounter, GUICtrlRead($lblCounter)+1)
EndIf
EndFunc
Func _Save()
FileDelete(@ScriptDir & "\\Runs.txt")
FileWrite(@ScriptDir & "\\Runs.txt", GUICtrlRead($lblCounter))
EndFunc
Alles anzeigen
Wie schaffe ich es, dass das Script im Hintergrund _Counter() ausführt ohne dabei das GUI zu freezen?
Vielen Dank für alle Antworten und LG,
der Robert
P.S.: Das hier ist kein Bot, sondern soll einfach nur zählen