实现传奇组队脚本中两个号始终在一起,核心在于使用组队传送命令确保队员与队长处于同一地图坐标。传奇引擎本身不提供实时自动跟随功能,但通过脚本控制传送,可以达到“在一起”的效果。主要使用GROUPMAPMOVE(编组地图传送)和GROUPMOVE(编组随机传送)命令,配合队伍状态检测。
组队状态检测与队长判断
脚本首先需要检测玩家是否处于组队状态,以及是否为队长。使用ISGROUPMASTER命令判断当前玩家是否为队长,使用CHECKGROUPCOUNT命令获取队伍人数并存入变量。
[@组队传送]
#if
ISGROUPMASTER ; 检测是否为队长
CHECKGROUPCOUNT > 1 M1 ; 检测队伍人数是否大于1,结果存入M1
#act
MOV M2 <$X> ; 将队长当前X坐标存入M2
MOV M3 <$Y> ; 将队长当前Y坐标存入M3
MOV M4 <$MAP> ; 将队长当前地图编号存入M4
; 执行组队传送
GROUPMAPMOVE <$STR(M4)> <$STR(M2)> <$STR(M3)> @传送后
#elsesay
你不是队长或队伍人数不足两人,无法使用此功能。
脚本说明:ISGROUPMASTER返回布尔值,只有队长才能触发后续传送。CHECKGROUPCOUNT > 1 M1检查队伍人数是否大于1,并将结果(1为真,0为假)存入私人变量M1。<$X>、<$Y>、<$MAP>是系统变量,分别代表当前玩家的坐标和地图编号。GROUPMAPMOVE命令将整个队伍传送到指定地图的指定坐标。
组队传送命令详解
GROUPMAPMOVE命令语法为:GROUPMAPMOVE 地图号 X坐标 Y坐标 最低等级 @触发标签 是否仅队长。其中“最低等级”参数非0时,会检测队员等级,低于该等级的队员不会被传送。“@触发标签”为可选,传送成功后所有队员会触发QFunction.txt中对应的标签段。“是否仅队长”参数留空表示不限制,非空字符串则表示只有队长可以使用此命令。
另一种命令GROUPMOVE实现编组随机传送,语法为:GROUPMOVE 地图号。该命令将整个队伍随机传送至指定地图的某个坐标点,适用于需要集体进入随机位置的地图。
触发标签与后续处理
GROUPMAPMOVE命令中的@传送后标签是可选的触发段。如果指定了标签,传送成功后所有队员都会在QFunction.txt文件中触发对应的段落,可用于执行统一操作,如发送提示、设置变量等。
在QFunction.txt中添加:
[@传送后]
#act
SENDMSG 6 你已被队长召集至身边。
这样每个队员传送后都会收到私人提示消息。此触发段可以扩展更多功能,如检查地图条件、设置队伍状态变量等。
队员主动请求传送到队长身边
除了队长主动召集,也可以设计脚本让队员主动传送到队长位置。这需要先获取队长的坐标和地图信息,但传奇脚本标准命令中,队员无法直接获取队长的实时坐标。变通方法是使用变量传递:当队长到达某个位置时,将其坐标存入全局变量(如G变量),队员脚本读取这些变量并传送。
队长脚本:
[@记录位置]
#act
MOV G100 <$MAP> ; 将地图编号存入全局变量G100
MOV G101 <$X> ; 将X坐标存入全局变量G101
MOV G102 <$Y> ; 将Y坐标存入全局变量G102
SENDMSG 6 已记录当前位置,队员可传送。
队员脚本:
[@传送到队长]
#if
ISGROUPMASTER ; 检测自己不是队长
#act
SENDMSG 6 你是队长,无需传送。
BREAK
#if
LARGE G100 0 ; 检测G100是否有有效的地图编号
#act
MAPMOVE <$STR(G100)> <$STR(G101)> <$STR(G102)>
SENDMSG 6 已传送到队长记录的位置。
#elsesay
队长尚未记录位置。
定时检测与自动同步
若需要周期性自动同步队伍位置,可使用机器人脚本(RobotManage.txt)定时检测并传送。例如,每分钟检测一次队伍成员是否在同一地图,若不在则传送。但需注意频繁传送可能影响游戏体验。
在RobotManage.txt中添加:
[@队伍同步]
#if
; 此处需要复杂的检测逻辑,判断队员与队长是否同图
; 实际实现可能需借助变量标记,此处为概念示例
#act
; 假设G110标记需要同步的队伍
GROUPMAPMOVE ...
常见问题与注意事项
1. 地图限制:某些地图可能禁止传送或组队传送,使用前需确认目标地图允许该操作。
2. 等级限制:GROUPMAPMOVE的等级参数若设置,低等级队员将无法被传送,需确保队员等级达标。
3. 距离限制:部分引擎的GROUPMAPMOVE命令支持范围参数(如GEE引擎),只传送队长指定范围内的队员,超出范围的队员不会传送。
4. 触发频率:避免设置过快的自动传送,以免服务器负担过重或玩家体验不佳。
5. 变量清理:使用全局变量(如G100-G102)记录位置时,队长离开地图或解散队伍后,应考虑清理这些变量,避免错误传送。
完整示例脚本
以下是一个队长召集队员的完整NPC脚本示例,放置于NPC对话中:
[@main]
<召集所有队员到我身边/@召集队员>\
<记录当前位置供队员传送/@记录位置>
[@召集队员]
#if
ISGROUPMASTER
CHECKGROUPCOUNT > 1 M1
#act
GROUPMAPMOVE <$MAP> <$X> <$Y> @召集成功
#elsesay
只有队长且队伍人数大于1时才能使用召集功能。
[@召集成功]
#act
SENDMSG 1 队长【<$USERNAME>】已将队伍召集至身边。
[@记录位置]
#act
MOV G100 <$MAP>
MOV G101 <$X>
MOV G102 <$Y>
SENDMSG 6 位置已记录在全局变量G100-G102中。
通过上述脚本组合,可以实现在传奇游戏中让组队的两个号保持在同一位置。核心在于合理使用GROUPMAPMOVE命令,并结合队伍状态检测、变量传递和触发标签,达到队员位置同步的效果。实际应用中需根据所用引擎(如GOM、GEE、LEG等)的具体命令语法进行调整。

