一、准备阶段
- 去官网下载AHK程序
- 推荐再选择一个编辑器作为自己修改和调试代码的入口
二、学习基本的键盘按键、鼠标移动点击、等待方法
- 键盘按键方法
send/sendinput
如:我们想按一次 T 键,则可以用sendinput t
(意思:按一次)或者sendinput {t down} sendinput {t up}
(意思:按下,抬起)来实现 - 鼠标移动点击
mousemove
click
如:我们想移动鼠标到游戏中的(1081,1067)坐标,则代码为mousemove 1081,1067
又比如我们想移动鼠标到(1081,1067)坐标,并点击一次,则代码为
click 1081,1067
再比如我们想在移动后,点击4次当前位置,则代码为
mousemove 1081,1067 click,4
(当然还有更多函数可以更简便的实现相应的功能,这里为方便理解就不介绍了)
- 等待
sleep
有时我们的代码会出现指令进行过快导致没有达到预定位置就进行下一步假如上面的:
mousemove 1081,1067 click,4
这时候我们就可以添加一行等待数值,变成
mousemove 1081,1067 sleep 1000 ;等待1秒 click,4
如果我们想实现某某按键按下后等待一会再抬起来,这时候就可以用到
sleep
来实现列如:
sendinput {w down} sleep 15000 sendinput {w up}
表示为:向前走15秒(在一些游戏中W表示向前移动)
三、学习基本的找色、找图方法
找色、找图是游戏脚本中十分重要的功能(目的:判断怪物出现、判断技能冷却、接取完成任务等)
- 找色
getcolor
- 如何使用找色首先我们需要工具:(SPY、自制的找色程序、Snipaste等等都行,下面以SPY为例)
- SPY(AHK程序自带,在电脑搜索栏中直接搜索SPY就会出现)
打开此软件后,软件会自动显示当前鼠标位置的坐标以及颜色,我们只需让鼠标移动到我们游戏中需要的位置然后记住SPY中的坐标以及颜色值即可
注意:游戏中一些位置的颜色值是会实时变化的,我们需要选择不会变的位置,来保证自己的代码正确
然后就是将获取到的位置坐标以及颜色值拷贝到代码中去:
- 代码示例
GetColor(1081,1067)=="227022" ;使用的代码,修改相应的内容即可 GetColor(x,y) ;封装的代码,一般情况下不需要更改 { PixelGetColor,Color,x,y,RGB StringRight Color,Color,6 Return Color } Return
- SPY(AHK程序自带,在电脑搜索栏中直接搜索SPY就会出现)
- 如何使用找色首先我们需要工具:(SPY、自制的找色程序、Snipaste等等都行,下面以SPY为例)
- 找图
ImageSearch
这个函数不做介绍,因为使用很不方便,新手不建议用这个函数 - Findtext、大漠插件(主流方式)俩个都是很好的找色、找图,找字工具,使用方法网上都能找到,具体使用方法可以自行查找
- Findtext使用教程
- 大漠插件使用教程
四、学习一些常用的语句:if else
、loop
等
if else
如果是,则。。。如果不是,则。。。有了上面的找色、找图我们就可以通过if else
来实现一些判断语句,如:我们想实现找到怪物自动攻击,没找到自动移动(假设坐标处的颜色表示怪物出现)
if (GetColor(1081,1067)=="227022") ;判断坐标(1081,1067)处的颜色是否为227022 { ;如果是则按键盘的{4}键 SendInput 4 } Else ;如果不是则向前移动15秒 { Sendinput {w down} Sleep 15000 Sendinput {w up} } Return GetColor(x,y) ;封装的代码,一般情况下不需要更改,但必须有 { ;否则上面的判断将失效 PixelGetColor,Color,x,y,RGB StringRight Color,Color,6 Return Color } Return
loop
循环现在我们如果想要让上面的代码持续的运行直到怪物被打死或者消失,则loop{ ;循环进行{}中的代码直到坐标颜色不正确为止 if (GetColor(1081,1067)=="227022") ;判断坐标(1081,1067)处的颜色是否为227022 { ;如果是则按键盘的{4}键 SendInput 4 } Else ;如果不是则向前移动15秒 { Sendinput {w down} Sleep 15000 Sendinput {w up} Break ;退出当前循环,如果不加Break会导致死循环,出bug } } Return GetColor(x,y) ;封装的代码,一般情况下不需要更改,但必须有 { ;否则上面的判断将失效 PixelGetColor,Color,x,y,RGB StringRight Color,Color,6 Return Color } Return
五、设置启动键::
、实现按住鼠标侧键启动
::
如我们想实现F1启动代码,则可以F1:: loop{ ;循环进行{}中的代码直到坐标颜色不正确为止 if (GetColor(1081,1067)=="227022") ;判断坐标(1081,1067)处的颜色是否为227022 { ;如果是则按键盘的{4}键 SendInput 4 } Else ;如果不是则向前移动15秒 { Sendinput {w down} Sleep 15000 Sendinput {w up} Break ;退出当前循环,如果不加Break会导致死循环,出bug } } Return GetColor(x,y) ;封装的代码,一般情况下不需要更改,但必须有 { ;否则上面的判断将失效 PixelGetColor,Color,x,y,RGB StringRight Color,Color,6 Return Color } Return
- 按住鼠标侧键启动,释放停止
XButton1:: ;鼠标侧键1 loop{ ;循环进行{}中的代码直到坐标颜色不正确为止 if (GetColor(1081,1067)=="227022") ;判断坐标(1081,1067)处的颜色是否为227022 { ;如果是则按键盘的{4}键 SendInput 4 } Else ;如果不是则向前移动15秒 { Sendinput {w down} Sleep 15000 Sendinput {w up} } }Until Not GetKeyState("XButton1","P") ;如果鼠标侧键1松开,则停止 Return GetColor(x,y) ;封装的代码,一般情况下不需要更改,但必须有 { ;否则上面的判断将失效 PixelGetColor,Color,x,y,RGB StringRight Color,Color,6 Return Color } Return
六、关闭脚本
Exitapp
结合上面的内容,可以做出如下脚本设置F12:: ;F12启动执行下面的代码 Exitapp ;关闭当前脚本 Return
七、让脚本使用者更好的判断脚本是否在运行、关闭
msgbox
结合上面的关闭脚本的代码我们可以实现关闭脚本时出现提示框- 代码示例
F12:: ;F12启动 MsgBox,脚本已关闭 ;弹出对话框,内容:脚本已关闭 Exitapp ;关闭当前脚本 Return
tooltip
用来帮助我们确定脚本的运行状态- 代码示例
F1:: ;一般跟自己的脚本启动键放一起,这里就拿F1启动举例 ToolTip,开,494,0 ;在坐标(494,0)处显示一个“开”字 Return
希望可以帮助到各位初次AHK使用者。
更多代码函数请参考帮助文档:网站上方导航里的
有任何内容上建议可以评论留言。
跳转感觉有点费劲,不如直接在社区分享
谢谢大神分享,学习
谢谢,学习
努力学习挣积分
厉害感谢
学习
很實用 來學習 感謝~
学习了
学习
学习了!
学习下
学习了~
学习,感谢
感谢分享,清晰明了???
感觉受益匪浅
开关很受用
但是技能都是有cd的 而且有的游戏需要切武器 这就要循环判断 我就卡在这里