当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

新开传奇HGE引擎 Lua 模块提供客户端与服务端消息接收和发送机制

热度:
传奇HGE引擎的新开发版本提供了一套基于 Lua 的客户端与服务端消息接收和发送机制。这个机制可以使服务器和客户端实现请求和响应,提供更多的自定义功能和灵活性。

客户端 Lua 目录内置了一系列 Lua 文件,这些文件专门为登录器服务,同名 Lua 文件会优先使用。如果需要自定义功能,可以采用三种方式:

直接在自己专属目录内起和登录器内置的 Lua 文件同名,覆盖掉对应功能。
使用 c.event.bind 来重新或新增绑定对应事件。
使用元表方式重写官方对应某过程,我们提供的 hint 美化版例子(测试包中),使用的元表重写方式。
需要注意的是,main.lua 为入口文件,万变不离其宗。print 和 c.share.dbg 在 Lua 脚本中具有相同的作用。Lua 脚本错误日志会保存在专属目录下的 Log 文件夹中。

在客户端 Lua 游戏中,可以通过在 M2-GM 管理命令中查看来重载 Lua 脚本。

服务端也可以使用这个机制,可以在 init.lua 文件中绑定所需的事件,并在 BindEvent.lua 文件中写入对应的函数脚本。

具体使用方法如下:

在 init.lua 文件中,绑定所需的事件。
在 BindEvent.lua 文件中写入对应的函数脚本。
使用 RunLuaScript 命令调用 Lua 脚本。

引擎lua模块提供客户端与服务端消息接发的机制可实现服务端与客户端的请求与响应,客户端目录内的lua文件夹为登录器内置释,同名lua文件专属目录优先使用,客户端Lua游戏中重载在M2-GM管理命令中查看

 

详细说明:(lua小白必看)
客户端目录内的lua文件夹,为登录器内置释放,同名lua文件专属目录优先使用。
自定义有三种方式:
1、直接在自己专属目录内起和登录器内置的lua文件同名,覆盖掉对应功能。
2、可以使用c.event.bind来重新或新增绑定对应事件。
3、使用元表方式重写官方对应某过程,我们提供的hint美化版例子(测试包中),使用的元表重写方式。


醉重要的:main.lua为入口文件,万变不离其宗。

lua内置信息输出函数print与c.share.dbg作用相同
lua脚本错误日志保存在:专属目录\Log文件夹下

lua脚本排错指南:
当游戏中功能异常,可以运行DbgView再次实行出错功能,查看输出,对应修改错误。
如果玩家遇到错误,可以查看lua脚本错误日志。

客户端Lua游戏中重载:在M2-GM管理命令中查看

服务端说明:

 

流程图:

使用说明:
(1)在init.lua文件中,绑定所需的事件

s.event.bind(1, "on_first_in_game")--绑定事件1(一号次进游戏时回调)到on_first_in_game函数,具体格式参看绑定M2事件

(2)在BindEvent.lua文件写入on_first_in_game()函数脚本

function on_first_in_game(player)
local playername = player:getCharName();--取角色名
s.obj.sendBroadcastMsg("玩家["..playername.."]加入游戏")--进行全服公告
end

功能:执行LUA脚本段
格式: RunLuaScript LUA函数名
说明:LUA函数需要先绑定,才可以使用

使用说明:
1.const.lua 增加以下声明
ebind_RunLuaScript = 52,--脚本命令RunLuaScript调用LUA脚本

2.init.lua 绑定LUA函数事件
s.event.bind(const.ebind_RunLuaScript, "RunLuaScript1")--脚本命令RunLuaScript调用LUA脚本
s.event.bind(const.ebind_RunLuaScript, "RunLuaScript2")--脚本命令RunLuaScript调用LUA脚本

3.编写LUA函数事件
--脚本命令RunLuaScript调用LUA脚本
function RunLuaScript1(actor)
local actorname = actor:getCharName()
print("["..actorname.."]通过脚本命令执行LUA函数1")
end

--脚本命令RunLuaScript调用LUA脚本
function RunLuaScript2(actor)
local actorname = actor:getCharName()
print("["..actorname.."]通过脚本命令执行LUA函数2")
end

4.普通脚本命令调用
[@执行LUA函数1]
#IF
#ACT
RunLuaScript RunLuaScript1

[@执行LUA函数2]
#IF
#ACT
RunLuaScript RunLuaScript2
[顶部]