传奇服务端添加装备合成NPC脚本的完整流程与代码示例

来源: 作者: 点击:
一、创建NPC脚本文件

进入服务端目录 Mir200\Envir\Market_Def,新建一个文本文件并重命名,例如“装备合成-3.txt”(-3代表NPC地图编号)。用记事本打开,写入以下基础对话框架:
[@main]
欢迎使用装备合成系统。\ \
<合成圣战戒指/@合成圣战戒指> 需要:圣战戒指3个 + 元宝5个\ \
<关闭/@exit>


保存后,在 Merchant.txt 中按格式添加一行配置,如“装备合成 3 330 320 装备合成-3 0”,重启M2或重读NPC即可刷出。

二、基础合成脚本(无几率,必成)

在刚才的脚本文件中,添加以下段落实现基础合成逻辑:
[@合成圣战戒指]
#IF
CHECKITEM 圣战戒指 3 ;检测背包是否有3个圣战戒指
CHECKGAMEGOLD > 4 ;检测元宝是否大于4个(即至少5个)
#ACT
TAKE 圣战戒指 3 ;收取3个材料戒指
GAMEGOLD - 5 ;扣除5个元宝
GIVE 圣战戒指(中) 1 ;给予合成后的成品
SENDMSG 6 恭喜你,合成圣战戒指(中)成功!
BREAK
#ELSEACT
MESSAGEBOX 合成失败:需要圣战戒指3个 + 元宝5个!
BREAK


此脚本逻辑为:检测材料充足则直接扣除并给予成品,不充足则弹窗提示。

三、加入成功率与失败惩罚

利用 RANDOM 命令可实现几率合成。以下示例为33%成功率,失败则材料消失:
[@合成雷霆战甲]
#IF
CHECKITEM 天魔神甲 3
CHECKGAMEGOLD > 4
#ACT
TAKE 天魔神甲 3
GAMEGOLD - 5
#IF
RANDOM 3 ;随机数0-2,即1/3几率
#ACT
GIVE 雷霆战甲(男) 1
SENDMSG 5 恭喜你,装备升级成功!
BREAK
#ELSEACT ;随机失败执行
SENDMSG 5 很遗憾,合成失败,材料已消失。
BREAK


若需失败后返还部分材料,可在 #ELSEACT 段加入 GIVE 命令返还一件材料。

四、多材料混合合成脚本

对于需要多种不同类型材料的合成,使用并列检测条件:
[@合成铁剑]
#IF
CHECKITEM 乌木剑 1
CHECKITEM 黑铁矿石 5
CHECKITEM 金矿 3
#ACT
TAKE 乌木剑 1
TAKE 黑铁矿石 5
TAKE 金矿 3
GIVE 铁剑 1
SENDMSG 1 玩家【%s】成功合成铁剑!
BREAK
#ELSEACT
MESSAGEBOX 缺少合成所需物品!
BREAK


五、常见报错与调试

1. NPC不显示选项:检查脚本中 @main 段的换行符是否为 \ \,且地图坐标、脚本文件名是否与 Merchant.txt 配置一致。
2. 合成无反应:确认物品数据库(StdItems.DB)中存在脚本中写的物品名称,且大小写、符号完全一致。
3. 材料扣了不给装备:检查 GIVE 命令后的物品名是否正确,以及脚本最后是否有 BREAK 防止逻辑穿透。