[@TakeOnBeforeEX]
SENDMSG 6 个人变量J117: <$STR(J117)>
#IF
EQUAL J117 1
#ACT
GetDBItemFieldValue <$CURRTEMNAME> IDX S$物品IDX
SENDMSG 6 物品ID: <$S(S$物品IDX)>
MOV P0 <$CURRTEMMAKEINDEX>
#IF
SMALL P0 21294
#ACT
SENDMSG 6 公共副本禁止穿戴副本之外的装备
stop
#ELSESAY
; 可以在此处添加
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-07-02 19:55:32 |
👁️ 阅读: 11
在 `[@TakeOnBeforeEX]` 触发标签中,你当前的脚本结构存在问题。TXT语法要求 `#IF` 条件判断必须直接跟在触发标签或 `#ACT` 段之后,且 `#IF` 下不能直接跟 `SENDMSG` 等执行命令。正确的写法应是将条件判断和执行逻辑分开。
根据课程日志记录,`GetDBItemFieldValue` 命令可以用于查询物品的基础ID。以下是修正后的脚本示例:
```
[@TakeOnBeforeEX]
#ACT
SENDMSG 6 个人变量J117: <$STR(J117)>
#IF
EQUAL J117 1
#ACT
GetDBItemFieldValue <$CURRTEMNAME> IDX S$物品IDX
SENDMSG 6 物品ID: <$STR(S$物品IDX)>
MOV P0 <$CURRTEMMAKEINDEX>
#IF
SMALL P0 21294
#ACT
SENDMSG 6 公共副本禁止穿戴副本之外的装备
stop
#ELSESAY
#ELSEACT
```
主要修正点:
1. 将 `SENDMSG` 放入 `#ACT` 段。
2. 使用 `<$STR(S$物品IDX)>` 输出字符串变量。
3. 确保 `#IF` 条件判断后紧跟 `#ACT` 或 `#SAY` 等执行段。
4. 最后一个 `#IF` 判断后,`#ELSESAY` 和 `#ELSEACT` 可以留空,但结构需完整。
← 返回问答库