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"]
然后您可以遍历该数组并改用索引处的值。
我正在尝试使用图像搜索从游戏中的物品商店购买某些物品。有 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"]
然后您可以遍历该数组并改用索引处的值。