Mirserver
MerChant.txt
Npc商人配置文件,也是入口文件
文件作用
MerChant.txt 用于定义地图中的 NPC 入口信息。
每一行记录一个 NPC,主要控制以下内容:
- NPC 使用哪一套脚本
- NPC 出现在什么地图和坐标
- NPC 在游戏中的显示名称
- NPC 使用哪一个形象
- NPC 是否属于沙巴克
- NPC 是否允许移动和变色
玩家点击 NPC 后,引擎会根据当前行的配置定位到 Market_Def 目录中的实际脚本文件,并从 [@Main] 开始执行。
列说明
MerChant.txt 一行最多包含 12 列:
| 列序 | 字段 | 说明 |
|---|---|---|
| 1 | 脚本地址 | Market_Def 下的相对脚本路径,不带 .txt |
| 2 | 地图名称 | 地图编号或地图代码,同时参与脚本文件名拼接 |
| 3 | X坐标 | NPC 所在横坐标 |
| 4 | Y坐标 | NPC 所在纵坐标 |
| 5 | NPC名称 | 游戏中显示的 NPC 名称 |
| 6 | 标志 | NPC 标记参数 |
| 7 | 形象 | NPC 外观编号,可结合 NPC形象 对照查看 |
| 8 | 是否属于沙巴克 | 0 为否,1 为是 |
| 9 | 是否允许移动 | 0 为否,1 为是 |
| 10 | 移动间隔 | NPC 移动间隔 |
| 11 | 是否变色 | 0 不变色,1 循环变色,2 固定颜色 |
| 12 | 变色速度或固定颜色 | 变色模式对应的速度或颜色值 |
基础示例
下面这一行表示在地图 3 的 340,340 坐标放置一个名为“综合服务员”的 NPC:
土城服务NPC/综合服务 3 340 340 综合服务员 0 8 0 0 0 0 0
对应字段含义如下:
| 字段 | 值 |
|---|---|
| 脚本地址 | 土城服务NPC/综合服务 |
| 地图名称 | 3 |
| X坐标 | 340 |
| Y坐标 | 340 |
| NPC名称 | 综合服务员 |
| 标志 | 0 |
| 形象 | 8 |
| 是否属于沙巴克 | 0 |
| 是否允许移动 | 0 |
| 移动间隔 | 0 |
| 是否变色 | 0 |
| 变色速度或固定颜色 | 0 |
实际脚本定位规则
MerChant.txt 第 1 列并不是完整脚本文件路径,而是 Market_Def 下的相对脚本地址。
实际执行文件按下面的规则拼接:
Mir200\Envir\Market_Def\脚本地址-地图名称.txt
以上面的示例为例:
脚本地址:土城服务NPC/综合服务
地图名称:3
实际执行的脚本文件为:
Mir200\Envir\Market_Def\土城服务NPC\综合服务-3.txt
如果第 2 列使用的是地图代码而不是数字,规则保持不变。例如地图名称写成 SYZD,实际脚本文件名后缀也会使用 SYZD。
执行入口
NPC 对应脚本文件被定位后,引擎会从 [@Main] 开始执行。
也就是说,[@Main] 是 NPC 首次对话入口,通常用于输出主菜单、说明文字和可点击按钮。
示例:
[@Main]
#SAY
请选择功能\
<传送服务/@TeleportService>\
<仓库服务/@WarehouseService>
这段脚本的含义是:
- 玩家点击 NPC 后,先进入
[@Main] #SAY输出 NPC 对话内容<传送服务/@TeleportService>表示点击“传送服务”后跳转到[@TeleportService]<仓库服务/@WarehouseService>表示点击“仓库服务”后跳转到[@WarehouseService]
返回主菜单
从 [@Main] 跳到其他标签后,脚本不会自动回到 [@Main]。
如果某个功能执行完成后需要重新显示主菜单,应在对应标签中显式写 GOTO @MAIN。
示例:
[@Main]
#SAY
请选择功能\
<传送服务/@TeleportService>
[@TeleportService]
#ACT
MAPMOVE 3 330 330
GOTO @MAIN
这段脚本的执行顺序如下:
- 玩家点击 NPC,进入
[@Main] - 点击“传送服务”后跳转到
[@TeleportService] [@TeleportService]执行传送逻辑GOTO @MAIN把流程重新切回主菜单
如果不写 GOTO @MAIN,脚本只会继续按当前标签后面的内容执行,不会自动返回主入口。
使用建议
- 第 1 列脚本地址建议按目录分组,例如
土城服务NPC/综合服务 - 第 2 列地图名称建议与实际地图编号或地图代码保持一致
- 同一套 NPC 脚本如果要在不同地图复用,通常需要分别准备
脚本地址-地图名称.txt - 标签名建议使用业务语义明确的命名,例如
[@TeleportService]、[@WarehouseService] - 需要显示主菜单时,统一在
[@Main]中输出按钮和说明 - 需要回到主菜单时,显式写
GOTO @MAIN
