傳奇編寫龍族引擎Lua腳本之客戶端(1) -- 讓lua腳本跑起來,族引擎支持在客戶端和M2服務端都可以寫lua腳本, 我們先從客戶端開始.
1. 準備: 文本編輯工具 notepad++,用于編寫lua腳本;
2. 客戶端lua運行機制:
(a) 首先在初始化文件中綁定各種事件對應的lua處理函數:
初始化文件名固定為 游戲目錄\lua\client.lua, 用于定義各種事件函數的綁定, 全集常量/變量等. 這些腳本只在游戲啟動時加載一次,調試游戲時修改了里面的內容后需要重啟游戲客戶端才會生效.
其它的lua腳本文件必須存放于 游戲目錄\lua及其子目錄下.
(b) 類似于windows操作系統, lua腳本需要對應的事件觸發執行的, 大致的事件有:
(1) 鍵盤/鼠標事件: 鍵盤按下/鼠標點擊觸發事件綁定的lua函數;
(2) 消息事件: 接收到M2服務端發送的消息, 觸發對應的lua處理函數;
(3) UI控件觸發事件: 點擊控件觸發綁定的click事件lua處理函數;
(4) 定時器事件: 定時器定時觸發綁定的lua函數;
(5) 游戲事件: 游戲小退/大退, 自定義套裝懸浮框顯示,自定義裝備內觀/外觀顯示,地圖特效顯示等綁定等lua函數;
3. 調試腳本命令輸出:
客戶端有:
Client.chat(輸出文字); -- 輸出到聊天框中
UI.showMessage(輸出文字); -- 彈窗顯示輸出文字
服務端有:
server.print(輸出文字); -- 輸出到主窗口顯示框中
開始動手實作, 在玩家接入游戲后在聊天框顯示問候語, 步驟如下:
(1) 在游戲目錄lua\client.lua 中加入如下事件綁定語句, 增加登錄后執行一下lua腳本:
Client.BINDGAMEEVENT(GE_LOGONGAME, "GameEvent", "logon");
說明:
Client.BINDGAMEEVENT 是客戶端執行綁定游戲事件的命令;
三個參數中: 第1個參數 GE_LOGONGAME 表示是進入游戲事件; 第2個為lua文件名; 第3個參數為函數名;
(2) 在游戲目錄lua\下添加lua腳本文件 GameEvent.lua, 并加入如下腳本:
function logon()
local myself = Client.GETGAMEOBJECT('actor', "myself"); -- 獲取當前角色對象
Client.chat(myself.name..", 歡迎你!");
end
提示: Lua腳本中的變量名函數名是區分大小寫的, myself 和 Myself 是不一樣的!
|
|