《魔兽世界》(Lua)与Adafruit Gemma的交流



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

问题:

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

我的目标是创建一个桌面上的LED指示灯,例如,如果我是一个治疗者,那么我想要绿色/黄色/红色的灯来代表每个raid/团队成员的生命值-所以刷新将需要高速率(0.5/秒)。

感谢您的反馈,并欢迎任何未来的可能性与即将发布的德拉诺之王

有没有办法在魔兽世界和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

"序列号"只是检测新消息已发布到像素的手段。校验和是为了防止在我的特殊像素不活跃时(比如在加载屏幕期间)进行虚假读取。其余的是击键信息。这允许我从一个插件生成按键。整个watch应用程序大约有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*

至于速度,我从来没有实际测量过,但它超过了你0.5秒的要求。写和读之间最多几毫秒的延迟。


,然后可以反过来通过USB发送消息到Arduino/Gemma设备?

这只是在"观察者"应用程序中写入串口,并使用Arduino库从设备内的串口读取。


我有源代码的"监听器"应用程序(像素观察者)和WoW方面的东西,写消息的像素。如果你感兴趣,请告诉我,我会帮助你走出乐队或戏剧性地增加这篇文章的侧面。

经过一些研究,我没有发现任何内置的功能来信号/管道/与外部软件通信。我相信这是由于暴雪的反机器人政策。实际上,你可以用内存监视器(就像CheatEngine)来做这件事,但有可能你会被禁止使用这个。

如果你找不到任何东西,你唯一能做的就是在官方论坛上提问,并希望一个技术友好的蓝色海报会回答=)

如果你发现什么,更新你的帖子,你的想法很有趣=)

只有两种方法可以在不违反条款的情况下与游戏客户端进行通信:

  1. 在会话之间保存变量。这意味着你可以让一个插件读取和写入它的存储文件,但这需要你重新记录或重新加载UI来写入和读取这个文件。总之,这是不可行的。
  2. 有一个插件使用屏幕上的一个小空间来写颜色,并使用所述颜色通过读取屏幕上的像素来与外部软件通信。

有很多方法可以实现第二个建议。你只需要能够为游戏编写这个插件。然后编写一个外部程序来读取像素。将命令发送回游戏需要热键或在聊天窗口中发送。

请注意,您仍然限于需要硬件事件的游戏内API。因此,对于那些你必须按下按钮或使用鼠标来购买。

相关内容

  • 没有找到相关文章

最新更新