一、准备阶段
去官网下载AHK程序
推荐再选择一个编辑器作为自己修改和调试代码的入口
新手如何用AHK做游戏脚本?
弎番流水异乡人
22年5月6日
喜欢:12
浏览:22k
二、学习基本的键盘按键、鼠标移动点击、等待方法
键盘按键方法 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
找图ImageSearch这个函数不做介绍,因为使用很不方便,新手不建议用这个函数
Findtext、大漠插件(主流方式)俩个都是很好的找色、找图,找字工具,使用方法网上都能找到,具体使用方法可以自行查找
Findtext使用教程
FindText函数实战课程:找图神器亮剑
hexuren
22年1月6日
喜欢:4
浏览:7.1k
大漠插件使用教程
新手如何用AHK做游戏脚本?
弎番流水异乡人
22年5月6日
喜欢:12
浏览:22k
四、学习一些常用的语句: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使用者。
更多代码函数请参考帮助文档:网站上方导航里的
有任何内容上建议可以评论留言。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。