[@杀怪给挂机时间]
{
#if
not equal <$str(N$挂机状态)> 0
#act
break
#if
equal <$str(N$挂机状态)> 0
small <$str(U240)> 86340
CHECKTEXTLIST ..\QuestDiary\配置表\杀白色怪物给时间.txt <$str(s$杀死怪物名)>
#ACT
inc U240 60
sendmsg 6 击杀怪物获得1分钟挂机时间
goto @时间提示
BREAK
#if
equal <$st
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-05-11 16:02:01 |
👁️ 阅读: 9
根据课程日志记录,你的脚本存在几个问题:
1. **变量使用问题**:在`#IF`条件中直接使用`<$str(N$挂机状态)>`和`<$str(U240)>`是不规范的。TXT语法中,`#IF`条件应直接使用变量名,无需`<$STR()>`包裹。例如:
- 错误:`equal <$str(N$挂机状态)> 0`
- 正确:`EQUAL N$挂机状态 0`
2. **条件判断顺序**:你的多个`#IF`块都使用了`BREAK`,但`BREAK`在TXT中用于跳出当前执行块,可能导致后续条件不被执行。如果希望多个条件独立判断,应使用`#ELSEIF`或`#ELSEACT`来连接。
3. **FORMULATION命令使用**:
- `FORMULATION <$str(U240)>/86400 N$天数 1` 中的空格问题:TXT语法中,FORMULATION的参数内不能有空格,否则会被视为多个参数。应写为:`FORMULATION <$STR(U240)>/86400 N$天数 1`
- 同样,其他FORMULATION行中的空格也需要移除,例如:`FORMULATION <$str(U240)>%86400 N$剩余秒`
4. **时间显示逻辑**:在`[@时间提示]`中,你使用多个`#IF`块来拼接`S$时间显示`,但每个`#IF`块是独立的,可能导致拼接不完整。建议将拼接逻辑放在一个`#ACT`块中,使用条件判断组合。
5. **变量初始化**:脚本中使用了`N$挂机状态`、`U240`等变量,但未看到初始化部分。建议在使用前用`MOV`初始化,例如:`MOV N$挂机状态 0`。
6. **文件路径**:`CHECKTEXTLIST`中使用的文件路径为相对路径`..\QuestDiary\配置表\...`,请确保该路径在服务器上存在且可访问。
修正后的关键部分示例:
```txt
[@杀怪给挂机时间]
#IF
NOT EQUAL N$挂机状态 0
#ACT
BREAK
#IF
EQUAL N$挂机状态 0
SMALL U240 86340
CHECKTEXTLIST ..\QuestDiary\配置表\杀白色怪物给时间.txt S$杀死怪物名
#ACT
INC U240 60
SENDMSG 6 击杀怪物获得1分钟挂机时间
GOTO @时间提示
#ELSEIF
EQUAL N$挂机状态 0
SMALL U240 86100
CHECKTEXTLIST ..\QuestDiary\配置表\杀紫色怪物给时间.txt S$杀死怪物名
#ACT
INC U240 300
SENDMSG 6 击杀怪物获得5分钟挂机时间
GOTO @时间提示
; ... 其他类似条件用#ELSEIF连接
[@时间提示]
#ACT
MOV S$时间显示 ""
FORMULATION <$STR(U240)>/86400 N$天数 1
FORMULATION <$STR(U240)>%86400 N$剩余秒
FORMULATION <$STR(N$剩余秒)>/3600 N$小时 1
FORMULATION <$STR(N$剩余秒)>%3600 N$剩余秒2
FORMULATION <$STR(N$剩余秒2)>/60 N$分钟 1
FORMULATION <$STR(N$剩余秒2)>%60 N$秒
; 拼接时间字符串
MOV S$时间显示 "剩余时间:"
#IF
LARGE N$天数 0
#ACT
INC S$时间显示 <$STR(N$天数)>天
#IF
LARGE N$小时 0
#ACT
INC S$时间显示 <$STR(N$小时)>小时
#IF
LARGE N$分钟 0
#ACT
INC S$时间显示 <$STR(N$分钟)>分
#IF
LARGE N$秒 0
#ACT
INC S$时间显示 <$STR(N$秒)>秒
SENDMSG 6 <$STR(S$时间显示)>
```
注意:确保所有变量在使用前已初始化,并检查文件路径是否正确。如果仍有问题,请提供更多上下文信息。
← 返回问答库