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