前面咱們介紹了lua的一些基本用法編程
然而一切的一切,仍是爲了可以搞魔獸插件,今天終於步入正題,來搞一個簡單的魔獸插件服務器
先來看看插件的結構吧,首先,插件是在World of WarcraftInterfaceAddOns目錄下的,相信你已經知道了。測試
目錄下面有不少文件夾,我截圖了一部分。lua
這裏面每個文件夾都是一個插件,這些插件有的是完成一個獨立的工做,有的只是一個子模塊。通常來講,你實現的功能不太複雜,那用一個文件夾就能夠了,若是你搞了一個巨複雜的插件,例如DBM,一般來講你就要規劃你的模塊。spa
魔獸的插件能夠作不少事情,blz自己就是插件的最大用戶,魔獸的登陸界面、服務器選擇、人物選擇界面、遊戲裏面的UI等等,都是用插件來實現的(默認alt+z快捷鍵能夠隱藏的部分,都是插件實現的),固然blz的有些插件有一些並沒在Addons裏面,而是隱藏到了客戶端裏面。插件
上圖裏面,Blizzard開頭的是blz公司本身的插件,dbm開頭的是dbm的插件,其餘的是一些單體插件。3d
下面咱們從這裏面找了一個文件結構最簡單的BuffMaster(增益大師)來講:日誌
這裏面只有兩個文件BuffMaster.toc和BuffMaster.lua,下面咱們來介紹一下blog
核心是BuffMaster.toc文件,這是插件的聲明文件,每一個插件都必須有這麼一個文件,他的文件名跟插件的目錄名同樣,做用是用來告訴wow客戶端,你的插件的文件都放在哪裏,固然也還有一些別的做用,這個也不用太深究,隨着功力的提高慢慢了解就好。排序
下圖就是toc文件的內容,我大概介紹一下:
咱們再來看一下DBM-Core的
看看toc文件,上面大同小異,下面是這個插件引用的文件資源
好了,咱們來動手搞一個簡單的插件,插件的目的是打斷的時候說一句話,這樣你就不用再作打斷喊話宏啦。
首先咱們照貓畫虎在Addons下面新建一個文件夾,我起名叫_InterruptWarning,前面有個下劃線是爲了排序的時候在前面,避免混到一堆插件中找不到,是否是好機智,哈哈。
而後分別編寫兩個文件的內容,先來toc的,這個就不重複介紹了
再來lua的
這個得好好介紹一下了,由於這個插件雖然代碼很少,可是涉及的知識還很多。請看好左邊的行號,老胡下面一行一行介紹:
有點編程基礎的人可能懂了,沒基礎的小白通常還懵逼着,由於老胡這個例子自己就有難度。由於老胡也不想搞個print(1)之類的,而後就告訴你插件作好了。。
那小白怎麼才能懂呢,一句話,猛練天然強,練習題來了,請參照老胡的例子實現一個場景,薩墓裏面主母這個boss,中了[吞噬之飢]這個debuff以後,會持續掉血,可是又不明顯,因此不少人看不到,每次都要團長提醒,做爲團長,如今請你實現一個功能,中了debuff的時候,就說三聲「我中了[吞噬之飢],等下踩[雷霆震擊]消debuff」,作好了能夠qq老胡交流376665005。
有自信的能夠作一個更好的例子。不但本身中了提醒,團裏的其餘人中了,還能夠私密提醒他。
最後,上面例子的源碼,聲明一下,老胡並未測試,若是不能用,純屬正常。
怎麼樣,這個技能你get了嗎?