具有两个x y位置的AHK像素监视器

时间:2013-03-15 11:11:23

标签: autohotkey

我正在使用AutoHotKey程序,我有一个监视某个像素及其颜色的脚本,如果它改变了,它会做一些事情让颜色回来。因此,假设它正在查看像素100,100并且颜色为0xFFFFFF,如果颜色变为除0xFFFFFF之外的任何内容,则脚本将按下数字5键并且它将返回到0xFFFFFF。这非常有效,现在我在这里的帮助是让一个脚本监控两个x,y位置和两个单独的颜色,并使用两个不同的键将所述颜色更改回监控颜色。此脚本主要用于玩在线电脑游戏,如Ragnarok Online或WoW。

以下是监控ONE x,y和ONE颜色的代码

#Persistent 
CoordMode, Pixel, Relative 

X := 100
Y := 100
SetColor := 0xC48559

SetTimer, WatchLife, 100
Return

WatchLife: 
Pixelgetcolor, Color, %X%, %Y%
if (Color = SetColor)
    Return 
    Else 
  Send, 5
  Sleep 20
Return

此脚本会监视HP栏,它会低于某个区域,它会自动按数字键5以使用HP Potion重新启动HP栏。这对游戏玩家有很大的帮助,因此他们不必过多地关注他们的HP,而更多地关注攻击玩家或怪物。

现在我需要一种方法让一个脚本执行两次,AutoHotKey程序不允许重复某些行,所以你不能只在一个脚本中复制粘贴两次,是的你可以使用这个脚本两次通过更改x,y和颜色代码,但一次运行多个脚本可能会弄乱其他脚本,我看到这种情况发生了,并且在使用另一个脚本运行此脚本时发生了几次。 / p>

我试过这段代码;

#Persistent 
CoordMode, Pixel, Relative 

X := 100
Y := 100
SetColor := 0xC48559

X := 100
Y := 80
SetColor := 0xF0DED7

SetTimer, WatchLife, 100
Return

WatchLife: 
Pixelgetcolor, 0xC48559, 100, 100
if (Color = SetColor)
   Return 
Else 
   Send, 5
   Sleep 20
Pixelgetcolor, 0xF0DED7, 100, 80
if (Color = SetColor)
   Return 
Else 
   Send, 6
   Sleep 20
Return

我认为这样可行但是当像素中的颜色存在时,它只会为HP和MP的治疗项目发送密钥。我在AutoHotKey的主要网站和论坛上搜索过,但我还没有看到有关此脚本的任何内容。

请帮助,这个脚本可以帮助任何人玩任何类似于WoW或Ragnarok Online的在线电脑游戏。

2 个答案:

答案 0 :(得分:1)

这个怎么样?我修改了第一个脚本,以便在我的环境中测试它。

您生成了大量发送指令,因为您没有定义应该存储PixelGetColor的变量,因此If语句始终为false。在第一个If之后你也有一个返回,所以第二个If只在第一个If为false时执行(在你的脚本中就是这种情况,但不应该这样)。

Persistent 
CoordMode, Pixel, Relative 

X1 := 200
Y1 := 200
SetColor1 := 0x999999

X2 := 200
Y2 := 1000
SetColor2 := 0xFFFFFF

SetTimer, WatchLife, 500
Return

WatchLife:
    Pixelgetcolor, Color, %X1%, %Y1%
    if (Color <> SetColor1)
        SoundBeep, 500, 200
    Pixelgetcolor, Color, %X2%, %Y2%
    if (Color <> SetColor2)
        SoundBeep, 1000, 200
Return

如果您想在发送击键后等待,那么您应该在If语句中包含等待,如下所示。

Persistent 
CoordMode, Pixel, Relative 

X1 := 100
Y1 := 100
SetColor1 := 0xC48559

X2 := 100
Y2 := 80
SetColor2 := 0xF0DED7

SetTimer, WatchLife, 500
Return

WatchLife:
    Pixelgetcolor, Color, %X1%, %Y1%
    if (Color <> SetColor1)
    {
        Send, 5
        Sleep, 20
    }
    Pixelgetcolor, Color, %X2%, %Y2%
    if (Color <> SetColor2)
    {
        Send, 6
        Sleep, 20
    }
Return

答案 1 :(得分:1)

你能先试试吗?打开记事本(白色背景)并最小化所有其他应用程序(仅限桌面)。移动“记事本”窗口,使空白区域位于两个鼠标位置之上,而不是两个鼠标位置之上或之上。您可以使用 Ctrl + q 退出,因为您无法真正使用鼠标退出AHK。

根据具体情况,您将听到没有声音,只有一声低音(高或低)或两声低音(高和低)。鼠标将指向像素所在的位置。

#Persistent 
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen 

X1 := 100
Y1 := 100
SetColor1 := 0xFFFFFF

X2 := 600
Y2 := 100
SetColor2 := 0xFFFFFF

SetTimer, WatchLife, 6000
Return

WatchLife:
    MouseMove, %X1%, %Y1%
    Pixelgetcolor, Color, %X1%, %Y1%
    TrayTip,, %Color%
    if (Color <> SetColor1)
    {
        SoundBeep, 500, 200
    }
    Sleep, 1000
    MouseMove, %X2%, %Y2%
    Pixelgetcolor, Color, %X2%, %Y2%
    TrayTip,, %Color%
    if (Color <> SetColor2)
    {
        SoundBeep, 1000, 200
    }
Return


^q::
ExitApp