传奇脚本里“加载地图跳转”,本质是先写好地图跳转段落,再在NPC对话框、按钮、事件脚本里通过goto、#call、超链接、延迟跳转等方式触发传送。不同引擎命令略有差异,但核心结构都是:段落标记、条件判断、执行命令、地图传送。
最基础的跳转结构
[@main]
SAY
你要去哪里?\
<去比奇/@bjmove>\
<去盟重/@mzmove>\
<关闭/@exit>
[@bjmove]
IF
ACT
map 3
break
[@mzmove]
IF
ACT
mapmove 3 330 330
break
这里map后面跟地图编号,会把玩家传到该地图随机坐标;mapmove后面跟地图编号、X坐标、Y坐标,会传送到指定点位。
带条件扣费的传送写法
[@bjmove]
IF
CHECKGOLD 1000
ACT
TAKE GOLD 1000
map 3
SENDMSG 6 你已传送到比奇城。
break
ELSESAY
你的金币不足1000,无法传送。
这种写法适合做传送员、传送卷轴、地图入口。检测条件通过后,再执行扣费和传送,避免误扣。
带等级、物品、背包检测的写法
[@bjmove]
IF
CHECKLEVEL 35
CHECKITEM 传送凭证 1
CHECKBAGGAGE
ACT
TAKE 传送凭证 1
mapmove 3 330 330
break
ELSESAY
等级不足35级、缺少传送凭证或背包已满。
CHECKBAGGAGE用于检测背包是否已满,部分引擎也支持CHECKBAGSIZE检测剩余空格。
使用超链接跳转的写法
[@main]
SAY
请选择传送地点:\
<比奇/@bjmove>\
<盟重/@mzmove>\
<关闭/@exit>
超链接里的/@bjmove必须对应下方段落名。如果段落名写错,点击后不会跳转。段落名不要用中文和特殊符号,建议用英文或数字。
使用goto跳转的写法
[@main]
IF
CHECKLEVEL 50
ACT
goto @highmove
ELSESAY
等级不足50级。
[@highmove]
ACT
mapmove 5 100 100
break
goto适合把逻辑拆开写。比如先检测条件,再跳转到对应段落执行扣费、传送、提示。不要写太深的多层goto循环,容易增加服务端负担。
使用#call调用子脚本的写法
[@main]
IF
CHECKGOLD 500
ACT
TAKE GOLD 500
call [传送子脚本.txt] @bjmove
ELSESAY
金币不足。
call适合把多个地图的传送逻辑放到独立文件里,方便维护。路径要与服务端实际文件位置一致。
延迟跳转写法
[@entermap]
ACT
mapmove 100 100 100
DELAYGOTO 10000 @backcity
break
[@backcity]
ACT
mapmove 3 330 330
SENDMSG 6 你已返回盟重省。
DELAYGOTO可以实现限时停留。比如进入某个地图后,10秒后自动传回。适合做副本入口、限时地图、活动地图。
死亡回城或事件触发写法
[@PlayDie]
ACT
DELAYGOTO 3000 @revive
break
[@revive]
ACT
MAPMOVE 3 330 330
SENDMSG 6 你已死亡返回盟重。
这类写法通常放在QFunction-0.txt等事件触发脚本里。不同引擎触发标签可能不同,需要对照当前引擎文档确认。
多地图选择跳转写法
[@main]
SAY
请选择传送地点:\
<祖玛七层/@zm7>\
<赤月峡谷/@cy>\
<幻境/@hj>\
<关闭/@exit>
[@zm7]
IF
CHECKLEVEL 40
ACT
mapmove 40 200 200
break
ELSESAY
等级不足40级。
[@cy]
IF
CHECKLEVEL 45
ACT
mapmove 50 150 150
break
ELSESAY
等级不足45级。
[@hj]
IF
CHECKITEM 幻境凭证 1
ACT
TAKE 幻境凭证 1
mapmove 60 100 100
break
ELSESAY
缺少幻境凭证。
每个地图单独写一个段落,逻辑更清晰。后期增加地图时,只需复制段落并修改地图编号和条件。
动态坐标跳转写法
[@randommove]
ACT
movr N1 10
movr N2 10
mapmove 3 <STR(N1)> <STR(N2)>
break
movr可以生成随机数,配合mapmove能实现随机坐标传送。部分引擎变量命名规则不同,使用前要先确认当前引擎支持的变量范围。
地图编号与地图名的区别
map和mapmove后面通常使用地图编号,例如3、40、50。地图编号需要在服务端地图配置文件中确认,不同版本编号可能不同。有些版本也支持使用地图名,但必须保证地图名与服务端配置一致,否则传送会失败。
常见报错排查
点击无反应,多数是段落名与超链接不一致,或者脚本没有重新加载。
传送失败,多数是地图编号错误、地图文件缺失、地图参数未配置。
扣费后未传送,通常是扣费写在检测之前,或者脚本中缺少break导致逻辑继续执行。
脚本修改后未生效,需要在M2控制台重新加载NPC脚本,部分老引擎需要重启服务端。
文件编码也要注意,NPC脚本建议使用ANSI编码保存,UTF-8容易出现乱码。脚本路径、文件名、段落名都要保持一致,超链接中的/@段名必须与[@段名]完全匹配。
传奇传送脚本加载地图跳转写法:段落跳转、条件扣费、map与mapmove指令完整示例
来源:
作者:
点击:

