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,conn,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服务端口
    消息长度 整数false消息包最大长度,超出后会被断开连接。默认:2 * 1024 * 1024 单位:byte
    扩展组件 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、通常配套暂停连接使用。‌

    停止

    停止
    说明:服务端停止。

    示例

    server.停止()
    

    加入事件

    加入事件
    说明:加入一个自定义事件。
    参数名称值的类型是否必填说明描述
    事件名称 文本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,
    
    }
    

    系统事件

    🔹 启动

    • 程序启动后,最前触发,优先级高于所有脚本。通常用于服务器开始前的各种准备
    • 通过 -s 启动游戏可以传递命令行参数,参数间按空格分隔。
    • 返回 整数型端口号,可以动态改变服务器启动端口。
    回调参数类型说明描述
    arg table命令行参数

    示例

    系统事件 = {
      启动 = function (arg)
        local 版本 = tonumber(arg[1] or 9999)
        return 版本
      end,
    }
    

    🔹 创建

    服务端创建后触发。

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

    示例

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

    🔹 关闭

    服务端关闭时触发。

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

    示例

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

    🔹 连接

    有客户端连接时触发。

    回调参数类型说明描述
    server 服务器对象DmTcpServer
    conn table客户信息
    名称类型说明描述
    cid 整数客户连接标识
    uid 整数游戏盒子玩家ID 0:单机 >0 盒子登录
    nickName 文本游戏盒子昵称 未登录:_
    icon 文本游戏盒子头像 未登录:_
    token 整数客户组件配置项
    addr 文本客户连接来源 ip:端口
    mapName 文本/nil客户加入的地图名称,未加入地图为nil
    id 整数客户所在地图的角色id,未加入地图为0
    今日投币 整数
    累计投币 整数
    今日发电 整数
    累计发电 整数
    账号发电 整数该账号在平台上的发电总额

    示例

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

    🔹 消息

    接收到客户消息时触发

    回调参数类型说明描述
    server 服务器对象DmTcpServer
    conn table连接信息
    名称类型说明描述
    cid 整数客户连接标识
    uid 整数游戏盒子玩家ID 0:单机 >0 盒子登录
    nickName 文本游戏盒子昵称 未登录:_
    icon 文本游戏盒子头像 未登录:_
    token 整数客户组件配置项
    addr 文本客户连接来源 ip:端口
    mapName 文本/nil客户加入的地图名称,未加入地图为nil
    id 整数客户所在地图的角色id,未加入地图为0
    tbl table客户消息
    名称类型说明描述
    msg table消息数据
    syncid 整数/nil同步消息标识,非同步消息为nil

    示例

    系统事件 = {
    		消息 = function(server,conn,tbl)	
    			调试输出("消息",tbl)
          
    			local cid = conn.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 盒子登录
    nickName 文本游戏盒子昵称 未登录:_
    icon 文本游戏盒子头像 未登录:_
    token 整数客户组件配置项
    addr 文本客户连接来源 ip:端口
    mapName 文本/nil客户加入的地图名称,未加入地图为nil
    id 整数客户所在地图的角色id,未加入地图为0

    示例

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

    🔹 进入地图

    玩家进入地图时触发

    回调参数类型说明描述
    server 服务器对象DmTcpServer
    conn table客户信息
    名称类型说明描述
    cid 整数客户连接标识
    uid 整数游戏盒子玩家ID 0:单机 >0 盒子登录
    nickName 文本游戏盒子昵称 未登录:_
    icon 文本游戏盒子头像 未登录:_
    token 整数客户组件配置项
    addr 文本客户连接来源 ip:端口
    mapName 文本/nil客户加入的地图名称,未加入地图为nil
    id 整数客户所在地图的角色id,未加入地图为0
    附加 tableclient[进入地图]传递的附加

    示例

    系统事件 = {
    		进入地图 = function(server,conn)	
    			调试输出("进入地图",conn)
    		end,
    }
    

    🔹 退出地图

    玩家退出地图时触发

    回调参数类型说明描述
    server 服务器对象DmTcpServer
    conn table客户信息
    名称类型说明描述
    cid 整数客户连接标识
    uid 整数游戏盒子玩家ID 0:单机 >0 盒子登录
    nickName 文本游戏盒子昵称 未登录:_
    icon 文本游戏盒子头像 未登录:_
    token 整数客户组件配置项
    addr 文本客户连接来源 ip:端口
    mapName 文本/nil客户加入的地图名称,未加入地图为nil
    id 整数客户所在地图的角色id,未加入地图为0

    示例

    系统事件 = {
    		退出地图 = function(server,conn)	
    			调试输出("退出地图",conn)
    		end,
    }
    

    注意事项
    1、退出地图后连接信息[conn]中的[mapName][id]会自动重置。‌

    🔹 命令

    捕获控制台的输入内容

    回调参数类型说明描述
    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
    地图