详细说明:
客户端
1、绑定自定义消息(专属目录\Lua\bindNetMsgDemo\init.lua)
c.event.bindNetMsg(1,"bindNetMsgDemo\\bindNetMsg.Lua","msgFunc_1")
2、编写消息事件相关代码(专属目录\Lua\bindNetMsgDemo\bindNetMsg.Lua)
function msgFunc_1(smsg)
c.share.addChat("接收到消息:"..smsg, 1, 2)--聊天框输出
end
3、初始化消息绑定(专属目录\Lua\main.lua)
require("bindNetMsgDemo\\init")--初始化消息例子
4、使用命令向服务端提交报文(专属目录\Lua\UILua\DWBottom.lua)
--鼠标单击事件
function DBotWhisper_OnClick(sender, x, y)
c.event.sendNetMsg(1, "你好")
return false --返回true代表执行内部事件
end
服务端
1、绑定自定义消息(\LuaScripts\init.lua)
s.event.bindNetMsg(1,"System\\bindNetMsg.Lua","msgFunc_1")
2、编写消息事件相关代码(\LuaScripts\System\bindNetMsg.Lua)
function msgFunc_1(actor, smsg)
local s = deserialize(smsg)--反序列化
actor:sendNetMsg(1,"ABCD"..s)
end
附代码清单(实例位置:引擎包\lua例子\通讯例子)
[客户端]
1.\Lua\main.lua文件
require("main\\init")
require("bindNetMsgDemo\\init")--初始化消息例子
2.\Lua\bindNetMsgDemo\init.lua文件
c.event.bindNetMsg(1,"bindNetMsgDemo\\bindNetMsg.Lua","msgFunc_1")
c.event.bindNetMsg(2,"bindNetMsgDemo\\bindNetMsg.Lua","msgFunc_2")
3.\Lua\bindNetMsgDemo\bindNetMsg.Lua文件
function msgFunc_1(smsg)
local s = deserialize(smsg)--反序列化
c.share.addChat("接收到消息:"..smsg, 1, 2)
end
function msgFunc_2(smsg)
c.share.addChat("接收到M2报文msgFunc_2:"..smsg, 1, 2)
end
4.UI控件鼠标单击事件,\lua\UILua\DWBottom.lua文件
function DBotWhisper_OnClick(sender, x, y)
c.event.sendNetMsg(1, "我要发送文字给M2")
if g_var["NetMsg.Tick_2"] == nil then g_var["NetMsg.Tick_2"] = 0 end --初始化计时器
local _nowTick = c.share.getTickCount() - g_var["NetMsg.Tick_2"]
if _nowTick > 500 then --限制2次点击时间
g_var["NetMsg.Tick_2"] = c.share.getTickCount() --全局变量表记录当前时钟
local _tbl = {name="爱确记忆", age=12} --发送此表给引擎
local _msgStr = serialize(_tbl) --序列化_tbl表,输出文字
c.event.sendNetMsg(2, _msgStr)
else
c.share.addChat(string.format("发送2编号报文过于频繁,剩余:%.4fms", 500-_nowTick), 1, 2)
end
return false --返回true代表执行内部事件
end
[服务端]
1.\LuaScripts\init.lua文件
s.event.bindNetMsg(1,"System\\bindNetMsg.Lua","msgFunc_1")
2.\LuaScripts\System\bindNetMsg.Lua文件
require("s.share")
require("s.obj")
require("System\\CommonFun")--加载系统逻辑函数单元
function msgFunc_1(actor, smsg)
local _tbl = deserialize(smsg)
if type(_tbl) ~= "table" then
print("接收到非法消息,此消息客户端发来是table类型,接收到的不是table")
return
end
local name = tostring(_tbl["name"])
local age = tonumber(_tbl["age"])
local msgStr = name
if age >= 18 then
msgStr = msgStr.."已满18岁"
else
msgStr = msgStr.."未满18岁"
end
actor:sendNetMsg(2, msgStr)
end
|