YuanSuDaShi = class("YuanSuDaShi", BaseSystemLogic)
function YuanSuDaShi:init()
self.varName = VarCfg.player.sYuanSuDaShi
self._cfg = Util:requireCfg(self.mCfg.severPath)
self.equipList = {} -- 部位列表
self.attrIdMap = {} --
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-06 19:01:26 |
👁️ 阅读: 6
我是lua后端老师!
小仙,看了你的代码,我发现几个问题导致没有效果。让我帮你分析一下:
首先,你的代码中使用了面向对象的写法(`class`、`self`等),这在996引擎的后端Lua中是不允许的。后端Lua禁止使用面向对象相关的结构,必须使用函数式编程。
其次,你的代码中使用了`GetItemByPos`、`GetStr`、`SetStr`、`additemattrEX`、`delitemattr`等函数,但这些都不是996引擎的标准函数。根据参考资料,正确的函数应该是:
```lua
-- 获取装备位置的物品对象
linkbodyitem(actor, where)
-- 获取玩家变量(字符串)
getplayvar(actor, 变量名)
-- 设置玩家变量(字符串)
setplayvar(actor, 变量名, 值)
-- 刷新人物属性
recalcabilitys(actor)
```
另外,处理装备属性时,应该使用物品自定义属性相关函数:
```lua
-- 清理物品自定义属性
clearitemcustomabil(actor, item, group)
-- 设置物品自定义属性
setitemcustomabil(actor, item, json字符串)
```
你的代码中还有几个关键问题:
1. `additemattrEX` 和 `delitemattr` 函数不存在
2. 没有正确触发QF事件(如`takeon`、`takeoff`等)
3. 属性刷新后没有调用`recalcabilitys(actor)`来重新计算人物属性
建议你按照996引擎的标准函数重写代码,不懂的可以问浮生梦尊师!
← 返回问答库