首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >魔兽世界(Lua)与Adafruit Gemma的沟通

魔兽世界(Lua)与Adafruit Gemma的沟通
EN

Stack Overflow用户
提问于 2014-08-21 19:39:07
回答 3查看 1.4K关注 0票数 4

我有一个Adafruit (珍玛)/ Arduino和一个新的LED戒指,我想控制从魔兽世界游戏事件。这部分是焊接和工作。

问题:

有没有办法在魔兽世界和PC上的某种侦听器之间发送通信,然后再通过USB将消息发送给Arduino/Gemma设备?

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

感谢您的反馈,并欢迎任何未来的可能性与即将被释放的德拉诺军阀。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-22 16:19:23

有什么方法可以在魔兽世界和个人电脑上的听众之间传送通信吗?

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

我在WoW窗口的左上角创建了一个像素框。我操纵这个像素的颜色将数据发送到外部世界。

“侦听器”应用程序可以通过三个Win32调用读取这个像素:

代码语言:javascript
复制
  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

然后,我将颜色的部分解释为:

代码语言:javascript
复制
  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

“序列号”只是检测到一个新消息已经发布到像素的手段。校验和是为了防止在我的特殊像素不活动时进行假读取,就像在加载屏幕时一样。剩下的是敲击信息。这使我可以从一个副词中生成击键。整个观察者应用程序大约是100行C。非常简单。

我写了一个游戏脚本编辑器和"pixelbot“一起使用它来实现游戏中的自动化。在我的WoW生活接近尾声的时候,我为Wow编写的代码比玩Wow更有趣,因为这是一个有趣的游戏。)很久以前,我知道所有关于WoW addon编程的知识,但我已经过时了好几年。我看看能不能找到一些pixelbot Lua代码。

无论如何,您可以调整此方案以发送任何您喜欢的消息。例如:

代码语言:javascript
复制
  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侧程序的源代码。如果你有兴趣的话,请告诉我,我会帮你摆脱束缚,或者大幅增加这篇文章的内容。

票数 2
EN

Stack Overflow用户

发布于 2014-08-22 14:42:44

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

如果你什么都找不到的话,你唯一能做的就是在官方论坛上发问,并希望一张技术友好的蓝色海报能回答=)

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

票数 0
EN

Stack Overflow用户

发布于 2014-09-09 17:26:06

只有两种方法可以在不破坏ToU的情况下与游戏客户端进行通信:

  1. 在会话之间保存变量。意味着您可以对其存储文件进行读和写,但这需要您重新登录或/reload该文件的UI,以便将其写入和读取。总之,这是不可行的。
  2. 有一个插件,在屏幕上使用一个小空间来写颜色,并通过读取屏幕上的像素来与你的外部软件进行交流。

实现第二项建议有许多方法。你只需要为游戏写这篇评论就行了。然后编写一个外部程序来读取像素。将命令发送回游戏将需要热键或在聊天窗口发送它。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25434591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档