Autohotkey 如何使用函数参数执行多个 imageSearches

Autohotkey How can I do multiple imageSearches using a function parameter

我正在尝试使用图像搜索从游戏中的物品商店购买某些物品。有 8 个插槽,因此我需要循环 8 次。如果它们出现,我需要购买 4-5 种不同的商品。

这是我用来购买的功能:

marketFunc(item)
{
    Loop, 8
    {
        ImageSearch, OutputVarX, OutputVarY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, item
        if !ErrorLevel
        {
            outY = %OutputVarY%
            outY += 119
            MouseMove, %OutputVarX%, %OutY%
            Sleep, 250
            Click
            Sleep, 750
            MouseClick, left,  797,  456
            Sleep, 750
            MouseClick, left,  687,  473
            Sleep, 100
        }
        Sleep, 250
    }
}

然后我一直这样调用函数:

marketfunc(chip.png)
sleep, 500
marketfunc(ticket.png)
sleep, 500
marketfunc(scroll.png)
sleep, 500
marketfunc(masterScroll.png)
sleep, 500
marketfunc(otherItemHere.png)

我知道没有这样的功能我也能做到:

Loop, 8
{
    ImageSearch, OutputVarX, OutputVarY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, ticket.png
    if !ErrorLevel
    {
        outY = %OutputVarY%
        outY += 119
        MouseMove, %OutputVarX%, %OutY%
        Sleep, 250
        Click
        Sleep, 750
        MouseClick, left,  797,  456
        Sleep, 750
        MouseClick, left,  687,  473
        Sleep, 100

    }
    Sleep, 250

    ImageSearch, OutputVarX, OutputVarY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, chip.png
    if !ErrorLevel
    {
        outY = %OutputVarY%
        outY += 119
        MouseMove, %OutputVarX%, %OutY%
        Sleep, 250
        Click
        Sleep, 750
        MouseClick, left,  797,  456
        Sleep, 750
        MouseClick, left,  687,  473
        Sleep, 100

    }
    Sleep, 250

    ImageSearch, OutputVarX, OutputVarY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, scroll.png
    if !ErrorLevel
    {
        outY = %OutputVarY%
        outY += 119
        MouseMove, %OutputVarX%, %OutY%
        Sleep, 250
        Click
        Sleep, 750
        MouseClick, left,  797,  456
        Sleep, 750
        MouseClick, left,  687,  473
        Sleep, 100

    }
    Sleep, 250

    ImageSearch, OutputVarX, OutputVarY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, masterScroll.png
    if !ErrorLevel
    {
        outY = %OutputVarY%
        outY += 119
        MouseMove, %OutputVarX%, %OutY%
        Sleep, 250
        Click
        Sleep, 750
        MouseClick, left,  797,  456
        Sleep, 750
        MouseClick, left,  687,  473
        Sleep, 100

    }
    Sleep, 250

    ImageSearch, OutputVarX, OutputVarY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, otherItemHere.png
    if !ErrorLevel
    {
        outY = %OutputVarY%
        outY += 119
        MouseMove, %OutputVarX%, %OutY%
        Sleep, 250
        Click
        Sleep, 750
        MouseClick, left,  797,  456
        Sleep, 750
        MouseClick, left,  687,  473
        Sleep, 100

    }
    Sleep, 250
}

但是我不喜欢它的外观,感觉代码太难了。

如有任何帮助,我们将不胜感激。

没关系让它工作。

    marketFunc("chip.png")
    marketFunc("ticket.png")
    marketFunc("basicScroll.png")
    marketFunc("heroicScroll.png")


marketFunc(item)
{
    Loop, 8
    {
        ImageSearch, OutputVarX, OutputVarY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %item%
        if !ErrorLevel
        {
            outY = %OutputVarY%
            outY += 119
            MouseMove, %OutputVarX%, %OutY%
            Sleep, 250
;           Click
            Sleep, 750
;           MouseClick, left,  797,  456
            Sleep, 750
;           MouseClick, left,  687,  473
            Sleep, 100

        }
        Sleep, 250

    }
}

您也可以为此使用数组:

Array := [Item1, Item2, ..., ItemN]

或者你的情况

Images := ["chip.png", "ticket.png", "basicScroll.png", "heroicScroll.png"]

然后您可以遍历该数组并改用索引处的值。