|
10374| 9
|
[项目] 使用树莓派 Pico 做一个魔兽世界物理 “外挂“ |

前言
最近在玩乌龟魔兽世界(Turtle-WoW)《艾泽拉斯之谜》,一个基于 60 级香草时代的故事进行拓展的资料片,它“旨在走一条与燃烧远征完全不同的道路, 强调魔兽世界中熟悉的艾泽拉斯,而不是与燃烧军团的宇宙战斗”。这部资料片增加了新的种族,修改了部分技能与天赋,增加了新的五人副本与团队副本,还有新的声望、地图、任务、装备物品等等。除此之外幻化系统和一命硬核模式也增添不少乐趣。 游戏基于 WoW 1.12 版本,存在很多不便,遨游艾泽拉斯大陆之余,我尝试了很多有趣/有用的插件(Addon),同时由于部分插件存在兼容性的问题,我们需要对其进行优化修复,或者自行编写脚本宏来辅助游戏提升便利性。在其间我发现一个神级插件 LazyScript,通过编写脚本可以实现一键操作。 1、LazyScript 介绍项目主页:https://github.com/laytya/LazyScript/ 使用 WiKi:https://github.com/laytya/LazyScript/wiki/ LazyScript 是魔兽世界的一种脚本语言执行器,底层基于 Lua 编程语言,它能够在指定的条件下施放某些技能或能力,这是通过编写一个 “脚本” 来实现的,该脚本由一系列动作和判断条件组成。其能实现的功能受限于使用者的能力与想法,默认自带了各个职业的一些基础脚本,但是想满足自己的功能需求和使用场景,最好的办法就是编写新的脚本,有能力的话完全就能一键做到任何事。 1.1 传统的 WoW Lua 宏命令,或者自己创建一个插件
60 年代号称香草时代,是众多玩家的美好回忆,但同时其复杂的技能列表导致一系列繁琐的操作,好在早期的 WoW 版本中暴雪开放了大量的 API,为玩家带来了各种便利,通过插件以及宏,可以一定程度上完善游戏体验,帮助 PvE 玩家解放双手。WoW 插件使用 Lua 这一种轻量小巧的脚本语言进行开发。我们举两个宏的例子:
看起来语法很复杂,但是比起一个个点击摧毁背包中的灰色垃圾物品和紧盯屏幕上角色的状态要方便很多了。 如果你有兴趣,可以查阅 WoW 的 API 列表以及学习 Lua 编程语言。参考链接如下:
当然你也可以自己创建一个有界面的插件。
1.2 LazyScript 一键操作,完全解放双手但是上面的宏命令还是太复杂了,如果想要实现一键全技能,那么需要臃肿的代码量来支持,复杂的条件判断及循环增加了巨大的开发和维护成本,不一定能带来流畅的体验。有没有好办法呢,答案是 LazyScript,我们来看使用 LazyScript 的示例:
同样是根据一系列条件来执行对应的动作,我们可以看到使用 LazyScript 写的脚本更加简洁易懂。除此之外,
举例如下: 脚本复用:
被宏调用或者调用宏:
1.3 使用 LazyScript 及面临的问题当 LazyScript 宏运行时,LazyScript 插件将从上到下读取动作和判断条件列表,直到找到一个满足判断条件的行,然后执行对应的操作。所以使用这一神级插件拢共分三步:
最初我的方法是将此宏的游戏内快捷键设置为鼠标滚轮上下,由此别人打本是狂按各种技能,我是狂滚鼠标滚轮,时间久了手指也很崩溃好吧。
所以如何进一步让手指头歇一歇呢,由此终于引出了本文的主角。当然比起这个,自己调试 LazyScript 更有趣,不信你试试。在踩了各种坑之后,我总结出一个规律,判断条件不要怕多,确定一行的动作一定执行或者一定不执行。 2、基于 Pico 的简易按键连点器2.1 解放手指头的方案我想了一下,需求就是一直按 ls 宏命令的快捷键。
2.2 候选者登场硬件方案要选择合适的设备模拟为 HID 输入设备(键盘鼠标等),翻了下手头的,我们把目光转向三名选手:
2.2.1 Micro:Bit 蓝牙键盘板载资源相当丰富,按钮/指示灯/蓝牙/可控灯板/麦克风等。我的第一优选方案,结合GamePad可以手柄控制,岂不美哉?
蓝牙键盘(HID) 参考库:microbit-pxt-blehid 0.0.24 (bsiever/microbit-pxt-blehid) 实际测试下来不稳定/不好用,着急用,暂时不研究了。 串口处理转发 另一种方案就是电脑下运行一个监听服务器,接收 Micro:Bit 串口传来的数据,对应处理,模拟按键。 参考库: 在 Windows 下使用 Python/安装组件比较麻烦/有报错,暂时不研究。 Arduino-leonardo-based)">2.2.2 Sparrow(Arduino Leonardo Based)之前做过DFrobot Sparrow(Arduino Leonardo Like)做的 HID 设备,不过它的 Bootloader 有问题,最近没空弄。 2.2.3 树莓派 Pico板载资源:
有点不够看啊,但是上面俩伙计不给力,只能 Pico 出场了。 2.3 Pico 获胜,如何应对Pico 其实很强大,毕竟有可编程 IO,不过有如下问题:
参考资料如下: 我们使用 ArduinoIDE 编写程序,完整代码如下:
由此我们实现了如下功能:
演示视频如下: 【Link】 3、超进化:脚踏式键盘连点器虽然实现了即插即用,不需要再每台电脑上安装软件,虽然大部分时间都开着自动连点即可,但是小按钮(板载或外置)关闭开启还是麻烦,毕竟要手离开键盘鼠标,有没有更好的办法哩?我们干脆做一个脚踏式开关,<u>真-解放双手</u>。 thangs.com 上搜索下有没有思路,关键词
改改模型适配 Pico,让家里的 3D 打印机起来干活,配上微动开关美滋滋。我们同时需要一个状态指示器,可以在物理桌面上放置一个LED等,也可以写一个后端程序,在软件电脑桌面上显示图标等。 4、究极进化:魔兽世界控制台前段时间朋友问我可不可以用那种设计师键盘控制搭载 Klipper 固件的 3D 打印机,正好可以用来操控魔兽世界。大概长这样:
那我们干脆自己用 Pico 做一个,配合魔兽世界的快捷键/自定义宏等实现各种功能,比如:
|
_深蓝_ 发表于 2024-1-9 09:02 内容有更新还没整理添加上去。 1. 主要有两个 WoW 插件:LazyScript 和 ShortKey,具体你可以看他们的文档,前者用来辅助一键操作,后者则可以将各种功能绑定到不同快捷键上,本质上外挂的强大之处在于这两个插件提供了平台,发挥实力需要使用者的想象力和写脚本的能力。 2. pico 这里是一个自定义 hid 设备,既可以自定义重复触发 LazyScript(还涉及到技能 GCD 共冷却问题),又可以将不同的按键绑定到 WoW 里的键盘快捷键,还可以实现其他功能,比如屏幕或者灯带的状态显示。 3. 原本以为 ls 和 sk 都是高级的基于条件判断的宏脚本执行插件,学会一个就行了。当 ls 出了几次不按预想执行之后,仔细总结了下,发现两者并不相同。 ### LazyScript 其之所以出现非预想执行,可以打开调试命令和动作列表,后来发现: - ls 并非像传统程序那样,从上到下依次执行,不满足条件的就跳过/符合条件的就继续执行后面的,而是每次使用该宏动作,会从头判断,**执行判断成功的第一条动作,后续的不再执行**。 - 所以想要顺序执行,需要执行A之后,再次判断到此条不满足,从而继续执行后面一条 - 只有一个激活的脚本,可以在多个脚本中切换 ### ShortKey - 自带编排器,每条都会判断执行,而不是成功之后不判断后面的。 - 计时器不支持施放技能,但是可以用插入 jump 代替? - 使用多个快捷键,每个快捷键可以组合快捷键,并根据不同条件执行 我不清楚你是好奇如何实现自定义控制设备还是也玩 WoW 关心如何使用这俩插件 |
萌萌哒新人
活跃会员
宣传大使
版主限定
牛X认证
老版主限定
创作达人
小蘑菇
编辑选择奖
ARD DAY
编辑选择奖
摸鱼团员
编辑选择奖
志“童”道合
编辑选择奖
编辑选择奖
编辑选择奖
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed