[@抽3条]
#ACT
MOVR N$属性索引1 1 6
WHILE TRUE
MOVR N$属性索引2 1 6
#IF
NOT EQUAL N$属性索引2 N$属性索引1
#ACT
BREAK
ENDWHILE
WHILE TRUE
MOVR N$属性索引3 1 6
#IF
NOT EQUAL N$属性索引3 N$属性索引1
NOT EQUAL N$属性索引3 N$属性索引2
#ACT
BREAK
ENDWHILE
MOV N$属性索引 <$STR(
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-06-12 21:24:14 |
👁️ 阅读: 8
这段脚本存在几个结构性问题:
1. **WHILE循环内直接使用条件判断**:课程日志中明确规定,WHILE和ENDWHILE之间不能直接使用#IF、#ACT、#ELSEACT等条件判断和执行语句。需要将判断逻辑移到单独的标签中,通过GOTO跳转执行。
2. **循环逻辑问题**:`WHILE TRUE` 循环没有明确的退出条件控制,且`BREAK`命令在课程日志中未明确支持作为循环控制命令。
3. **执行流程中断**:`GOTO @根据索引添加属性` 跳转后,脚本不会自动返回到原来的位置继续执行后面的`MOV N$属性索引 <$STR(N$属性索引2)>`等语句。
正确的写法应该是:
```
[@抽3条]
#ACT
MOVR N$属性索引1 1 6
MOV N$属性索引2 0
MOV N$属性索引3 0
; 获取第二个不同的属性索引
WHILE N$属性索引2 = 0
MOVR N$临时索引 1 6
GOTO @检查索引1
ENDWHILE
; 获取第三个不同的属性索引
WHILE N$属性索引3 = 0
MOVR N$临时索引 1 6
GOTO @检查索引2
ENDWHILE
MOV N$属性索引 <$STR(N$属性索引1)>
GOTO @根据索引添加属性
[@返回继续1]
MOV N$属性索引 <$STR(N$属性索引2)>
GOTO @根据索引添加属性
[@返回继续2]
MOV N$属性索引 <$STR(N$属性索引3)>
GOTO @根据索引添加属性
[@洗炼完成]
; 洗炼完成后的处理
[@检查索引1]
#IF
NOT EQUAL N$临时索引 N$属性索引1
#ACT
MOV N$属性索引2 <$STR(N$临时索引)>
#ELSEACT
MOV N$属性索引2 0
[@检查索引2]
#IF
NOT EQUAL N$临时索引 N$属性索引1
NOT EQUAL N$临时索引 N$属性索引2
#ACT
MOV N$属性索引3 <$STR(N$临时索引)>
#ELSEACT
MOV N$属性索引3 0
```
注意:`@根据索引添加属性`标签执行完后,需要分别使用`GOTO @返回继续1`、`GOTO @返回继续2`来继续执行后续的属性添加。
← 返回问答库