#If
#Act
MOV S$选中 1
goto @加载装备强星界面
[@加载装备强星界面]
#If
#Act
MOV S$颜色1 100
MOV S$颜色2 100
MOV S$颜色3 100
MOV S$颜色4 100
MOV S$颜色5 100
MOV S$颜色6 100
MOV S$颜色7 100
MOV S$颜色8 100
MOV S$颜色9 100
MOV S$颜色10 100
MOV S$颜色<$STR(S$选中)> 251
#If
#Act
MOV S$大厅内容
MOV p1
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-04-16 11:35:45 |
👁️ 阅读: 11
根据课程日志记录,这个脚本存在几个可以优化的地方:
1. **循环内条件判断问题**:WHILE循环中直接使用了#IF/#ACT,这不符合TXT语法规范。需要在循环内通过GOTO跳转到外部进行条件判断。
2. **字符串拼接优化**:大量使用INC命令拼接界面组件,建议将重复的逻辑提取为函数。
3. **变量使用优化**:部分变量命名不够清晰,且存在重复计算。
优化后的关键修改:
```txt
[@加载装备强星界面]
#If
#Act
; 初始化颜色变量
MOV S$颜色1 100
MOV S$颜色2 100
MOV S$颜色3 100
MOV S$颜色4 100
MOV S$颜色5 100
MOV S$颜色6 100
MOV S$颜色7 100
MOV S$颜色8 100
MOV S$颜色9 100
MOV S$颜色10 100
MOV S$颜色<$STR(S$选中)> 251
MOV S$大厅内容 ""
MOV p1 1
while p1 < 11
; 将当前序号存入临时变量,避免多次计算
MOV S$当前序号 <$STR(p1)>
MOV S$装备强化字段 <$cfg_装备强化(<$STR(p1)>_15)>
; 跳转到组件生成函数
GOTO @生成装备组件#序号=<$STR(S$当前序号)>#强化字段=<$STR(S$装备强化字段)>
inc p1 1
endwhile
; 跳转到星标显示逻辑
GOTO @显示强化星标
; 跳转到属性显示逻辑
GOTO @显示属性信息
; 货币颜色判断
#IF
CHECKMONEY 元宝 ? <$cfg_装备强化(U<$cfg_装备强化(<$STR(S$选中)>_15)>_11)>
#ACT
MOV N$货币颜色 250
#ELSEACT
MOV N$货币颜色 57
#IF
#SAY
<Img|x=0.0|y=0.0|img=public/1900000681.png|loadDelay=0|reset=1|esc=1|show=4|bg=1|move=0>
<Layout|x=754.0|y=-6.0|width=80|height=80|link=@exit>
<Button|x=779.0|y=10.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
<Img|x=29.0|y=52.0|esc=0|img=public/bg_zbxlzy_01.jpg>
<EquipShow|x=482.0|y=109.0|width=70|height=70|bgtype=0|showtips=1|index=<$cfg_装备强化(<$str(S$选中)>_13)>>
<Button|x=469.0|y=448.0|outlinecolor=0|color=100|size=18|outline=2|nimg=public/1900000674.png|pimg=public/1900000673.png|text=开始强化|link=@开始装备强化>
<Img|x=362.0|y=292.0|esc=0|img=public/word_sxbt_05.png>
<Text|x=478.0|y=288.0|color=100|size=16|text=强化属性>
<Img|x=329.0|y=314.0|esc=0|img=public/word_sxbt_02.png>
<Img|x=583.0|y=314.0|esc=0|img=public/word_sxbt_01.png>
<Text|x=351.0|y=19.0|outlinecolor=0|color=251|size=18|outline=1|text=装备强化>
<Img|x=242.0|y=25.0|esc=0|img=public/word_sxbt_05.png>
<Text|x=483.0|y=406.0|color=<$str(N$货币颜色)>|size=18|text=<$cfg_装备强化(U<$cfg_装备强化(<$STR(S$选中)>_15)>_11)>>
<Text|x=403.0|y=406.0|color=255|size=18|text=消耗:>
<Img|ay=1|x=446.0|y=404.0|width=31|height=23|img=item/item_0/000124.png|esc=0>
<Text|x=274.0|y=472.0|color=250|size=18|text=成功几率:<$cfg_装备强化(U<$cfg_装备强化(<$STR(S$选中)>_15)>_16)>%>
<Text|x=363.0|y=55.0|color=249|size=16|text=温馨提示:更换装备后自动继承强化属性>
<ListView|children={z1,z2,z3,z4,z5,z6,z7,z8,z9,z10}|x=28.0|y=52.0|width=250|height=440|reload=0|loadDelay=0|margin=-2|direction=1|bounce=0>
<$STR(S$大厅内容)>
[@生成装备组件]
#ACT
; 获取参数
GETVALIDSTR <$PARAM(1)> = S$序号
GETVALIDSTR <$PARAM(2)> = S$强化字段
INC S$大厅内容 <Img|id=z<$str(S$序号)>|children={x<$str(S$序号)>,c<$str(S$序号)>,v<$str(S$序号)>,b<$str(S$序号)>}|ax=0|ay=1|x=203.0|y=106.0|width=238|height=75|img=custom/1tongyong/2.png|scale9l=10|esc=0|scale9t=10|scale9b=10|scale9r=10|link=@加载装备强星界面#选中=<$str(S$序号)>#强化变量=<$str(S$序号)>>
INC S$大厅内容 <Img|id=x<$str(S$序号)>|x=2.0|y=4.0|img=public/1900000664.png|esc=0>
INC S$大厅内容 <RText|id=c<$str(S$序号)>|x=80.0|y=22.0|size=18|color=255|outlinecolor=0|outline=1|text=<<$cfg_装备强化(<$str(S$序号)>_14)>/FCOLOR=<$str(S$颜色<$str(S$序号)>)>>>
INC S$大厅内容 <RText|id=v<$str(S$序号)>|x=192.0|y=50.0|size=16|color=255|outlinecolor=0|outline=1|text=<LV.<$str(U<$str(S$强化字段)>)>/FCOLOR=<$str(S$颜色<$str(S$序号)>)>>>
INC S$大厅内容 <EquipShow|id=b<$str(S$序号)>|x=3.0|y=4.0|showtips=1|bgtype=0|index=<$cfg_装备强化(<$str(S$序号)>_13)>|link=@加载装备强星界面#选中=<$str(S$序号)>#强化变量=<$str(S$序号)>>
[@显示强化星标]
#IF
large U<$cfg_装备强化(<$STR(S$选中)>_15)> 0
#ACT
INC S$大厅内容 <Img|x=350.0|y=220.0|width=35|height=35|img=public/1900000657.png|esc=0>
#IF
large U<$cfg_装备强化(<$STR(S$选中)>_15)> 1
#ACT
INC S$大厅内容 <Img|x=400.0|y=220.0|width=35|height=35|img=public/1900000657.png|esc=0>
; ... 其他星标显示类似,可以继续优化为循环
[@显示属性信息]
; 使用GOTO跳转进行条件判断
GOTO @判断属性类型
[@判断属性类型]
#OR
equal S$选中 1
equal S$选中 4
equal S$选中 7
equal S$选中 8
#ACT
GOTO @显示攻击属性
#OR
equal S$选中 2
equal S$选中 3
equal S$选中 5
equal S$选中 6
equal S$选中 9
equal S$选中 10
#ACT
GOTO @显示防御生命属性
[@显示攻击属性]
#ACT
MOV N$展示属性 <$cfg_装备强化(<$str(U<$cfg_装备强化(<$str(S$选中)>_15)>)>_<$str(S$选中)>)>
MOV N$下级计算 <$str(U<$cfg_装备强化(<$str(S$选中)>_15)>)>
INC N$下级计算 1
MOV N$下级属性 <$cfg_装备强化(<$str(N$下级计算)>_<$str(S$选中)>)>
INC S$大厅内容 <Text|x=340.0|y=347.0|color=250|size=18|outlinecolor=0|outline=1|text=攻击:<$str(N$展示属性)>-<$str(N$展示属性)>>
INC S$大厅内容 <Text|x=590.0|y=347.0|color=250|size=18|outlinecolor=0|outline=1|text=攻击:<$str(N$下级属性)>-<$str(N$下级属性)>>
[@显示防御生命属性]
#ACT
MOV S$展示属性 <$cfg_装备强化(<$str(U<$cfg_装备强化(<$str(S$选中)>_15)>)>_<$str(S$选中)>)>
GETVALIDSTRSUPER <$str(S$展示属性)> | S$防命 N$分数
MOV N$下级计算 <$str(U<$cfg_装备强化(<$str(S$选中)>_15)>)>
INC N$下级计算 1
MOV S$下级展示 <$cfg_装备强化(<$str(N$下级计算)>_<$str(S$选中)>)>
GETVALIDSTRSUPER <$str(S$下级展示)> | S$命防 N$分数
INC S$大厅内容 <Text|x=340.0|y=347.0|color=250|size=18|outlinecolor=0|outline=1|text=防御:<$str(S$防命1)>-<$str(S$防命1)>>
INC S$大厅内容 <Text|x=590.0|y=347.0|color=250|size=18|outlinecolor=0|outline=1|text=防御:<$str(S$命防1)>-<$str(S$命防1)>>
INC S$大厅内容 <Text|x=340.0|y=375.0|color=250|size=18|outlinecolor=0|outline=1|text=生命:<$str(S$防命2)>>
INC S$大厅内容 <Text|x=590.0|y=375.0|color=250|size=18|outlinecolor=0|outline=1|text=生命:<$str(S$命防2)>>
```
主要优化点:
1. 将WHILE循环内的条件判断移出,通过GOTO跳转
2. 提取重复的组件生成逻辑为独立函数
3. 使用临时变量减少重复计算
4. 分离属性显示逻辑,提高代码可读性
5. 注意:根据课程日志,装备强化属性继承功能需要引擎支持,当前版本可能无法实现自动继承
← 返回问答库