传奇三卖马脚本编写与配置方法详解

来源: 作者: 点击:
传奇“三卖马”指在比奇、盟重、封魔三个主城设置马夫NPC,实现跨地图快速传送。该功能通过脚本调用MapMove指令完成,需配置NPC对话、地图编号及坐标。以下以标准Hero引擎为例说明完整实现步骤。

第一步:添加马夫NPC

在 MirServerMir200EnvirMarket_def 目录下新建文件 Q1001.txt(ID 1001为示例),内容如下:

[@main]
欢迎使用三城快马!
  

对应标签跳转:
[@Biqi]
ACT
MapMove 0 300 300

[@Mengzhong]
ACT
MapMove 3 330 330

[@Fengmo]
ACT
MapMove 5 350 350

地图编号说明:
0:比奇城(通常坐标300,300为中心)
3:盟重省(安全区常见330,330)
5:封魔谷(入口附近350,350)

第二步:在三个地图放置NPC

编辑 MirServerMir200Envir!NPC.txt,添加以下三行:

; 比奇城马夫
0 310 310 1001 马夫

; 盟重省马夫
3 340 340 1001 马夫

; 封魔谷马夫
5 360 360 1001 马夫

格式为:地图编号 X Y NPCID 显示名称。坐标需位于安全区且不被遮挡。

第三步:限制使用条件(可选)

若需收取金币或限制等级,修改脚本如下:

[@Biqi]
IF
CHECKGOLD > 1000
CHECKLEVEL > 10
ACT
TakeGold 1000
MapMove 0 300 300
SENDMSG 1 "已扣除1000金币,传送到比奇城!"
ELSEACT
SENDMSG 1 "需要10级以上且携带1000金币才能使用快马!"

支持的判断命令包括:
CHECKGOLD:检查金币数量
CHECKLEVEL:检查角色等级
CHECKITEM:检查背包是否有指定物品(如“马牌”)

第四步:处理特殊地图返回逻辑

部分版本封魔谷存在多层(如D5001为副本),需确保返回主城时指向正确地图。例如从封魔副本回城:

[@BackToCity]
IF
CHECKMAP D5001
ACT
MapMove 5 350 350

避免直接跳转到0号地图导致位置错误。

第五步:客户端显示适配

NPC名称“马夫”需在客户端 !NpcName.txt 中注册,否则显示乱码。添加:

1001=马夫

路径通常为 ClientShare!NpcName.txt。

常见问题排查

点击无反应:检查Q1001.txt是否存放在Market_def目录,且文件编码为ANSI;
传送后卡墙:调整目标坐标,避开障碍物(可用GM命令@MapInfo查看地形);
多端显示异常:手机端需同步更新NPC坐标,部分引擎对移动端有独立配置;
脚本不生效:重启M2Server,确保加载最新脚本。

扩展功能

增加白日门、苍月岛:按相同模式添加地图编号7、9;
自动寻路整合:结合AutoPath脚本,实现点击NPC后自动跑向马夫;
节日特效:在[@main]中加入Effect 10 1播放传送动画。

三卖马脚本核心在于统一NPC调用与准确的地图坐标匹配。无需复杂逻辑,重点保证各城坐标有效、文件路径正确、服务端及时加载。适用于所有基于Mir2架构的传奇版本。