帮我写一个装备合成的脚本
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-04-19 00:10:56 |
👁️ 阅读: 2
根据课程日志记录,装备合成可以通过多种方式实现。这里提供一个基于TXT脚本和合成表(cfg_makeitems.csv)的完整示例。
首先,需要在 `cfg_makeitems.csv` 表中配置合成规则。然后,通过脚本读取该表并实现逻辑。
**1. 合成系统触发与配置**
合成面板由引擎提供,通过脚本读表实现。主要触发字段如下:
* `@G_CompoundItem10000`:点击合成按钮时触发,关联参数 `<$param1>`,返回表格对应的IDX。
* `@G_CompoundItem10001`:点击合成页面按钮时触发,用于在面板上添加自定义内容。
**2. 脚本示例**
以下是一个完整的合成脚本示例,包含打开面板、检测材料、执行合成等步骤。
```txt
; 打开合成面板
[@main]
#ACT
; 面板ID对应 cfg_menulayer.xls 表中的ID
OPENWINDOWS 2201
; 点击合成按钮触发
[@G_CompoundItem10000]
#ACT
; 将前端参数赋值给变量,避免参数被覆盖
MOV S$系统合成IDx判断 <$param1>
; 在cfg_makeitems.csv表中查找该IDX对应的行
MOV S$系统合成初始行判断 <$GetTypeBRow(cfg_makeitems,0,<$str(S$系统合成IDx判断)>)>
; 检测所需材料是否足够(假设材料配置在表的第8、9列,具体列数需根据实际表结构调整)
#IF
CHECKITEMS <$cfg_makeitems(<$str(S$系统合成初始行判断)>_8)> 0 1
CHECKITEMS <$cfg_makeitems(<$str(S$系统合成初始行判断)>_9)> 0 1
#ACT
; 材料足够,开始扣除
TAKE <$cfg_makeitems(<$str(S$系统合成初始行判断)>_8)> 1
TAKE <$cfg_makeitems(<$str(S$系统合成初始行判断)>_9)> 1
; 给予合成后的物品(假设成品配置在表的第2列)
GIVE <$cfg_makeitems(<$str(S$系统合成初始行判断)>_2)> 1
; 通知前端合成成功,参数1为0表示成功,参数2返回合成IDX
SendActionOfJson 10000 {"action":"event","data":{"recog":0,"param1":<$str(S$系统合成IDx判断)>}}
#ELSESAY
; 材料不足,通知前端合成失败
SendActionOfJson 10000 {"action":"event","data":{"recog":-2,"param1":0}}
; 页面按钮触发,可用于添加自定义说明或按钮
[@G_CompoundItem10001]
#ACT
MOV S$图标 Button|a=0|x=180.0|y=2.0|tips={点击查看【金钻服务】/FCOLOR=250}|tipsx=10|tipsy=110|nimg=custom/zdy/tubiao/jzhuiyuan1.png|color=255|size=18|pimg=custom/zdy/tubiao/jzhuiyuan1.png|link=@会员服务
INC S$图标 Button|a=0|x=260.0|y=2.0|tips=点击查看【在线奖励】|tipsx=10|tipsy=110|nimg=custom/zdy/tubiao/zxjiangli1.png|color=255|size=18|pimg=custom/zdy/tubiao/zxjiangli1.png|link=@在线奖励
ADDBUTTON 42 1 <$STR(S$图标)>
```
**3. 关于保留附加属性**
如果需要将原装备的附加属性转移到新装备上,需要先读取原装备的属性,然后在给予新装备后,使用 `ADDATTLIST` 命令将属性附加到新装备上。具体属性字符串的格式可参照 `cfg_equip.xls` 表中的属性字段进行拼接。
**注意:**
1. 合成表的列索引(如_8, _9, _2)需要根据你实际配置的 `cfg_makeitems.csv` 表结构进行调整。
2. 合成成功率如果需要在脚本中控制,可以在扣除材料前使用 `RANDOMEX` 等指令进行概率判断。
3. `SendActionOfJson` 命令的参数用于与前端面板通信,必须按照格式发送。
← 返回问答库