脚本编写基础:NPC对话与检测逻辑
装备合成需通过NPC脚本实现,核心流程为“检测材料→扣除物品→发放装备”。以圣战项链合成为例,基础脚本结构如下(适用于多数Mir2引擎):
[@Main]
欢迎使用装备合成炉。\ \
<合成圣战项链/@Hecheng_Item>
[@Hecheng_Item]
#IF
CheckItem 绿色项链 2 ;检测背包是否有2个绿色项链
CheckGold 1000000 ;检测是否有100万金币
#ACT
Take 绿色项链 2 ;扣除材料
Take 金币 1000000 ;扣除金币
Give 圣战项链 1 ;发放成品
MessageBox 恭喜,合成成功!
#ELSEACT
MessageBox 材料不足或金币不够!
关键命令说明:
• CheckItem:检测背包物品数量。
• CheckGold/CheckGameGold:检测金币或元宝。
- Take:扣除物品或货币。
• Give:给予装备。
进阶控制:合成成功率与随机概率
为避免合成过于简单,通常需加入概率机制。利用Random(随机数)或MOVR(随机赋值)命令实现。
50%成功率脚本示例
[@Hecheng_Rate]
#IF
CheckItem 祖玛雕像 1
CheckItem 金矿 5
#ACT
Random 2 ;生成0-1的随机数(50%概率)
Take 祖玛雕像 1
Take 金矿 5
#IF
Random 0 ;若随机数为0(50%几率)
#ACT
Give 裁决之杖 1
MessageBox [成功]:运气不错!
#ELSEACT
MessageBox [失败]:合成爆了,材料已扣除。
失败处理:若需失败后返还部分材料,可在#ELSEACT段添加Give 金矿 2等命令。
变量控制高精度概率
若需精确控制(如30%成功率),可使用变量随机:
#ACT
MOVR N1 100 ;N1取0-99随机数
#IF
Small N1 30 ;若N1 < 30(即30%几率)
#ACT
Give 屠龙 1
配置文件关联与NPC注册
脚本写完后,需将NPC关联到地图,玩家才能交互。
1. 脚本文件存放
将上述脚本保存为.txt文件,放置于服务端目录:
MirServer\Mir200\Envir\Market_Def\(对应地图的NPC脚本文件夹)
2. 注册NPC信息
编辑 Merchant.txt(商人列表):
装备合成师 0 <地图编号> <坐标X> <坐标Y> <方向> 0
参数说明:
• 地图编号:如0(比奇省)、3(盟重省)。
• 坐标:NPC站立的具体位置。
- 方向:通常填0或1,控制NPC朝向。
3. 重载脚本
修改后,在M2Server(引擎控制器)点击“重新加载NPC脚本”或“重读商人列表”,游戏内即可出现合成NPC。
多引擎差异与常见报错
不同引擎(GOM/GEE/Hero/3KM2)命令略有差异,若脚本不生效,重点检查:
引擎类型 金币检测命令 元宝检测命令 备注
Hero/3KM2 CheckGold CheckGameGold 通用标准
GOM/GEE CheckGold CheckGamePoint 注意变量名差异
LegendM2 CheckGold CheckGameGird 部分老版本
常见错误:
1. 物品名不匹配:CheckItem后的物品名必须与StdItems.DB数据库中的名称完全一致(区分大小写)。
2. 路径错误:NPC脚本必须放在对应地图名的文件夹下(如盟重NPC脚本放Market_Def\盟重)。
3. 权限不足:若合成需消耗元宝,确保NPC脚本有权限扣除GameGold(部分引擎需开启GM权限测试)。
快速配置法:利用FoundryList.txt(部分引擎)
部分Mir2引擎支持铸造列表功能,无需编写复杂脚本。
1. 编辑列表:打开 Envir\FoundryList.txt,添加一行:
雷霆战戒 1 80 力量戒指 2 1 金币 500000 1
(含义:合成1个雷霆战戒,成功率80%,需要2个力量戒指+50万金币,失败材料消失)
2. NPC脚本简化:
[@Main]
<合成雷霆战戒/@Foundry_Item>
[@Foundry_Item]
#IF
CheckFoundryItem 雷霆战戒
#ACT
GiveFoundryItem 雷霆战戒
此方法适合批量添加固定成功率的合成公式。
调试建议:先在测试服使用GM账号(@GameMaster)刷出材料,反复测试Take和Give命令是否正常扣给,再调整概率数值。

