传奇传送瞬间移动触发功能配置教程含NPC卷轴坐标跳点回城强传冷却与防瞬移检测

来源: 作者: 点击:
传送触发按触发源分五类处理:NPC对话传送、物品卷轴传送、地图坐标跳点传送、进入地图自动传送、GM或系统强传。不同引擎命令名会有差别,GOM/GEE常用MAPMOVE,部分版本对玩家或NPC参数用MAPMOVE 地图 X Y,批量用MapMove 地图 X Y,随机用RANDOMMAPMOVE/MOVRANDOM,Hero/Blue可分别用CHANGEPOS/TELEPORT或MoveToMap类写法,实际以所用引擎命令文档为准。所有目标地图号和坐标必须和Mir200\Envir\MapInfo.txt一致,地图号用数字或MapID都行,但脚本里要与MapInfo定义完全相同,坐标避开墙体、怪物刷点、边界。

一、NPC点击瞬间传送

NPC基础配置在Mir200\Envir\Npc.txt或Merchant.txt,格式按“地图 X Y 名称 外观 范围 标志”写。土城传尸王殿示例:

尸王传送 3 330 330 尸王传送员 0 70 0

脚本文件按引擎放QuestDiary或NPC对应目录,名称与Npc.txt一致。通用写法:

[@main]
IF

ACT

SENDMSG 6 选择要传送的地图
SAY

<进入尸王殿> <进入沃玛> <关闭>

[@进入尸王殿]
IF

CHECKLEVELEX > 30
ACT

MAPMOVE 18 120 130
SENDMSG 6 已传送至尸王殿
BREAK
ELSEACT

MESSAGEBOX 需要30级以上才可进入
BREAK

[@进入沃玛]
IF

CHECKGOLD > 5000
ACT

TAKEGOLD 5000
MAPMOVE 9 10 10
SENDMSG 6 扣除5000金币,已传送沃玛
BREAK
ELSEACT

SENDMSG 6 金币不足,无法传送
BREAK

地图号18、9仅作示例,实际查MapInfo;尸王殿安全落点用120 130还是其它坐标,按服务端尸王殿出生点改。范围70表示靠近NPC 70格可对话,标志0按普通NPC处理。改完GOM/GEE可在M2重载NPC脚本,老版本重启NPC服务更稳。

二、卷轴与回城物品传送

普通回城卷走物品使用触发。GOM/GEE可在QFunction-0.txt写使用段,按物品ID或名称判断;GEE也可在Item.txt直接给回城戒指附加@MAPMOVE(地图X坐标Y坐标),例如回城到比奇3号330 330写成@MAPMOVE(3330330),改完M2重新加载物品数据库即可。

随机传送卷弹地图选择,GEE可用SELECTMAP:

[@UseRandScroll]
IF

CHECKITEM 随机传送卷 1
ACT

TAKE 随机传送卷 1
SELECTMAP 3 330 330 比奇 9 10 10 沃玛 17 30 30 祖玛
SENDMSG 6 请选择目标地图
BREAK
ELSEACT

SENDMSG 6 背包没有随机传送卷
BREAK

SELECTMAP后按“地图 X Y 名称”重复列,引擎不同参数顺序可能调整。只做全图随机不弹窗,用RANDOMMAPMOVE 地图 X1 Y1 X2 Y2,落点在矩形范围内随机;没有该命令的引擎用MOVRANDOM X、MOVRANDOM Y先算坐标再MAPMOVE。回城卷固定点直接MAPMOVE安全区,不消耗随机算法,比随机卷稳定,适合死亡保护、挂机脱困。

传送戒指在M2选项-游戏命令-普通命令可改触发命令,默认常见为@move;物品装备-传送里设使用间隔秒数,例如填60表示60秒冷却一次。脚本自己做冷却用变量更细:

[@UseTeleRing]
IF

EQUAL <$STR(N90)> 0
CHECKITEM 传送戒指 1
ACT

SET N90 1
DELAYGOTO 60000 @ClearTeleCD
MAPMOVE 3 330 330
SENDMSG 6 传送戒指触发,回比奇安全区
BREAK
ELSEACT

SENDMSG 6 传送戒指冷却中
BREAK

[@ClearTeleCD]
IF

ACT

SET N90 0
BREAK

N90用角色变量,DELAYGOTO 60000表示6万毫秒后清冷却;多开小号共CD要换账号变量或M2全局变量。

三、坐标跳点自动传送

地图内踩点触发走MapEvent或坐标事件。Mir200\Envir下建MapEvent.txt,格式按引擎写“地图号 X Y 范围 触发类型 脚本标签”;M2要在选项-功能设置-地图事件启用坐标触发,改完重启或重载。

示例猪6进猪7跳点:

[@Pig6ToPig7]
IF

CHECKLEVELEX > 79
ACT

MAPMOVE 31 60 80
SENDMSG 0 玩家[%s]通过跳点进入猪7
BREAK
ELSEACT

MESSAGEBOX 需要80级方可进入猪7
BREAK

31是猪7示例号,60 80是落点;范围写1表示站到该格触发,写3表示3x3区域触发。若加物品条件:

IF

CHECKLEVELEX > 79
CHECKITEM 猪洞通行证 1
ACT

MAPMOVE 31 60 80
BREAK

不触发先查四样:MapInfo里31号是不是猪7、坐标是不是可行走、MapEvent.txt是否放对目录、M2坐标触发是否勾启。传过去又回原图,查目标地图权限、落点是否出界、是否和另一跳点重叠。

四、进入地图自动触发

玩家进某图自动传子图、安全点、活动出生点,用进入事件。GOM/GEE可在QFunction或MapQuest写OnMapEnter类标签;Hero按本版进入地图脚本;Blue/LEG用QuestDiary地图触发段。示例思路:

[@OnEnterBochu]
IF

CHECKMAP 3
ACT

SENDMSG 6 进入比奇,可在此接取新手传送
BREAK

做“进活动图直接分到各线/各点”用随机坐标:

IF

CHECKMAP 活动图编号
ACT

MOVRANDOMX 50 150
MOVRANDOMY 50 150
MAPMOVE 活动图编号 <MOVRANDOMX> <MOVRANDOMY>
BREAK

MOVRANDOMX/Y命令名按引擎替换;没有就用服务端先算随机数再传。进入地图触发别和NPC传送互调,否则会死循环:例如进A图自动传B图,B图进入事件又传A图,玩家会来回跳。用变量标记“已分配”可避免,第一次进图传目标点并写变量,再次进图不重传。

五、死亡回城与读秒传送

死亡事件标签各引擎不同,常见[@PlayDie]、[@PlayerDie]、[@Death]。基础自动回城:

[@PlayDie]
IF

ACT

SENDMSG 6 3秒后复活回城
DELAYGOTO 1000 @Die2
BREAK

[@Die2]
IF

ACT

SENDMSG 6 2秒
DELAYGOTO 1000 @Die1
BREAK

[@Die1]
IF

ACT

SENDMSG 6 1秒
DELAYGOTO 1000 @AutoBack
BREAK

[@AutoBack]
IF

ACT

GmExeCute 复活 Self
MAPMOVE 3 330 330
SENDMSG 6 已复活并传送比奇安全区
BREAK

DELAYGOTO 1000为1秒;复活命令若引擎不支持GmExeCute 复活 Self,换本版复活命令。红名村、攻沙、副本不希望自动回主城,加地图判断提前BREAK:

IF

ISONMAP 攻沙地图号
ACT

SENDMSG 6 攻沙死亡按本图复活规则
BREAK

六、GM强传与系统批量传送

GM把某人瞬间移动用后台命令,GOM常见@move 地图 X Y或MAPMOVE 玩家名 地图 X Y;GEE可用MOVETOMAP 玩家名 地图 X Y;Hero可用CHANGEPOS;Blue可用TELEPORT,具体看命令表。 把指定地图所有人强传,机器人脚本定时执行:

AutoRunRobot里:
[AutoRunRobot]
SEC=1 20:00:00 @ForceMoveHouse

RobotManage里:
[@ForceMoveHouse]
IF

ACT

MapMove 仓库地图号 新图号 100 100
SENDMSG 6 整点将仓库玩家转移至新图
BREAK

单地图批量用IsOnMap/CHECKMAP判断再MapMove;超过几十人避免同坐标落点,用MOVRANDOM分散:

IF

IsOnMap 3
ACT

MOVRANDOMX 300 360
MOVRANDOMY 300 360
MapMove 3 <MOVRANDOMX> <MOVRANDOMY>
BREAK

按引擎命令差异:GOM/GEE用MapMove,Blue用MoveHum,HGE用MoveMapHuman,Hero用MOVE加玩家名;机器人配置路径多为Mir200\Envir\Robot_def或Scripts\机器人脚本,改完@reloadrobot或重启机器人。

七、冷却、次数、条件限制

传送功能最怕被脚本号高频用。按物品、NPC、玩家分别限:

卷轴日次数:
IF

SMALL <$STR(N50)> 10
CHECKITEM 随机传送卷 1
ACT

INC N50 1
TAKE 随机传送卷 1
RANDOMMAPMOVE 3 300 360 300 360
BREAK
ELSEACT

SENDMSG 6 今日随机卷已达10次
BREAK

N50用日变量,零点或登录脚本清0。NPC付费传送用CHECKGOLD/CHECKGAMEGOLD扣费,不扣费就传会成免费横移工具。VIP/转生/行会专属传送加判断:

IF

CHECKREBIRTH >= 1
CHECKLEVELEX > 50
ACT

MAPMOVE 专属图 50 50
BREAK
ELSEACT

SENDMSG 6 需转生1次且50级进入
BREAK

随机传送全局冷却可在Setup.txt查RandomMoveCD,设3到5秒抑制连点;没有该字段用脚本变量按$TIMER记录上次使用时间,间隔不足直接BREAK。

八、防瞬移、加速、坐标伪造

合法传送走脚本和技能,违规瞬移要走服务端检测。思路用上一坐标与当前坐标差、时间间隔、移动速度、封包频率综合判断:

RobotManage自动检测:
AutoRunNPC SEC=1 @CheckMove

[@CheckMove]
IF

CheckMoveSpeed 5
ACT

SENDMSG 6 移动超速,请关闭加速工具
Kick 1
BREAK

IF

CheckPosDiff 50
NOTCHECKITEM 随机传送卷
NOTCHECKITEM 回城卷
ACT

SENDMSG 6 坐标异常瞬移,已踢线
Kick 1
BREAK

CheckMoveSpeed、CheckPosDiff为部分反挂脚本示例命令,具体名称按引擎反挂模块来;CheckPosDiff 50表示单位时间坐标差超过50格按异常处理,前面用NOTCHECKITEM排除正在用随机卷/回城卷的玩家,避免误踢。 封包层做时间戳、序列号、CRC/AES校验,伪造坐标包直接丢弃并断线;服务端只相信自身移动模拟结果,不信任客户端上报的最终坐标。 穿墙检测用地图可行走标记,玩家新坐标落在墙体、水域、未开放区域时回退上一合法坐标并写日志。击退、合击位移、合法瞬移技能要加白名单,否则会被速度差误判。

九、常见不传送排查

点NPC没反应:Npc.txt名称与脚本[@标签]不一致、脚本文件没放QuestDiary对应目录、范围太小走近没触发、M2未重载NPC。
MAPMOVE后不动:地图号错、坐标在墙里、MapInfo该图未加载、脚本写MAPMOVE但引擎要求MapMove/MOVETOMAP。
随机卷用了不弹图:SELECTMAP命令不支持就换RANDOMMAPMOVE;物品未设可使用、QFunction未挂使用段、GEE Item.txt回城格式写错。
坐标跳点不触发:MapEvent.txt目录错、M2地图事件未启用、触发范围0但玩家站邻格、标签名和脚本不一致。
强传批量失败:机器人未重载、MapMove命令名按引擎错配、目标图禁入、所有人同坐标导致叠怪卡死,改用MOVRANDOM分散。
回城死循环:进入地图事件又把玩家传回触发点,加已处理变量或把落点放非触发安全区。
冷却不生效:变量名被其它脚本占用、DELAYGOTO未执行、日变量没重置、M2物品间隔和脚本双重设置互相覆盖。

十、推荐落地结构

普通服保留三类传送足够:主城NPC集中传各大地图,收费图单独NPC做金币/元宝判断;随机卷、回城卷做物品触发并设全局冷却;活动图、尸王殿、猪7类用坐标跳点加等级/物品条件。合击服主体和英雄分别判断,英雄独立传送用英雄变量,不跟主体共用同一MAPMOVE参数。防瞬移只开移动速度、坐标差、封包校验三层,合法卷轴/回城/技能位移全部白名单;机器人强传仅用于活动整点、合区迁移、异常地图清场,不对正常挂机图定时强拉。所有MapInfo、Npc.txt、QFunction、MapEvent、RobotManage改前备份,先单号测试NPC、卷轴、跳点、死亡回城、强传各一次,再开小范围多人压力测试。