Dream Mod 3.0Dream Mod 3.0
首页
快速开始
资源库
首页
快速开始
资源库
  • 进度

    • 更新日志
  • 指南

    • 快速上手
    • App.lua
    • Server.lua
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 成长
    • DmTcpClient
    • WebSocketClient
    • SqliteDB
    • 皮肤
    • 自定义组件
  • Api

    • 引擎
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 自定义组件
    • 音乐
    • 缓动
    • 全局
  • 控件

    • 标签
    • 按钮
    • 图片框
    • 动画框
    • 文本框
    • 进度条
    • 技能格子
    • 快捷格子
    • 包裹格子
    • 道具格子
    • 角色框
    • 选择框
    • 选择夹
    • 容器
    • 地图框
    • 滑块条
    • 滚动条
    • 组合框
    • 输入框
    • 列表框
  • 组件

    • 文本
    • 艺术字
    • 精灵
    • 矩形
    • 圆形
    • 动画
  • 其他

    • 丰富文本
    • 模板变量
    • 游戏盒子

Server.lua

介绍

  • Server.lua是服务端项目的入口文件,通过命令行 -s 启动,类型为 DmTcpServer 配套客户端组件是 DmTcpClient。
  • 服务端客户端之间使用table格式定义消息,通过唯一的客户通信标识cid 进行交互。
  • 服务端目前可使用组件: Sqlite。
Server.lua
local Server = 
{
    名称 = "服务端 v0.1",
    端口 = 17173,
    扩展组件 = {
    },
	扩展脚本 = {
	},
	系统事件 = {

		启动 = function(server) 
			调试输出("启动了",server)
		end,

		关闭 = function(server)	
			调试输出("关闭了",server)
		end,

		连接 = function(server,conn)	
			调试输出("连接",conn)
			server.发送(conn.cid,{cmd="系统提示",text="欢迎进入游戏~"})
		end,

		消息 = function(server,tbl)	
			调试输出("消息",tbl)
		end,

		断开 = function(server,conn)	
			调试输出("断开",conn)
		end,      

		命令 = function(server,cmd)	-- 控制命令行输入的内容会触发到这里	
			调试输出("命令",cmd)
		end,

	}
}
return Server
Client.lua
local 客户端配置 = 
{
    类型 = "DmTcpClient",
    名称 = "客户端",
    ip = "127.0.0.1",
    端口 = 17173,
	系统事件 = {

		创建 = function(client) 
            调试输出("创建",client)
		end,

		进入 = function(client)	
            调试输出("连接成功",client.cid)
		end,

		消息 = function(client,tbl)	
            调试输出("消息",tbl)
		end,

		断开 = function(client)	
            调试输出("连接断开")
		end,

	}
}
return 客户端配置

配置项

名称类型必填说明
名称 文本false控制台标题
端口 整数false服务端口
扩展组件 table {}false
扩展脚本 table {}false
系统事件 tablefalse

扩展组件

  • 目前可使用: Sqlite
  • 组件是一个个配置项文件,后缀名为.lua,需要保存到工程目录下,然后加入到扩展组件。
扩展组件 = {
    "SqliteDB.lua"
},

扩展脚本

  • 自定义的Lua脚本,没有格式要求。DM3使用Lua5.4,没有特殊限制,你可以用来封装自己的系统或者常用的公共函数。
  • 扩展脚本会在游戏组件初始化之前载入执行。依次执行完成后触发 系统事件 🔹 启动
扩展脚本 = {
    "系统.lua",
    ...
    ...
},

属性

系统信息

  • 类型:table
  • 读写:只读
  • 详情:当前服务端统计信息。
名称类型说明
在线人数数值
最高在线数值
接收消息数值累计接收到客户端消息次数
接收流量数值累计接收到客户端消息流量 单位:byte
发送消息数值累计往客户端发送消息次数
发送流量数值累计往客户端发送消息流量 单位:byte
消息队列数值剩余等待处理的消息数量
运行时间文本运行时间字符串描述
调试输出(server.系统信息)

方法

发送

发送
说明:向客户端发送消息。
参数名称值的类型是否必填说明描述
cid 整数/{整数}true向指定客户cid/cid数组发送消息,填写0表示向全体广播
msg tabletrue
syncid 整数false配套客户端同步消息使用

示例

server.发送(0,{cmd="系统消息",text="欢迎大家进入游戏!"})

注意事项
1、服务端接收到带有syncid编号的客户端同步消息,必须使用同样的syncid发送才会同步。

断开

断开
说明:断开全部连接或指定连接。
参数名称值的类型是否必填说明描述
cid 整数/nilfalsenil/0:断开全部 >0:指定客户

示例

server.断开(1) -- 断开指定客户

server.断开() -- 断开全部
返回值值的类型说明描述
是否成功 逻辑

暂停连接

暂停连接
说明:服务端将不再接受新的客户端连接请求,已建立的连接会继续保持,仍可正常通信。

示例

server.暂停连接()

注意事项
1、通常配套恢复连接使用。‌
2、典型应用场景‌:服务器维护或升级时优雅关闭,负载过高时的自我保护机制。

恢复连接

恢复连接
说明:服务端恢复接收客户端连接请求。

示例

server.恢复连接()

注意事项
1、通常配套暂停连接使用。‌

加入事件

加入事件
说明:加入一个自定义事件。
参数名称值的类型是否必填说明描述
事件名称 文本true触发的事件名称
附加信息 tablefalse事件触发时可以取出
延迟时间 数值false延迟执行
自动销毁 逻辑false是否只执行一次,默认:true

示例

系统事件 = {

  启动 = function(server)
    server.加入事件("系统时钟",{},1000,false)
  end,

  系统时钟 = function (server,tbl,dt,time)
    调试输出(dt,time)
  end,

}

删除事件

删除事件
说明:删除指定自定义事件。
参数名称值的类型是否必填说明描述
事件名称 文本true

示例

系统事件 = {

    启动 = function(server)
       server.加入事件("系统时钟",{},1000,false)
    end,

    系统时钟 = function (server,tbl,dt,time)
      调试输出(dt,time)
      server.删除事件("系统时钟")
    end,

}

系统事件

🔹 启动

服务端启动后触发。

回调参数类型说明描述
server 服务器对象DmTcpServer

示例

系统事件 = {
		启动 = function (server)
			调试输出("启动了")
		end,
}

🔹 关闭

服务端关闭时触发。

回调参数类型说明描述
server 服务器对象DmTcpServer

示例

系统事件 = {
		关闭 = function (server)
			调试输出("关闭了")
		end,
}

🔹 连接

有客户端连接时触发。

回调参数类型说明描述
server 服务器对象DmTcpServer
conn table客户信息
名称类型说明描述
cid 整数客户连接标识
uid 整数客户平台ID 0:单机 >0 盒子登录
token 整数客户组件配置项
addr 文本客户连接来源

示例

系统事件 = {
		连接 = function(server,conn)	
			调试输出("连接",conn)
		end,
}

🔹 消息

接收到客户消息时触发

回调参数类型说明描述
server 服务器对象DmTcpServer
tbl table客户消息
名称类型说明描述
cid 整数客户连接标识
uid 整数客户平台ID 0:单机 >0 盒子登录
msg table消息数据
syncid 整数/nil同步消息标识,非同步消息为nil

示例

系统事件 = {
		消息 = function(server,tbl)	
			调试输出("消息",tbl)
      
			local cid = tbl.cid
			local syncid = tbl.syncid
			local 信息 = tbl.msg
			
			if (信息.cmd == "自增") then
				server.发送(cid,{结果=信息.num + 1},syncid) -- 同步返回
				return 
			end
		end,
}

🔹 断开

客户断开时触发

回调参数类型说明描述
server 服务器对象DmTcpServer
conn table客户信息
名称类型说明描述
cid 整数客户连接标识
uid 整数客户平台ID 0:单机 >0 盒子登录
addr 文本客户连接来源

示例

系统事件 = {
		断开 = function(server,conn)	
			调试输出("断开",conn)
		end,
}

🔹 命令

捕获控制台的输入内容

回调参数类型说明描述
server 服务器对象DmTcpServer
cmd 文本控制台命令

示例

系统事件 = {
		命令 = function(server,cmd)	-- 控制命令行输入的内容会触发到这里	
			调试输出("命令",cmd)
		end,
}

🔹 自定义事件

是指通过Api [加入事件] 创建的事件。

回调参数类型说明描述
server 服务器对象DmTcpServer
事件附加 table 是指通过Api [加入事件]中传递进来的 附加信息
dt 数值 事件执行的实际间隔时间
time 数值 事件执行的总时间

示例

系统事件 = {

  启动 = function(server)
    server.加入事件("定时器",{计次=0},1000,false)
  end,

  定时器 = function (server,tbl,dt,time)
    tbl.计次 = tbl.计次 + 1
    调试输出("时钟 " .. tbl.计次 .. "秒")
  end,

}
Prev
App.lua
Next
地图