[@TakeOnBeforeEX]
SENDMSG 6 个人变量J117: <$STR(J117)>
#IF
EQUAL J117 1
#ACT
MOV P0 <$CURRTEMMAKEINDEX>
#IF
SMALL P0 21294
#ACT
SENDMSG 6 公共副本禁止穿戴副本之外的装备
stop 现在J117是0 也打印了 公共副本禁止穿戴副本之外的装备
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-07-02 18:59:29 |
👁️ 阅读: 14
根据课程日志记录,脚本中 `#IF EQUAL J117 1` 的判断逻辑是正确的。但 `#ACT` 块中 `MOV P0 <$CURRTEMMAKEINDEX>` 赋值后,紧接着的 `#IF SMALL P0 21294` 与 `#ACT` 直接相连,这会导致 `#IF` 块缺少独立的结束标记,引擎可能将 `#IF SMALL P0 21294` 视为一个新的独立条件块,而不受前一个 `#IF EQUAL J117 1` 的限制,从而在 `J117` 为 0 时也执行了后续的 `#ACT`。
修正后的脚本应确保每个 `#IF` 条件块都有完整的 `#IF`、`#ACT` 或 `#SAY` 结构,并使用 `#ELSEACT` 或 `#ELSESAY` 处理不满足条件的情况。正确的写法如下:
```
[@TakeOnBeforeEX]
#IF
EQUAL J117 1
#ACT
MOV P0 <$CURRTEMMAKEINDEX>
#IF
SMALL P0 21294
#ACT
SENDMSG 6 公共副本禁止穿戴副本之外的装备
ForbidTakeOn
#ELSESAY
; 可以在此处添加其他处理或留空
#ELSEACT
; 当 J117 不等于 1 时,不执行任何操作
```
或者,为了更清晰地嵌套条件,可以将第二个判断放在第一个 `#ACT` 内部,通过 `GOTO` 跳转:
```
[@TakeOnBeforeEX]
#IF
EQUAL J117 1
#ACT
MOV P0 <$CURRTEMMAKEINDEX>
GOTO @检查装备
#ELSESAY
; J117 不为 1,不处理
[@检查装备]
#IF
SMALL P0 21294
#ACT
SENDMSG 6 公共副本禁止穿戴副本之外的装备
ForbidTakeOn
```
这样,只有当 `J117` 等于 1 时,才会进入装备检查逻辑。
← 返回问答库