mcpField
W
wow-api-escape-sequences

wow-api-escape-sequences

github.com/jburlison開発4643 回インストール37 週間前に更新
リポジトリ

wow-api-escape-sequences について

wow-api-escape-sequencesは、World of Warcraftのアドオン開発向けにUIテキストのエスケープシーケンスを解説するリファレンススキルです。Lua文字列で色、インライン画像、ローカライズ文法、折り返しヒントを使ってテキストを整形する方法を扱います。

主な機能

  1. 01ARGBと名前付きカラーのマークアップ
  2. 02インラインテクスチャとアトラスアイコン
  3. 03ロケール対応の文法シーケンス
  4. 04Kstringの処理
  5. 05折り返しヒントとヘルパー関数

活用シーン

  1. 01チャットメッセージやツールチップの着色
  2. 02FontStringへのアイコン追加
  3. 03アドオン内のローカライズテキスト整形

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/wow-api-escape-sequencesを入力して読み込まれたか確認します。

詳細

WoW UI エスケープシーケンス

このスキルでは、World of Warcraft のアドオン開発で使用できる UI エスケープシーケンスについて説明します。画面上にテキストを表示する多くの UI 要素では、|(パイプ)文字で始まる特殊なシーケンスがサポートされています。これらのシーケンスを使うと、通常の Lua 文字列内でインラインの色付け、テクスチャやアトラスの描画、文法変化、単語の折り返しヒントなどを利用できます。

信頼できる情報源: https://warcraft.wiki.gg/wiki/UI_escape_sequences 最新情報: パッチ 12.0.0(リテール版のみ) 対象範囲: WoW UI のテキストレンダラーが認識するすべての | エスケープシーケンス。

このスキルを使用する場面

次のような場合に、このスキルを使用してください。

  • チャットメッセージ、ツールチップ、FontString にカラーコードを埋め込む
  • 名前付きグローバルカラー(|cn)やアイテム品質カラー(|cnIQ)を使用する
  • テキストにインラインテクスチャやアトラスアイコンを挿入する
  • ローカライズされた文法規則(韓国語、フランス語、ロシア語、複数形、冠詞)を適用する
  • 単語の折り返しヒント(|W)や Kstring の難読化(|K)を理解する
  • WrapTextInColorCode()、CreateTextureMarkup()、CreateSimpleTextureMarkup()、CreateAtlasMarkup() などのヘルパー関数を使用する

他のスキルとの関係

スキル関係
wow-api-framexmlLua からエスケープシーケンスのマークアップを生成するユーティリティ関数(WrapTextInColorCode、CreateTextureMarkup、CreateSimpleTextureMarkup、CreateAtlasMarkup)について説明します。
wow-api-widgetFontString、EditBox、SimpleHTML、GameTooltip など、テキストを表示するウィジェットでこれらのシーケンスが描画されます。
wow-lua-apiLua の string.format、print()、チャット関数は、これらのシーケンスを含む文字列を出力します。

重要:パイプ文字

Lua のソースコードでは、| をそのまま使用できます。

print("|cFFFF0000Red text|r normal")

チャットウィンドウやゲーム内のテキストエディターでは、パイプ文字 | をエスケープします。代わりに \124(パイプの ASCII コード)を使用してください。

/run print("\124cFFFF0000Red text\124r normal")

色付け

ARGB 16 進数カラー
|cAARRGGBBtext|r
  • AA — アルファ(現在は無視されます。常に FF を使用してください)。
  • RR GG BB — 赤、緑、青の各チャンネルを、それぞれ 2 桁の 16 進数で指定します。
  • |r — 最も新しい色を取り消し、直前の色に戻します(パッチ 9.0.1 以降)。以前はデフォルトの色に完全にリセットされていました。

入れ子の例:

print("white |cFFFF0000red |cFF00FF00green|r back to red|r back to white")
グローバルな名前付きカラー(|cn)
|cnCOLOR_NAME:text|r

名前付きの GlobalColor を使って text を描画します。色の名前は GlobalColor データベーステーブルから取得します。

print("|cnPURE_GREEN_COLOR:Green text|r normal")
アイテム品質カラー(|cnIQ)
|cnIQn:text|r

数値の Enum.ItemQuality 値 n に対応するアイテム品質カラーで text を描画します(0 = Poor/灰色、1 = Common/白、2 = Uncommon/緑、3 = Rare/青、4 = Epic/紫、5 = Legendary/オレンジ、…)。色はユーザーの色の上書き設定に合わせて更新されます。

print("|cnIQ4:Epic quality text|r")

パッチ 11.1.5 で追加されました。名前付きカラー(|cn)はパッチ 10.0.0 で追加されました。


テクスチャ

インラインテクスチャ
|Tpath:height[:width[:offsetX:offsetY[:textureWidth:textureHeight:leftTexel:rightTexel:topTexel:bottomTexel[:rVertexColor:gVertexColor:bVertexColor]]]]|t

FontString 内に画像を挿入します。path にはファイルパス(区切り文字として / または \\ を使用)か、数値の FileDataID を指定できます。

サイズの規則
heightwidth結果
0省略テキスト行の高さに合わせた正方形アイコン(TextHeight × TextHeight)
> 0省略正方形アイコン(height × height)
00TextHeight の正方形
> 00幅は TextHeight、高さは height
0> 0width はアスペクト比として扱われます:Width = width × TextHeight、Height = TextHeight
> 0> 0幅と高さを明示的に指定(width × height)
省略可能なパラメーター
パラメーター用途
offsetX、offsetY自然な位置からのピクセル単位のオフセット
textureWidth、textureHeight元画像のピクセル単位の寸法
leftTexel、rightTexel、topTexel、bottomTexelピクセル単位の切り抜き座標(正規化されていない x1 x2 y1 y2。Texture:SetTexCoord を参照)
rVertexColor、gVertexColor、bVertexColorRGB の色合い値。それぞれ 0~255
よくあるパターン
-- Square icon at text size (most common for spell/item icons)
"|T133784:0|t"
"|TInterface/Icons/INV_Misc_Coin_01:0|t"

-- Explicit 16×16 icon
"|TInterface/Icons/INV_Misc_Coin_01:16|t"

-- Rectangular image with aspect ratio
"|TInterface/Glues/LoadingBar/Loading-BarFill:0:2|t"

-- Cropped texture (4px border removed from a 64×64 source)
"|TInterface/Icons/INV_Misc_Coin_01:16:16:0:0:64:64:4:60:4:60|t"

-- Tinted texture (green tint: 73,177,73)
"|TInterface/ChatFrame/UI-ChatIcon-ArmoryChat:14:14:0:0:16:16:0:16:0:16:73:177:73|t"
Texture Atlas
|A:atlas:height:width[:offsetX:offsetY[:rVertexColor:gVertexColor:bVertexColor]]|a

テクスチャアトラスの領域を挿入します。atlas には名前の文字列または数値のアトラス ID を指定できます。|A の後に : があることに注意してください。

-- Atlas by name
"|A:groupfinder-icon-role-large-tank:19:19|a Tank"

-- Atlas by numeric ID
"|A:4259:19:19|a Tank"

こちらも参照してください:AtlasID


Kstrings

|Kq1|k

Kstrings は、アドオンによる機密テキストや保護されたテキストの解析を防ぐ、不透明な文字列プレースホルダーです。クライアントでは実際の表示文字列として描画されますが、アドオンからプレーンテキストとして読み取ることはできません。

PrefixUsage
qBattle.net アカウント名(C_BattleNet.GetFriendAccountInfo)
rグループ検索の募集名/コメント(C_LFGList.GetSearchResultInfo、C_LFGList.GetActiveEntryInfo)
uコミュニティのメッセージ内容(C_Club.GetMessageInfo、C_Club.GetMessagesInRange)
vコミュニティのチャンネルチャット(CHAT_MSG_COMMUNITIES_CHANNEL イベント)

Patch 4.0.1 で追加されました。


文法/ローカライズシーケンス

これらのシーケンスは、言語固有の語形変化に対応し、1つのローカライズ文字列から文法的に正しい出力を生成します。

|1 — 韓国語の助詞
text|1A;B;

子音の後に使う助詞 A または母音の後に使う助詞 B を選択します。

print("라면|1을;를;")  -- 라면을 (ramyeoneul)
print("나무|1을;를;")  -- 나무를 (namureul)
|2 — フランス語の前置詞
|2 text

子音の前では de text、母音の前では d'text を出力します。|2 の後にある末尾の空白は無視されます。

print("|2 fraise") -- de fraise
print("|2 avion")  -- d'avion
|3 — ロシア語名詞の格変化
|3-id(text)

ロシア語の名詞を5つの格のいずれかに変化させます(id = 1~5)。

print("|3-1(Кролик)") -- Кролика   (Genitive)
print("|3-2(Кролик)") -- Кролику   (Dative)
print("|3-3(Кролик)") -- Кролика   (Accusative)
print("|3-4(Кролик)") -- Кроликом  (Instrumental)
print("|3-5(Кролик)") -- Кролике   (Prepositional)

こちらも参照してください:DeclineName() API。

|4 — 複数形
number |4singular:plural;
number |4singular:plural1:plural2;   -- ruRU has three forms

直前の数値に基づいて、単数形または複数形を選択します。

print("1 |4car:cars;")      -- 1 car
print("2 |4car:cars;")      -- 2 cars
print("3 blue |4car:cars;") -- 3 blue cars
|7 — 複数形(大きな数値/英語以外)

|4 と同じ動作ですが、一部の英語以外のロケールで大きな数値を扱う場合に使用します。

print("1 |7Million:Millionen;") -- 1 Million
print("2 |7Million:Millionen;") -- 2 Millionen
|5 — 不定冠詞(a / an)
|5 text
|5^ text   -- uppercase article

子音の音の前には a、母音の音の前には an を挿入します。

print("|5 banana")  -- a banana
print("|5 apple")   -- an apple
print("|5^ apple")  -- An apple
|6 — 小文字化
|6 TEXT
|6(TEXT MORE)

次の単語(または括弧で囲まれた語句)を小文字に変換します。

print("|6 HELLO WORLD")  -- hello WORLD
print("|6(HELLO WORLD)") -- hello world

単語の折り返し

|Wtext|w

囲まれた text を行をまたいで分割しないよう指定します。テキストを折り返す必要がある場合、クライアントはテキスト内で分割するのではなく、|W の開始位置より前で折り返すことを優先します。それでもテキストが長すぎる場合、この指定は無視されることがあります。

Patch 5.4.1 で追加されました。


その他のシーケンス

SequenceEffect
|n改行(ウィジェットが対応している場合)。\n または \r と同等です。
||リテラルのパイプ文字 |。
無効な |Xそのまま表示されます(動作は未定義です)。

ユーティリティ関数(FrameXML)

これらの FrameXML ヘルパー関数は、エスケープシーケンスのマークアップを生成します。

FunctionOutput
WrapTextInColorCode(text, colorHexString)|cFFRRGGBBtext|r
CreateTextureMarkup(file, fileW, fileH, width, height, left, right, top, bottom)テクスチャ座標付きの |T...|t
CreateSimpleTextureMarkup(file, width, height)|Tfile:height:width|t
CreateAtlasMarkup(atlasName, height, width, offsetX, offsetY)|A:atlas:height:width:...|a
-- Color a string red
WrapTextInColorCode("Critical!", "FFFF0000")
-- "|cFFFF0000Critical!|r"

-- Inline 16×16 coin icon
CreateSimpleTextureMarkup("Interface/Icons/INV_Misc_Coin_01", 16, 16)
-- "|TInterface/Icons/INV_Misc_Coin_01:16:16|t"

-- Atlas tank icon
CreateAtlasMarkup("groupfinder-icon-role-large-tank", 16, 16)
-- "|A:groupfinder-icon-role-large-tank:16:16|a"

パッチ履歴

PatchChange
11.1.5アイテム品質カラーシーケンス |cnIQ を追加しました。
10.0.0名前付きカラーシーケンス |cn を追加しました。
9.0.1|r はデフォルトにリセットするのではなく、ネストされた色を順番どおりに解除するようになりました。
5.4.1単語の折り返し指定 |W を追加しました。
4.0.1Kstrings |K を追加しました。

関連項目

  • ハイパーリンク — 関連するパイプ区切りのリンクシーケンス(|H...|h...|h)。
  • wow-api-framexml スキル — WrapTextInColorCode、CreateTextureMarkup、CreateSimpleTextureMarkup、CreateAtlasMarkup を詳しく解説します。
  • wow-api-widget スキル — これらのシーケンスを描画する FontString、GameTooltip などのウィジェットを解説します。

コメント