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

传奇组队防跑单脚本实现方案

热度:
一、防跑单机制设计原理

组队“跑单”指队员在打完BOSS或分装备时离队私吞物品。脚本防跑单的核心逻辑是“先押后付”:进入副本前队长缴纳押金并锁定队伍名单,通关后根据存活名单返还押金并分配奖励。全程利用个人变量与全局变量记录队伍状态,确保只有全程参与的队员才能分赃。

二、HERO引擎核心检测命令

在编写脚本前,需掌握HERO引擎组队检测的关键命令:
-ISGROUPMASTER:检测当前人物是否为队长。
•CHECKGROUPCOUNT:检测队伍人数(含队长)。

-GROUPMAPMOVE:全队传送(用于将队伍整体传入副本)。
•AddTextListEx/GetRandomTextList:用于记录和随机抽扔员名单(分装备时使用)。

三、实战脚本编写(以副本为例)

以下为完整的防跑单副本NPC脚本,放置于Envir\Market_Def\目录下。

1.队长缴纳押金与组队锁定

此阶段队长支付元宝作为押金,并锁定当前队伍成员名单。
[@GroupLeader]
#IF
ISGROUPMASTER
CHECKGROUPCOUNT<2
#SAY
防跑单副本需要至少2人组队才能进入。
#ELSESAY
#IF
ISGROUPMASTER
CHECKGROUPCOUNT>1
CHECKGAMEGOLD>999
#ACT
;队长缴纳1000元宝押金
GAMEGOLD-1000
;设置队长个人变量,标记已缴纳押金
SET[100]1
;清空旧名单,记录当前队伍成员(防跑单核心)
CLEARNAMELIST..\QuestDiary\防跑单\队伍名单.txt
AddTextListEx..\QuestDiary\防跑单\队伍名单.txt
;全队传送至副本地图
GROUPMAPMOVED50015050
SENDMSG6防跑单副本已开启!全员已传送。通关后押金返还。
#ELSESAY
你的元宝不足1000,无法缴纳押金。


2.副本通关检测与奖励发放

BOSS死亡触发脚本(通常在QFunction-0.txt中配置),检测队伍完整性。
[@KillBoss]
;假设BOSS名为“祖玛教主”
#IF
KILLMONNAME祖玛教主
CHECKGROUPCOUNT>1
;检查队长押金变量是否存在
CHECK[100]1
#ACT
;读取之前记录的队伍名单
GetRandomTextList..\QuestDiary\防跑单\队伍名单.txtS0
;遍历名单,给仍在队内的成员发放奖励
#CALL[..\QuestDiary\防跑单\发放奖励.txt]@GiveReward
;返还队长押金
GAMEGOLD+1000
SET[100]0
SENDMSG6恭喜队伍通关!奖励已发放至全程参与的队员。
#ELSESAY
检测到队伍人员变动或押金异常,奖励发放失败。


3.奖励发放子脚本

创建..\QuestDiary\防跑单\发放奖励.txt文件,实现精准发放。
[@GiveReward]
#IF
;检查当前人物是否在最初的名单中
CheckTextList..\QuestDiary\防跑单\队伍名单.txt<$USERNAME>
;检查当前人物是否仍在队伍中(防中途退出)
ISGROUPMASTER
#ACT
;发放奖励(例如100万经验+1个祖玛装备)
CHANGEEXP+1000000
GIVE祖玛雕像1
SENDMSG6你获得了通关奖励!


四、进阶防作弊措施

1.地图进入限制:在MapInfo.txt中设置副本地图为NORECALL(禁止传送)、NODEARRECALL(禁止记忆传送),防止队员中途飞走。
2.时间戳验证:进入副本时记录系统时间(GetRandomText..\QuestDiary\防跑单\进入时间.txt),BOSS死亡时检测时间差,防止队长在BOSS快死时踢人换小号进队。
3.死亡检测:利用QFunction-0.txt中的[@PlayDie]标签,检测队员死亡后是否回城,若死亡后未在副本内复活,则从奖励名单中移除。

五、常见问题排查

•名单记录失败:检查QuestDiary\防跑单\目录是否存在,且引擎有写入权限。

•变量冲突:[100]为个人变量,若服内其他脚本使用同一变量会导致混乱,建议使用高位变量(如[200])。

•人数检测BUG:CHECKGROUPCOUNT包含队长,若脚本逻辑是“队长+2队员”,检测值应为3。

通过上述脚本,可实现“名单锁定-通关检测-名单发放”的闭环流程,有效杜绝队员中途退队或队长恶意踢人的跑单行为。
[顶部]