魔獸世界插件編程解析(二)

除了官方支持的元數(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ù)(_)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纵潦,一起剝皮案震驚了整個(gè)濱河市徐鹤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邀层,老刑警劉巖返敬,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異寥院,居然都是意外死亡劲赠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門秸谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凛澎,“玉大人,你說我怎么就攤上這事钮追≡ぱ幔” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵元媚,是天一觀的道長(zhǎng)轧叽。 經(jīng)常有香客問我,道長(zhǎng)刊棕,這世上最難降的妖魔是什么炭晒? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮甥角,結(jié)果婚禮上网严,老公的妹妹穿的比我還像新娘。我一直安慰自己嗤无,他們只是感情好震束,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著当犯,像睡著了一般垢村。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嚎卫,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天嘉栓,我揣著相機(jī)與錄音,去河邊找鬼拓诸。 笑死侵佃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奠支。 我是一名探鬼主播馋辈,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼胚宦!你這毒婦竟也來了首有?” 一聲冷哼從身側(cè)響起燕垃,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤枢劝,失蹤者是張志新(化名)和其女友劉穎井联,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體您旁,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烙常,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹤盒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚕脏。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侦锯,靈堂內(nèi)的尸體忽然破棺而出驼鞭,到底是詐尸還是另有隱情,我是刑警寧澤尺碰,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布挣棕,位于F島的核電站,受9級(jí)特大地震影響亲桥,放射性物質(zhì)發(fā)生泄漏洛心。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一题篷、第九天 我趴在偏房一處隱蔽的房頂上張望词身。 院中可真熱鬧,春花似錦番枚、人聲如沸法严。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)深啤。三九已至,卻和暖如春渔欢,著一層夾襖步出監(jiān)牢的瞬間墓塌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工奥额, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苫幢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓垫挨,卻偏偏與公主長(zhǎng)得像韩肝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子九榔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 魔獸世界中的插件是文本和多媒體文件的集合哀峻。這些文件與元數(shù)據(jù)一起進(jìn)行封裝并在客戶端加載涡相。實(shí)際上我們使用的插件還添加了...
    編程愛好者閱讀 5,983評(píng)論 0 2
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,515評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)剩蟀,斷路器催蝗,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • 首先是例行的課程介紹包括主題,時(shí)間安排育特,主講人的自我介紹等等丙号。這些內(nèi)容比上一次要好一些。還有能再改進(jìn)的地方缰冤,不是一...
    凱里木閱讀 151評(píng)論 3 1
  • 去年的有一段時(shí)間瘋一般喜歡看那本《我的朋友陳白露小姐》三热,為此還多買了一本想強(qiáng)行灌輸給朋友鼓择,后來因?yàn)橥洿耸乱簿?..
    桃九閱讀 602評(píng)論 0 1