
どういうわけか、彼らは
WoWのボットの作成についてhabrに書いたが、アドオンを書くことに関する記事を見つけられず、このプロセスを、かつて私がまだ学生で、プレイするのに十分な時間に一度書いた1つの手芸の例として説明することにしたWorld of Warcraftとそれにアドオンを作成します。 当時はお金がかからなかったので、公式サーバーではなく、無料サーバーの1つでプレイしました。無料サーバーには、不完全さ、バグ、機能、異常がたくさんあります。

そのうちの1つを誤って使用することを禁止された後、公式シャードとのこのシャードの違いをすべてゲーム内で示し、使用に対するペナルティーについて警告するアドオンを作成するというアイデアが生まれました。
Google Codeとサーバーのフォーラムにアドオンを投稿し、非常に人気がありました(海賊版サーバーに関して)。 アドオンの作成方法を誰が気にするか-猫の下のWellcomesに。
はじめに
それでは、定義から始めましょう。 WoWのアドオンは、ユーザーがゲームのクライアント部分のインターフェイスを変更できるようにするが、サーバーゲームの仕組みには影響しない、いくつかのファイルのセットです。 当初はアドオンがWoWであったため、このMMORPGは他のアドオンと区別され、その優位性について叫びましたが、今日まで公式のアドオンを作成することはできません。 アドオンは
数万ではありませんが、数万あります。 なぜそんなに多いのですか? しかし、ゲームスタイルとゲームタスクの数はまったく同じだからです。 そしてもちろん、開発者は素晴らしいです。最初から、誰もが単一のインターフェースを課すのではなく、自分自身で何かを作成する方法を提供し、便利であると考える必要がありました。
アドオンを作成するためのドキュメントのメインソースは
WoWWikiポータルです。 いくつかの関連リンク:
有用な情報はまだたくさんありますが、2、3回クリックするだけで、これらの4つのページからのリンクからアクセスできます。
ツールキット
アドオンを作成するための特別なツールは必要ありません。 これらはすべてテキストファイルなので、お気に入りのテキストエディタを入手してください。 Lua言語の構文強調表示がある場合(アドオンが作成されます)-通常は問題ありません。 たとえば、Notepad ++はこれらの要件を満たしています。
また、愛好家は、
Free Visual Studio Shellエンジンに基づいて、
AddOn Studioと呼ばれる特別なオープンソースIDEを作成しました。

クールなもので、次のような多くの機能を引き受けます。
- インターフェースデザイナー
- インターフェイスをXMLツリーとして表示する
- WoWリソースブラウザ
- WoW API自動補完
- いくつかのファイルを自動生成
+その他のクールなもの。 一般に、使用できます。 まあ、あなたは
このページを閲覧することもでき
ます 。多分あなたはあなたのお気に入りのIDEのためのプラグインまたはちょうど身近なものを見つけることができます。
概念的な瞬間
- アドオンを無料にすること、EULAに準拠すること、他のユーザーに害を及ぼさないこと、イデオロギー的には真面目な退屈なことを要求するBlizzardポリシーなどがあります。 そのため、ボット、ハック、チート、その他のゴミを書くというアイデアを忘れる方が良いでしょう。
- アドオンはLUA + XMLで記述され、ソースコードで配布されるため、気に入っても気に入らなくても、アドオンはオープンソースになります。
アドオンの構成
1. TOCファイル (コンテセットのテーブル)。 これは、アドオンの目次です。 WoWシェルに、私たちが誰であるか、何と呼ばれているのか、誰が著者であるのか、何から構成されているのか、その他いくつかのことを説明します。 たとえば、ここに私のアドオンのtocファイルがあります:
2.作成するインターフェイスの変更を記述した
XMLファイル (フレーム、ボタン、インターフェイスのイベントをコードの特定の機能にバインド)。 これが私のアドオンのxmlファイルです。
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.blizzard.com/wow/ui/" xmlns="http://www.blizzard.com/wow/ui/"> <Script file="WnetFeaturer.lua" /> <Frame name="WnetFeaturerFrame"> <Scripts> <OnLoad> WnetFeaturer_OnLoad(self); </OnLoad> <OnEvent> WnetFeaturer_OnEvent(self, event, ...); </OnEvent> </Scripts> </Frame> <Frame name="GameTooltip" parent="GameTooltip"> <Scripts> <OnUpdate> WnetChecker_GameTooltip_OnUpdate(); </OnUpdate> </Scripts> </Frame> </Ui>
ここに何が書かれていますか? このインターフェイスファイルのWnetFeaturer.luaコードファイルへのバインドを宣言し、2つのフレームを宣言します-1つはプラグインの読み込みイベントでイベントをハングアップするためのもので、2つ目はゲーム内で使用され、ゲームワールドの特定のオブジェクトに独自のツールヒント(ヒント)を表示します。
3. Luaファイル 。 これは
Luaコードです。 確かに、WoWのLuaは多少削除されています(詳細はWoWWikiで確認できます)が、ほとんどのタスクにはこれで十分です。 これがアドオンコードファイルの1つです(最短)。
このコードは次のタスクを実行します。
- WnetFeaturer_Log-プレーヤーのチャットにログを出力する関数
- WnetFeaturer_OnLoad-アドオンの読み込み時に呼び出されます(上記のxmlファイルで、この関数の呼び出しをアドオン読み込みイベントにリンクしたことを思い出してください)。 必要な依存関係をチェックし、いくつかのフックを登録し、いくつかのイベント(たとえば、プレイヤーがゲームワールドに入るイベント)にサブスクライブします。
- WnetFeaturer_OnEvent-以前にサブスクライブしたイベントが発生したときに呼び出されます。 内部には各イベントのハンドラーがあります。
- Planner_TalentFrame_AfterUpdateは、このファイルで最も複雑な関数です。 作業中、部分的に作業中、完全に壊れた才能に加えて、キャラクターの才能ツリーに緑、黄、赤の四角を描く必要があります。

- checkIsItemValid、checkIsNPCValid、checkIsQuestNotValid-ThingまたはNPCがこのサーバーで有効かどうかを確認します。 これらの関数は、コード内の他の場所から呼び出され、無効なものの隣にそのような画像を描画します。

- WnetChecker_GameTooltip_OnUpdateは、ツールチップ表示機能へのフックです。 ここで、ツールチップテキストを分析し、最初の行で正しく動作しないオブジェクトの言及が見つかった場合、ツールチップテキストを変更します。
プロジェクトにはいくつかのコードファイルがありますが、大部分は無効なオブジェクトとそれらへの署名のベースにすぎません。 関心は生じません。
完全なソースはここで見つけることができます:
http :
//code.google.com/p/wnet-featurer/downloads/listそして、ここにフォーラムの
トピックがあり、そこでアドオンの機能をより詳細に説明しました。
これが誰かを助けてくれたら嬉しいです。 不明な点があるかどうか尋ねます。