最近在玩Minecraft原版空岛生存(https://github.com/jsorrell/CarpetSkyAdditions)。这个空岛很有意思,一开始只有几块泥土和一棵树,所有的材料全都是通过原版中的各种游戏机制来获取的。比如,铁要通过杀死僵尸获得;之后制作炼药锅,在雨天接水才能获得水。因此游戏过程中需要大量的挂机时间,获取足够的材料。我经常会在挂机点附近修钓鱼池,在1.18版本,不仅需要钓鱼池够大(5*5,高4格),阳光还必须直射水面,所以之前流行的自动钓鱼机全部不能够使用了。
新版本中钓鱼,必须要一直盯着屏幕,及时收杆才能完成。这实在是太费眼了,于是,我就研究了一下用脚本来实现自动钓鱼。
按键精灵的失宠
用脚本在Minecraft中实现自动钓鱼,已经不是什么新鲜的事情了。网上的大量脚本都是基于按键精灵的,为了省去自己研究调试代码的过程,所以想要偷懒之前复制别人已经完成的。我稍微搜索了一番,就找到了这篇文章:通过按键精灵实现mc自动钓鱼_ardmiss的博客-CSDN博客_按键精灵捕鱼脚本代码。 按照文章的提示,我下载了按键精灵,并且复制了文章中的脚步,但是却没有成功。可能是因为这个软件太过久远了,最后的更新维护在2017年左右,所以在我的电脑上没有正常运行。 看来,自己研究、写代码的过程是不能偷懒了。 于是,我继续在网上搜索按键精灵的替代品,找到了AutoHotkey这样一款软件。
AutoHotkey是什么?
AutoHotkey是免费、开源的Windows脚本语言,通过脚本能够帮助用户自动化地完成多种多样的任务,如:表格自动填写、自动鼠标点击、宏等。 AutoHotkey的软件可以从官网上下载:AutoHotkey官网同时,已经有热心的网友制作了汉化的帮助文档:快速参考 | AutoHotkey (autoahk.com)
代码
实现自动钓鱼的思路,还是按照之前查到的按键精灵脚本代码的思路,Minecraft中鱼咬钩时会发出声音,所以通过音量合成器界面中的音量条变化来判断鱼上钩的时机,再控制鼠标右键收杆,停留一段时间后再点击右键放杆,并继续检测系统声音。
CoordMode, Pixel, Screen
Loop{
PixelGetColor, color, 101, 304
if (color = 0xeaeae7) {
}
else {
MouseClick, right
Sleep 2000
MouseClick, right
Sleep 2000
}
}
其中,第三行中的坐标(101,304)就是检测的音量条像素点的位置,需要根据每台电脑的情况,进行修改后使用,可以利用截图工具或其他能够显示鼠标坐标的小工具。 程序运行时,需要保持音量界面始终开启,并且位置不能移动。
测试
经过测试,发现了一个小问题,我通过截图软件获取的坐标并不是真正的屏幕坐标。这是因为我都电脑是高清屏,在电脑的“所有设置-系统-屏幕中”,我选了放大屏幕显示(150%),将该设置调整到100%后就可以正常使用了。虽然100%的显示比例字非常小,但是脚本的用途是自动挂机,并不需要用眼睛盯着。 重新改好坐标后,终于能够解放双手,全自动钓鱼了。
改进计划
- 每次使用软件前都要先打开音量窗口,截图确定坐标,修改代码,然后才能运行自动钓鱼程序,希望修改成:将光标放在音量条上,通过代码自动获取坐标,并使用该坐标作为判定鱼咬钩时机的依据。
- 通过快捷键控制自动钓鱼的开始和暂停。