wow-api-events について
World of Warcraft のリテール版フレームイベントを扱う、アドオン開発者向けのリファレンススキルです。イベント登録、ハンドラーの引数、分類別イベント一覧を説明します。
主な機能
- 01イベントの登録と処理
- 02OnEvent 引数のリファレンス
- 03API システム別イベント一覧
- 04Event Trace のデバッグ案内
活用シーン
- 01フレームイベントやユニットイベントの登録
- 02ハンドラー引数の解析
- 03イベントと UI システムの対応付け
- 04イベント駆動型アドオンの構築
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jburlison/ wowaddonapiagents --skill wow-api-eventsインストール後、Claude Code で/wow-api-eventsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/EVENTS-A-F.mdEVENTS-G-L.mdEVENTS-M-R.mdEVENTS-S-Z.mdEVENTS-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 現行バージョン:パッチ 12.0.0(Retail)
対象範囲
- Retail のみ(Classic 専用イベントは対象外です)。
OnEventハンドラーに配信されるフレームイベント。- ドキュメントに記載されているペイロードを含みます。
このスキルを使用する場面
次のような場合に、このスキルを使用してください。
- イベントを登録または処理する場合(
RegisterEvent、RegisterUnitEvent)。 - イベントのペイロードと引数の順序を確認する場合。
- イベントを UI システム(Inventory、Quest、Party など)に対応付ける場合。
- イベント駆動型のアドオンロジックを構築する場合。
このスキルの使用方法
- まず、以下のイベント処理の基本説明を確認してください。
- 必要なイベントカテゴリが記載されたリファレンスファイルを開きます。
- イベントのペイロード一覧を使って、ハンドラー内の
...を展開します。 - ペイロードが不明確な場合は、イベントの Wiki ページで詳細を確認してください。
イベント処理の基本説明
コア API
CreateFrame("Frame")はイベントハンドラーフレームを作成します。frame:RegisterEvent("EVENT_NAME")は特定のイベントを登録します。frame:RegisterUnitEvent("UNIT_EVENT", "unit")は対象のユニットを絞り込みます。frame:SetScript("OnEvent", handler)はハンドラーを割り当てます。frame:UnregisterEvent("EVENT_NAME")またはframe:UnregisterAllEvents()は登録を解除します。
ハンドラーのシグネチャ
OnEvent ハンドラーは次の値を受け取ります。
self- フレームevent- イベント名の文字列...- イベントのペイロード引数(イベントごとに異なります)
イベント処理ガイドより:
- グローバル変数
eventとargXは、パッチ 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 ウィンドウを開き、イベントの送受信を確認できます。
リファレンスファイル
イベント一覧は Wiki のカテゴリに合わせ、API システムごとに分類されています。
情報源
コメント
Markdown 対応