传奇延时移动地图脚本命令详解

来源: 作者: 点击:
延时移动地图的核心需求分三种场景:进入地图后限定停留时间、点击NPC后延迟几秒传送、按地图列表逐张循环移动。每种场景对应的命令不同,参数单位也存在引擎差异。以下按命令逐一拆解。

## TIMERECALL 限时地图与自动传回

TIMERECALL用于设定玩家进入某地图后的停留时间上限,时间到达后自动传回原地图。命令格式为TIMERECALL 时间(分钟),数值单位为分钟。典型用法是配合mapmove命令在进入地图的同时设定限时。

[@main]
#IF
#ACT
TimeRecall 30
mapmove 0159
break

上述脚本表示传送到0159号地图,进入后限时30分钟,时间到自动传回原处。GOM引擎对该命令做了扩展,格式变为TimeRecall 时间(分) 换地图停止执行(0-不停止 1-停止),同时提供变量<$RecallRemainingTime>用于显示剩余秒数。

需要在限时未到之前主动取消传送的,使用BREAKTIMERECALL命令,该命令无参数,执行后清除当前角色身上所有TIMERECALL设定的延时传送。GOM引擎中还可以用BREAKTIMERECALL命令在NPC对话中给玩家提供提前离开地图的选项。

## DELAYGOTO 延迟跳转与时间单位差异

DELAYGOTO是延迟跳转命令,执行后脚本暂停指定时间再跳转到目标标签。该命令的时间单位存在引擎差异:部分引擎按秒计算,部分引擎按毫秒计算。GOM引擎的完整格式为DELAYGOTO 时间(毫秒) 触发字段 换地图是否删除此延时(0或为空时=不删除 1=删除),其中DELAYGOTO 20 @火龙珠表示20毫秒后跳转到@火龙珠标签。

而部分引擎中DELAYGOTO 5 @Next表示延迟5秒后跳转。如果脚本在其他引擎上运行正常,换到GOM后延迟时间大幅缩短,首先检查该引擎的时间单位是否为毫秒。

传送员延迟传送是DELAYGOTO最常见的应用场景。脚本写法如下:

<传送到盟重/@DelayGoto>
<清除延迟/@ClearDelayGoto>
[@DelayGoto]
#ACT
DELAYGOTO 3000 @DelayLabel
[@DelayLabel]
#ACT
mapmove 3 330 330

玩家点击传送选项后等待3秒(3000毫秒)再执行mapmove传送。这种延迟设计的目的是防止挂机辅助工具瞬间完成传送操作。

换地图是否删除延时的第三个参数在涉及地图切换的脚本中很关键。设置为1时,玩家在延迟期间切换地图,该延时会被自动删除,不会在玩家到达新地图后意外触发传送。

## batchDelay与batchmove 按地图列表循环移动

需要让角色从第一张地图开始,一张一张移动到列表中的最后一张地图,使用batch系列命令。核心命令有三个:batchDelay设定每张地图之间的暂停时间,addbatch逐条添加步进地图名,batchmove启动整个循环移动流程。

脚本范例:

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

batchDelay 1中的参数1表示每张地图停留1个单位时间(通常为秒),addbatch后的B102到B106是地图编号,batchmove命令启动后角色会按照B102→B103→B104→B105→B106的顺序依次移动,每张地图停留batchDelay设定的时间后自动进入下一张。该命令组在GOM引擎和MaxM2引擎中均可使用。

## 引擎命令兼容性对照

TIMERECALL在GOM、GEE、Hero、飞霜等主流引擎中均支持,单位为分钟。GOM扩展了换地图停止参数和剩余时间变量。DELAYGOTO在GOM中单位为毫秒,在部分老引擎中单位为秒,移植脚本时必须确认目标引擎的时间单位。BREAKTIMERECALL在GOM和GEE中通用,用于清除限时传送。batch系列命令在GOM、MaxM2引擎中支持,用于地图列表循环移动。

调试时常见的故障是延时命令不触发。排查顺序为:确认脚本中的标签名拼写与跳转目标完全一致,检查#ACT段落前是否有正确的#IF条件,确认目标引擎中该命令的时间单位参数格式。GOM中还可以在M2控制台查看延时命令的执行日志,确认命令是否被正确解析。