[@抽2条]
#ACT
MOVR N$属性索引1 1 6
WHILE TRUE
MOVR N$属性索引2 1 6
#IF
NOT EQUAL N$属性索引2 N$属性索引1
#ACT
BREAK
ENDWHILE
MOV N$属性索引 <$STR(N$属性索引1)>
GOTO @根据索引添加属性
MOV N$属性索引 <$STR(N$属性索引2)>
GOTO @根据索引添加属性
GOTO @洗炼完成
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-06-12 21:22:22 |
👁️ 阅读: 10
这段脚本存在几个问题:
1. `WHILE TRUE` 循环中直接使用了 `#IF` 和 `#ACT`,这在课程日志中是不允许的。WHILE循环内不能包含条件判断和执行语句。
2. 逻辑顺序问题:`GOTO @根据索引添加属性` 之后会跳转执行,执行完 `@根据索引添加属性` 标签的内容后,如果没有明确的返回机制,脚本不会继续执行后面的 `MOV N$属性索引 <$STR(N$属性索引2)>` 等语句。
3. 循环结构不完整:`WHILE TRUE` 没有对应的 `ENDWHILE` 来结束循环。
正确的写法应该是将判断逻辑移到单独的标签中,通过GOTO跳转:
```
[@抽2条]
#ACT
MOVR N$属性索引1 1 6
MOV N$属性索引2 0
; 循环获取第二个不同的属性索引
WHILE N$属性索引2 = 0
MOVR N$临时索引 1 6
GOTO @检查索引是否相同
ENDWHILE
MOV N$属性索引 <$STR(N$属性索引1)>
GOTO @根据索引添加属性
[@返回继续]
MOV N$属性索引 <$STR(N$属性索引2)>
GOTO @根据索引添加属性
[@洗炼完成]
; 洗炼完成后的处理
[@检查索引是否相同]
#IF
NOT EQUAL N$临时索引 N$属性索引1
#ACT
MOV N$属性索引2 <$STR(N$临时索引)>
#ELSEACT
MOV N$属性索引2 0
```
注意:`@根据索引添加属性` 标签执行完后,需要使用 `GOTO @返回继续` 来继续执行第二个属性的添加。
← 返回问答库