我的游戏脚本方案

前因

在玩一款游戏的时候,游戏内容里的多个角色挂机刷日常副本的活,实在有点费时间,不刷吧又会浪费掉日常的游戏奖励内容。在不胜其烦却又不舍得奖励的时间里,我突然想到,是否可以用一些自动化脚本去控制这角色之间的日常刷本呢😈。

抱着想要无痛拿下日常奖励和写脚本的热情劲,直接开动!

脚本方案

我在游戏里是苹果区,我的游戏是个手游,可以在手机和平板上玩。我在网络上检索了会资料后,发现了一个好东西,可以在macos电脑上侧载ios的软件,它名playcover

有了playcover这个化腐朽为神奇的工具,我立即想到可以使用一些控制系统键盘输入的脚本来控制游戏刷本流。

playcover能够通过ipa导入ios软件,然后去壳,直接在m系列的苹果电脑上运行(也只能在m系列的电脑上侧载,inter系列的不行),对应有直接可以下载ipa的网站。下载好ipa就直接导入就可以使用ios app了。手游方面,诸如原神之类的随便玩,对于手游按键可以自主设置电脑的键盘映射,这一块也很方便。

那么对于我想脚本刷日常的游戏,当把一些键盘映射设置好后(键盘映射可以自由导出和导入,可以使用他人的映射,playcover开源官方也有一些自己推出的游戏键盘映射映射导入导出相关文档),下一步就是写我们对应的键盘按钮脚本了。

脚本之前考虑使用applescript来写,因为这样会比较"common",但是后来发现无法奇效,遂放弃。然后我选择的是用rust来写,想着run和build产物都很方便,且构建可执行的文件体积小。脚本使用了rust的enigo库,来控制键盘。这里因为游戏里是有键盘映射的,且键盘映射对应的游戏区域是固定的,不会随着游戏窗口尺寸变化而失效,所以脚本控制键盘输入来控制刷副本流应该是比较通用的。

脚本细节这里就不细说了,总之就是刷东西、领东西、切换角色,周而复始那套。确定流程之后,代码本身很简单。脚本点击事件我设置有一定的短暂停顿,防止游戏因为网络卡顿导致脚本流错过步骤。

总结

一套脚本写下来,多次尝试之后,总的流程还行,但通用性和稳定性有待提升。并且把我键盘几乎所有映射都用掉了,但凡还想做点多的内容都很困难了。

其次不好的地方是,在脚本启动的时间里,电脑都要聚焦在游戏上,有点不方便。还没想到办法能让游戏和脚本自己一边呆着,让我的电脑能聚焦在其他地方,那么只能在我去做其他事的时候,电脑空闲之时去运行脚本了。其他方面的点子,我有想到,可以用rustdesk一类的远程电脑操控软件,比如rustdesk可以用另一台电脑、或者手机去操控我们运行脚本的电脑,去开启游戏和脚本,那么就能做到一个变向的"脱耦"。