传奇按地图列表移动设置方式完整教程与脚本命令详解

来源: 作者: 点击:
按地图列表移动,是指角色按照事先设定的地图顺序,从第一张地图依次移动到下一张,直到走完列表中的最后一张地图。这套功能不依赖NPC对话,不需要玩家逐一点击传送选项,而是由脚本命令控制整个移动序列。核心命令一共三个:batchDelay设定每张地图停留时间,addbatch添加地图列表,batchmove启动移动。下面从命令格式、脚本写法、与常规MAPMOVE的区别、配置要点到常见问题逐一拆解。

## 核心命令与脚本结构

按地图列表移动的脚本段写在QManage.txt或任意NPC脚本文件中,标准写法如下:

```
[@Test]
#IF
#ACT
batchDelay 1
addbatch B102
addbatch B103
addbatch B104
addbatch B105
addbatch B106
addbatch B107
batchmove
```

batchDelay后面的数字表示在每张地图停留的秒数,写1表示每张地图停留1秒后自动切换到下一张。addbatch后面跟的是地图编号,B102、B103这些编号必须与MapInfo.txt中定义的地图代码完全一致。batchmove是启动命令,写在所有addbatch之后,引擎读取已添加的地图列表,从第一张开始依次执行移动。地图编号的顺序决定了移动路线,脚本里先addbatch的B102会先到达,最后addbatch的B107最后到达。

## 与MAPMOVE定点传送的区别

MAPMOVE命令是定点传送,格式为MAPMOVE 地图名 坐标X 坐标Y,一次只传送一个目标位置,执行完毕命令就结束。按地图列表移动则不同,它是一次性写入多个目标地图编号,由batchmove统一启动后按顺序依次执行。MAPMOVE需要坐标参数,batchmove的addbatch只需要地图编号,不写坐标,角色进入每张地图后落在引擎默认的入口位置。

从执行方式看,MAPMOVE是即时生效的一次性传送,batchmove是序列化的多步移动。如果需要在每张地图停留不同时长,batchDelay只能设置统一的停留时间,无法为每一张地图单独设定不同的停留秒数。

## 地图编号的配置来源

addbatch后面填写的地图编号,对应MapInfo.txt中的地图代码字段。MapInfo.txt位于MirServer\Mir200\Envir\目录下,每行定义一个地图,格式为地图代码、地图名称、参数列表。地图代码可以是数字,也可以是字母加数字的组合,B102这样的编号在多数引擎版本中是有效的自定义地图代码。

添加地图时,在MapInfo.txt末尾追加一行,格式为方括号包裹的地图代码和名称,后面跟地图属性参数。例如`[B102 试炼之地]`定义了一个代码为B102、名称为试炼之地的地图。addbatch中引用的地图代码必须在这个文件中有对应的定义,否则角色移动到该步时引擎找不到目标地图,整个移动序列会中断。

## 按地图列表移动的典型应用场景

挂机巡航是最常见的用途。设定一条包含多张刷怪地图的列表,角色自动依次进入每张地图,配合个人定时器在每张地图中执行捡物、打怪等操作,到时间后自动切换到下一张。脚本中将batchDelay设置为60或更长,让角色有足够时间在当前地图活动。

探路和跑图是另一个用途。部分版本的跑图任务要求角色依次到达多个指定地图,使用addbatch将任务地图按顺序排列,batchmove启动后角色自动完成跑图流程,无需玩家手动操作。配合变量记录当前到达了第几张地图,可以判断任务是否全部完成。

## 与延时移动命令的配合

按地图列表移动的每一步之间由batchDelay控制间隔,这个间隔是固定的,无法动态调整。如果需要根据条件判断是否继续移动到下一张,或者在某张地图中触发特定事件后才允许继续,需要在脚本中配合其他命令实现。

TIMERECALL命令用于设定进入某地图的时间限制,格式为TIMERECALL 分钟数,配合BREAKTIMERECALL清除限制。在按地图列表移动的场景中,可以先用TIMERECALL设定一个总时长,batchmove启动后角色在每张地图停留的累计时间不能超过这个限制,超时后引擎强制执行预设的返回动作。

DELAYGOTO命令用于设定延迟跳转,格式为DELAYGOTO 毫秒数 @标签,玩家点击后等待指定毫秒数再跳转到目标标签执行。如果需要在按地图列表移动的某一步之后插入一个延迟操作,可以在对应的脚本段中使用DELAYGOTO,等待一段时间后再继续后续命令。

## 配置要点与参数设置

batchDelay的参数单位是秒,写1表示1秒,写60表示60秒。设置为0或不写参数时,引擎可能使用默认值或直接跳过停留阶段。不同引擎对batchDelay最小值的处理不同,54MAX引擎和GOM引擎都支持设置为1秒,设置过低可能导致角色在上一张地图尚未完全加载时就尝试移动到下一张,出现黑屏或卡位。

addbatch可以添加的地图数量没有硬性上限,但地图列表过长会拉长整个移动流程的总时间。如果列表包含超过20张地图且每张停留60秒,一次完整巡航需要20分钟以上。建议根据实际用途控制列表长度,挂机巡航控制在10张以内,跑图任务按照实际需要的地图数量添加。

batchmove必须写在所有addbatch之后,写在addbatch之前引擎只读到空列表,不会执行任何移动。batchmove执行后,整个地图列表被清空,再次执行需要重新addbatch。如果需要在同一段脚本中多次使用按地图列表移动,每次batchmove之前都要重新addbatch一遍。

## 常见问题排查

batchmove执行后角色停留在原地不动。首先检查addbatch后的地图编号是否在MapInfo.txt中有对应的定义。地图代码拼写错误、大小写不一致、多一个空格都会导致引擎找不到目标地图。其次检查batchmove是否写在了addbatch之前,顺序颠倒时列表为空,移动不会执行。

角色在第一张地图卡住不继续移动。检查batchDelay的数值是否设置过短,角色在1秒内可能还未完成地图加载,切换时出现异常。将batchDelay提高到3到5秒测试。另一个可能的原因是目标地图的MAP文件缺失或损坏,角色无法进入,移动序列在第2步中断。检查MirServer\Mir200\Map目录下是否有对应的地图文件。

地图列表执行到中间某一步中断。中断位置对应的地图编号可能存在问题,逐一核对addbatch中的地图编号与MapInfo.txt中的定义是否完全一致。部分引擎对地图代码有长度限制,过长的自定义代码可能被截断,导致匹配失败。

移动过程中角色弹出错误提示或掉线。这通常是因为addbatch列表中包含了角色等级或权限不足以进入的地图。地图在MapInfo.txt中设置了等级限制参数,角色等级不足时引擎拒绝进入并中断移动。检查目标地图是否设置了NEEDLEVEL等限制参数,在脚本中添加CHECKLEVEL条件判断,等级不足时跳过该地图或提前结束移动。

脚本修改后不生效。按地图列表移动的脚本可以放在QManage.txt的[@Login]段之后,也可以放在NPC脚本中。修改脚本文件后需要在M2引擎中重新加载脚本或重启服务端。如果脚本放在NPC文件中,对应的NPC需要在Merchant.txt中正确注册,NPC的脚本文件名后缀与地图编号一致,否则NPC对话无法触发,脚本中的batchmove也不会执行。