搜索
查看: 269|回复: 11

[已关闭] json2tbl和tbl2json,按照说明书复制进去使用,M2直接报错!

 关闭 [复制链接]
发表于 2025-6-21 20:43:24 | 显示全部楼层 |阅读模式
建议反馈
建议描述: 正常使用json2tbl和tbl2json。
实现具体思路: 正常使用json2tbl和tbl2json。
联系QQ: 隐藏内容
如题,来个大神解答下啊,服务端LUA和客户端LUA,按照说明书复制了编号1通讯。测试!

M2报错!是还要添加调用命令么!
发表于 2025-6-21 23:43:46 | 显示全部楼层
脚本怎么写的,然后报错什么内容,发上来
发表于 2025-6-22 12:09:45 | 显示全部楼层
是不是引用代码:require("s.share")
 楼主| 发表于 2025-6-22 13:19:43 | 显示全部楼层
服务端和客户端LUA,都替换了0620里面的:CommonFun.lua
服务端LUA脚本:
function msgFunc_1(Actor, smsg)
        local _tbl = json2tbl(smsg)
        if _tbl == nil 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


客户端LUA脚本:

--鼠标单击事件
function Usr_sp_xz01_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次点击时间
                local _tbl = {name="爱确记忆", age=12} --发送此表给引擎
                local _msgStr = c.share.tbl2json(_tbl) --序列化_tbl表,输出文字
                if _msgStr ~= nil then  
                        g_var["NetMsg.Tick_2"] = c.share.getTickCount() --全局变量表记录当前时钟
                        c.event.sendNetMsg(2, _msgStr)
                end
        else
                c.share.addChat(string.format("发送2编号报文过于频繁,剩余:%.4fms", 500-_nowTick), 1, 2)
        end

        return false --返回true代表执行内部事件
end




补充内容 (2025-6-22 13:24):
报错内容:
2025-06-22 13:24:06 {250620} [string "D:\mirserverBXXW\Mir200\LuaScripts\System\bindNetMsg.Lua"]:82: attempt to call a nil value (global 'json2tbl')
stack traceback:
        [string "D:\mi...

补充内容 (2025-6-22 13:24):
是我漏加什么东西了么,麻烦解答写,感谢!

补充内容 (2025-6-22 13:27):
第82行报错,
82行内容:
local _tbl = json2tbl(smsg)

补充内容 (2025-6-22 13:29):
客户端使用的是通讯编号2,我修改为1了。也还是报错!
发表于 2025-6-22 13:46:26 | 显示全部楼层
参谋长 发表于 2025-6-22 13:19
服务端和客户端LUA,都替换了0620里面的:CommonFun.lua
服务端LUA脚本:
function msgFunc_1(Actor, smsg) ...

require("s.share")

local _tbl = s.share.json2tbl(smsg)
 楼主| 发表于 2025-6-22 14:29:46 | 显示全部楼层
1580 发表于 2025-6-22 13:46
require("s.share")

local _tbl = s.share.json2tbl(smsg)

好的,我去试试!感谢!
 楼主| 发表于 2025-6-22 15:28:08 | 显示全部楼层
已经好了,但是传递过来的数字,带.0    整除10或者GSUB都不好使!先用着吧!感谢大佬解惑!
发表于 2025-6-22 15:58:14 | 显示全部楼层
参谋长 发表于 2025-6-22 15:28
已经好了,但是传递过来的数字,带.0    整除10或者GSUB都不好使!先用着吧!感谢大佬解惑! ...

具体点,只这样说,完全看不懂了
 楼主| 发表于 2025-6-22 16:34:22 | 显示全部楼层
1580 发表于 2025-6-22 15:58
具体点,只这样说,完全看不懂了

客户端LUA脚本:
local _tbl = {bh=0,xz=1}
传递的是  bh=0  xz=1
服务端LUA脚本:
        local _tbl = s.share.json2tbl(smsg)
        local _BH = tonumber(_tbl["bh"])--编号
        local _XZ = tonumber(_tbl["xz"])--选择
        Actor:sendMsg(0,"_BH:".._BH, -1, -1)
        Actor:sendMsg(0,"_XZ:".._XZ, -1, -1)
接收到的,显示出来是:
〖系统〗_BH:0.0
〖系统〗_XZ:1.0
发表于 2025-6-23 20:36:02 | 显示全部楼层
math.floor
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2025-8-2 07:17 , Processed in 0.479278 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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