wow-api-escape-sequences について
wow-api-escape-sequencesは、World of Warcraftのアドオン開発向けにUIテキストのエスケープシーケンスを解説するリファレンススキルです。Lua文字列で色、インライン画像、ローカライズ文法、折り返しヒントを使ってテキストを整形する方法を扱います。
主な機能
- 01ARGBと名前付きカラーのマークアップ
- 02インラインテクスチャとアトラスアイコン
- 03ロケール対応の文法シーケンス
- 04Kstringの処理
- 05折り返しヒントとヘルパー関数
活用シーン
- 01チャットメッセージやツールチップの着色
- 02FontStringへのアイコン追加
- 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-framexml | Lua からエスケープシーケンスのマークアップを生成するユーティリティ関数(WrapTextInColorCode、CreateTextureMarkup、CreateSimpleTextureMarkup、CreateAtlasMarkup)について説明します。 |
wow-api-widget | FontString、EditBox、SimpleHTML、GameTooltip など、テキストを表示するウィジェットでこれらのシーケンスが描画されます。 |
wow-lua-api | Lua の string.format、print()、チャット関数は、これらのシーケンスを含む文字列を出力します。 |
重要:パイプ文字
Lua のソースコードでは、| をそのまま使用できます。
print("|cFFFF0000Red text|r normal")
チャットウィンドウやゲーム内のテキストエディターでは、パイプ文字 | をエスケープします。代わりに \124(パイプの ASCII コード)を使用してください。
/run print("\124cFFFF0000Red text\124r normal")
色付け
ARGB 16 進数カラー
|cAARRGGBBtext|r
AA— アルファ(現在は無視されます。常にFFを使用してください)。RRGGBB— 赤、緑、青の各チャンネルを、それぞれ 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 を指定できます。
サイズの規則
height | width | 結果 |
|---|---|---|
0 | 省略 | テキスト行の高さに合わせた正方形アイコン(TextHeight × TextHeight) |
> 0 | 省略 | 正方形アイコン(height × height) |
0 | 0 | TextHeight の正方形 |
> 0 | 0 | 幅は TextHeight、高さは height |
0 | > 0 | width はアスペクト比として扱われます: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、bVertexColor | RGB の色合い値。それぞれ 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 は、アドオンによる機密テキストや保護されたテキストの解析を防ぐ、不透明な文字列プレースホルダーです。クライアントでは実際の表示文字列として描画されますが、アドオンからプレーンテキストとして読み取ることはできません。
| Prefix | Usage |
|---|---|
q | Battle.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 で追加されました。
その他のシーケンス
| Sequence | Effect |
|---|---|
|n | 改行(ウィジェットが対応している場合)。\n または \r と同等です。 |
|| | リテラルのパイプ文字 |。 |
無効な |X | そのまま表示されます(動作は未定義です)。 |
ユーティリティ関数(FrameXML)
これらの FrameXML ヘルパー関数は、エスケープシーケンスのマークアップを生成します。
| Function | Output |
|---|---|
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"
パッチ履歴
| Patch | Change |
|---|---|
| 11.1.5 | アイテム品質カラーシーケンス |cnIQ を追加しました。 |
| 10.0.0 | 名前付きカラーシーケンス |cn を追加しました。 |
| 9.0.1 | |r はデフォルトにリセットするのではなく、ネストされた色を順番どおりに解除するようになりました。 |
| 5.4.1 | 単語の折り返し指定 |W を追加しました。 |
| 4.0.1 | Kstrings |K を追加しました。 |
関連項目
- ハイパーリンク — 関連するパイプ区切りのリンクシーケンス(
|H...|h...|h)。 wow-api-framexmlスキル —WrapTextInColorCode、CreateTextureMarkup、CreateSimpleTextureMarkup、CreateAtlasMarkupを詳しく解説します。wow-api-widgetスキル — これらのシーケンスを描画する FontString、GameTooltip などのウィジェットを解説します。