循环中遇到pixelgetcolor问题,可以接受任何建议

时间:2019-10-24 09:19:19

标签: autohotkey

这是我的代码。我想做的是,当我发现这种颜色时,此循环完成其工作。 我相信问题是来自pixelgetcolor的坐标,我不知道如何将坐标放在那里。 iv尝试与pixelsearch,也没有成功。你有什么建议,我应该怎么办?想法是不停地单击,除非此颜色出现在屏幕上。

CoordMode, Mouse, Screen
CoordMode, Pixel, Screen

   Loop ; This loop do non stop, unless the color is on the screen.
          {
            MouseMove, %X%, %Y%
            Click
            sleep,%flick%
            Click
            sleep,%flick1%
            PixelGetColor,Dead_Monster,X,Y,RGB
            if(Dead_Monster = 0x3CC4C4)
            {
              break             ¸
            }
           }

1 个答案:

答案 0 :(得分:1)

您需要将变量包装在%中,以使PixelGetColor使用这些变量的值。而且,您的变量X和Y永远都不会设置在任何地方...

CoordMode, Mouse, Screen
CoordMode, Pixel, Screen

; initial values?
X := 800
Y := 600

Loop ; This loop do non stop, unless the color is on the screen.
{
    MouseMove, %X%, %Y%

    Click
    sleep,%flick%

    Click
    sleep,%flick1%

    PixelGetColor,Dead_Monster,%X%,%Y%,RGB

    if(Dead_Monster == 0x3CC4C4){
        break
    }

    ; insert line here to update X, Y ?
}

如果要在屏幕上搜索像素,可以执行以下操作:

; Modified example from https://www.autohotkey.com/docs/commands/PixelSearch.htm
Dead_Monster := 0x3CC4C4

;Search rectangle
S_Left := 0
S_Top  := 0
S_Bottom := A_ScreenHeight
S_Right := A_ScreenWidth

PixelSearch, Px, Py, %S_Left%, %S_Top%, %S_Bottom%, %S_Right%, %Dead_Monster%, 3, Fast
if ErrorLevel
    MsgBox, That color was not found in the specified region.
else
    MsgBox, A color within 3 shades of variation was found at X%Px% Y%Py%.

但是,我不建议在整个屏幕区域中搜索,因为较大的搜索区域会大大增加搜索时间。