mcpField
W
wow-api-events

wow-api-events

github.com/jburlison开发4655 次安装37 周前更新
代码仓库

关于 wow-api-events

面向插件开发者的《World of Warcraft》正式服框架事件参考技能,涵盖事件注册、处理器参数及分类事件清单。

主要功能

  1. 01事件注册与处理
  2. 02OnEvent 参数参考
  3. 03按 API 系统分类事件
  4. 04Event Trace 调试指引

适用场景

  1. 01注册框架或单位事件
  2. 02解析处理器参数
  3. 03将事件映射到 UI 系统
  4. 04构建事件驱动插件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jburlison/wowaddonapiagents --skill wow-api-events

安装后在 Claude Code 中输入/wow-api-events确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
EVENTS-A-F.md
EVENTS-G-L.md
EVENTS-M-R.md
EVENTS-S-Z.md
EVENTS-UNDOCUMENTED.md

详细介绍

WoW 事件(框架事件)

本技能介绍 WoW 客户端通过 OnEvent 处理程序发送给 UI 代码的框架事件,涵盖设置、载荷处理,以及按类别整理的事件列表及其载荷。

信息来源:https://warcraft.wiki.gg/wiki/Events 事件处理:https://warcraft.wiki.gg/wiki/Handling_events OnEvent 处理程序:https://warcraft.wiki.gg/wiki/UIHANDLER_OnEvent 当前版本:Patch 12.0.0 (Retail)

范围

  • 仅限 Retail(忽略仅适用于 Classic 的事件)。
  • 通过 OnEvent 处理程序分发的框架事件。
  • 包含有文档记录的载荷。

何时使用此技能

在需要以下操作时使用此技能:

  • 注册或处理事件(RegisterEvent、RegisterUnitEvent)。
  • 了解事件载荷及参数顺序。
  • 将事件映射到 UI 系统(Inventory、Quest、Party 等)。
  • 构建事件驱动的插件逻辑。

如何使用此技能

  1. 先阅读下方的事件处理入门指南。
  2. 打开包含所需事件类别的参考文件。
  3. 使用事件载荷列表拆解处理程序中的 ...。
  4. 如果载荷不明确,请在对应的 wiki 页面核对不常见的事件。

事件处理入门指南

核心 API
  • CreateFrame("Frame") 会创建一个事件处理框架。
  • frame:RegisterEvent("EVENT_NAME") 会订阅指定事件。
  • frame:RegisterUnitEvent("UNIT_EVENT", "unit") 会筛选单位。
  • frame:SetScript("OnEvent", handler) 会指定处理程序。
  • frame:UnregisterEvent("EVENT_NAME") 或 frame:UnregisterAllEvents() 会取消订阅。
处理程序签名

OnEvent 处理程序会接收:

  1. self - 框架
  2. event - 事件名称字符串
  3. ... - 事件载荷参数(因事件而异)

根据 Handling events 指南:

  • 全局 event 和 argX 变量已在 patch 4.0.1 中移除。
  • 始终从 ... 中拆解载荷。
分发表模式
local f = CreateFrame("Frame")
local handlers = {}

function handlers:PLAYER_LOGIN()
    print("Login")
end

function handlers:BAG_UPDATE(bagID)
    print("Bag updated", bagID)
end

f:SetScript("OnEvent", function(self, event, ...)
  local handler = handlers[event]
  if handler then
    handler(handlers, ...)
  end
end)

for name in pairs(handlers) do
    f:RegisterEvent(name)
end
XML 事件处理程序
<Ui>
  <Frame name="MyEventFrame">
    <Scripts>
      <OnLoad>
        self:RegisterEvent("PLAYER_ENTERING_WORLD")
      </OnLoad>
      <OnEvent>
        print("Event:", event)
      </OnEvent>
    </Scripts>
  </Frame>
</Ui>

调试事件

使用 /etrace 打开 Event Trace 窗口并检查事件流量。

参考文件

事件列表按 API 系统分组,与 wiki 类别一致:

来源

评论

支持 Markdown