npc功能设置的核心是同时完成入口配置和对话脚本两步:普通交易、传送、仓库、任务类npc,先在服务端的 `mir200\envir\merchant.txt` 中登记脚本路径、地图编号、坐标、显示名称和外观,再到 `market_def` 目录建立对应脚本;城堡管理、开关城门等管理类npc,则优先使用 `npcs.txt` 与 `npc_def` 中的配置。玩家点击npc后,引擎会按入口记录找到对应脚本,并从 `[@main]` 开始执行。

添加一个普通功能npc时,先复制一份同类型脚本,再修改入口和文件名,能够减少路径、格式或命令不兼容的问题。以0号地图、330、330坐标放置传送员为例,可在 `merchant.txt` 增加一行:`传送员 0 330 330 传送员 0 126 0 0 0`,随后在 `market_def` 中建立与地图编号对应的 `传送员-0.txt`,脚本至少保留 `[@main]` 段落,并加入 `<前往盟重/@go>`、`<关闭/@exit>` 等可点击入口。地图编号必须使用地图代码而不是地图名称,坐标应避开障碍物和安全区重叠位置;外观编号还必须存在于客户端npc素材中,否则可能出现能点击但不显示形象的情况。

交易类npc的功能开关要写在脚本头部,商品库存则放在脚本后部的 `[goods]` 段落。需要购买、出售、修理和仓库功能时,可按引擎支持情况配置 `(@buy @sell @repair @storage)`,再在 `[@main]` 中加入 `<购买物品/@buy>`、`<出售物品/@sell>`、`<普通修理/@repair>`、`<打开仓库/@storage>`;`[goods]` 不要写在 `[@main]` 前面,商品行通常按物品名称、数量、刷新分钟、摆放格位填写,例如 `回城卷 50 5 0`,表示库存数量50、每5分钟刷新、放在第1格。价格比例可使用 `%100` 作为原始价格,`%150` 作为原价的1.5倍;普通玩家适合设置10至20分钟刷新,活动npc可缩短到1至5分钟,但高价值道具应增加等级、金币、材料或任务状态限制。
条件判断应放在具体功能入口内,而不是只依靠npc名称限制玩家。比如传送功能可以设为等级30以上、背包至少保留1格、支付10000金币后执行;强化功能则同时检查装备位置、材料数量和每日次数,任一条件不满足就显示提示并停止后续命令。沙城npc还要确认入口记录中的城堡标志,相关交易或修理可能受到税率、折扣和攻城状态影响;配置中把索引设为沙城npc后,攻城期间npc可能按引擎规则暂时消失,不能只通过修改显示名称解决。设置变色时,常见参数分别控制变色模式、间隔和固定颜色,模式1通常代表名称与身体同时变化,模式2代表身体变化,模式3代表名称变化,间隔可先设为2000毫秒测试。
修改完成后应按备份文件—检查路径—重载npc—进图测试的顺序生效。先备份 `merchant.txt` 和对应脚本,再确认脚本名称、地图代码、坐标、大小写及分隔空格一致,通过m2控制台执行重新加载全部npc;若仍未显示,再重启服务端并重新登录客户端。测试时依次检查npc是否出现、点击是否能打开 `[@main]`、每个按钮是否跳转、金币和物品是否正确扣除、等级不足时是否被拦截、库存是否按设定时间刷新。最常见的失效原因是入口脚本名与 `market_def` 文件名不一致、把 `[goods]` 放错位置、使用了当前引擎不支持的命令,或只改了脚本却没有重新加载npc。