魔兽世界(Lua语言)与Adafruit Gemma的通信
问题:
有没有办法在World of Warcraft和PC之间发送通信,并且可以将消息通过USB发送到Arduino/Gemma设备上?
我的目标是创建一个桌面LED指示灯,例如如果我是治疗师,则希望绿色/黄色/红色光表示每个团队成员的健康状况 - 因此需要高速刷新率(0.5 /秒)。
感谢您提前的反馈,并欢迎即将发布的《德拉诺之王》的未来可能性。
有没有办法在《魔兽世界》和PC上的某些监听器之间发送通信?
不能通过WoW API直接实现。我想出过一种方法,但我从未分享过,因为我的使用违反了暴雪的规则。但是,我已经很多年都没有玩过了,所以我分享给你们吧。
我使用了一个插件在WoW窗口的左上角创建了一个像素框架。我操纵该像素的颜色以向外部世界发送数据。
“监听器”应用程序可以使用三个Win32调用读取此像素:
HWND hwnd = FindWindow(NULL, "World of Warcraft"); // 查找WoW窗口
HDC hdc = GetDC(hwnd); // 获取设备上下文(图形绘制抽象)
COLORREF color = GetPixel(hdc, 0,0); // 读取x 0,y 0的像素
我然后解释了颜色的位:
4:序列号
7:校验和:(序列+ keycode + ctrl + alt + shift + win)/ 6
8:键代码或ASCII字符
1:1:虚拟键代码,0:ASCII
1:按下CTRL键
1:按下ALT键
1:按下SHIFT键
2:按下WINDOWS键
“序列号”只是检测到像素已发布新消息的一种方式。校验和是为了防止在我特殊的像素非活动状态下出现虚假读取,例如在加载屏幕期间。其余是按键信息。这使我能够从插件生成按键。整个watcher应用程序大约有100行C。非常简单。
我编写了一个内置脚本编辑器,并与“pixelbot”一起使用,自动化游戏中的事物。在我玩WoW的最后时期,我对为Wow编程更感兴趣,而不是玩它,这说了很多,因为它是一个有趣的游戏。 :)曾经,我了解有关WoW插件编程的所有知识,但现在已经过时了几年了。不过,我会看看能否找到一些pixelbot Lua代码。
无论如何,您都可以将此方案适应发送您喜欢的任何消息。例如:
4:序列号
7:校验和(序列+玩家编号+LED颜色)/ 3
5:玩家号码
2:LED颜色(0:绿色,1:黄色,2:红色)
6:*保留*
至于速度,我从未真正衡量过它,但它击败了您的0.5秒要求。写入和读取之间最多有几毫秒的延迟。
然后再通过USB向Arduino / Gemma设备发送消息?
那只需在“watcher”应用程序中写入串行端口即可,并在设备内使用Arduino库从串行端口读取。
我有“监听器”应用程序(像素监视器)的源代码以及用于向像素写入消息的WoW端的源代码。如果您有兴趣,请告诉我,我将帮助您解决这个问题,或者大大扩大这篇文章的范围。
只有两种方法可以在不违反ToU的情况下与游戏客户端进行通信:
- 在游戏会话之间保存变量。 这意味着你可以让插件读取和写入其存储文件,但这需要你重新登录或/reload UI,以使文件被写入并从中读取。简而言之,这不是很可行。
- 让插件在屏幕上使用一个小空间来写入颜色,并通过读取屏幕上的像素来与你的外部软件进行通信。
有许多方法可以实现第二个建议。你只需要能够编写这个游戏的插件。然后编写一个外部程序来读取像素。发送命令回到游戏需要热键或在聊天窗口中发送。
请注意,你仍然受限于需要硬件事件的游戏内API。所以对于那些,你必须按下按钮或使用鼠标来绕过。
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
经过一些研究,我没有找到任何内置的功能来与外部软件进行信号/管道/通信。我认为这是由于暴雪的反机器人政策造成的。实际上,您可以使用内存监视器(就像 CheatEngine 一样)来做到这一点,但使用此项功能有可能会被禁止。
如果您找不到任何东西,唯一能做的就是在官方论坛上发帖,并希望一个技术友好的蓝色海报会回答=)
如果您找到了任何东西,请更新您的帖子,您的想法非常有趣=)