SetTimer
与脚本的其余部分并行运行其任务,这就是为什么你没有看到循环等待。
你可以包括计时器内循环,这将迫使它等待循环完成其任务,前打破,如下面的代码:
DoTheLoop()
{
StartTime := A_TickCount ; Set current tick time (uptime of PC) to compare against.
loop
{
ElapsedTime := A_TickCount - StartTime ; Difference between start of loop and now.
SendInput, %ElapsedTime%{Enter}
Sleep, 1000
if (ElapsedTime >= 10000) ; 10.0 sec.
{
break
}
}}
Home::
SetTimer, skillbuffs
skillbuffs:
DoTheLoop()
SendInput, Skillbuffs timer has fired.{Enter}
SetTimer, skillbuffs, On
return
但是,这充其量是个杂牌,因此不是100%可靠的。除此之外,如果你有明确定义的任务和时间表,你似乎在过度设计这个问题。
相反,我会建议去简单:
MainLoop()
{
StartTime := A_TickCount ; Set current tick time (uptime of PC) to compare against.
loop
{
ElapsedTime := A_TickCount - StartTime ; Difference between start of loop and now.
; Do stuff in the loop.
if (ElapsedTime >= 60000) ; 60.0 sec.
{
SendInput, {F5} ; Press self skill every 60 sec.
StartTime := A_TickCount ; Reset StartTime variable.
}
}}
Home::
MainLoop()
return
目前尚不清楚你的要求。使用您当前的代码,计时器将每分钟运行一次,然后“主”循环将继续运行。 – Oleg