脚本编写基础:NPC对话与检测逻辑
装备合成需通过NPC脚本实现,核心流程为“检测材料→扣除物品→发放装备”。以圣战项链合成为例,基础脚本结构如下(适用于多数Mir2引擎):
[@Main]
欢迎使用装备合成炉。\\
<合成圣战项链/@Hecheng_Item>
[@Hecheng_Item]
#IF
CheckItem绿色项链2;检测背包是否有2个绿色项链
CheckGold1000000;检测是否有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
Random2;生成0-1的随机数(50%概率)
Take祖玛雕像1
Take金矿5
#IF
Random0;若随机数为0(50%几率)
#ACT
Give裁决之杖1
MessageBox[成功]:运气不错!
#ELSEACT
MessageBox[失败]:合成爆了,材料已扣除。
失败处理:若需失败后返还部分材料,可在#ELSEACT段添加Give金矿2等命令。
变量控制高精度概率
若需精确控制(如30%成功率),可使用变量随机:
#ACT
MOVRN1100;N1取0-99随机数
#IF
SmallN130;若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/3KM2CheckGoldCheckGameGold通用标准
GOM/GEECheckGoldCheckGamePoint注意变量名差异
LegendM2CheckGoldCheckGameGird部分老版本
常见错误:
1.物品名不匹配:CheckItem后的物品名必须与StdItems.DB数据库中的名称完全一致(区分大小写)。
2.路径错误:NPC脚本必须放在对应地图名的文件夹下(如盟重NPC脚本放Market_Def\盟重)。
3.权限不足:若合成需消耗元宝,确保NPC脚本有权限扣除GameGold(部分引擎需开启GM权限测试)。
快速配置法:利用FoundryList.txt(部分引擎)
部分Mir2引擎支持铸造列表功能,无需编写复杂脚本。
1.编辑列表:打开Envir\FoundryList.txt,添加一行:
雷霆战戒180力量戒指21金币5000001
(含义:合成1个雷霆战戒,成功率80%,需要2个力量戒指+50万金币,失败材料消失)
2.NPC脚本简化:
[@Main]
<合成雷霆战戒/@Foundry_Item>
[@Foundry_Item]
#IF
CheckFoundryItem雷霆战戒
#ACT
GiveFoundryItem雷霆战戒
此方法适合批量添加固定成功率的合成公式。
调试建议:先在测试服使用GM账号(@GameMaster)刷出材料,反复测试Take和Give命令是否正常扣给,再调整概率数值。
装备合成需通过NPC脚本实现,核心流程为“检测材料→扣除物品→发放装备”。以圣战项链合成为例,基础脚本结构如下(适用于多数Mir2引擎):
[@Main]
欢迎使用装备合成炉。\\
<合成圣战项链/@Hecheng_Item>
[@Hecheng_Item]
#IF
CheckItem绿色项链2;检测背包是否有2个绿色项链
CheckGold1000000;检测是否有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
Random2;生成0-1的随机数(50%概率)
Take祖玛雕像1
Take金矿5
#IF
Random0;若随机数为0(50%几率)
#ACT
Give裁决之杖1
MessageBox[成功]:运气不错!
#ELSEACT
MessageBox[失败]:合成爆了,材料已扣除。
失败处理:若需失败后返还部分材料,可在#ELSEACT段添加Give金矿2等命令。
变量控制高精度概率
若需精确控制(如30%成功率),可使用变量随机:
#ACT
MOVRN1100;N1取0-99随机数
#IF
SmallN130;若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/3KM2CheckGoldCheckGameGold通用标准
GOM/GEECheckGoldCheckGamePoint注意变量名差异
LegendM2CheckGoldCheckGameGird部分老版本
常见错误:
1.物品名不匹配:CheckItem后的物品名必须与StdItems.DB数据库中的名称完全一致(区分大小写)。
2.路径错误:NPC脚本必须放在对应地图名的文件夹下(如盟重NPC脚本放Market_Def\盟重)。
3.权限不足:若合成需消耗元宝,确保NPC脚本有权限扣除GameGold(部分引擎需开启GM权限测试)。
快速配置法:利用FoundryList.txt(部分引擎)
部分Mir2引擎支持铸造列表功能,无需编写复杂脚本。
1.编辑列表:打开Envir\FoundryList.txt,添加一行:
雷霆战戒180力量戒指21金币5000001
(含义:合成1个雷霆战戒,成功率80%,需要2个力量戒指+50万金币,失败材料消失)
2.NPC脚本简化:
[@Main]
<合成雷霆战戒/@Foundry_Item>
[@Foundry_Item]
#IF
CheckFoundryItem雷霆战戒
#ACT
GiveFoundryItem雷霆战戒
此方法适合批量添加固定成功率的合成公式。
调试建议:先在测试服使用GM账号(@GameMaster)刷出材料,反复测试Take和Give命令是否正常扣给,再调整概率数值。

