一、Hero引擎定时刷怪核心逻辑说明
Hero引擎实现每小时刷怪、未击杀则下小时不刷新,核心是靠怪物存活检测和定时触发双重约束,原有脚本仅做了单场存活判断,缺少定时周期锁和状态标记,导致每小时强制刷新。想要达成目标,必须新增时间判断变量、怪物存活锁定机制,让系统先检测上一轮怪物是否被击杀,再决定本轮是否刷新。
整套脚本基于Hero引擎原生指令编写,无需额外插件,适配主流Hero引擎版本,存放路径为服务端下的Quest文件夹,绑定定时触发NPC或系统定时任务,重启服务端即可生效,所有指令均为引擎自带,无自定义扩展需求。
二、原有脚本问题定位
你当前的[@全部都爆]脚本,仅判断指定坐标怪物数量为0时刷怪,缺少小时级定时触发和刷怪锁定,只要怪物被击杀数量归0,就会触发刷怪,而非每小时仅一次。同时缺少时间周期判断,无法实现“未打死则下小时不刷”的逻辑,仅做了单次存活检测,没有绑定小时节点。
核心问题点:无小时时间判定、无刷怪状态标记、MonGen指令缺少周期约束、Gmexecute调用时机不合理,导致每小时强制刷出,无法实现存活锁定。
三、Hero引擎每小时刷怪完整脚本(可直接套用)
// 全局变量声明(脚本顶部,固定写入)
VAR HOUR_MONSTER_LOCK = 0; // 刷怪锁定变量,0=可刷,1=本轮已刷
VAR LAST_CHECK_HOUR = 0; // 上次刷怪小时记录
VAR MONSTER_NAME = 全部都爆; // 怪物名称
VAR MONSTER_MAP = xunzhang; // 刷怪地图
VAR MONSTER_X = 20; // 刷怪X坐标
VAR MONSTER_Y = 23; // 刷怪Y坐标
VAR MONSTER_COUNT = 1; // 刷怪数量
// 定时触发主脚本(每小时执行)
[@小时定时刷怪]
#IF
#ACT
// 获取当前服务器小时(0-23)
GetHourHour
// 检测是否为新小时、未到刷怪时间
CheckVarHour > LAST_CHECK_HOUR
CheckVar HOUR_MONSTER_LOCK = 0
// 检测怪物是否存活(数量=0代表已击杀,可刷新)
CheckRangeMonCountEx MONSTER_MAP MONSTER_X MONSTER_Y MONSTER_NAME = 0
#ACT
// 更新上次刷怪小时
SetVarHour LAST_CHECK_HOUR
// 锁定刷怪状态,本轮不再重复刷
SetVar HOUR_MONSTER_LOCK = 1
// 执行刷怪指令
MonGen MONSTER_MAP MONSTER_X MONSTER_Y MONSTER_NAME MONSTER_COUNT 0 0
// 全服提示
SendCenterMsg 250 252 天降财神活动已开启,目标怪物已刷新,速来击杀 1 30
BREAK
#ELSEACT
// 怪物未击杀,本轮不刷新,无提示
SendCenterMsg 250 252 上一轮怪物未被击杀,本轮暂不刷新目标怪物 1 30
BREAK
// 怪物被击杀后解锁刷怪锁(绑定怪物死亡触发)
[@怪物死亡解锁]
#IF
#ACT
// 重置刷怪锁定,允许下一小时刷怪
SetVar HOUR_MONSTER_LOCK = 0
BREAK
四、脚本关键指令解析(Hero引擎专属)
GetHourHour:获取服务器当前小时数(0-23),是实现每小时定时的核心指令,精准绑定整点小时触发,避免时间偏差。
CheckVarHour > LAST_CHECK_HOUR:判断当前小时是否大于上次刷怪小时,确保每小时仅触发一次刷怪逻辑,杜绝短时间内重复刷新。
CheckRangeMonCountEx:精准检测指定地图、坐标范围内的目标怪物数量,数值为0代表怪物已被击杀,满足刷新条件;数值≥1则代表怪物存活,禁止刷新。
SetVar HOUR_MONSTER_LOCK:刷怪锁定变量,刷怪后设为1,本轮小时内不再触发刷怪;怪物死亡后设为0,解锁下一小时刷怪资格,实现“未打死不刷新”。
MonGen:原生刷怪指令,末尾参数设为0代表无持续刷新、单次刷出,配合锁定变量实现小时级单次刷新,避免自动补刷。
五、脚本部署步骤(Hero引擎实操)
第一步:打开服务端Quest文件夹,新建文本文档,将完整脚本复制粘贴进去,修改怪物名称、地图、坐标为自己所需参数,保存为HourMonGen.txt格式,文件名无特殊字符。
第二步:绑定定时触发,找到服务端定时任务配置文件(通常为Timer.txt),添加定时规则:每小时整点执行@小时定时刷怪,格式参照引擎定时任务写法,确保整点触发脚本。
第三步:绑定怪物死亡解锁,找到对应怪物配置文件(MonGen.txt),在“全部都爆”怪物配置行末尾添加死亡触发指令:DeathTrigger @怪物死亡解锁,保存配置。
第四步:关闭服务端控制台,重新启动加载脚本,查看启动日志,无报错则代表部署成功;若报错,核对变量名、地图坐标、怪物名称是否书写正确,修正后重启。
六、脚本运行逻辑详解
每小时整点,系统自动执行@小时定时刷怪脚本,先获取当前服务器小时,对比上次刷怪小时,确认是新小时后,检测刷怪锁定变量和怪物存活状态。
若上一轮怪物已被击杀(数量=0),系统刷新目标怪物,设置锁定变量为1,本轮小时内不再重复刷怪,同时发送全服提示;若上一轮怪物未被击杀(数量≥1),系统不刷新怪物,发送对应提示,直至怪物被击杀解锁。
怪物被玩家击杀后,自动触发@怪物死亡解锁脚本,重置刷怪锁定变量为0,等待下一小时整点,再次检测并判断是否刷新,彻底实现“每小时刷一次、未打死不刷新”的需求。
七、调试与常见问题修正
每小时仍强制刷怪:检查定时任务是否绑定整点、CheckVarHour判断是否正确、锁定变量是否赋值成功,确保变量赋值指令无遗漏,定时周期无偏差。
怪物已死不刷新:核对DeathTrigger绑定是否正确、@怪物死亡解锁脚本是否存放至同一文件、变量名是否一致,修正怪物死亡触发配置。
提示不显示/刷怪位置错误:检查SendCenterMsg参数、地图坐标、怪物名称是否书写无误,Hero引擎对坐标、地图名大小写敏感,需严格匹配。
脚本加载失败:确认文件存放路径为Quest文件夹、文件格式为txt、无中文乱码,删除多余空格和空行,保持引擎语法规范。
八、参数自定义修改说明
可按需修改全局变量参数,更换MONSTER_NAME为其他怪物名称,修改MONSTER_MAP、X/Y坐标调整刷怪位置,更改MONSTER_COUNT调整刷怪数量,适配不同刷怪需求。
提示文案可修改SendCenterMsg后的文字内容,颜色参数无需改动;如需调整提示时长,修改末尾数值即可,所有改动均不影响核心逻辑,无需重写脚本框架。

