クソの役にも立たないHelloWorld Addon
を作ってみよう。
まずディレクトリ
...\World of Warcraft\Interface\AddOns
にHelloWorldフォルダを作ろう。
次にHelloWorldフォルダの中に、
の3つのファイルを作ろう。
HelloWorld.lua
HelloWorld.toc
HelloWorld.xml
の3つのファイルを作ろう。
.toc ・・・ Addonの設定ファイル
.lua ・・・ プログラム
.xml ・・・ UIの設定ファイル
という印象だ。
各ファイルの中身はこんな雰囲気だ。
- HelloWorld.toc
## Interface: 40000
## Title: Hello World!
## Notes: My first AddOn
HelloWorld.lua
HelloWorld.xml
- HelloWorld.lua
function HelloWorld()
print("Hello World!");
end
- HelloWorld.xml
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/..\..\FrameXML\UI.xsd"
Script File="HelloWorld.lua"/
Frame name="HelloWorldFrame"
Scripts
OnLoad
HelloWorld();
/OnLoad
/Scripts
/Frame
/Ui
SHIT.
ブログではタグを使うことができない。
.xmlのタグになりそうな部分は勝手に推察してくれ。
WoWはゲーム内のデータにアクセスするためのAPI、
以上を正しく行うと、
ゲーム内のAddonリストにHelloWorldが現れるはずだ。
読み込んだ後、
チャットウィンドウにHello World!が出れば成功だ。
WoWはゲーム内のデータにアクセスするためのAPI、
その名もWoW APIを用意している。
非常にクールだ。
例えば GetAccountExpansionLevel()
これは拡張パックの番号を返す。
0 = Classic,
1 = Burning Crusade,
2 = Wrath of the Lich King,
3 = Cataclysm
例えば GetAccountExpansionLevel()
これは拡張パックの番号を返す。
0 = Classic,
1 = Burning Crusade,
2 = Wrath of the Lich King,
3 = Cataclysm
という具合だ。
教わるまでもない拡張パックを教えてくれる機能を
HelloWorld Addonに追加してみよう。
HelloWorld.luaに次の関数を追加しよう。
function SayExpansionLevel()
expansionLevel = GetAccountExpansionLevel();
if expansionLevel == 0 then
print("You are playing Classic!");
elseif expansionLevel == 1 then
print("You are playing Burning Crusade!");
elseif expansionLevel == 2 then
print("You are playing Lich King!");
elseif expansionLevel == 3 then
print("You are playing Cataclysm!");
end
end
非常にクールだ。
次に関数の呼び出しをHelloWorld.xmlに追加しよう。
...
HelloWorld();
SayExpansionLevel();
...
非常にクールだ。
正しく追加されていれば、
チャットウィンドウにメッセージが表示されているはずだ。
ちょっと待ってくれ、
歯茎から血が出てきた。
よし。
次に何らかの値をストレージにセーブしてみよう。
Addonの設定を保存するときにひちゅようになるはずだ。
まずセーブする値を.tocファイルに明示しよう。
## SavedVariables: LoginTimeLog
これでLoginTimeLog変数が、
ストレージに書き込まれるようになった。
次にLoginTimeLog変数に何らかの値を入れよう。
LoginTimeLog = GetGameTime();
GetGameTime()関数はサーバータイムを返す関数だ。
値はゲーム終了時に、
自動的に以下のディレクトリにある.luaファイルに書き込まれる。
World of Warcraft\WTF\Account\USER\SavedVariables\
の中の HelloWorld.lua がそれだ。
中を確認してみよう。
思い通りの結果になっていないはずだ。
0 件のコメント:
コメントを投稿