编组传送脚本多用于组队玩家批量跳转地图,区别于单人传送命令,脚本需要先判断组队状态、队员范围、坐标权限,再执行批量传送,GOM、GEE、HERO引擎语法略有差异,编写时需要对应引擎命令,避免执行报错。
先理清编组传送基础逻辑,脚本触发来源可以是NPC对话、物品双击、地图触发、按钮点击。执行流程分为多步,第一步检测调用者是否拥有队伍,第二步遍历队伍内所有队员,第三步判断队员是否满足传送条件,包括地图限制、等级、身上buff、是否处于战斗状态,第四步对符合条件的角色执行地图跳转,第五步执行传送后的状态重置与消息提示。
HERO引擎编组传送基础写法,使用GROUPMOVE命令完成整队传送,基础格式为GROUPMOVE 地图编号 X Y,该命令会将调用者所在队伍全部成员传送至指定坐标。写在NPC脚本内,在[@main]下添加对话分支,[@传送组队],#ACT,GROUPMOVE 3 330 330,SENDMSG 6 全队已经传送至目标地图,#SACT,BREAK。使用这条命令默认会传送队伍内全部在线队员,不会过滤队员状态,需要额外增加判断语句,增加等级限制示例,#ACT,IF,ISADMIN,#ACT,SENDMSG 5 管理员无法执行组队传送,BREAK,ELSEACT,IF,CHECKLEVELEX > 40,#ACT,GROUPMOVE 3 330 330,SENDMSG 6 全队成功跳转,ELSEACT,SENDMSG 6 队员等级不足,无法传送。HERO引擎GROUPMOVE会忽略队员是否在同一张地图,只要在同一个队伍,就会被传送,需要增加CHECKMAP判断队员是否在当前地图,防止跨地图队员被意外拉入目标地图。
GOM与GEE引擎没有GROUPMOVE内置命令,需要循环遍历队伍成员,使用FORBATCHGROUP循环语句逐个执行传送。基础结构示例,#ACT,FORBATCHGROUP,#IF,CHECKHITMONNAME =,#ACT,MAPMOVE 3 330 330,SENDMSG 6 你跟随队长完成组队传送,#ELSEACT,SENDMSG 6 你处于战斗状态,无法传送,BREAK,ENDFOR。FORBATCHGROUP代表遍历当前队长队伍所有在线队员,循环内部写条件判断,每一个队员单独执行判断和传送。可以增加更多限制,禁止携带特定道具的队员传送,增加CHECKITEMW 屠龙,满足条件则终止该队员传送,其他队员不受影响。循环内BREAK仅跳过当前这名队员,不会终止整个队伍循环。
常用条件判断语句,用来限制编组传送的准入规则。CHECKISGROUPMAIN 判断触发者是否为队长,非队长无法执行脚本,避免队员随意发起全队传送。CHECKISFIGHT 判断是否处于战斗状态,战斗状态禁止传送。CHECKMAP 地图号,限制队员必须在当前地图才能参与传送。CHECKHP 数值,判断血量低于阈值不能传送。同时可以增加倒计时传送,使用DELAYGOTO,设置几秒延迟,倒计时结束后再执行传送,给队员准备时间,倒计时期间队员移动、进入战斗会取消本次传送。
地图与坐标参数填写规范,地图编号使用服务端MapInfo文件内定义的地图代码,不要使用地图中文名称,坐标X、Y为整数,填写前确认目标坐标没有阻挡,防止传送后人物卡墙。部分地图设置禁止传送,在MapInfo内设置NoTeleport=1,无论脚本怎么执行都无法进入,编写脚本前检查目标地图传送开关。目标地图如果有进入等级、任务标记限制,需要在脚本内同步增加标记校验。
编写脚本常见错误,HERO引擎直接使用GOM的FORBATCHGROUP循环语句,引擎无法识别命令,脚本执行无响应。坐标填写带小数、空格,触发传送失败。缺少队长判断,队伍任意成员都可以触发全队传送,造成滥用。没有战斗判断,战斗中传送会破坏游戏平衡。循环内部使用BREAK位置错误,一名队员不符合条件,直接终止整个队伍传送。脚本编码格式错误,使用UTF编码,部分引擎只支持ANSI,中文出现乱码导致脚本不触发,保存脚本文件选择ANSI编码。
区分两种传送模式,一种是全员必须全部满足条件才集体传送,只要一名队员不满足,则全队传送失败;另一种是满足条件的队员单独传送,不满足的队员跳过,其他队员正常传送。全员校验模式需要先遍历队伍,记录不符合条件人员,全部校验通过之后,再统一执行MAPMOVE。部分场景需要传送队员到队长身边,而不是固定地图坐标,获取队长坐标变量,提取队长当前地图、X、Y,赋值给队员传送命令。
脚本调试方法,编写完成后,保存脚本,在M2内重载脚本,不需要重启整套服务端。用测试账号组队,分别测试正常场景、队员战斗、等级不足、不在同地图等多种情况,查看M2日志,日志会输出脚本执行信息、命令报错内容。出现脚本无反应,优先检查脚本段标记、命令拼写、换行格式,多余空行和特殊符号也会干扰脚本解析。
增加额外扩展功能,传送完成后给全队发放临时buff,使用BUFFADD命令,传送成功后给所有队员添加防御增益。传送前清理队员身上的召唤物,使用CLEARPET。传送后弹出提示框,展示本次成功传送的队员数量。也可以增加冷却标记,给队长添加全局标记,在冷却时间内无法再次执行组队传送,防止脚本被反复调用。整套脚本编写优先确认引擎类型,选用对应命令,按需叠加条件判断,调试校验各项限制,实现稳定的编组地图传送功能。
传奇引擎编组地图传送脚本编写语法参数与多场景完整示例教程
来源:
作者:
点击:

