WOW UI Modガイド-第2章スラッシュコマンド

WoW Goldを安く購入

  • クーポンSEANを使用してPVPBankでWoW Classic Gold Safeを購入します。 支払い:ペイパル、クレジット。
  • MulefactoryでWoW Gold Paypalを購入してください。 WoWクラシッククーポン:wowcgold&WoWゴールドクーポン:wowrgold。 素晴らしい価格、即納。 支払い:ペイパル、Skrill、ビットコイン。
  • UI Modガイド-第1章
  • UI Modガイド-第2章
  • UI Modガイド-第3章
  • UI Modガイド-第4章
  • UI Modガイド-第5章
  • UI Modガイド-第6章
  • UI Modガイド-第6章
  • UI Modガイド-第7章
  • UI Modガイド-第7章
  • UI Modガイド-第8章
  • UI Modガイド-第8章
  • UI Modガイド-第9章7

パート2索引

  • スラッシュコマンドとは何ですか、そしてなぜ私は気にしますか
  • スラッシュコマンドはどのように機能しますか
  • LUAファイル
  • それをすべてまとめて
  • それは何をしますか
  • 最終的な言葉

Wowを作成するための私たちのガイド アドオン! この割賦では、我々は我々が第一部で作成した単純なアドオンの上に構築することができます。 アドオンの作成に精通している場合でも、パート1をすばやくスキムすることができます。

第二部では、Lua、XML、およびtocファイルの基本に精通していることを前提としています。 しかし、私はあなたが豊富なプログラミング経験を持っていると仮定しません。 私達の焦点は¡の°のスラッシュの¡の±命令の処理にあります。 途中で、我々はまた、Luaのコーディングで少し近く見てみましょう。 私たちが完了したら、パートワンからむしろ不自由な”battle cry”アドオンを拡張し、luaコードを変更することなくエンドユーザーがカスタマイズできるようにしました。 パート1のアドオンを既に持っていない場合は、ファイル<here>を取得できます。

スラッシュコマンドとは何ですか、なぜ私は気にしますか

あなたは約五分以上WoWをプレイした場合、あなたはスラッシュコマンドに精通しています。 彼らは、あなたがWoWをプレイしながら入力することを¡°/say¡±と¡°/who¡±のようなものを再します。 スラッシュコマンドは、マウスを使用せずにアクションを実行する非常に便利な方法です。 アドオンライターの場合、スラッシュコマンドは、ウィンドウやボタンを備えたグラフィカルユーザインタフェースよりもはるかに簡単に実装できます。 あなたのニーズが簡単であれば、スラッシュコマンドは、あなたのアドオンが必要とするすべてのことかもしれません。

ご存知のように、WoWはそのようなコマンドについて非常に無数のものを提供しています。 あなたが知らないかもしれないことは、アドオンが独自のスラッシュコマンドを追加できるということです。 だから、slash sはそれが十分の一-億と一にスラッシュコマンドのカウントをバンプするために必要なものを見てみましょう。

スラッシュコマンドの仕組み

アドオンが作成するすべてのスラッシュコマンドには、Lua関数が関連付けられています。 ユーザーがslashコマンドを入力すると、WoWはLua関数を呼び出します。 内部的には、WoWはすべての異なるスラッシュコマンドを呼び出す必要がある関数にマッピングするテーブルである¡°SlashCmdList¡±を維持します。 これは電話帳のように考えることができます。 (人々が電話Jを使用したときに、チャットルームとIMの前に戻って覚えている)スラッシュコマンドは名前のようなものであり、機能は電話番号のようなも ユーザーがスラッシュコマンドを入力すると、WoWは正しいものが見つかるまでスラッシュコマンド(名前)を実行します。 次に、そのエントリの関数(電話番号)を呼び出します。 ここでは、スラッシュコマンドを作成するためのLuaを示します。

SlashCmdList=Tthaog2Setmybattlecry;

この行は、slash°TTH_AOG2_SET_MY_BATTLE_CRY slash±slashコマンドの関数を¡°Tthaog2Setmybattlecry¡±に設定します。 °°TTH_AOG2_SET_MY_BATTLE_CRY slash±slashコマンドが¡°SlashCmdList table±テーブルに¡tが既に存在しない場合は、自動的に作成されます。 これが実際に機能するためには、Luaコードのどこかで¡°Tthaog2Setmybattlecry±±関数を定義する必要があります。 関数は次のようになります。

function Tthaog2Setmybattlecry(msg)
–戦いの叫びを設定し、後で使用します
Tthaog2Mybattlecry=msg;
end

(慣習上の単語:スラッシュコマンド名にオールキャップを使用したことに注意してください。 つまり、θ°Tthaog2Setmybattlecry θ±の代わりにTTH_AOG2_SET_MY_BATTLE_CRY θ±を書きました。 このガイドでは、世界が星間塵や吹雪のようなものに崩壊しても、決して変わらない定数C値にオールキャップを使用しています。 私がすべての大文字の名前を使用しているのを見るたびに、あなたは定数を示していることを知っています。)

Pop quiz:ユーザーは新しいスラッシュコマンドを実行するために何を入力しますか大丈夫、私は告白します。 それはトリックの質問です。 上記のLuaの行はスラッシュコマンドを作成し、それにLua関数を関連付けますが、それを実行する方法はまだありません。 WoWは、ユーザーが入力したものを実際のスラッシュコマンドに関連付けるために、気の利いたエイリアシングシステムを使用します。 ここでは、それを行うためのLuaコードをs s:

SLASH_TTH_AOG2_SET_MY_BATTLE_CRY1=”/setmybattlecry2″;

ユーザーがgro°/setmybattlecry2を鼠径部に入力した場合は、次のようになります。¡±は、スラッシュのコマンドベ°TTH_AOG2_SET_MY_BATTLE_CRY¡±が実行され、機能ア°TthAog2SetMyBattleCry¡±と呼ばれるようにパラメータベ°の脚の付け根に!¡±. (し枚°2¡±末ベ°/setmybattlecry2¡±です!ll改訂を当社のアドオン後に本製品をガイドとしてわからない音楽性はtといった名紛争。)

なぜ余分なステップがないのですかslash tスラッシュコマンド¡°TTH_AOG2_SET_MY_BATTLE_CRY±±を作成すると、ユーザーがtype°/tth_aog2_setmybattlecry¡±を入力して実行できるように自動的に作 あなたはすでに最初のものを見ることができます:私たちの内部名は私たちのコードでは多くの意味を持つかもしれませんが、彼らはしばしばユーザーに 第二の理由は、より重要です: この追加の手順では、複数のキーワードが同じスラッシュコマンドを実行できます。 タイプθ°/setmybattlecry2θ±は一種の苦痛である。

Slash_TTH_AOG2_SET_MY_BATTLE_CRY2=”/smbc2″;

アドオンのユーザーは、battle°/setmybattlecry2±±または¡°/smbc2¡±のいずれかを入力して戦闘の叫びを設定できます。 定数部分(SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2)では、今回はθ°1θ±の代わりにθ°2θ±を追加しました。 代わりに¡°3¡±を追加するなどして、3番目のキーワードを追加することができます。

スラッシュコマンドは、windowsやボタンほど派手ではなく、視覚的に魅力的ではありませんが、ユーザーにとっては便利なことがよくあります。 そして、彼らはあなたが作成するために全体の多くの簡単に再¡。 (あなたはまだあなたのアドオンにグラフィカルインターフェイスをしたい、とあなたはおそらく行う場合は、我慢してください。 私たちは、このガイドの第七部でそれをカバーしています。)

LUA変数

上記の関数で何か新しいことに気づいたかもしれません。 あなたがそれを逃した場合に備えて、ここで再びです:

関数Tthaog2Setmybattlecry(msg)
–後で使用するために、戦いの叫びを設定します
Tthaog2Mybattlecry=msg;
end

¡°Tthaog2Mybattlecry=msg;¡±は新しい部分です。 Θ°tthaog2mybattlecry θ±はLua変数です。 変数は、選択した任意の値を保持するためのスロットです。 多くのスクリプト言語と同様に、Luaは変数を扱う上で非常に柔軟です。 まージveを使用枚°強く型付けされたア±プログラミング言語C++、大事な変数のベベ°タイプ¡±. Lua変数は、そこに格納したいものをほとんど保持できる大きな空のボックスと考えることができます。 このアドオンでは、ユーザー¡sの優先battle cryを変数に格納します。

変数の重要な側面の一つは、θ°scope θ±です。 スコープは、基本的にどのコードがこの変数を見ることができるかを意味しますデフォルトでは、変数は¡°グローバルスコープ¡±を持ち、多くの関数が変数を見ることができます。 他のタイプの規模は¡の°のローカル規模の¡の±です。 これが私たちにとって意味することは、同じ¡°ブロック¡±内のコードだけが変数を見ることができるということです。 Θ°ブロックθ±は、基本的に次の終わりθ±までのθ°を意味します。 (Luaのスコープの技術的な定義はより複雑ですが、ここではそれらの詳細について心配する必要はありません。)

上記の例では、θ°Tthaog2Mybattlecry θ±は、θ°グローバル変数θ±であり、グローバルスコープを持つ変数です。 この行は、¡°Tthaog2Mybattlecry=msg;¡°tthaog2Setmybattlecry¡±関数内で作成されました。 C++のような言語から来ている人にとっては、これは直感に反するように見えるかもしれません。 しかし、Luaでは、変数がローカルスコープを持つものとして明示的に識別されていない場合、それは自動的にグローバルです。 たとえそれが関数内で宣言されていても。 だから、次のように動作します:

関数Tthaog2Setmybattlecry(msg)
–後で使用するために、戦いの叫びを設定します
Tthago2Mybattlecry=msg;
終了

関数Tthaog2Event()
–チャットにメッセージを送信
SendChatMessage(tthaog2mybattlecry,”Say”);
End

tthaog2mybattlecryは両方の関数で使用されていることに注意してください。 両方の場所で、同じ変数を参照します。 ボックスのアナロジーを使用して、Tthaog2Setmybattlecryがボックスに値を入れると、Tthaog2Eventはボックスを調べてその値を見ることができます。

しかし、この方法でグローバル変数を宣言することは悪い習慣です。 Luaファイルの先頭で宣言する方がはるかに優れています。 これには2つの利点があります:

1)グローバル変数の完全なリストがすぐそこにあり、すべてを一目で簡単に見ることができます

2)変数が適切に初期化されていることを確認できます。

だから、これを行うことがはるかに好ましいです:

-この変数は、私たちの戦いの叫びを保持しています
Tthaog2Mybattlecry=”顔にはありません!”;

関数Tthaog2Setmybattlecry(msg)
–戦闘叫びを設定し、後で使用します
Tthaog2Mybattlecry=msg;
end

function Tthaog2Event()
–チャットにメッセージを送信
SendChatMessage(Tthaog2Mybattlecry,”SAY”);
end

今、何が起こっているかを確認する方がはるかに簡単です。

ローカル変数は、値が簡単に必要な場合に便利です。 ローカルを使用することで、どのコードが変数を変更するかが非常に明確になります。 ローカルは非常に長く存在しないため、通常はそれを変更する可能性のあるすべてのコードを一目で見ることができます。 彼らがそれを設定したときに、新しい戦いの叫びをユーザーにエコーバックすることをお勧めします。 ¡Sはこれを行うためにTthaog2Setmybattlecryを変更してみましょう:

関数Tthaog2Setmybattlecry(msg)
–戦闘の叫びを設定し、後で使用します。
Tthaog2Mybattlecry=msg;

-確認のために新しい戦いの叫びをエコーします。
ローカルエコー=TTH_AOG2_BATTLE_CRY_SET_TO.. msg;
Tthaog2Outputtochat(echo);
end

local veはローカル変数に加えていくつかの新しいものを導入しましたので、briefly sはそれらを一つずつ簡単に見てみましょう:

local echo=TTH_AOG2_BATTLE_CRY_SET_TO。. msg;

この行はlocal°echo¡±という名前のローカル変数を作成し、ll ll echoという値をユーザーに格納します。 等号の後の部分は、変数TTH_AOG2_BATTLE_CRY_SET_TOの内容で始まり、msgの内容で終わるテキストの文字列を作成し、そのテキストの文字列をローカル変数に割り当て

うーん、tth_AOG2_BATTLE_CRY_SET_TO変数を定義していません。 ファイルの先頭に次の行を配置して定義します。

local TTH_AOG2_BATTLE_CRY_SET_TO=”Battle cry set to”;

ご覧のように、TTH_AOG2_BATTLE_CRY_SET_TO変数には単に文字列が含まれています。 この文字列は決して変化しないので、θ°定数θ±と呼ばれます。 定数をファイルの先頭に配置することは、常に良い考えです。 そうすれば、文言を変更する必要がある場合、文字列は非常に簡単に見つけることができます。 (第六部で見ているように、ローカライズや複数の言語のサポートもはるかに簡単になります。)また、関数内にないにもかかわらず、TTH_AOG2_BATTLE_CRY_SET_TO変数をlocalとして宣言しました。 これは、変数がこのファイル内にのみ存在し、他のファイルには存在しないことを意味します。 1つのファイルで変数のみを使用する場合は、常にローカルにすることをお勧めします。 そうすれば、ファイル外のコードがそれを変更していないことを確認できます。 (なぜTthaog2Mybattlecryをローカルにしなかったのか疑問に思うかもしれません。 それは主に、グローバル変数がどのように見えるかをお見せしたかったからです。 しかし、あなたが第三部で見る別の理由もあります。)

¡sを関数の次の行に移動させます。

Tthaog2Outputtochat(echo);

この行は、チャットエリアにメッセージを送信するために記述する必要がある関数を呼び出します。 変数echoが関数に渡されます。 ここでは、この関数がどのように見えるかを示します:

function Tthaog2Outputtochat(msg)
if(DEFAULT_CHAT_FRAME)then
DEFAULT_CHAT_FRAME:AddMessage(msg);
end
end

この関数は、デフォルトのチャットフレームにテキストを表示できるかどうかを決定し、そうであれば、msgのテキストをチャッ このテキストは他のプレイヤーには表示されませんCアドオンを実行しているプレイヤーのための厳密な情報テキストです。 変数を関数に渡す方法に慣れていない場合は、ここで¡sどのように動作しますか: Tthaog2Setmybattlecryがecho変数を渡してTthaog2Outputtochatを呼び出すと、舞台裏でいくつかのことがLuaになります。 Tthaog2Outputtochatにmsgという名前のローカル変数を作成し、echoの値をmsgにコピーします。 これにより、tthaog2Outputtochat関数内のmsgという名前のローカル変数が得られます。

これを行うための関数を作成する必要はありませんでした。 私たちは、tthaog2Setmybattlecry関数で直接チャットエリアに出力するコードを置くことができました。 しかし、機能を使用すると、チャットエリアにテキストを出力することが本当に簡単になります。 他の場所でこれを行う必要がある場合は、code d関数を呼び出すだけで、コードブロック全体をコピーする必要はありません。 (私たちは第三部でこれを利用します。 また、別の方法でテキストをユーザーに表示することにした場合は、関数内のコードを変更するだけで済みます。 他のコードは影響を受けず、バグの可能性を減らします。 最後に、Tthaog2Setmybattlecry関数を単純化しました。 読みやすいコードは、デバッグしやすいコードです。

Luaの文字列処理やWoWフレーム階層を完全に検討していませんが、この時点でそうすることは、スラッシュコマンドの主な焦点から気を散らすことにな うまくいけば、上記はあなたがアドオンのこのバージョンで何が起こっているのかを理解するのに十分です。

すべてをまとめる

battle cryアドオンを書き換えて、ユーザーがスラッシュコマンドで優先するbattle cryを指定できるようにする準備が整いました。 第一部と同様に、三つのファイルが含まれています:
-tocファイル
-XMLファイルの
-ユーザコードファイル

のtocファイルは、ほぼ横這いから一:

## Interface: 11000

## Title: TenTonHammer Guide Part 2
## Author: TenTonHammer.com
## Notes: Makes your character scream a customizable battle cry when combat begins
TthAog2.xml

す!ve変更しただけでベ°1¡±へのア°2¡±変更しました債のちのア°カスタマイズ可能¡±ではなくア°ャ¡±. この目次ファイルをTthaog2として保存します。フォルダのアドオンの下にあるTthaog2という名前のフォルダへの目次。

XMLファイルは、¡°1を次のように変更することを除いて、パート1と同じです¡°2¡±:

<Ui xmlns=”http://www.blizzard.com/wow/ui/”xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation=”http://www.blizzard.com/wow/ui/”>
<スクリプトファイル=”Tthaog2.lua”/>
<フレーム名=”TthAog2Core”>
<Scripts>
<OnLoad>TthAog2Load();</OnLoad>
<OnEvent>TthAog2Event();</OnEvent>
</Scripts>
</Frame>
</Ui>

このXMLファイルをTthaog2として保存します。フォルダアドオンの下にTthaog2という名前のフォルダへのxml。

最後に、コード自体を含むLuaファイルがあります。 あなたはすでにこれらの部分のすべてを見ました:

-定数文字列。
local TTH_AOG2_BATTLE_CRY_SET_TO=”Battle cry set to”;
–この変数は私たちの戦いの叫びを保持します。
Tthaog2Mybattlecry=”顔にはない!”;

–チャットエリアに印刷するためのユーティリティ関数
function Tthaog2Outputtochat(msg)
if(DEFAULT_CHAT_FRAME)then
DEFAULT_CHAT_FRAME:AddMessage(msg);
end
end

-アドオンがロードされたときに呼び出されます。
function Tthaog2Load()
–イベントに登録します。
this:RegisterEvent(“PLAYER_REGEN_DISABLED”)”);

— slashコマンドを作成します。
SlashCmdList=Tthaog2Setmybattlecry;
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY1=”/setmybattlecry2″;
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2=”/smbc2″;
end

–スラッシュコマンドの実行時に呼び出されます。
function Tthaog2Setmybattlecry(msg)
–戦闘の叫びを設定し、後で使用します。
Tthaog2Mybattlecry=msg;

-確認のために新しい戦いの叫びをエコーします。
ローカルエコー=TTH_AOG2_BATTLE_CRY_SET_TO.. msg;
Tthaog2Outputtochat(echo);
end

–¡veが登録したイベントを処理するために呼び出されます。
function Tthaog2Event()
–チャットにメッセージを送信します。
SendChatMessage(Tthaog2Mybattlecry,”SAY”);
end

第一部と比較して、tthaog2Mybattlecryグローバル変数を追加し、slashコマンドを作成するコードを追加し、Tthaog2Setmybattlecry関数を追加し、tthaog2Eventでtthaog2Mybattlecryグローバル変数を使用しました。 私たちはまた、より多くのコメントを追加しました。

このluaファイルをTthaog2として保存します。フォルダアドオンの下にTthaog2という名前のフォルダにlua。

それは何をしていますか

今WoWを開始し、戦いに入ります。 あなたは愚かな戦いの叫びを見ることができます♥°顔にはありません!¡±. これは、Tthaog2Mybattlecry変数のデフォルト値を反映しています。 次のように入力します:

/smbc2戦闘に!

チャットエリアに新しい戦いの叫びがエコーされているのを見ることができます。 今、別の戦いで取得し、あなたは戦いに♥llを参照してください♥°!顔ではなく、θ°の代わりにθ±!¡±. Battle cryをオフにしたい場合は、次のように入力します。

/smbc2

私たちのエコーは、この場合のために非常によく表現されていません(¡°Battle cry set to±±と言うだけです)。 これが一般の人々が使用するための実際のアドオンであれば、msgの値を¡dテストし、ユーザーがbattle cryをクリアしている場合は特別なエコーを表示します。 これは単なる一例なので、コードを複雑にすることはありません。

FINAL WORDS

新しいバージョンのアドオンを試してみて、あなたのキャラクターが二つの戦いの叫びを叫んだ場合、それはおそらく、このガイドのパートOneのアドオン 私たちは命名に注意していたので、これはエラーを引き起こすことはありません。 しかし、それはおそらくあなたが望むものではありません。 最初のバージョンCを無効にするか削除するだけで、新しいバージョンはとにかく優れています。

しかし、一つの問題があります:あなたの戦いの叫びは、セッションの間に失われます。 あなたが閉じてうわーを再起動するたびに、あなたは顔ではない♥°に戻ってくるでしょう!¡±. あなたが準備ができたら、第三部に進み、セッションの間にあなたの好みの戦いを泣くようにする方法を見てください。