Autohotkey 带两个x y位置的AHK像素监视器

Autohotkey 带两个x y位置的AHK像素监视器,autohotkey,Autohotkey,我使用的是自动热键程序,我有一个脚本,可以监控某个像素和它的颜色,如果它改变了,它会做一些事情使颜色恢复。假设它看到的是像素100,100,颜色是0xFFFFFF,如果颜色变为0xFFFFFF以外的任何颜色,脚本将点击数字5键,并返回0xFFFFFF。这是完美的,现在我在这里要做的是帮助一个脚本监控两个x,y位置和两种不同的颜色,并使用两个不同的键将所述颜色更改回监控的颜色。此脚本主要用于玩在线电脑游戏,如Ragnarok online或WoW 下面是监控一个x、y和一种颜色的代码 #Persi

我使用的是自动热键程序,我有一个脚本,可以监控某个像素和它的颜色,如果它改变了,它会做一些事情使颜色恢复。假设它看到的是像素100,100,颜色是0xFFFFFF,如果颜色变为0xFFFFFF以外的任何颜色,脚本将点击数字5键,并返回0xFFFFFF。这是完美的,现在我在这里要做的是帮助一个脚本监控两个x,y位置和两种不同的颜色,并使用两个不同的键将所述颜色更改回监控的颜色。此脚本主要用于玩在线电脑游戏,如Ragnarok online或WoW

下面是监控一个x、y和一种颜色的代码

#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药剂恢复HP条形图。这对玩家有很大的帮助,所以他们不必太在意自己的HP,而是更专注于攻击玩家或怪物

现在我需要一种方法让一个脚本执行两次,自动热键程序不允许重复某些行,因此您不能在一个脚本中复制粘贴两次,是的,您可以通过更改x、y和颜色代码来使用该脚本两次,但一次运行多个脚本可能会弄乱其他脚本,我见过这种情况发生,并且在用另一个脚本运行此脚本时发生过几次

我试过这个密码

#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的在线电脑游戏的人。

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

您生成了很多send指令,因为您没有定义PixelGetColor应该存储的变量,所以If语句总是false。在第一个If之后还有一个返回值,因此只有在第一个If为false时才执行第二个If(在脚本中是这样的,但不应该这样)

持久化
坐标模式,像素,相对
X1:=200
Y1:=200
SetColor1:=0x99999
X2:=200
Y2:=1000
SetColor2:=0xFFFFFF
设置计时器,手表寿命,500
返回
手表寿命:
Pixelgetcolor,颜色,%X1%,%Y1%
如果(颜色设置Color1)
声音嘟嘟,500,200
Pixelgetcolor,颜色,%X2%,%Y2%
if(颜色设置Color2)
声音嘟嘟,1000,200
返回
如果希望在发送击键后等待,那么应该在If语句中包含wait,如下所示

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
持久化
坐标模式,像素,相对
X1:=100
Y1:=100
SetColor1:=0xC48559
X2:=100
Y2:=80
SetColor2:=0xF0DED7
设置计时器,手表寿命,500
返回
手表寿命:
Pixelgetcolor,颜色,%X1%,%Y1%
如果(颜色设置Color1)
{
发送,5
睡吧,20
}
Pixelgetcolor,颜色,%X2%,%Y2%
if(颜色设置Color2)
{
发送,6
睡吧,20
}
返回

您能先试试这个吗。打开记事本(白色背景)并最小化所有其他应用程序(仅桌面)。移动记事本窗口,使空白区域位于两个鼠标位置的非上方、两个上方或其中一个上方。您可以使用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
#持久
坐标模式、像素、屏幕
协作模式、鼠标、屏幕
X1:=100
Y1:=100
SetColor1:=0xFFFFFF
X2:=600
Y2:=100
SetColor2:=0xFFFFFF
SetTimer,手表寿命,6000
返回
手表寿命:
鼠标移动,%X1%,%Y1%
Pixelgetcolor,颜色,%X1%,%Y1%
TrayTip,,%颜色%
如果(颜色设置Color1)
{
声音嘟嘟,500,200
}
睡吧,1000
鼠标移动,%X2%,%Y2%
Pixelgetcolor,颜色,%X2%,%Y2%
TrayTip,,%颜色%
if(颜色设置Color2)
{
声音嘟嘟,1000,200
}
返回
^问:
出口

这些脚本有问题,它似乎只监视第一个x,y,然后只使用第二个操作(send,6)。我只更改了x、y和颜色代码。当颜色符合要求时,它不使用6或5。是的,它工作正常,我听不到声音,一旦我改变背景,它就会发出声音。当你将颜色和XY坐标更改为“你的”设置时,鼠标是否指向正确的位置,当颜色与目标颜色不匹配时,你是否会听到嘟嘟声?是的,我发现了问题所在,这是一个简单的问题~~,我把send键放错了XY。谢谢你的帮助,我真的很感激,现在就在自动热键论坛上分享^_^很高兴我能帮忙。请单击答案旁边的白色“复选标记”将其变为绿色,以“接受”有用的答案。非常感谢。单击复选标记将提供学分,并将问题标记为已回答。见:
#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