魔兽世界图像处理

World of Warcraft image processing

当我寻找一种创建插件的方法时,它会检查 WoW-PvP-Queue-Status,以创建 REST 服务,我被告知不可能有一个实时的插件和 REST 服务之间的连接。所以我正在考虑另一种方法来解决我的问题,并得出结论,我考虑分析 WoW-Window 并搜索视觉模式来完成我正在寻找的东西。 我的程序应该检查并告诉我,每当程序的用户正在排队等待战场时,还应该告诉我 he/she 在哪个战场排队,这样我就可以收集数据并将其 post 到我的service/website。我可以使用 WoW-Addon 创建一些视觉反馈,用于我正在寻找的事件......就像一个信号,它告诉我的程序要做什么。

所以我想知道,我将如何完成创建这样的信号解释器(就像屏幕抓取器一样)。我在考虑 OpenCV,但不知道从哪里开始,特别是我有点好奇 Warden(反作弊引擎)会如何解释这样的程序,我真的不希望我的用户因为这样的事情而被禁止。它应该真的只是解释我创建的插件的视觉反馈。

例如:

如果用户排队等待 Arathi Basin,应该弹出一个黄色信号,如果弹出黄色信号,程序会告诉我的服务玩家 xyz 已经排队,稍后应该显示在...在我的主页上即时的。如果用户排队等待战歌,又弹出一个信号等

我目前刚刚接触过 C#/.NET 的早期阶段,并且会用这样的服务开始一个小项目,那么我需要学习什么来构建这个东西?

我真的很想知道我需要哪些知识来解决这个问题。

对于Windows是可行的,但是抓取WinAPI有点不稳定。

所以编写新的应用程序:

  1. 您需要找到 WoW 客户端 window(它的句柄)
  2. 将其 canvas 抓取为位图

    如果 gfx 驱动程序允许,则尝试获取桌面图像。所以创建 canvas 为:

    Canvas->handle = GetDC(WOW_window_handle);
    

    你得到的尺寸是这样的:

    RECT r; GetWindowRect(WOW_window_handle,&r);
    

    所以现在只需将矩形从 canvas 复制到您的位图中进行处理...

  3. 然后你就可以做你想做的事了

    由于图像是计算机生成的,因此不会有太多噪音,只是缩放 +/- 一些过滤器,因此应该相对容易检测图像是否包含战场信息。另外detect/read里面的文字应该很简单

  4. 如果搜索 event/info 检测到

    然后将数据发送到您的 WEB

如果您还需要在 ADDON 中获取此信息

那么您需要寻找一些接收方式。我不熟悉 WoW 插件编程所以不知道...

但我会尝试:

  1. 如果您从 Addon 获得了任何 IPC 功能,请使用它

  2. 如果您有权访问文件

    然后继续从插件中扫描文件并将信息发送到那里(注意多个文件访问冲突)

  3. 可以尝试将击键发送到您的 WoW 客户端

    如果你可以从插件或特定操作检测到它们,比如写特定的短信(不与你的移动键冲突)

  4. 如果你能破解你的 Server/Clienet TCP/IP 流

    您可以注入具有特定含义的数据包,例如传入的私人消息等,但您需要熟悉 WoW Server/Client 通信(如果我没记错的话,WoW 使用 SRP6 ) 并且它会增加 ping 滞后......你仍然需要能够从插件中检测到它,另一方面你应该能够检测到与战场相关的数据包并且不需要 OCR/CV魔兽形象...

查看这些相关的 Q/A:

[备注]

每个项目符号都适合单独的问题,所以开始编码,遇到问题时提出具体问题