有没有办法在魔兽世界和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。很简单。
我编写了一个游戏内脚本编辑器,并将它与“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 设备发送消息?
这只是在“watcher”应用程序中写入串行端口,并使用 Arduino 库从设备内部的串行端口读取。
我有“监听器”应用程序(像素观察器)和向像素写入消息的 WoW 端的源代码。如果您有兴趣,请告诉我,我会在乐队外为您提供帮助或大幅增加这篇文章的内容。