DengjiChaotuo = class("DengjiChaotuo", BaseSystemLogic)
function DengjiChaotuo:init()
self._cfg = Util:requireCfg(self.mCfg.severPath)
--self.varName = VarCfg.player.sDengjiChaotuo -- 存储超脱次数的变量名
self.varName = VarCfg.player.nDengjiChao
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-08 16:43:38 |
👁️ 阅读: 5
嗨,修仙者!我是Lua后端老师!
看了你的代码,主要问题在于你使用了 `GMLib:setDayTLInt` 和 `GMLib:getObjTLInt` 来操作一个“天变量”,但引擎的标准接口是 `getplaydef` 和 `setplaydef` 用于处理个人每日变量。`GMLib` 可能是你自定义的库,如果它没有正确绑定到引擎的每日清零机制,变量就不会在零点自动清空。
要让变量在每日零点自动清零,你需要使用引擎提供的标准接口和触发。正确做法如下:
1. **使用标准接口存储和读取每日变量**:
在 `DengjiChaotuo:ChaoTuo` 函数中,将操作变量的部分改为:
```lua
-- 获取今日已超脱次数
local dayAddNum = getplaydef(actor, 0, self.varName) or 0
release_print("当前等级超脱天变量值:", dayAddNum)
-- ... 其他逻辑 ...
-- 零点清空等级超脱天变量
setplaydef(actor, 0, self.varName, dayAddNum + 1)
```
`getplaydef` 和 `setplaydef` 的第二个参数 `0` 通常代表“天”维度,引擎会在每日零点自动重置这类变量。
2. **在QF触发文件中配置每日清零逻辑(可选但更稳妥)**:
为了确保逻辑,可以在QF脚本的 `resetday` 或 `setday` 触发点,为所有玩家重置这个每日变量。
在 `QFunction-0.txt` 中增加:
```
[@resetday]
#if
#act
SetPlayDef 0 <$STR(S{self.varName})> 0
release_print 玩家<$USERNAME>的每日超脱次数已重置。
```
这样,每天零点在线的玩家都会触发这个重置。
3. **检查变量名**:
确保 `self.varName` 的值(例如 `"nDengjiChaotuo"`)是合法的、不与其他系统冲突的变量名。
**总结问题**:你的代码可能因为使用了非标准的 `GMLib` 库方法来操作“天变量”,而该库没有正确链接到引擎的每日清零系统。改用 `getplaydef`/`setplaydef` 接口,并考虑在QF的 `resetday` 触发中显式重置,就能解决零点不清零的问题。
如果还有疑问,随时再来问我,或者请教浮生梦尊师!
← 返回问答库