热血传奇MerChant.txt添加卖装备NPC全教程:字段拆解与Market_Def脚本实录

来源: 作者: 点击:
添加卖装备NPC要动两个地方:Envir\MerChant.txt 注册行 + Envir\Market_Def\ 下脚本文件,缺一个游戏里不显形,改完不重载也不生效。

一、MerChant.txt 行格式(Hero / Blue / GOM / GEE 通用骨架)
路径:D:\MirServer\Mir200\Envir\MerChant.txt
标准一行字段(空格分隔):
脚本路径/文件名 地图编号 X Y NPC显示名 方向 外观码 是否沙城 是否移动 移动间隔 税率(可选) 变色参数(可选)

例:在盟重(地图3)坐标 330 268 放一个“装备商人”
装备商人 3 330 268 装备商人 0 8 0 0 0 0
• 第1项「装备商人」= Market_Def 下脚本主名(实际文件叫 装备商人-3.txt)

• 第2项 3 = 地图编号,必须和 MapInfo.txt 里 [3 盟重省] 对上,写名称无效

- 第3/4项 330 268 = 地图内坐标,超出边界不显示
• 第5项 装备商人 = 游戏里头顶名字

• 第6项 0 = 面向方向 0-7

• 第7项 8 = APPR 外观码,对应客户端 npc.wil / npc1.wil / npc2.wil 素材;算法按60张一组:(图序号÷60)-1,如1740→28

- 第8项 0 = 是否沙城(1=沙巴克相关)
• 第9项 0 = 是否移动

• 第10项 0 = 移动间隔秒

• 后面可追 税率 / 变色模式 1-3 / 变色间隔ms / 固定色0-7,不需要留0

带子目录写法(脚本放 Market_Def\盟重省\ 下):
盟重省/装备商人 3 330 268 装备商人 0 8 0 0 0 0
对应脚本文件:Market_Def\盟重省\装备商人-3.txt

二、Market_Def 脚本文件建立
命名强制规则:MerChant.txt 第1项名 + “-” + 地图编号 + .txt
上例 → D:\MirServer\Mir200\Envir\Market_Def\装备商人-3.txt
编码必须 ANSI(GBK),UTF-8 中文乱码、NPC 读不到脚本

三、卖装备NPC脚本最小可用模板(金币购买)
[@main]
SAY

欢迎来到装备商铺,选择你要购买的物品:\
\<购买装备>/@buy\
\<出售物品>/@sell\
\<离开>/@exit\

[@buy]
SAY

下方选择需要购买的装备:\


; [goods] 段格式:物品名 单价(金币) 库存(0=无限)
[goods]
木剑 100 0
铁剑 500 0
青铜剑 1200 0
海魂 3000 0
半月 5000 0
凌风 8000 0
布衣(男) 200 0
布衣(女) 200 0
轻型盔甲(男) 1500 0
轻型盔甲(女) 1500 0
魔法头盔 6000 0
金项链 4000 0
小手镯 800 0
六角戒指 1000 0
金创药(小量) 50 0
魔法药(小量) 50 0

[@sell]
SAY

把要卖的装备拖给我估价。\

说明:
• @buy @sell 是引擎内置交易标签,写在 [@main] 里用 <文字>/@buy 调出原生商店窗口

• [goods] 段物品名必须和 Mud2\DB\StdItems.db(或 SQL 物品表)完全一致,错字不显示

• 单价单位默认金币;要收元宝把物品单价写元宝值并在 M2 选项里切货币类型,或改脚本用 CHECKGAMEGOLD + TAKE 方式硬扣(GOM/GEE 用 GAMEGOLD,Hero 用 GOLD)

四、用变量硬扣元宝/金币的自定义卖装写法(不带原生商店窗)
[@main]
SAY

<购买 裁决之杖 500元宝>/@buy_luyue\
<购买 骨玉权杖 500元宝>/@buy_guyu\
<离开>/@exit\

[@buy_luyue]
IF

CHECKGAMEGOLD > 499
ACT

TAKE 元宝 500
GIVE 裁决之杖 1
SENDMSG 6 成功购买裁决之杖!
BREAK
ELSESAY

元宝不足500,无法购买。\

[@buy_guyu]
IF

CHECKGAMEGOLD > 499
ACT

TAKE 元宝 500
GIVE 骨玉权杖 1
SENDMSG 6 成功购买骨玉权杖!
BREAK
ELSESAY

元宝不足500,无法购买。\

五、重载生效(不改这个进游戏看不到)
M2Server → 查看 → 列表信息 → 重新加载 → 重新加载NPC脚本;或 GM 权限10角色游戏内输 @ReloadNpc / @loadnpc,重进地图即可

六、常见不显示/不卖货排错
1. MerChant.txt 地图编号写成“盟重省”中文 → 必须写 3,查 MapInfo.txt 头部数字
2. 脚本名写成 装备商人.txt 没带 -3 → 引擎按 “名-地图号.txt” 找文件,找不到当空NPC
3. StdItems.db 没该物品 → [goods] 里不刷出来
4. 外观码 8 在客户端 npc.wil 没这图 → NPC 显示空白方块,换码或补 npc 补丁
5. 脚本存成 UTF-8 → 中文变乱码,M2 日志报脚本解析错,改 ANSI 重存
6. 坐标在墙里/边界外 → 客户端不渲染,换 330 268 这类安全区附近点
7. Hero 引擎 DBC 别名 HeroDB 路径错 → 整个 NPC 系统起不来,先确认 DBC2000 配置

七、GEE 原生商店扩展(带 @trading 标签)
[@main]
SAY

<买卖装备>/@trading\
<离开>/@exit\

[@trading]
SAY

自由买卖:\

[goods]
屠龙 1000000 0
嗜魂法杖 1000000 0
逍遥扇 1000000 0
圣战头盔 200000 0
法神项链 200000 0
天尊戒指 200000 0

GEE 下 [goods] 段配合 @trading 直接出买/卖/修理一体窗口,比 @buy 更全,修理标签再补 @repair @s_repair 即可