玩WOW已經有半年了,蹭了半年電腦,在兄弟的帶領下把小戰士升級到了70,就放在那沒動了,呵呵。本身是學計算機的,不能荒廢了學業哈,所以就開始研究起LUA,想做個屬於自己的插件,雖說照着網上的教程可以寫出來個簡單的插件,可是自己硬是硬着頭皮啃了下ACE3庫,這幾天終於有點眉目了,慢慢來,打算每天寫一點,終有一天會把那玩意搞透的哈,呵呵。
廢話少說,開始第一篇--《LibStub》
按照源碼上的註釋,這是一個簡單的庫版本管理的工具(STUB不知怎麼翻譯)。事實上,它只是一個Table,然後將自己存儲在了_G(也就是全局環境中), 如果按照Table的定義呢,這個LibStub可以按照如下形式描寫:
LibStub = {
lib = {}
minors = {}
}
緊接着,註冊自己(就是把自己添加到)_G中,用到代碼:_G[2] = LibStub
這個LibStub提供了兩個函數:NewLibrary(major, minor)和GetLibrary(major, silent),這兩個函數大家看名字就能明白是幹什麼用的。第一個函數呢就是根據你所給定的庫的版本號來在LibStub中增加一條記錄,例如:如果如此調用:
LibStub:NewLibrary("A", "B")
首先通過以下兩句來判斷這個庫有沒有新的版本(其中的SELF當然就是LibStub)
local oldminor = self.minors["A"] --取出以字符串major爲索引保存在LibStub.minors中的版本號
if oldminor and oldminor >= "B" then return nil end--判斷庫是否存在以及是否是新的版本存在
庫的管理也就體現在以上兩段吧...
如果庫存在,也沒有比當前請求的庫版本要新的存在,則以主版本爲索引保存(下次可以再次通過版本號來獲得相同的庫。
今天先寫到這明天再補充,第一回寫,累了。。。可能還是寫得不太明白,呵呵
使用LUA開發WOW插件 ACE3庫的理解(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
windows+mingw+lua 編譯
dotboy
2018-08-27 15:40:26
format not a string literal and no format arguments [-Werror=format-security]
辛子未
2018-08-27 03:54:53
lua QUICK-COCOS2D-X
辛子未
2018-08-27 03:54:29
luaplus windows環境下 VC6編譯
poorb
2018-08-26 23:49:44
LUA 元表與元方法
南城繁星
2018-08-26 17:36:18
獲取網絡遊戲中所有導出到LUA的函數
Icer
2018-08-26 12:43:12
VS2005編譯LUA
Icer
2018-08-26 12:43:08
熱更新中的lua與c#
如鹿切慕溪水
2018-08-26 12:07:39
爲LUA封裝C/C++函數(不涉及結構體等參數形式)
beaumontwang
2018-08-26 10:10:47
C/C++函數調用LUA函數
beaumontwang
2018-08-26 10:10:44
在LUA腳本中調用C/C++函數
beaumontwang
2018-08-26 10:10:41
LUA在單片機中移植
TinyFar
2018-08-26 02:48:26