HERO引擎传奇新区冲级奖励脚本:QFunction等级触发、NPC手动领取、名额限制与全服公告

来源: 作者: 点击:
HERO引擎做新区冲级奖励,核心思路是玩家升级时通过触发脚本记录等级,再在NPC处按等级发放一次性奖励。触发层放在QFunction-0.txt,领取层放在NPC脚本中,奖励名额、重复领取、背包检测都要单独判断。

QFunction等级触发

在Mir200EnvirMapQuest_DefQFunction-0.txt中写入升级触发段。HERO引擎支持升级事件时,可用[@PlayLevelUp]或[@PlayLevelUp等级]触发。

[@PlayLevelUp]
IF
ACT
CALL [@CheckLevelReward]
BREAK

[@CheckLevelReward]
IF
CHECKLEVEL 50
EQUAL S1 0
ACT
MOV S1 50
SENDMSG 6 你已达到50级,可前往土城冲级使者处领取奖励。
BREAK

[@CheckLevelReward]
IF
CHECKLEVEL 60
EQUAL S1 1
ACT
MOV S1 2
SENDMSG 6 你已达到60级,可前往土城冲级使者处领取奖励。
BREAK

[@CheckLevelReward]
IF
CHECKLEVEL 70
EQUAL S1 2
ACT
MOV S1 3
SENDMSG 6 你已达到70级,可前往土城冲级使者处领取奖励。
BREAK

S1用于记录玩家当前可领取的冲级阶段。0表示未领取50级奖励,1表示已领50级但未领60级,2表示已领60级但未领70级,3表示已全部领取。S变量需要确认当前HERO版本是否支持保存到人物数据,不支持时可改用自定义变量。

NPC主界面

NPC脚本放在Market_Def目录下。

[@main]
IF
SAY
\
新区冲级活动进行中。\
达到指定等级即可领取奖励。\
\
\
\
\
\
<关闭/@exit>

50级奖励领取

[@get50]
IF
CHECKLEVEL 50
EQUAL S1 0
LARGE G1 0
CHECKBAGSPACE 2
ACT
DEC G1 1
MOV S1 1
GIVE 金币 100000
GIVE 祝福油 5
SENDMSG 6 你已成功领取50级冲级奖励。
SENDMSG 20 玩家%s率先达到50级并领取冲级奖励。
ELSESAY

G1用于记录50级奖励剩余名额。每次领取前先判断名额是否大于0,领取后立即减1,防止超额发放。

60级奖励领取

[@get60]
IF
CHECKLEVEL 60
EQUAL S1 1
LARGE G2 0
CHECKBAGSPACE 2
ACT
DEC G2 1
MOV S1 2
GIVE 金币 200000
GIVE 沃玛装备箱 1
SENDMSG 6 你已成功领取60级冲级奖励。
SENDMSG 20 玩家%s成功领取60级冲级奖励。
ELSESAY

70级奖励领取

[@get70]
IF
CHECKLEVEL 70
EQUAL S1 2
LARGE G3 0
CHECKBAGSPACE 2
ACT
DEC G3 1
MOV S1 3
GIVE 金币 500000
GIVE 祖玛装备箱 1
SENDMSG 6 你已成功领取70级冲级奖励。
SENDMSG 20 玩家%s成功领取70级冲级奖励。
ELSESAY

名额初始化

新区开启前需要在机器人脚本中初始化名额。可在Robot_defAutoRunRobot.txt中配置开服触发,或在M2启动后手动执行一次。

[@InitRankReward]
IF
ACT
MOV G1 100
MOV G2 50
MOV G3 20
SENDMSG 20 新区冲级奖励已开启,50级名额<STR(G1)>个,60级名额<STR(G2)>个,70级名额<$STR(G3)>个。

G变量为服务器全局变量,用于控制全服奖励名额。如果引擎重启后G变量不保留,需要在每次开服时重新初始化。

查看排名

冲级排名如果只做简单展示,可以显示剩余名额和已领取人数。

[@rank]
IF
SAY
\
50级剩余名额:>\
60级剩余名额:>\
70级剩余名额:>\
\
先到先得,领完即止。\
<返回/@main>

如果需要真正的冲级排名,通常需要记录玩家达到目标等级的时间。可用自定义变量记录时间戳,再通过NPC或GM工具查询。HERO引擎中部分版本支持读取人物在线时间或自定义时间变量,具体要看当前引擎是否提供对应命令。

防重复领取

冲级奖励必须防止重复领取。常用三层判断:

等级判断:CHECKLEVEL确认玩家已达到目标等级。
阶段判断:S1确认玩家处于可领取阶段。
名额判断:G变量确认奖励还有剩余。

发放顺序必须是先检测、再扣名额、再发奖励、最后修改状态。不能先发奖励再改状态,否则出现发放失败时名额会被误扣。

背包检测

发放多件奖励前必须检测背包空间。

[@get50]
IF
CHECKLEVEL 50
EQUAL S1 0
LARGE G1 0
CHECKBAGSPACE 2
ACT
DEC G1 1
MOV S1 1
GIVE 金币 100000
GIVE 祝福油 5
SENDMSG 6 领取成功。
ELSESAY

如果奖励包含多件物品,CHECKBAGSPACE的数值要按实际物品数量设置。

变量规划

S1:玩家冲级阶段,0未领50级,1已领50级,2已领60级,3已领70级。
G1:50级奖励剩余名额。
G2:60级奖励剩余名额。
G3:70级奖励剩余名额。

S变量用于记录个人状态,G变量用于记录全服名额。HERO引擎中P变量通常只在当前NPC对话中有效,不适合记录冲级进度;D变量在人物不下线时有效,小退或重登可能失效,因此优先使用可保存的S变量或自定义变量。

常见问题排查

玩家升级后没有提示,检查QFunction-0.txt中[@PlayLevelUp]是否被当前HERO版本支持,部分版本需要使用其他升级触发标签。奖励可以重复领取,检查S1是否在发放后及时修改。名额显示异常,检查G变量是否被其他脚本占用。背包满时奖励丢失,必须在发放前检测背包空间。开服后名额未重置,检查机器人初始化脚本是否执行。

冲级奖励脚本的关键是触发层只负责记录和提示,领取层负责等级、阶段、名额、背包四重判断。这样即使触发脚本偶尔未执行,玩家仍可通过NPC手动补领,避免新区活动期间出现奖励遗漏。