帮我写一个锻造脚本,配合csv表,一级菜单类型2级名字,然后锻造
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-06-08 21:26:39 |
👁️ 阅读: 4
根据课程日志记录,要实现锻造脚本配合csv表,需要以下步骤:
1. 首先在QM的[@Startup]启动触发中读取csv表格:
```
[@Startup]
#IF
#ACT
NEWREADCSV ..\Data\cfg_forge.csv
```
2. 创建锻造主界面脚本,使用一级菜单显示类型:
```
[@锻造主界面]
#IF
#ACT
MOV S$显示内容 ""
MOV N$当前行 0
MOV S$类型列表 ""
; 读取csv获取所有类型
WHILE N$当前行 < <$GetCsv(cfg_forge,Row)>
FORMULATION <$STR(N$当前行)>+1 N$行号
MOV S$类型 <$cfg_forge(<$STR(N$行号)>_1)>
; 去重处理类型
#IF
NOT CHECKTEXTLIST S$类型列表 <$STR(S$类型)>
#ACT
ADDTEXTLIST S$类型列表 <$STR(S$类型)>
INC N$当前行 1
ENDWHILE
; 生成类型按钮
MOV N$按钮Y 100
GETLISTCOUNT S$类型列表 N$类型数量
WHILE N$类型数量 > 0
GETRANDOMTEXTLIST S$类型列表 S$当前类型
FORMULATION 100+<$STR(N$按钮Y)> N$Y坐标
INC S$显示内容 <Button|x=100|y=<$STR(N$Y坐标)>|size=18|color=255|nimg=public_win32/1900000662|text=<$STR(S$当前类型)>|link=@选择类型_<$STR(S$当前类型)>>
FORMULATION <$STR(N$按钮Y)>+50 N$按钮Y
DELETELIST S$类型列表 <$STR(S$当前类型)>
FORMULATION <$STR(N$类型数量)>-1 N$类型数量
ENDWHILE
#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>
<$STR(S$显示内容)>
```
3. 创建二级菜单显示具体锻造物品:
```
[@选择类型_*]
#IF
#ACT
MOV S$类型 <$PARAM(1)>
MOV S$显示内容 ""
MOV N$当前行 0
MOV N$物品Y 150
; 查找该类型的所有物品
WHILE N$当前行 < <$GetCsv(cfg_forge,Row)>
FORMULATION <$STR(N$当前行)>+1 N$行号
#IF
EQUAL <$cfg_forge(<$STR(N$行号)>_1)> <$STR(S$类型)>
#ACT
MOV S$物品名 <$cfg_forge(<$STR(N$行号)>_2)>
MOV S$材料 <$cfg_forge(<$STR(N$行号)>_3)>
MOV S$消耗 <$cfg_forge(<$STR(N$行号)>_4)>
INC S$显示内容 <Text|x=150|y=<$STR(N$物品Y)>|color=255|size=16|text=物品:<$STR(S$物品名)>>
INC S$显示内容 <Text|x=300|y=<$STR(N$物品Y)>|color=249|size=16|text=材料:<$STR(S$材料)>>
INC S$显示内容 <Text|x=450|y=<$STR(N$物品Y)>|color=242|size=16|text=消耗:<$STR(S$消耗)>>金币>
INC S$显示内容 <Button|x=600|y=<$STR(N$物品Y)>|size=16|color=250|nimg=public_win32/1900000662|text=锻造|link=@开始锻造_<$STR(N$行号)>>
FORMULATION <$STR(N$物品Y)>+30 N$物品Y
INC N$当前行 1
ENDWHILE
#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>
<Text|x=100|y=100|color=254|size=20|text=<$STR(S$类型)>类锻造物品列表>
<$STR(S$显示内容)>
```
4. 实现锻造功能:
```
[@开始锻造_*]
#IF
#ACT
MOV N$行号 <$PARAM(1)>
MOV S$材料需求 <$cfg_forge(<$STR(N$行号)>_3)>
MOV N$金币消耗 <$cfg_forge(<$STR(N$行号)>_4)>
MOV S$产出物品 <$cfg_forge(<$STR(N$行号)>_2)>
; 检查材料
#IF
CHECKGAMEGOLD > <$STR(N$金币消耗)>
CHECKITEM <$STR(S$材料需求)>
#ACT
GAMEGOLD - <$STR(N$金币消耗)>
TAKE <$STR(S$材料需求)>
GIVE <$STR(S$产出物品)>
SENDMSG 6 锻造成功!获得:<$STR(S$产出物品)>
#ELSESAY
材料不足或金币不够!
```
5. csv表格cfg_forge.csv格式示例:
```
类型,物品名,材料,消耗
武器,屠龙刀,黑铁矿石*10,100000
武器,倚天剑,玄铁*5,150000
防具,战神盔甲,金矿*20,80000
防具,天尊道袍,丝绸*15,120000
```
注意:csv表格需要放在Data目录下,第一行是表头,行列默认从0开始。
← 返回问答库