mz-chemist 发表于 2018-10-19 17:48:04

编写龙族引擎Lua脚本之客户端(1) -- 让lua脚本跑起来

本帖最后由 mz-chemist 于 2018-10-19 17:50 编辑

龙族引擎支持在客户端和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 是不一样的!
执行效果截图如下.
呵呵, 真的可以输出文字了!

ldxj2019 发表于 2018-10-20 18:10:03

好好学习,天天向上!

jlf3420028 发表于 2019-11-1 16:52:22

为什么你有传奇战纪的补丁!

freejzh 发表于 2020-1-8 22:45:12

写的很好!

huxi2000 发表于 2020-11-22 13:40:46

整一个服务端的lua脚本编写啊!!!!

cfdxiaobu 发表于 2021-1-29 11:28:18

色粉的斯蒂芬是

huxi2000 发表于 2021-3-13 19:11:58

发一个服务器端的例子啊,大佬

czxjh 发表于 2022-7-16 22:34:24

一直想完善一下老传奇收费的显示功能。想实现这样的功能,怀旧以前的感觉。1.76百分百仿盛大的版本已经有了,只差这一个功能,就完美了。但是依靠引擎基本不现实,没人会去在意这个功能。只能看看通过LUA脚本是否能实现。可惜自己不懂,需要学习。
页: [1]
查看完整版本: 编写龙族引擎Lua脚本之客户端(1) -- 让lua脚本跑起来