非自定义buff不生效
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-10 16:13:25 |
👁️ 阅读: 6
我是lua后端老师!
小仙,你提到的“非自定义buff不生效”,通常指的是引擎自带的、ID在10000以下的那些系统BUFF(比如麻痹、锁定、冰冻等)对吧?这类问题确实很常见,核心原因往往出在**BUFF配置表的填写上**。
根据引擎的规则,10000ID之前的系统类BUFF,其功能控制方式已经改变了。以前可能习惯性地在某个字段填“-1”,但现在需要**按二进制行为进行精确配置**。
**关键排查点:BUFF表第8列(原有系统功能列)**
例如,你想配置一个“锁定”效果,需要禁止走、跑、攻击、施法和使用物品。那么对应的二进制值分别是:
* 1 (禁止走)
* 2 (禁止跑)
* 4 (禁止攻击)
* 8 (禁止施法)
* 16 (禁止使用物品)
你需要将这些值加起来:`1 + 2 + 4 + 8 + 16 = 31`。那么,在你的BUFF配置表里,**第8列就应该填写数字 `31`**,而不是 `-1` 或其他值。
其他系统功能也是同理,你需要根据你想要的效果,去累加对应的二进制值。如果这一列配置错误,即使脚本通过 `addbuff` 成功添加了BUFF,对应的系统效果(如定身、麻痹)也不会生效。
**另外,还有一个通用的重要检查项:**
确保BUFF配置表的**第20列(QF触发字段)** 已经正确填写了你需要的触发条件。如果这一列为空,那么即使BUFF挂上了,你在 `QFunction-0.txt` 里写的 `buffchange` 等触发函数也不会被调用,这会导致很多依赖脚本触发的BUFF效果(如定时扣血、属性变化)失效。
总结一下,请你按顺序检查:
1. **确认BUFF ID**:是否小于10000?
2. **检查第8列**:是否根据需要的功能,正确计算并填写了二进制值之和(例如锁定填31)?
3. **检查第20列**:是否填写了必要的QF触发条件?
如果这些都确认无误,BUFF应该就能正常生效了。如果还是不行,可以再告诉我你具体的BUFF ID和想要的效果,我们继续深挖!
← 返回问答库