重新梳理一下语法结构
[@天命系统界面]
{
#if
#act
NEWREADCSV ..\QuestDiary\数据文件\cfg_天命系统.csv
;如果没有初始化成功重新初始化
#if
check [1] 0
#act
#call [主界面相关显示\卡牌系统\天命系统界面.txt] @天命系统个人初始化
#IF
#act
MOV S$已解锁天命ID
MOV S$未解锁天命ID
MOV N$循环索引 1
while N$循环索引 < 13
Goto @刷新天命界面显示
INC N$循环索
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-05-29 19:57:17 |
👁️ 阅读: 2
根据课程日志记录,你的脚本存在以下语法结构问题:
1. **WHILE循环内使用#IF/#ACT**:在`[@刷新天命界面显示]`中,WHILE循环内直接使用了`#IF`、`#ACT`、`#ELSEACT`。根据规范,WHILE和ENDWHILE之间不能直接使用条件判断和执行语句。需要将判断逻辑通过GOTO跳转到其他标签执行。
2. **#IF条件判断位置错误**:在`[@天命系统界面]`的`#say`部分,混入了多个`#if`条件判断。TXT语法中,`#IF`、`#ACT`、`#SAY`等指令应作为独立的逻辑块,不能嵌套在`#say`输出的界面组件中。界面显示条件应通过变量控制,在`#ACT`中赋值,然后在`#SAY`中统一输出。
3. **变量初始化问题**:`MOV S$已解锁天命ID` 和 `MOV S$未解锁天命ID` 没有赋予初始值。字符串变量应使用 `MOV S$变量名 ""` 进行初始化。
4. **循环条件**:`while N$循环索引 < 13` 是正确的,但需要注意循环内变量递增的位置。
5. **组件ID重复**:多个`<Button>`组件使用了相同的`id`值(如1,2,3...),但在同一界面中,ID应保持唯一。
6. **四则运算格式**:脚本中使用了`<$formulation[<$SCREENWIDTH>-66]>`等表达式,这是正确的常量计算方式。但需注意在`FORMULATION`命令中,参数内不能有空格,例如`FORMULATION <$STR(N$X初始)>+(<$STR(N$列)>-1)*70 N$X坐标`是正确的,如果加了空格会被视为多个参数。
**修改建议**:
- 将`[@刷新天命界面显示]`中的条件判断移到WHILE循环外,通过GOTO调用。
- 将界面显示中的`#if`条件判断提前到`#ACT`部分,根据条件设置不同的S变量(如显示内容、颜色、链接等),然后在`#SAY`中统一使用`<$STR(S$变量)>`输出。
- 初始化所有使用的字符串变量。
- 检查并确保界面组件ID唯一性。
由于脚本较长,无法在此完全重写。建议按照上述要点分段调整,特别是处理WHILE循环内的条件判断和界面显示逻辑的分离。
← 返回问答库