Autohotkey ahk脚本如何在没有递归的情况下调用自身?

Autohotkey ahk脚本如何在没有递归的情况下调用自身?,autohotkey,Autohotkey,我的自动热键脚本总是每隔3-5分钟崩溃一次我不知道为什么没有错误消息或者为什么会崩溃?可能是递归?有人能给我一些如何回到顶端的建议吗 继续脚本而不像递归一样调用自己?? 我对这门语言有点陌生,希望你能帮助我 这是我的密码 home:: main() { loot1() } loot1() { ImageSearch,violetX, violetY, 266, 141, 579, 527, C:\image\loot.png

我的自动热键脚本总是每隔3-5分钟崩溃一次我不知道为什么没有错误消息或者为什么会崩溃?可能是递归?有人能给我一些如何回到顶端的建议吗 继续脚本而不像递归一样调用自己?? 我对这门语言有点陌生,希望你能帮助我

这是我的密码

 home::
    main()
    {
    loot1() 
    }


    loot1()
    {
    ImageSearch,violetX, violetY, 266, 141, 579, 527, C:\image\loot.png
    If ErrorLevel
    mobs1() 
    else
    mousemove(%violetX%, %violetY%)
    MouseClick, left 
    main()
    }


    mobs1()
    {
    PixelSearch, X, Y, 22, 216, 776, 607, 0x00FF00, 0, fast
    If ErrorLevel
    mobs2()
    else
    mousemove(%X%, %Y%)
    MouseClick, left
    main()

    }


    mobs2()
    {
    ImageSearch,mobs2x, mobs2y, 243, 76, 776, 607, C:\image\green.png
    If ErrorLevel 
    tele() 
    else
    mousemove(%mobs2x%, %mobs2y%)
    MouseClick, left
    main()
     }

    tele()
    {
    ImageSearch,walkX, walkY, 394, 347, 413, 414, C:\image\walk.png
    If ErrorLevel
    tele2()
    else
    MouseClick, left, 200, 300
    main()


    }

    tele2()
    {
    Send {F9}
    sleep, 2000
    main()
    }
    return
编辑2到目前为止,但它没有返回到主循环

home::
Loop
    {
     loot1()        
    }
return




    loot1()
    {
    ImageSearch,violetX, violetY, 266, 141, 579, 527, C:\image\loot.png
    If ErrorLevel
    mobs1() 
    else
    mousemove(%violetX%, %violetY%)
    MouseClick, left 

    }


    mobs1()
    {
    PixelSearch, X, Y, 22, 216, 776, 607, 0x00FF00, 0, fast
    If ErrorLevel
    mobs2()
    else
    mousemove(%X%, %Y%)
    MouseClick, left


    }


    mobs2()
    {
    ImageSearch,mobs2x, mobs2y, 243, 76, 776, 607, C:\image\green.png
    If ErrorLevel 
    tele() 
    else
    mousemove(%mobs2x%, %mobs2y%)
    MouseClick, left

     }

    tele()
    {
    ImageSearch,walkX, walkY, 394, 347, 413, 414, C:\image\walk.png
    If ErrorLevel
    tele2()
    else
    MouseClick, left, 200, 300 ;-- walk



    }

    tele2()
    {
    Send {F9}
    sleep, 2000
    }
    return

调用它自己就是递归的意思,所以我认为“不使用递归调用它自己”是不可能的

如果要重复调用
loot1()
,则需要删除
main()
函数以及其他函数对它的所有调用,并将其替换为:

home::
    Loop {
        loot1()
    }

    loot1() 
    {
    ; the rest of your code the same

它似乎不起作用,它跳过了图像搜索。它只是一直在传送。。如何返回主循环?loot1(){ImageSearch,violetX,violetY,266141579527,C:\image\loot.png如果ErrorLevel mobs1()else mousemove(%violetX%,%violetY%)MouseClick,left main();----如何返回主循环?}删除对main的调用,它将再次执行
loot1()
@ArillleNahisi删除了对main()的调用,但它不是imagesearching。它一直在传送,请检查我的编辑2@ArillleNahis什么传送到哪里?自动热键无法传送。。。你怎么知道这不是图像搜索?@ArillleNahis不可能,它是从
mobs2()
调用的,而这是从
mobs1()
调用的。。。等