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手动补领,避免新区活动期间出现奖励遗漏。
HERO引擎传奇新区冲级奖励脚本:QFunction等级触发、NPC手动领取、名额限制与全服公告
来源:
作者:
点击:

