在沒接觸LUA之前,如果不玩服務端..只弄data很快就無聊了...
但是在接觸後卻發現..原來石器也可以這樣玩..
lua 把一些服務端的功能做接口到npc劇本上,讓我們可以直接透過這些接口來直接玩服務端的東西
lua其實對看得懂程式碼的人很簡單就可以上手了,不會程式碼的人想學就得耗些時間
這邊分享一下我學lua的方式
先從網路上下關鍵字找劇本來載入伺服器中,如果有一個能夠順利跑出來..那基本上就算是入手lua了...
lua的版本有滿多種的..所以網路上載的lua別人可以用,並不代表你也可以用..
接著把LNS裡面的參數使用弄懂..然後看能不能多找一些範本來觀摩寫法...
大致上應該就這樣吧
這邊分享一下lua怎起手
想玩lua一定得先抓聖經
LNS.chm 是整個LUA指令的說明及參數使用
lua手册.doc 如果有語法不會使用的話可以參考這個,或者google關鍵字找範例了 -- 這文件幾乎是lua的教程了
另外送上 lua入門教程 這是網路上找到別人整理好的
lua劇本放在 gmsv\data\npc\lua 底下,靠著 init.lua 來初始化劇本(有點像是原本npc的 .create)
init.lua 內容參考如下
function GMSV_NPC_Init()
-- dofile("./data/npc/lua/randboss/randboss_init.lua");
dofile("./data/npc/lua/equipenhance/equipenhance_init.lua");
dofile("./data/npc/lua/Concise/Concise_init.lua");
-- dofile("./data/npc/lua/2013newyear/2013newyear_init.lua");
dofile("./data/npc/lua/ADbouyun/ADbouyun_init.lua");
dofile("./data/npc/lua/blacksmith/blacksmith_init.lua");
dofile("./data/npc/lua/rpet/rpet_init.lua");
dofile("./data/npc/lua/lenlong_2D/lenlong_2D_init.lua");
dofile("./data/npc/lua/battle_mob1/battle_mob1_init.lua");
dofile("./data/npc/lua/battle_mob2/battle_mob2_init.lua");
dofile("./data/npc/lua/battle_mob3/battle_mob3_init.lua");
dofile("./data/npc/lua/battle_mob4/battle_mob4_init.lua");
dofile("./data/npc/lua/battle_mob5/battle_mob5_init.lua");
dofile("./data/npc/lua/battle_mob6/battle_mob6_init.lua");
dofile("./data/npc/lua/battle_mob7/battle_mob7_init.lua");
dofile("./data/npc/lua/Monster_ticket/Monster_ticket_init.lua");
dofile("./data/npc/lua/Monster_tower/Monster_tower_init.lua");
-- dofile("./data/npc/lua/lenlong_2D1/lenlong_2D1_init.lua");
-- dofile("./data/npc/lua/icedragon_boss/icedragon_boss_init.lua");
-- dofile("./data/npc/lua/ibadan_boss/ibadan_boss_init.lua");
end
--[gmisme doluafile ./data/npc/lua/init.lua]
--[gmisme doluafile ./data/npc/lua/lenlong_2D/lenlong_2D_init.lua]
--隨機種子
math.randomseed(os.time());
GMSV_NPC_Init();
-- 為註解
dofile("./data/npc/lua/battle_mob4/battle_mob4_init.lua"); <-這就是看你要初始化哪個劇本
當gmsv跑的時候或者重新dofile時,如果劇本有錯都會顯示錯誤在gmsv上,並且顯示錯誤行數
線上更新lua的指令如下
[gm doluafile 路逕 函數]
[gm doluafile ./data/npc/lua/pd/pd_init.lua] --重讀pd劇本
[gm doluafile ./data/npc/lua/init.lua] -- 全部重讀
在除錯部分lua有一個很奇怪的地方,明明沒錯的程式碼有時候還是會顯示錯誤,處理方式就是把原本那行複製一次,然後註解掉
舉例:
{Char.GetPetIndex(_TalkIndex,%寵欄_3%),"沒有寵物",0},
這行出現錯誤,那麼可以嘗試著
-- {Char.GetPetIndex(_TalkIndex,%寵欄_3%),"沒有寵物",0},
{Char.GetPetIndex(_TalkIndex,%寵欄_3%),"沒有寵物",0},
有可能就可以解決問題了
在lua劇本裡所設的參數,只要沒有使用 loacl 那麼就是全域.
這邊分享一下最近做的 怪物島入口售票員 (版本是吉仔的) pw:welovesa
這只有劇本,要自己新增進去init.lua初始化,,不會的話可以參考我上面貼的內容,,
以上是目前接觸lua的小心得,祝你也能享受於lua劇本之中
