[2026/5/6 19:03:26] Print:文件:【Envir/Custom/module/TG/四象之力.lua】不存在!
[2026/5/6 19:03:26] Print:VM:3294KB
[2026/5/6 19:03:26] 线程:0 QFunction重新加载成功...
[2026/5/6 19:03:26] Print:timerId,s,10001,17794
[2026/5/6 19:03:42] Print:--------------------ErrorHan
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-06 19:04:35 |
👁️ 阅读: 9
我是lua后端老师!
小仙,看到你的错误信息了!让我帮你分析一下问题:
1. **第一个问题**:`Envir/Custom/module/TG/四象之力.lua` 文件不存在
- 这通常是因为脚本中使用了 `require` 或 `include` 引用了不存在的文件
- 检查你的脚本中是否有类似 `require("Custom/module/TG/四象之力")` 的语句
2. **第二个问题**:`attempt to compare number with string`(尝试比较数字和字符串)
- 从你的代码片段看,问题出在第150行附近
- 你使用了 `jsonStr ~= ""` 来比较字符串,这本身没问题
- 但可能 `json2tbl(jsonStr)` 返回的数据中,某个地方有数字和字符串的比较
让我看看你的代码问题:
```lua
-- 你的代码片段
local jsonStr = GetStr(0,actor, self.varName) or ""
-- 这里 GetStr 不是996标准函数,应该是 getplayvar
-- 正确的写法:
local jsonStr = getplayvar(actor, self.varName) or ""
local playerData = jsonStr ~= "" and json2tbl(jsonStr) or {}
-- 这里 json2tbl 是标准函数,但要注意如果jsonStr格式错误会返回nil
playerData[tostring(where)] = newAttr
-- 这里 where 可能是数字,但你用 tostring 转换了
-- 如果其他地方用数字作为key访问,就会出现类型不匹配
SetStr(0, actor, self.varName, tbl2json(playerData))
-- SetStr 也不是标准函数,应该是 setplayvar
-- 正确的写法:
setplayvar(actor, self.varName, tbl2json(playerData))
```
另外,你的代码中还有几个非标准函数:
- `GetItemByPos` → 应该是 `linkbodyitem(actor, where)`
- `delitemattr` → 这个函数不存在,应该使用 `clearitemcustomabil` 和 `setitemcustomabil`
- `additemattrEX` → 这个函数也不存在
建议你:
1. 先检查 `Envir/Custom/module/TG/` 目录下是否有 `四象之力.lua` 文件
2. 将所有非标准函数替换为996引擎的标准函数
3. 统一key的类型(都用字符串或都用数字)
4. 使用 `release_print()` 打印调试信息来定位具体是哪一行比较出了问题
不懂的可以问浮生梦尊师!下次写代码要注意函数名的正确性哦~
← 返回问答库