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地图名称地图编号或地图代码,同时参与脚本文件名拼接
3X坐标NPC 所在横坐标
4Y坐标NPC 所在纵坐标
5NPC名称游戏中显示的 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

这段脚本的执行顺序如下:

  1. 玩家点击 NPC,进入 [@Main]
  2. 点击“传送服务”后跳转到 [@TeleportService]
  3. [@TeleportService] 执行传送逻辑
  4. GOTO @MAIN 把流程重新切回主菜单

如果不写 GOTO @MAIN,脚本只会继续按当前标签后面的内容执行,不会自动返回主入口。

使用建议

  • 第 1 列脚本地址建议按目录分组,例如 土城服务NPC/综合服务
  • 第 2 列地图名称建议与实际地图编号或地图代码保持一致
  • 同一套 NPC 脚本如果要在不同地图复用,通常需要分别准备 脚本地址-地图名称.txt
  • 标签名建议使用业务语义明确的命名,例如 [@TeleportService]、[@WarehouseService]
  • 需要显示主菜单时,统一在 [@Main] 中输出按钮和说明
  • 需要回到主菜单时,显式写 GOTO @MAIN

相关阅读