最近在玩泰拉瑞亚,感觉钓鱼是一件麻烦事情,鼠标点烂还贼累。搜了半天大多都是点击脚本隔段时间自动收放,这里有个坑,我用python写过的一个自动点击脚本在这里不好使了,鼠标点击不了。在贴吧上可以看到一个老哥换成了按键实现,我没有去尝试,这么感觉用着总是很不爽,效率还低。所以就想从游戏本身出发看看能不能做到自动钓鱼,这篇文章主要是记录一下收获。因为都是自己摸索的,很多东西零零散散,也希望对入门的mod制作者有一点小小的帮助。思路游戏是使用的C#编写的,单机游戏没有乱七八糟的保护,可以直接反编译。工具主要是使用了vs测试代码,最新版的dnspy调试修改,注意一定要用最新版的,之前老版本总是出现各种奇怪的错误,不得不说这真是一个好东西。初步打算是找到检测鱼上钩的代码,也就是上钩的时候会有波波的声音那种,然后调用收绳放绳相关的函数。实践游戏文件在Steam\steamapps\common\Terraria,打开dnspy搜索fish方法,然后就是凭借经验+下断点可以定位到FishingCheck这个函数,鱼上钩的时候会调用这个函数。然后又是一番经验搜索,搜bait定位到ItemCheck_CheckFishingBobber_PickAndConsumeBait,鼠标点击收杆的时候会调用这里。原本是打算全部走游戏内部,但仔细想了想这个函数可能并不是顶层的调用,贸然使用可能会出现大问题。所以我又想着简化一点吧,经过FishingCheck的时候直接调用windows的mouse_event,自动收杆后放杆。
我的版本号是1.4.2.2,一定不要搞错了,还有,因为时间匆忙,我不保证没有什么bug,修改游戏才是我的乐趣,建议先备份一下自己的存档。
https://wwr.lanzoui.com/imvfdoexgcj密码:7khj
发表评论: