搜索
查看: 514|回复: 7

[沟通中] 客户端LUA还是5.1吧 数组成员多了 反序列化会失败

[复制链接]
发表于 2022-7-5 16:15:37 | 显示全部楼层 |阅读模式
BUG反馈
引擎版本号: 20220623
登陆器版本号: 20220623
BUG描述: 服务端传过去的数据 数组成员大概超过50个 左右会序列化失败 服务端不会猜测是 lua5.1 的问题 服务端升级了 客户端没升级
BUG重现方式: 数组成员大概超过50个 左右会序列化失败 服务端不会猜测是 lua5.1 的问题 服务端升级了 客户端没升级
修复后应达到的效果: 升级客户端LUA 版本 能正常序列化
联系QQ: 隐藏内容

发表于 2022-7-6 15:55:13 | 显示全部楼层
这个最好提供测试方法
发表于 2022-7-6 16:10:57 | 显示全部楼层
上线发呆 发表于 2022-7-6 15:55
这个最好提供测试方法

就是 通讯的 数据有字节长度限制,超过长度的数据会丢失,只能分批次发送
发表于 2022-7-6 16:11:52 | 显示全部楼层
不是 系列化函数的问题,是 通讯报文有长度限制
发表于 2022-7-7 09:34:06 | 显示全部楼层
还是提供下,看看我们是否可以优化下,
发表于 2022-7-7 09:34:09 | 显示全部楼层
发送和接收就可以
 楼主| 发表于 2022-7-7 12:43:45 | 显示全部楼层
上线发呆 发表于 2022-7-7 09:34
发送和接收就可以

--1号通讯报文回调(用于接收服务器下发数据) 客户端接收
function MsgFunc_sj(smsg)

    local datetab = deserialize(smsg)--反序列化
    local t = type(datetab)
    if t == "table" then
        for k, v in pairs(datetab) do
            if k == "buff_info" then
                const.buff_info = datetab[k]
            elseif k == "buff_config" then
                const.buff_config = datetab[k]
            end
        end
    end
end

--给客户端LUA下发BUFF数据  
function KH_SJXF(actor)
  if not actor then return end
  local buff = {}
  if BuffRun then
    local buff = {}
    buff["buff_info"] = BuffRun.buff_info
    actor:sendNetMsg(1, serialize(buff))

    local buff = {}
    buff["buff_config"] = BuffRun.buff_config
    actor:sendNetMsg(1, serialize(buff))
  end

end

补充内容 (2022-7-7 12:44):
一听说是 报文长度 问题  我修改了 一次 原来 两个数组 是 合并发送的
发表于 2022-7-8 11:21:07 | 显示全部楼层
一定要提供,发具体发送了什么数据,才能测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2024-11-25 13:34 , Processed in 0.585564 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表