在传奇服务端中,防止组队任务或打宝过程中成员中途退出(即“跑单”),可通过绑定队伍状态、设置任务锁和物品交付验证来实现。以下为标准脚本配置流程。
一、创建队伍任务标识
在玩家接取组队任务时,为其队伍分配唯一任务ID,并记录至公共变量。例如在QFunction.txt中:
[@StartTeamQuest]
IF
CHECKLEVEl > 30
ISGROUPMASTER
ACT
MOV G0 1001 ; G0为队伍共享变量,1001为任务ID
SENDMSG 7 队伍已绑定任务:合击BOSS。
GOTO @QuestAccepted
ISGROUPMASTER 确保仅队长可启动任务。
MOV G0 1001 将任务标识写入队伍全局变量,所有队员均可读取。
二、限制中途离队行为
在玩家尝试离开队伍时触发检测,在QManage.txt或系统事件中加入:
[@OnGroupLeave]
IF
EQUAL G0 1001
ACT
SENDMSG 7 任务进行中,禁止离队!
GROUPRECALL ; 强制取消离队操作(部分引擎支持)
CLOSE
若引擎不支持GROUPRECALL,则改为清除其任务资格:
ACT
SET [TeamQuest_1001] 0
SENDMSG 7 您已失去任务资格。
三、BOSS击杀后物品分配控制
在BOSS死亡事件(如QMonster.txt)中,仅对仍处于队伍且拥有任务标识的成员发放奖励:
[@KillDragon]
IF
HAVEGUILD ; 或 CHECKGROUP
EQUAL G0 1001
ACT
GIVE 10 1 ; 给予奖励物品
CLEAR G0 ; 清除任务标识
若玩家已离队,CHECKGROUP 返回失败,无法领取物品。
四、任务完成前禁止再次接取
在任务入口处增加状态检查,防止重复绑定:
[@StartTeamQuest]
IF
LARGE G0 0
ACT
SENDMSG 7 当前队伍已有进行中的任务。
CLOSE
五、队员掉线处理机制
通过定时检测(如每30秒)判断队员在线状态。在MapQuest_def地图名.txt中添加:
[@MapTimer30]
IF
EQUAL G0 1001
CHECKONLINE
ACT
; 若某成员长时间离线,可选择暂停任务或移除资格
具体实现依赖服务端是否支持CHECKONLINE及玩家名遍历。
六、关键注意事项
所有队员必须在任务开始前组队,中途加入者无法继承G0值。
队长解散队伍将导致G0清零,需在解散事件中拦截。
不同引擎对队伍变量(如G0~G9)的支持范围不同,部分需使用TEAMVAR指令替代。
物品奖励建议通过邮件或NPC领取方式延迟发放,避免击杀瞬间分配被截获。
以上脚本逻辑确保只有全程参与组队任务的成员才能获得最终奖励,有效遏制跑单行为。实际部署时需根据所用服务端版本调整指令名称与变量作用域。

