Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 自动热键-脚本在一段时间后停止工作_Loops_Autohotkey - Fatal编程技术网

Loops 自动热键-脚本在一段时间后停止工作

Loops 自动热键-脚本在一段时间后停止工作,loops,autohotkey,Loops,Autohotkey,我的脚本有问题,大约每运行20-30分钟就会停止正常工作。问题似乎在于我构建的循环,它在特定时间后停止。并不是整个脚本停止工作,因为例如,当我按下caps lock上的另一个绑定时,它的行为正常。此外,当重新加载自动热键脚本时,我会收到一条消息“脚本无法重新加载”。这是我在循环出现此问题之前从未遇到过的 下面是代码: #IfWinActive Tibia SplashTextOn, 100, 40, Running, WASD WinMove, Running,, 1, 21

我的脚本有问题,大约每运行20-30分钟就会停止正常工作。问题似乎在于我构建的循环,它在特定时间后停止。并不是整个脚本停止工作,因为例如,当我按下caps lock上的另一个绑定时,它的行为正常。此外,当重新加载自动热键脚本时,我会收到一条消息“脚本无法重新加载”。这是我在循环出现此问题之前从未遇到过的

下面是代码:

#IfWinActive Tibia
    SplashTextOn, 100, 40, Running, WASD
    WinMove, Running,, 1, 21

;SUSPEND AND INFORMATION===================================================
CapsLock::
Suspend
Toggle := !Toggle
if (Toggle = 0)
SplashTextOn, 90, 25, Running, WASD
  WinMove, Running,, 1, 27

if (Toggle = 1)
{
  SplashTextOn, 120, 40, NOT RUNNING, TYPING
  WinMove, NOT RUNNING,, 1497, 69
}
return


NumpadAdd::
MsgBox, You have 0.5 seconds to mouse over MAIN BACKPACK.
Sleep, 500
MouseGetPos, mainbpxpos, mainbpypos

MsgBox, You have 0.5 seconds to mouse over MAIN SLOT BACKPACK.
Sleep, 500
MouseGetPos, mainbpslotxpos, mainbpslotypos

MsgBox, You have 0.5 seconds to mouse over FOOD.
Sleep, 500
MouseGetPos, foodxpos, foodypos

MsgBox, You have 0.5 seconds to mouse over HAND.
Sleep, 500
MouseGetPos, handxpos, handypos

MsgBox, You have 0.5 seconds to mouse over BLANK on GROUND.
Sleep, 500
MouseGetPos, blankgroundxpos, blankgroundypos

MsgBox, You have 0.5 seconds to mouse over LAST BLANK.
Sleep, 500
MouseGetPos, lastblankxpos, lastblankypos

MsgBox, You have 0.5 seconds to mouse over MADE RUNES POS.
Sleep, 500
MouseGetPos, maderunesxpos, maderunesypos

MsgBox, You have 0.5 seconds to mouse over RUNBACK POSITION (OUT HOUSE).
Sleep, 500
MouseGetPos, runbackxpos, runbackypos

MsgBox, You have 0.5 seconds to mouse over RUN POSITION (IN HOUSE).
Sleep, 500
MouseGetPos, runxpos, runypos

InputBox, blankrunesleft, Blank runes left, Enter the blank runes left, , 200, 170

MsgBox, SCRIPT IS ABOUT TO RUN, CLOSE ALL BPS!

BreakLoop = 0
iamout = 0
enemy = 0
Loop
{
    if (BreakLoop = 1) {
        break
    }

    Loop, %blankrunesleft%
    {
        if (BreakLoop = 1) {
            break
        }
        SetMouseDelay, 5
        battleOne := ReadMemory(0x5C6950,"Tibia")
        ;Notify(battleOne)
        if (battleOne > 0) {
            MouseClick, left, runxpos, runypos
            Sleep, 30000
            MouseClickDrag, left, mainbpslotxpos, mainbpslotypos, blankgroundxpos, blankgroundypos
            Sleep, 400
            Send, {Control Down}g{Control Up}
            Sleep, 200
            Send, {Enter}
            Sleep, 5000
            iamout = 0
        }

        if (battleOne == 0) {
            if (iamout == 0) {
                MouseClick, right, mainbpxpos, mainbpypos
                Sleep, 200
                MouseClick, right, blankgroundxpos, blankgroundypos
                Sleep, 200
                MouseClickDrag, left, blankgroundxpos, blankgroundypos, mainbpslotxpos, mainbpslotypos
                Sleep, 200
                MouseClick, left, runbackxpos, runbackypos
                iamout = 1
                Sleep, 500
            }
        }

        mana := ReadMemory(0x5C682C,"Tibia")
        if (iamout == 1) {
            if (mana > 999) {
                MouseClick, right, foodxpos, foodypos
                Sleep, 60
                MouseClick, right, foodxpos, foodypos
                Sleep, 60
                MouseClick, right, foodxpos, foodypos
                Sleep, 100
                MouseClickDrag, left, lastblankxpos, lastblankypos, handxpos, handypos
                Sleep, 350
                Send, Adori Vita Vis
                Sleep, 100
                Send, {Enter}
                Sleep, 500
                MouseClickDrag, left, handxpos, handypos, lastblankxpos, lastblankypos
                Sleep, 350
                blankrunesleft -= 1
            }
        }
        if (iamout == 1) {
            if (blankrunesleft == 0) {
                Sleep, 100
                MouseClick, left, runxpos, runypos
                Sleep, 2000
                MouseClickDrag, left, mainbpslotxpos, mainbpslotypos, maderunesxpos, maderunesypos
                Sleep, 400
                MouseClick, right, mainbpxpos, mainbpypos
                Sleep, 500
                blankrunesleft = 20
                iamout = 0
            }
        }
    }
}

Esc::
BreakLoop = 1
return

#IfWinActive

编辑:加起来,我已经重新启动了电脑,并在这个脚本上做了两个以上的测试。结果是它总是在22分钟后停止正常运行。我不知道是什么原因造成的,如果您能稍微重新安排一下,我将非常感谢您的帮助

使用其他热键例程将其移动到顶部;热键应该始终位于脚本的顶部

Esc::
BreakLoop = 1
return
在最后一个
{

这将在循环结束时阻止脚本退出

至于你每22分钟停一次——这可能是循环序列的长度吗?因为时间似乎是一致的,你应该能够通过留意同时发生的事件来发现问题

另外,当脚本说它不会重新加载时,你能告诉脚本在哪一行吗?如果你右键单击托盘图标并选择“打开”,你将能够看到正在处理的行的状态。
这种debuggin方法还可以显示每行处理和运行所需的时间。这在您的情况下可能非常有价值。

您确定它没有运行吗?22分钟后,您是否可以看到脚本的托盘图标消失?如果脚本正在运行,托盘图标将在系统托盘中可见。是的,脚本图标仍然在那里,并且作为一个图标如上所述,当我尝试重新加载它时,我遇到一条消息“脚本无法重新加载”。实际上,我已经被引导通过“调试技巧”来检查循环本身是否有问题在我的脚本中。我发现它实际上不是循环本身的问题,因为它一直在运行,当我遇到脚本在这22分钟后停止正常工作时。我真的想知道,由于每次都发生的精确时间,可能是某种内存问题?啊,这是一个奇怪的问题。你可以吗使用SystemExplorer并查看进程列表,看看您是否注意到了什么?它将显示新进程何时开始以及它们的命令行是什么。我想不出脚本无法重新加载的任何原因,除非出现脚本错误,或者有什么东西阻止了autohotkey.exe(可能是防病毒?)好的,谢谢,我将下载并安装SystemExplorer进行下一次测试,目前我已在我的vmware机器上安装了不同版本的windows,并获得了最新的自动热键版本,以查看是否会出现问题。回到您的问题,出现问题的机器根本没有运行任何反病毒,这是唯一的“安全性”它有windows防火墙。ThanksHow您的脚本正在启动和重新启动吗?谢谢,我对它进行了调试,并意识到我需要在读取内存后给脚本一段时间,因此使用睡眠。现在它工作正常,再次感谢:)您的意思是
}
?我的脚本也有同样的情况。如果再次发生,我会附上日志?@SmartManoj哇,我很久以前就写过这个解决方案了。。。不,我不是说
}
。这将产生完全不同的效果。如果你想帮我写剧本,Manoj,你需要发布一个新问题。那么你的意思是第126行的
{
?这个新问题不会是个傻瓜吧?