当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

热血传奇GM自定义NPC添加全流程:MerChant.txt注册到Market_Def脚本编写实录

热度:
添加自定义NPC必须同步修改两个核心文件:Mir200\Envir\MerChant.txt注册表与Mir200\Envir\Market_Def\目录下的脚本文件,缺一不可。引擎通过这两个文件的映射关系在指定地图坐标生成交互实体。

一、MerChant.txt字段结构拆解

文件路径:D:\MirServer\Mir200\Envir\MerChant.txt
标准行格式(空格或制表符分隔):

文件名地图号XYNPC名称朝向外观沙城移动间隔税率变色变色间隔固定色

实例解析(盟重330:268坐标添加“装备大师”):

装备大师3330268装备大师080000000

•文件名:装备大师(对应Market_Def\装备大师-3.txt)

•地图号:3(盟重省,必须与MapInfo.txt中[3盟重省]的数字对应,填中文无效)

•XY:330268(地图坐标,需确保该点非障碍物)

•NPC名称:装备大师(头顶显示名)

•朝向:0(0-7对应上右下左等8个方向)

•外观:8(NPC形象码,对应Data\npc.wil素材索引,计算公式:(图片序号÷60)-1,如480号图对应外观7)

•沙城:0(0普通NPC,1沙巴克关联NPC)

•移动:0(0静止,1允许随机移动)

•间隔:0(移动间隔秒数,不移动则填0)

•税率:0(买卖税率,0-100,仅交易类NPC生效)

•变色:0(0不变色,1-3对应闪烁模式)

•变色间隔:0(毫秒,变色切换速度)

•固定色:0(0默认,1-7对应8种系统颜色)

带子目录写法(推荐,便于管理):

盟重省/装备大师3330268装备大师080000000

对应脚本路径:Market_Def\盟重省\装备大师-3.txt

二、Market_Def脚本文件创建

命名规则强制为:MerChant.txt中的文件名-地图号.txt
上例对应:D:\MirServer\Mir200\Envir\Market_Def\装备大师-3.txt
编码要求:ANSI(GBK),UTF-8编码会导致中文乱码,M2日志报脚本解析错误。

三、脚本基础结构编写

最小可用脚本模板:

[@main]
#SAY
欢迎光临装备大师工作室!\
请选择你需要的服务:\
\<装备强化>/@strong\
\<装备升级>/@upgrade\
\<离开>/@exit\

[@strong]
#IF
CHECKLEVEL>35
CHECKITEM裁决之杖1
#ACT
TAKE裁决之杖1
GIVE强攻裁决1
SENDMSG6恭喜!裁决之杖已强化为强攻裁决!
BREAK
#ELSESAY
条件不足!需要等级36且持有裁决之杖。\

[@upgrade]
#IF
CHECKGOLD>100000
CHECKITEM战神盔甲1
#ACT
TAKE金币100000
TAKE战神盔甲1
GIVE天魔神甲1
SENDMSG6升级成功!战神盔甲进化为天魔神甲!
BREAK
#ELSESAY
金币不足10万或缺少战神盔甲!\

[@exit]
#SAY
感谢惠顾,欢迎下次再来!\
#ACT
CLOSE


四、脚本核心指令解析

•[@段名]:脚本标签,@main为入口,@exit为退出,@buy/@sell为系统交易标签

•#SAY:显示文本内容,反斜杠\为换行符

•#IF:条件判断开始,支持多层嵌套

•#ACT:条件满足时执行的操作

•#ELSESAY:条件不满足时显示的内容

•CHECKLEVEL:检测等级

•CHECKITEM:检测背包物品

•CHECKGOLD:检测金币数量

•CHECKGAMEGOLD:检测元宝数量(GOM/GEE引擎)

•TAKE:从背包扣除物品/金币

•GIVE:给予物品

•SENDMSG6:发送系统提示(6为黄色字体)

•CLOSE:关闭对话框

五、交易类NPC脚本(卖装备)


[@main]
#SAY
<购买装备>/@buy\
<出售装备>/@sell\
<修理装备>/@repair\
<特殊修理>/@s_repair\
<离开>/@exit\

[@buy]
#SAY
选择要购买的装备:\

[goods]
屠龙50000000
嗜魂法杖50000000
逍遥扇50000000
圣战项链1000000
法神戒指1000000
天尊手镯1000000
金创药(大)5000
魔法药(大)5000

[goods]段格式:物品名单价库存(0为无限)

六、重载与生效

修改完成后需重载脚本:
1.M2Server控制台→查看→列表信息→重新加载→重新加载NPC脚本
2.或GM角色游戏内输入:@ReloadNpc或@loadnpc
3.重进当前地图即可看到新NPC

七、常见故障排查

1.NPC不显示:
•地图号错误(必须填数字,非地图名)

•坐标在障碍物上(换330268等安全点)

•脚本文件名错误(必须文件名-地图号.txt)

•脚本编码非ANSI(用记事本另存为ANSI)

2.NPC显示但无法对话:
•脚本无[@main]标签

•脚本语法错误(M2日志有报错)

•物品名与StdItems.DB不匹配

3.NPC外观异常:
•外观码超出npc.wil范围

•客户端缺少对应NPC补丁

4.交易窗口打不开:
•未使用@buy/@sell系统标签

•[goods]段物品名错误

•税率设置异常

八、高级脚本技巧

•变量传递:用<$STR(N)>存储玩家输入,<INPUTSTRING(提示变量最小最大)>获取输入

•多条件判断:CHECKITEM+CHECKLEVEL+CHECKGOLD组合验证

•定时功能:DAY/HOUR/MINUTE检测时间

•地图检测:CHECKMEMAP判断玩家所在地图

•职业检测:CHECKJOB区分战法道

•性别检测:CHECKSEX区分男女

•行会检测:CHECKGUILD验证行会成员

•PK值检测:CHECKPKPOINT限制红名操作

九、引擎差异注意

•Hero引擎:变量槽位0-99,物品库为DBC2000的StdItems.db

•GOM引擎:变量槽位0-499,支持CHECKGAMEGOLD元宝检测

•GEE引擎:支持@trading原生交易标签,变量支持数组<$STRARR(NM)>

•翎风引擎:支持CHECKNEWITEM检测新物品,GIVE支持绑定属性

十、脚本调试方法

1.开启M2日志:选项→参数设置→日志→脚本调试勾选
2.使用SENDMSG输出变量值:SENDMSG6变量值:<$STR(0)>
3.简化脚本:先写最小可用版本,逐步添加功能
4.分段测试:每个[@段]单独测试,确保逻辑正确
5.备份脚本:修改前复制原文件,异常时快速回滚

脚本文件修改后无需重启服务端,重载即可生效。复杂NPC建议分多个@段编写,逻辑清晰便于维护。物品名称必须与StdItems.DB完全一致,包括括号和空格。坐标选择需避开传送点、刷怪点,防止NPC被挤掉或遮挡。外观码建议选择常用NPC素材(8-20之间),避免客户端缺失贴图。
[顶部]