lua - 魔兽世界 (Lua) 与 Adafruit Gemma 的交流

标签 lua arduino world-of-warcraft

我有一个 Adafruit (Gemma)/Arduino 和一个 Neopixel LED 环,我想从《魔兽世界》游戏内事件中控制它们。这部分是焊接和工作的。

问题:

有什么方法可以在魔兽世界和 PC 上的某种监听器之间发送通信,然后通过 USB 将消息发送到 Arduino/Gemma 设备?

我的目标是创建一个桌面 LED 指示灯,例如如果我是一名治疗师,那么我希望绿/黄/红灯代表每个团队/团队成员的健康状况 - 因此需要高速刷新(0.5/秒)。

提前感谢您的反馈,并欢迎即将发布的德拉诺之王在 future 的任何可能性。

最佳答案

Is there any way to send communications between World of Warcraft and some sort of listener on the PC



不直接通过 WoW API。我想出了一个我从未分享过的方法,因为我的使用违反了暴雪的规则。但是我已经好几年没玩了,所以来吧。 :)

我使用插件在 WoW 窗口的左上角创建了一个像素帧。我操纵了这个像素的颜色来向外界发送数据。

“监听器”应用程序可以通过三个 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

然后我像这样解释颜色的位:
  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

“序列号”只是检测新消息已发布到像素的手段。校验和是为了防止在我的特殊像素未激活时(例如在加载屏幕期间)进行虚假读取。其余的是击键信息。这使我能够从插件生成击键。整个watcher app大概100行C。很简单。

I wrote an in-game script editor并将其与“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*

至于速度,我从未真正测量过它,但它超过了你 0.5 秒的要求。写入和读取之间最多只有几毫秒的延迟。

that can then in turn send messages over USB to the Arduino/Gemma device?



那只是writing to the serial port in the "watcher" app并使用 Arduino 库从设备内的串行端口读取。

我有“监听器”应用程序(像素观察器)和向像素写入消息的 WoW 端的源代码。如果您有兴趣,请告诉我,我会在乐队外为您提供帮助或大幅增加这篇文章的内容。

关于lua - 魔兽世界 (Lua) 与 Adafruit Gemma 的交流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25434591/

相关文章:

lua - 如何制作魔兽世界插件?

c - 使用 C 和 Lua 中的套接字保存来自 http 响应的图像

lua - 在 lua 中指定函数参数名称

lua - 如何在 StackExchange.Redis 中正确加载 Lua 脚本?

c++ - 快速 I2C 连接,移动到新库

Arduino 莱昂纳多 - "avrdude: butterfly_recv(): programmer is not responding"

使用 C : undefined reference to 'luaL_register' 为 Lua 创建一个 dll

arduino - 使用 Arduino 在 SD 上读取/写入二进制数据

Neo4j 标签与节点属性

javascript - 将 Lua 数据转换为 JSON