打印

[文字教學] Lua教學

Lua教學

先來個冗贅開頭作為起手式,不喜歡聽我講一些無用話的人可以直接跳過 --- 內的內容
--------------------------
大家好,我是Agent,好久不見

好久沒在論壇上發教學文章惹(X

主要原因是大部分的人都只想要使用而不是分享,待在這樣的環境久了自然也不會想把自己創作的東西分享出來

最近買了一台NAS在整理資料剛好看到之前留的凝夢端,想說好久沒玩架起來跑一下,上去走走晃晃之突然想把一些東西分享給大家

我後期在開發石器比較多的心力是放在LUA跟改端上,改端基本上沒辦法用文字教學來教,但LUA卻是可以加減提供一些sample code來參考的

所以我發了一些凝夢閣伺服器中的一些lua上來論壇,並透過這篇文章稍微對lua再做一個簡述

基本上看完這篇文章應該就可以好好的活用lua所提供的功能,想要再進階的話就是去改端去新增功能接出來lua了
--------------------------

在研究LUA之前可以先拜讀一下YANG大的文章
研究LUA者須知!

1. 還不會使用lua的人請先看這篇文章,文章會帶你把lua npc"架"出來
http://lab.welovesa.com/viewthread.php?tid=2722&highlight=lua

2. 接著熟悉LNS看他有提供那些功能能玩,並且google關於lua的語法,譬如if, for, while等一些lua的教學與使用搭配著sample code看
lua與石器時代的結合可以參考LNS這份資料(如果lns打開空白的話,可以對LNS.chm按右鍵內容->一般->於下方有一個解除封鎖需要打勾,接著按套用即可)
http://www.mediafire.com/file/fau4bb7hg5krkoy/LNS.rar
舉個應用的例子
假如我想做一個 如果你身上有編號111道具,我就刪除你身上的111道具,如果身上沒有111道具就出現"沒有111道具"的字 的功能
這時我就翻LNS看有沒有這三樣功能
1. 判斷身上有沒有道具
2. 可以刪除身上道具
3. 對玩家傳送文字

在NLG底下找到 DelItem( CharIndex, ItemId, [Num]); 看起來是刪除道具的沒錯


在Char底下找到 FindItemId(_Index, _ItemId); 看起來是判斷身上有沒有特定道具

接著把三個都找出來之後就可以這樣寫(注意 Char底下找到的就用Char. NLG底下找到的就用NLG)

if (Char.FindItemId( _PlayerIndex, 111) > 0) then -- 假如從對象身上找到編號 111 的道具,則Char.FindItemId會回吐>0的數值(回吐數值表示該道具位在地道具欄位置 所以道具欄有該道具一定會>0)
    NLG.DelItem( _PlayerIndex, 111); -- 刪除對象身上的編號 111 道具
else
    NLG.TalkToCli( _PlayerIndex, "沒有111道具", %白色%, 0, -1); -- 對對象傳送文字
end


3. 學會怎麼看LNS並且熟悉LUA語法後就可以開始自由創作了( 灑花,可以先透過大量的sample code閱讀讓自己更快速的上手

想知道寵物尾數怎麼取得,可以參考
[吉仔LUA]寵物尾數7777換獎品

想知道任務旗標怎麼控制使用,可以參考
[吉仔LUA]速解完美任務

想知道怎麼更改寵物數值,可以參考
[吉仔LUA]2D人龍以lua實現

想知道戰鬥NPC如何創建,可以參考
財神爺
走動與自動重生Boss 簡單版

想知道人物數值如何修改,可以參考
點數重置NPC

想知道道具數值如何修改,可以參考
衝裝系統NPC
精煉系統

總之就是無腦翻sample code吸收一下各功能大概如何使用,再把自己的想法透過這些功能實現出來

如果你覺得這篇文章對你有用,歡迎留言給我個鼓勵(X,當你有一些作品時,也期盼你能一起分享你的創作,看能不能激盪出更多的火花 ^^

[ 本帖最後由 agent0800 於 2020-9-13 10:31 編輯 ]
附件: 您所在的用戶組無法下載或查看附件
== 客製化開發Lua NPC、服務端功能 有興趣可站內短訊息聯絡 ==

TOP