Dan*_*bdn 5 lua arduino world-of-warcraft
我有一个 Adafruit (Gemma) / Arduino 和一个 Neopixel LED 环,我想通过《魔兽世界》游戏内活动来控制它们。该部件已焊接并可以工作。
问题:
有没有什么方法可以在魔兽世界和 PC 上的某种监听器之间发送通信,然后可以通过 USB 将消息发送到 Arduino/Gemma 设备?
我的目标是创建一个桌面 LED 指示器,例如,如果我是治疗师,那么我想要绿/黄/红灯来代表每个团队成员的健康状况 - 因此需要高频率刷新(0.5 /秒)。
感谢您提前提供反馈,并欢迎即将发布的《德拉诺之王》中的任何未来可能性。
有没有办法在魔兽世界和PC上的某种监听器之间发送通信
不直接通过 WoW API。我想出了一个我从未分享过的方法,因为我的使用违反了暴雪的规则。但我已经好几年没玩了,所以就来吧。:)
我使用一个插件在《魔兽世界》窗口的左上角创建一个单像素框架。我操纵这个像素的颜色来向外界发送数据。
“侦听器”应用程序可以通过三个 Win32 调用读取此像素:
HWND hwnd = FindWindow(NULL, "World of Warcraft"); // find WoW window
HDC hdc = GetDC(hwnd); // get the device context (graphics drawing abstraction)
COLORREF color = GetPixel(hdc, 0,0); // read the pixel at x 0, y 0
Run Code Online (Sandbox Code Playgroud)
然后我像这样解释颜色的位:
4: sequence number
7: checksum: (sequence + key code + ctrl + alt + shift + win)/6
8: key code or ASCII character
1: 1: virtual key code, 0: ASCII
1: CTRL key pressed
1: ALT key pressed
1: SHIFT key pressed
2: WINDOWS key pressed
Run Code Online (Sandbox Code Playgroud)
“序列号”只是检测是否有新消息已发布到像素的方法。校验和是为了防止当我的特殊像素不活动时(例如在加载屏幕期间)进行虚假读取。其余的是击键信息。这使我能够从插件生成击键。整个watcher应用程序大约有100行C语言。非常简单。
我编写了一个游戏内脚本编辑器,并将其与“pixelbot”一起使用来自动化游戏中的操作。在我的《魔兽世界》生命即将结束时,我为《魔兽世界》编写代码比玩它更有趣,这说明了很多,因为这是一个有趣的游戏。:) 曾几何时,我知道有关《魔兽世界》插件编程的一切,但现在已经落伍好几年了。不过,我会看看是否可以挖掘一些 Pixelbot Lua 代码。
无论如何,您可以调整此方案来发送您喜欢的任何消息。例如:
4: sequence number
7: checksum (sequence + player number + LED color)/3
5: player number
2: LED color (0: green, 1: yellow, 2: red)
6: *reserved*
Run Code Online (Sandbox Code Playgroud)
至于速度,我从未实际测量过,但它超出了您 0.5 秒的要求。写入和读取之间最多有几毫秒的延迟。
然后可以通过 USB 向 Arduino/Gemma 设备发送消息?
这只是写入“watcher”应用程序中的串行端口,并使用 Arduino 库从设备内的串行端口读取数据。
我有“监听器”应用程序(像素观察器)的源代码以及将消息写入像素的魔兽世界相关内容的源代码。如果您有兴趣,请告诉我,我会为您提供额外帮助或大幅增加这篇文章的内容。
| 归档时间: |
|
| 查看次数: |
1472 次 |
| 最近记录: |