[@main]
#SAY
<Img|x=161.0|y=113.0|reset=1|loadDelay=1|show=0|esc=1|img=public_win32/1900000610.png|move=0|bg=1>
<Layout|x=780.0|y=101.0|width=80|height=80|link=@exit>
<Button|x=800.0|y=114.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-06-04 17:08:26 |
👁️ 阅读: 7
复选框不显示可能是因为没有正确设置复选框的显示逻辑。根据课程日志记录,复选框的显示和状态切换可以通过`check`和`set`命令配合变量实现。你的脚本中缺少了复选框的显示部分。
以下是修改后的脚本,在`[@main]`部分增加了复选框的显示和状态切换逻辑,并确保“开始合成”按钮正常显示:
```txt
[@main]
#SAY
<Img|x=161.0|y=113.0|reset=1|loadDelay=1|show=0|esc=1|img=public_win32/1900000610.png|move=0|bg=1>
<Layout|x=780.0|y=101.0|width=80|height=80|link=@exit>
<Button|x=800.0|y=114.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
; 三个 OK 框
<ITEMBOX|x=350.0|y=119.0|width=70|height=70|boxindex=0|stdmode=*|img=public/icon_zhezhao_02025.png>
<ITEMBOX|x=450.0|y=119.0|width=70|height=70|boxindex=1|stdmode=*|img=public/icon_zhezhao_02025.png>
<ITEMBOX|x=550.0|y=119.0|width=70|height=70|boxindex=2|stdmode=*|img=public/icon_zhezhao_02025.png>
材料1(必须) 材料2(可选) 材料3(可选)\
\
; 复选框显示
#IF
check [101] 0
#ACT
MOV S$选择1 public/1900000662.png
#IF
check [101] 1
#ACT
MOV S$选择1 public/1900000661.png
#IF
check [102] 0
#ACT
MOV S$选择2 public/1900000662.png
#IF
check [102] 1
#ACT
MOV S$选择2 public/1900000661.png
<Button|x=290.0|y=262.0|size=18|color=255|nimg=<$STR(S$选择1)>|link=@切换1> 自动扣除材料1\
<Button|x=290.0|y=292.0|size=18|color=255|nimg=<$STR(S$选择2)>|link=@切换2> 自动扣除材料2\
\
<开始合成/@开始合成>\
<退出/@exit>
[@切换1]
#IF
check [101] 0
#ACT
set [101] 1
#ELSEACT
set [101] 0
GOTO @main
[@切换2]
#IF
check [102] 0
#ACT
set [102] 1
#ELSEACT
set [102] 0
GOTO @main
[@开始合成]
#ACT
; 用变量读取框内物品(如果变量为空说明引擎不支持,直接提示)
MOV S$框0物品 <$DLGITEM.NAME[0]>
MOV N$框0数量 <$DLGITEM.COUNT[0]>
#IF
EQUAL S$框0物品 ""
#ACT
SENDMSG 6 无法读取框内物品,请检查引擎或使用背包合成。
GOTO @main
BREAK
MOV N$合成成功 0
MOV N$当前行 1
MOV N$最大行 <$Getcsv(cfg_装备合成,Row)>
GOTO @合成_判断行范围
[@合成_判断行范围]
#IF
SMALL N$当前行 <$STR(N$最大行)>
#ACT
GOTO @合成_读取配方
#ELSEACT
GOTO @合成_结束
[@合成_读取配方]
#ACT
MOV S$产物 <$cfg_装备合成(<$STR(N$当前行)>_0)>
MOV S$材料1 <$cfg_装备合成(<$STR(N$当前行)>_1)>
MOV N$数量1 <$cfg_装备合成(<$STR(N$当前行)>_2)>
MOV S$材料2 <$cfg_装备合成(<$STR(N$当前行)>_3)>
MOV N$数量2 <$cfg_装备合成(<$STR(N$当前行)>_4)>
MOV S$材料3 <$cfg_装备合成(<$STR(N$当前行)>_5)>
MOV N$数量3 <$cfg_装备合成(<$STR(N$当前行)>_6)>
GOTO @合成_匹配材料1
[@合成_匹配材料1]
#IF
EQUAL S$框0物品 <$STR(S$材料1)>
#ACT
#IF
LARGE N$框0数量 <$STR(N$数量1)> - 1
#ACT
GOTO @合成_检查材料2
#ELSEACT
SENDMSG 6 材料1数量不足
GOTO @合成_下一行
#ELSEACT
GOTO @合成_下一行
[@合成_检查材料2]
#IF
EQUAL S$材料2 ""
#ACT
GOTO @合成_检查材料3
#IF
EQUAL N$数量2 0
#ACT
GOTO @合成_检查材料3
MOV S$框1物品 <$DLGITEM.NAME[1]>
MOV N$框1数量 <$DLGITEM.COUNT[1]>
#IF
EQUAL S$框1物品 <$STR(S$材料2)>
#ACT
#IF
LARGE N$框1数量 <$STR(N$数量2)> - 1
#ACT
GOTO @合成_检查材料3
#ELSEACT
SENDMSG 6 材料2数量不足
GOTO @合成_下一行
#ELSEACT
SENDMSG 6 材料2不匹配
GOTO @合成_下一行
[@合成_检查材料3]
#IF
EQUAL S$材料3 ""
#ACT
GOTO @合成_执行
#IF
EQUAL N$数量3 0
#ACT
GOTO @合成_执行
MOV S$框2物品 <$DLGITEM.NAME[2]>
MOV N$框2数量 <$DLGITEM.COUNT[2]>
#IF
EQUAL S$框2物品 <$STR(S$材料3)>
#ACT
#IF
LARGE N$框2数量 <$STR(N$数量3)> - 1
#ACT
GOTO @合成_执行
#ELSEACT
SENDMSG 6 材料3数量不足
GOTO @合成_下一行
#ELSEACT
SENDMSG 6 材料3不匹配
GOTO @合成_下一行
[@合成_执行]
#ACT
; 从框内扣除指定数量(如果支持)
TAKEDLGITEM 0 <$STR(N$数量1)>
#IF
NOT EQUAL S$材料2 ""
#ACT
TAKEDLGITEM 1 <$STR(N$数量2)>
#IF
NOT EQUAL S$材料3 ""
#ACT
TAKEDLGITEM 2 <$STR(N$数量3)>
GIVE <$STR(S$产物)> 1
MOV N$合成成功 1
SENDMSG 6 合成成功:<$STR(S$产物)>×1!
GOTO @合成_结束
[@合成_下一行]
#ACT
INC N$当前行 1
GOTO @合成_判断行范围
[@合成_结束]
#IF
EQUAL N$合成成功 0
#ACT
SENDMSG 6 没有匹配的配方,或材料不正确!
GOTO @main
#ELSEACT
GOTO @main
```
主要修改:
1. 在`[@main]`中增加了两个复选框的显示逻辑,使用`check`命令检查变量`[101]`和`[102]`的状态,并设置对应的图片。
2. 增加了`[@切换1]`和`[@切换2]`函数,用于切换复选框的状态。
3. 确保“开始合成”按钮正常显示在复选框下方。
如果复选框仍然不显示,请检查图片路径`public/1900000661.png`和`public/1900000662.png`是否存在。
← 返回问答库