当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇组队防跑单脚本写法GOM/GEE/HERO引擎检测离队扣押金与BOSS掉落分配教程

热度:
传奇服务端本身没有内置"防跑单"功能,需要通过QFunction-0.txt的系统触发事件配合QuestDiary自定义变量来实现。主流做法有两种思路:一是打BOSS时标记分配状态,队员在BOSS死亡后未领取奖励前离队则触发惩罚(扣金币/传回/取消领奖资格);二是进副本前记录队伍名单,通关后只给名单内仍在队的人发奖励。以下以GOM/GEE引擎为例说明完整配置。

一、目录与变量准备

在Mir200\Envir\QuestDiary\下新建文件夹防跑单,用于存放变量文本文件。登录初始化脚本在QManage.txt的[@Login]段加入变量清零:

[@Login]
#IF
#ACT
CALCVARHUMANA97=0
CALCVARHUMANA98=0
SAVEVARHUMANA97..\QuestDiary\防跑单\可领取.txt
SAVEVARHUMANA98..\QuestDiary\防跑单\分配锁.txt


•A98=1表示BOSS已死、进入分配锁定期

•A97=1表示该队员可被队长NPC分配奖励

二、组队事件触发(QFunction-0.txt)

GOM/GEE引擎支持@GroupAddMember(队员入队触发)和@GroupDelMember(队员离队触发),在QFunction-0.txt中添加:

;==========防跑单组队触发==========
[@GroupAddMember]
#IF
#ACT
MOVS0<$USERNAME>
CALCVARHUMANA99=1
SENDMSG5已加入队伍,防跑单机制生效!

[@GroupDelMember]
#IF
#ACT
MOVS0<$USERNAME>
CHECKLEVEl>0
GOTO@防跑单_离队检测


三、离队检测与惩罚逻辑

继续在QFunction-0.txt写离队检测,判断是否在分配锁定期(A98=1)离队:

[@防跑单_离队检测]
#IF
CHECKVARHUMANA98=1
#ACT
;扣除背包金币作为跑单惩罚,数值自行调整
TAKE金币50000
;也可MAPMOVE传回指定坐标,或只清变量让TA失去领奖资格
CALCVARHUMANA97=0
CALCVARHUMANA98=0
SENDMSG1<$USERNAME>在分配期间离队,视为跑单已扣除金币并取消分配资格!
#ELSEACT
CALCVARHUMANA97=0
CALCVARHUMANA98=0


如果引擎不支持直接拦截离队,上面这段虽不能阻止离队动作,但能做到离队瞬间检测A98状态并执行扣钱或取消领奖标记。

四、BOSS死亡触发分配锁定

在QFunction-0.txt或用QMonster.txt的@KillMob检测BOSS名,击杀后设置分配锁并通知队员去NPC领奖:

[@KillMob]
#IF
KILLMONNAME祖玛教主
CHECKGROUPCOUNT>1
#ACT
;设置分配锁
CALCVARHUMANA98=1
SAVEVARHUMANA98..\QuestDiary\防跑单\分配锁.txt
;给全队打可领取标记(GOM可用TEAMMEMBEREXECUTE,老引擎需队员自己点NPC检测)
TEAMMEMBEREXECUTECALCVARHUMANA97=1
TEAMMEMBEREXECUTESAVEVARHUMANA97..\QuestDiary\防跑单\可领取.txt
SENDMSG5BOSS已击杀!请全队速至分配NPC领取,中途离队视为跑单!


五、分配奖励NPC脚本

在Envir\Market_Def\新建分配NPC.txt,Merchant.txt里注册好坐标,NPC脚本内容:

[@main]
#IF
ISGROUPMEMBER
CHECKVARHUMANA97=1
CHECKVARHUMANA98=1
#ACT
GIVE屠龙1
;平分金币示例:GIVE金币50000
CALCVARHUMANA97=0
CALCVARHUMANA98=0
SAVEVARHUMANA97..\QuestDiary\防跑单\可领取.txt
SAVEVARHUMANA98..\QuestDiary\防跑单\分配锁.txt
SENDMSG6你已领扔伍分配奖励!
#ELSEACT
SAY你不在分配名单或已离队/已领取!


已跑单离队之人在此NPC处因A97被清零无法领取任何东西。

六、副本名单比对方案(可选强化)

若你做的是专属副本可用名单比对法——队长开启副本时用AddTextListEx把队员名写入..\QuestDiary\防跑单\队伍名单.txt,通关发放奖励时逐行读取名单用CHECKNAMEINLIST比对,不在名单或已离队(CHECKGROUP失败)则不发。此方法适合自定义副本NPC而不依赖组队触发事件。

七、注意事项

•变量A系为人物个人变量,G系为队伍共享变量(部分引擎支持G0-G99),队伍共享变量更适合标记BOSS死亡状态

•TEAMMEMBEREXECUTE是GOM/GEE较新版本命令,Blue引擎或老Hero需用队员各自点击NPC检测A98状态代替

-扣金币/物品数值、是否允许传送回队长处按你服设定改,部分服改成只取消领奖资格更不易引发投诉
•每次重启服务端建议在登录脚本初始化A97A98,防止残留变量导致误判
[顶部]