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

    • 更新日志
  • 指南

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

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

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

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

    • 丰富文本
    • 模板变量
    • 资源格式
    • 游戏盒子
    • 资源列表
  • 自定义功能

    • 战斗血液效果
    • 地图天气
  • DmTcpClient

    介绍

    • 服务端 Server.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 客户端配置
    

    配置项

    名称类型必填说明
    类型 文本true固定值:DmTcpClient 表示这是一个DmTcpClient组件
    名称 文本true全局唯一标识
    ip 文本true服务端ip
    端口 整数true服务端端口
    消息长度 整数false消息包最大长度,超出后会被断开连接。默认:2 * 1024 * 1024 单位:byte
    token 整数false在服务端的[连接]事件中可以获得。默认:0
    系统事件 tablefalse

    属性

    cid

    • 类型:整数
    • 读写:只读
    • 说明:通信标识

    已连接

    • 类型:逻辑
    • 读写:只读
    • 说明:是否已经连接到服务端。

    方法

    连接

    连接
    说明:连接到服务端。
    参数名称值的类型是否必填说明描述
    ip 文本false
    端口 整数false

    示例

    local 结果 = self.客户端.连接()
    
    返回值值的类型说明描述
    是否成功 逻辑

    注意事项
    1、如果不填写ip,端口,表示使用配置项中的信息。

    发送

    发送
    说明:发送消息到服务端。
    参数名称值的类型是否必填说明描述
    数据 tabletrue必须table型
    同步模式 逻辑falseSync同步模式 默认:false

    示例

    L系统.客户端.发送({cmd="聊天消息",text="我是月野兔~~我来了!"})
    
    
    --=========================
    -- 客户端脚本 按钮事件
    --=========================
    
    点击 = function(按钮对象)
      按钮对象.禁用 = true
      local 值 = 0
      for n=1,10 do
        local res = L系统.客户端.发送({cmd="自增",num=值},true) -- 同步模式,消息发送后等待服务端返回,否则阻塞脚本继续运行
        if(res) then
          值 = res.结果
        end
      end
      调试输出("计算结果",值)
      按钮对象.禁用 = false
    end
    
    
    --=========================
    -- 服务端脚本
    --=========================
    
    消息 = function(server,tbl)	
      local cid = tbl.cid
      local syncid = tbl.syncid -- 同步消息才有
      local 信息 = tbl.msg
      if (信息.cmd == "自增") then
        server.发送(cid,{结果=信息.num + 1},syncid) -- 收到客户端同步消息后 使用同步模式返回
        return 
      end
    end,
    
    
    返回值值的类型说明描述
    是否成功 逻辑/table失败返回false

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

    断开

    断开
    说明:主动断开与服务端的连接,会关闭自动重连功能。

    示例

    self.客户端.断开()
    

    进入地图

    进入地图
    说明:进入服务端开启的地图。
    参数名称值的类型是否必填说明描述
    地图名称 文本true服务端组件中的地图名称
    附加 tablefalseserver[进入地图]事件中可以取回

    示例

    self.客户端.进入地图("交易市场")
    
    返回值值的类型说明描述
    是否成功 逻辑失败返回false

    注意事项
    1、服务端自动同步地图玩家状态,地图NPC(中立)。

    退出地图

    退出地图
    说明:退出网络地图。

    示例

    self.客户端.退出地图()
    引擎.地图.主角.瞬移(15,15,4,"练功房")
    

    加入事件

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

    示例

    系统事件 = {
    
      创建 = function(client)
        client.加入事件("系统时钟",{},1000,false)
      end,
    
      系统时钟 = function (client,tbl,dt,time)
        调试输出(dt,time)
      end,
    
    }
    

    删除事件

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

    示例

    系统事件 = {
    
        创建 = function(client)
           client.加入事件("系统时钟",{},1000,false)
        end,
    
        系统时钟 = function (client,tbl,dt,time)
          调试输出(dt,time)
          client.删除事件("系统时钟")
        end,
    
    }
    

    系统事件

    🔹 创建

    创建时触发

    回调参数类型说明描述
    client DmTcpClient

    示例

    系统事件 = {
        创建 = function(client)
            
        end,
    }
    

    🔹 进入

    成功进入到服务端时触发

    回调参数类型说明描述
    client DmTcpClient

    示例

    系统事件 = {
        进入 = function(client)
          调试输出("连接成功",client.cid)
        end,
    }
    

    🔹 消息

    接收到服务端消息时触发

    回调参数类型说明描述
    client DmTcpClient
    tbl table

    示例

    系统事件 = {
        消息 = function(client,tbl)
          调试输出("消息",tbl)
        end,
    }
    

    🔹 断开

    与服务端断开连接时触发

    回调参数类型说明描述
    client DmTcpClient

    示例

    系统事件 = {
        断开 = function(client)
            
        end,
    }
    

    提示

    断开后,系统会按间隔触发自动重连。

    🔹 进入地图

    进入地图后触发

    回调参数类型说明描述
    client DmTcpClient
    地图名称 文本
    角色对象 角色组件如果为nil表示是主角自己进入地图

    示例

    系统事件 = {
    	进入地图 = function(client,地图名称,角色对象)	
    		调试输出("进入地图",地图名称)
    		if (角色对象) then
    			调试输出("其他玩家进入地图",角色对象.名称)
    		end
    	end,
    }
    

    🔹 自定义事件

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

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

    示例

    系统事件 = {
    
      创建 = function(client)
        client.加入事件("定时器",{计次=0},1000,false)
      end,
    
      定时器 = function (client,tbl,dt,time)
        tbl.计次 = tbl.计次 + 1
        调试输出("时钟 " .. tbl.计次 .. "秒")
      end,
    
    }
    
    Prev
    成长
    Next
    WebSocketClient