除了官方支持的元數(shù)據(jù)之外晴股,在自定義插件的.toc文件中還可能包含許多其他的標(biāo)記铺纽。TOC文件可以列出每個(gè)Lua文件(包括子目錄中的文件)氛濒。這些文件都按照TOC文件中列出的次序,由游戲客戶端進(jìn)行加載唆姐、解析和執(zhí)行拗慨。也就是說你可以在文件層面上定義局部變量,這些變量對(duì)于其他文件是不可用的。
1.Lua腳本文件和XML文件
Lua文件即可以用于定義插件的行為赵抢,又可以用來動(dòng)態(tài)的創(chuàng)建窗口瘫想。.toc文件可以從插件中下載任何.XML文件。這些文件中的標(biāo)記被解析和加載時(shí)昌讲,系統(tǒng)會(huì)用UI.xsd模式進(jìn)行驗(yàn)證国夜。也就是說XML文件中可以使用<Script file=“SomeFile.lua”/>標(biāo)簽來加載Lua文件,這也是用戶界面默認(rèn)要做的事情短绸。而且每個(gè)XML文件都應(yīng)該從XML文件加載的根目錄的<UI>元素聲明開始:
<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”>
</Ui>
當(dāng)加載這些文件時(shí)车吹,在你的魔獸世界中安裝的Logs\FrameXML.log文件中會(huì)顯示出現(xiàn)的錯(cuò)誤。一旦你的插件運(yùn)行不正常醋闭,就應(yīng)該檢查一下這個(gè)文件窄驹,看看在驗(yàn)證文檔時(shí)是否有錯(cuò)誤記錄。
2.媒體文件
在游戲客戶端插件也可以包含自定義的圖形证逻,聲音和字體等乐埠,從而為你提供各種不同的視聽風(fēng)格。這些文件包含在插件自己的目錄里囚企,并通過魔獸世界的目錄來全路徑標(biāo)明地址丈咐。
(1)音樂。
如果有一個(gè)名為mysound.mp3的音頻文件龙宏,你想在MySound插件中包含它棵逊,則你需要把它放在如下的目錄中:
Interface\Addons\MySound\mysound.mp3
在游戲中運(yùn)行下邊的命令,這個(gè)音頻文件就會(huì)播放银酗,由于在Lua中會(huì)把反斜杠字符作為轉(zhuǎn)義字符辆影,因此要轉(zhuǎn)義反斜杠字符:
/run PlaySoundFile(“Interface\\Addons\\MySound\\mysound.mp3”)
(2)圖形。
加載窗口紋理時(shí)黍特,魔獸世界支持兩種不同的圖形格式蛙讥。要加載的文件必須是這兩種文件的一種,并且滿足以下基本要求:
(1)文件的高度和寬度要大于或等于2像素灭衷,同時(shí)小于512像素次慢。
(2)文件的高度和寬度要是2的整數(shù)次冪,但并不要求相同今布。
另外经备,文件還要包含一個(gè)alpha頻道,它對(duì)你所使用的圖像編輯軟件很重要部默。接下來介紹兩種主要的圖形格式。
BLP格式
當(dāng)你使用User Interface Customization Tool提取Blizzard Interface Art后造虎,你會(huì)發(fā)現(xiàn)所有的文件都擁有一個(gè).blp擴(kuò)展名傅蹂。這種圖形格式是Blizzard創(chuàng)造的,并應(yīng)用于魔獸爭(zhēng)霸III和魔獸世界中。
TGA格式
這是一種比較簡(jiǎn)單的圖像格式份蝴,它可以用來存儲(chǔ)帶有透明度信息的彩色圖像犁功。TGA不能使用無損壓縮,也就是說這種圖像在作為保存圖像時(shí)婚夫,不能和JPG文件一樣不收損浸卦。
3.實(shí)現(xiàn)本地化插件。
(1)為每個(gè)地方語(yǔ)言添加一個(gè)文件案糙。
為你翻譯的地方語(yǔ)言添加一個(gè)新的本地化文件限嫌。若沒有什么翻譯,就在你開發(fā)的插件中為“基本”地方語(yǔ)言創(chuàng)建一個(gè)簡(jiǎn)單的文件时捌。例如在我的插件中怒医,就是在我的目錄結(jié)構(gòu)中添加一個(gè)Localization.enUS.lua文件,并把這個(gè)文件添加到.toc文件的頂部奢讨,保證第一時(shí)間加載這個(gè)文件稚叹。
(2)創(chuàng)建一個(gè)包含基本串的全局表。
假設(shè)插件名字為MyAddon拿诸,就可以在Localization.enUS.lua文件中創(chuàng)建一個(gè)名字為MyAddonLocalization的全局表扒袖。可以通過使用完整字符串或使用標(biāo)記的方式向這個(gè)文件中添加基礎(chǔ)翻譯亩码。
下面就是一個(gè)使用完整字符串翻譯的表定義集僚稿。既用完整字符串作為鍵又將它作為值。
MyAddonLocalization = { }
MyAddonLocalization[“Frames have been locked ”]=“Frames have been locked”
MyAddonLocalization [“Frames have been unlocked”] =“Frames have been unlocked”
它可以用于較短的字符串蟀伸,但用于較長(zhǎng)大字符串鍵就會(huì)變得非常冗余蚀同。
我們可以使用一個(gè)較短的字符串或標(biāo)記來代替完整字符串作為表的鍵。本地化文件如下:
MyAddonLocalization = {}
MyAddonLocalization[“FRAMES_LOCKED”]=“Frames have been locked”
MyAddonLocalization [“FRAMES_UNLOCKED”] =“Frames have been unlocked”
4.創(chuàng)建插件框架
你的插件必須位于Interface\Addons目錄中啊掏,它位于魔獸世界基礎(chǔ)安裝路徑的一個(gè)子目錄中蠢络。可以通過創(chuàng)建一個(gè)名為WowXMLExample的目錄將你的插件命名為WowXMLExample這個(gè)目錄的相對(duì)路徑應(yīng)當(dāng)為:
World of Warcraft\Interface\AddOns\WowXMLExample
接下來創(chuàng)建一個(gè).toc文件,若沒有一個(gè)TOC文件迟蜜,插件將不起作用刹孔,因此先使用下面的代碼創(chuàng)建一個(gè)TOC文件:
##Interface:
##Title:WowXMLExample
##Description:Example addon for World of Warcraft Programming
WowXMLExample.xml
這個(gè)小文件聲明了Interface編號(hào),以及一個(gè)用于插件的標(biāo)題和描述娜睛。其加載的唯一文件是 WowXMLExample.xml髓霞,接下來你將創(chuàng)建這個(gè)文件。
<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”>
</Ui>
文件需要這個(gè)基本的聲明來驗(yàn)證正確無誤畦戒。使用這段代碼在插件的目錄中創(chuàng)建 WowXMLExample.xml文件方库。
5.使用外部庫(kù)
在嘗試學(xué)習(xí)某個(gè)庫(kù)的輔助函數(shù)前,應(yīng)該先學(xué)習(xí)如何使用魔獸世界API以及XML定義來寫一些基本的插件障斋。
未完待續(xù)(_)