传奇Hero引擎定时刷怪脚本 整点刷新且上只未死不刷方案

来源: 作者: 点击:
传奇Hero引擎中,实现“每小时整点刷怪、上一小时怪物未死则不刷新”的核心是“定时触发+怪物存活判断”的逻辑结合。你现有脚本缺失定时控制模块,导致仅能判断怪物数量却无法按小时触发,本文提供完整脚本写法、原理解析及调试技巧,直接适配你的“全部都爆”怪物刷出需求。

一、核心逻辑拆解:为什么你的脚本会重复刷怪

你的现有脚本仅通过“CheckRangeMonCountEx”判断指定范围怪物数量,但缺少“整点时间触发”的控制条件,导致脚本只要检测到怪物数量为0就会刷怪,而非仅在每小时整点执行。解决问题需补充两个关键模块:

- 定时触发模块:通过Hero引擎系统时间变量,精准捕捉每小时整点(如1点0分、2点0分),仅在此时触发刷怪判断。

- 存活判断强化:保留你使用的“CheckRangeMonCountEx”命令,但将其嵌套在定时逻辑内,确保仅整点时检查怪物是否存活,存活则不刷、死亡则刷。

Hero引擎核心时间变量:<$HOUR>(当前小时,0-23)、<$MINUTE>(当前分钟,0-59),这是实现定时的基础。

二、前期准备:3个关键参数确认

脚本编写前需明确3个核心参数,避免因参数错误导致刷怪异常,这些参数你现有脚本已涉及,仅需统一确认:

1. 怪物名称:你要刷出的怪物名为“全部都爆”,需与服务器“MonItems.txt”中的怪物名称完全一致(区分大小写)。

2. 刷新坐标范围:你脚本中“20 23”为坐标参数,需确认是“X轴20-Y轴23”的固定点,还是“X轴20-X轴23”的范围,后续脚本将按固定范围适配。

3. 脚本存放路径:Hero引擎刷怪脚本优先存放在“MirServer\Mir200\Envir\MapQuest_def\QManage.txt”,确保脚本被服务器加载。

必备工具:记事本/Notepad++(编写脚本,保存为ANSI编码)、GM账号(测试脚本触发效果)。

三、完整脚本写法:从定时触发到刷怪控制

脚本分为“启动入口”“定时检测主循环”“刷怪核心逻辑”三部分,解决你现有脚本的定时缺失问题,同时保留“上只未死不刷”的判断。

1. 完整脚本代码(直接复制可用)

; 脚本启动命令:GM在游戏内输入“@启动整点刷怪”触发
[@启动整点刷怪]
{
#ACT
; 发送启动成功提示,仅GM可见
SENDMSG 1 【定时刷怪脚本】已启动,每小时整点检测并刷出“全部都爆”
; 跳转到定时检测主循环,开始持续判断时间
GOTO @整点刷怪主循环
}

; 定时检测主循环:每10秒检测一次时间,避免占用服务器资源
[@整点刷怪主循环]
{
#IF
; 核心定时条件:判断当前分钟为0(即整点时刻)
CheckMinute 0
#ACT
; 整点时跳转到刷怪判断逻辑,检查怪物是否存活
GOTO @刷怪判断逻辑
#ELSEACT
; 非整点时,每10秒(10000毫秒)重新检测时间
WAIT 10000
GOTO @整点刷怪主循环
}

; 刷怪判断逻辑:结合你的存活判断需求,仅怪物死亡时刷出
[@刷怪判断逻辑]
{
#IF
; 你的核心判断命令:检查20-23坐标范围内“全部都爆”怪物数量是否为0(已死亡)
; 命令格式:CheckRangeMonCountEx 怪物名 坐标1 坐标2 地图名 = 数量
CheckRangeMonCountEx 全部都爆 20 23 全部都爆 = 0
#ACT
; 以下为你的原有刷怪逻辑,保留并补充细节
Param1 xunzhang
Param2 20
Param3 23
Gmexecute 开始提问 @刷全部都爆
; 刷出1只“全部都爆”怪物,1 1代表数量和刷新模式(固定点刷新)
MonGen 全部都爆 1 1
; 发送全服中心提示,颜色参数250 252为醒目色
SendCenterMsg 250 252 天降财神活动已经开启,需要高级勋章的速度搞快 1 30
; 刷怪后等待1分钟(60000毫秒),避免整点内重复刷怪
WAIT 60000
; 跳转回主循环,等待下一个整点
GOTO @整点刷怪主循环

#ELSEACT
; 怪物未死亡时,发送提示告知玩家
SendCenterMsg 250 252 上轮活动怪物仍在,击败后下小时整点将刷新新怪物 1 30
; 无需等待,直接返回主循环
GOTO @整点刷怪主循环
}

; 脚本停止命令:GM输入“@停止整点刷怪”关闭脚本
[@停止整点刷怪]
{
#ACT
SENDMSG 1 【定时刷怪脚本】已停止运行
; 终止脚本循环
BREAK
}


2. 核心命令解析(重点理解这3点)

- CheckMinute 0:Hero引擎时间判断命令,用于检测当前分钟是否为0,是实现“整点触发”的核心。若需调整为每小时10分刷怪,可改为“CheckMinute 10”。

- CheckRangeMonCountEx 全部都爆 20 23 全部都爆 = 0:你的原有命令优化后,第一个“全部都爆”是怪物名,20和23是坐标范围,第二个“全部都爆”是地图名(需与实际地图名一致,若为“蜈蚣洞”则改为蜈蚣洞),“=0”代表怪物数量为0。

- WAIT 60000:刷怪后添加1分钟等待,避免因服务器时间误差导致整点内重复触发刷怪,确保每小时仅判断一次。

3. 脚本修改要点(根据你的服务器调整)

1. 地图名修正:将“CheckRangeMonCountEx”命令中的第二个“全部都爆”改为怪物刷新的实际地图名,如“沙巴克”“蜈蚣洞”,可通过游戏内“@当前地图”命令查看。

2. 坐标范围确认:若20和23是X轴和Y轴的固定坐标(如X=20,Y=23),命令无需修改;若为X轴20到30的范围,需改为“CheckRangeMonCountEx 全部都爆 20 30 地图名 = 0”。

3. 刷怪模式调整:MonGen命令的最后一个“1”是刷新模式,1=固定点、2=随机范围,若需在20-23坐标内随机刷怪,可改为“MonGen 全部都爆 1 2”。

四、使用与调试步骤:确保每小时精准触发

脚本编写完成后,按以下步骤操作,避免出现“不刷怪”“重复刷”等问题。

1. 脚本安装与启动

1. 打开“QManage.txt”文件(路径:MirServer\Mir200\Envir\MapQuest_def),将完整脚本复制到文件末尾,保存并关闭。

2. 重启服务器“M2Server.exe”,确保脚本被加载(无需重启整个服务器,仅重启M2即可)。

3. 游戏内登录GM账号,在聊天框输入“@启动整点刷怪”,收到“脚本已启动”的私聊提示即代表成功。

2. 关键测试场景(必测3个情况)

测试场景

操作步骤

预期结果

场景1:怪物已死亡(正常刷怪)

1. 手动清理20-23坐标内“全部都爆”怪物;2. 等待整点时刻

整点时发送全服提示,怪物成功刷出

场景2:怪物未死亡(不刷怪)

1. 保留怪物不击杀;2. 等待整点时刻

整点时发送“怪物仍在”提示,无新怪物刷出

场景3:脚本停止与重启

1. 输入“@停止整点刷怪”;2. 再输入“@启动整点刷怪”

停止时GM收到提示,重启后可正常检测时间

3. 常见问题调试(快速解决异常)

- 问题1:整点未刷怪,无任何提示? 答:① 检查“CheckRangeMonCountEx”中的地图名是否正确,与怪物所在地图一致;② 确认GM已输入“@启动整点刷怪”,未启动则脚本不执行。

- 问题2:怪物已死,但整点刷出多只? 答:删除脚本中“WAIT 60000”前的多余“GOTO @整点刷怪主循环”命令,确保刷怪后仅等待1分钟再返回循环。

- 问题3:提示“命令不存在”? 答:Hero引擎部分旧版本不支持“CheckRangeMonCountEx”,可替换为“CheckMonCount 全部都爆 = 0”(仅判断全地图怪物数量,不限制坐标)。

- 问题4:脚本启动后服务器卡顿? 答:将“@整点刷怪主循环”中的“WAIT 10000”改为“WAIT 30000”,延长非整点时的检测间隔,减少资源占用。

五、拓展功能:适配更多运营场景

基于基础脚本,可快速扩展出符合活动需求的功能,提升玩家参与度。

1. 增加刷怪倒计时提醒(活动前5分钟提示)

在“@整点刷怪主循环”中添加倒计时逻辑,提前提醒玩家:

[@整点刷怪主循环]
{
#IF
; 整点前5分钟提醒(分钟=55)
CheckMinute 55
#ACT
SendCenterMsg 250 252 整点刷怪活动将于5分钟后开启,请前往20-23坐标准备 1 30
WAIT 60000 ; 仅提醒一次,避免每分钟重复
GOTO @整点刷怪主循环

#IF
CheckMinute 0 ; 整点刷怪判断
#ACT
GOTO @刷怪判断逻辑

#ELSEACT
WAIT 10000
GOTO @整点刷怪主循环
}


2. 限制每日刷怪次数(如每日仅刷3次)

通过全局变量记录刷怪次数,达到上限后停止,适合限时活动:

[@启动整点刷怪]
{
#ACT
SETVAR GLOBAL 每日刷怪次数 0 ; 初始化全局变量
SENDMSG 1 【定时刷怪脚本】已启动,每日限刷3次
GOTO @整点刷怪主循环
}

[@刷怪判断逻辑]
{
#IF
CheckRangeMonCountEx 全部都爆 20 23 地图名 = 0
CHECKVAR GLOBAL 每日刷怪次数 < 3 ; 判断次数未达上限
#ACT
; 原有刷怪逻辑...
ADDVAR GLOBAL 每日刷怪次数 1 ; 刷怪后次数+1
SENDMSG 1 今日已刷怪%每日刷怪次数%次,剩余%3-%每日刷怪次数%次

#ELSEACT
CheckVAR GLOBAL 每日刷怪次数 >= 3
#ACT
SendCenterMsg 250 252 今日刷怪次数已达上限,明日整点恢复 1 30
GOTO @整点刷怪主循环
}


3. 怪物死亡后发送全服公告(刺激玩家竞争)

在怪物死亡时触发公告,告知全服玩家下轮刷新时间:

; 在QManage.txt中添加怪物死亡触发脚本
[@怪物死亡触发_全部都爆]
{
#ACT
SendCenterMsg 250 252 恭喜玩家击败“全部都爆”!下轮刷新将于下小时整点开启 1 30
}


注:需在“MonItems.txt”中找到“全部都爆”怪物条目,添加“DeathScript=@怪物死亡触发_全部都爆”,实现死亡后自动触发公告。

六、Hero引擎特殊说明(避免踩坑)

- 脚本权限:确保“QManage.txt”文件有读写权限,服务器M2设置中“脚本权限”勾选“允许全局变量”和“允许时间判断”。

- 命令兼容:Hero引擎V110以上版本支持本文所有命令,旧版本若不支持“CheckMinute”,可改用“CHECKVAR <$MINUTE> = 0”。

- 地图坐标:若怪物刷新在指定地图(如“活动地图”),需在MonGen命令前添加“MAP 活动地图”,确保怪物刷在正确地图。

总结

Hero引擎实现“每小时定时刷怪且上只未死不刷”的核心,是将“定时触发(CheckMinute 0)”与“存活判断(CheckRangeMonCountEx)”结合,你的原有脚本已具备存活判断基础,仅需补充定时逻辑即可解决重复刷怪问题。脚本编写时需注意地图名、坐标范围的准确性,通过“启动-测试-调试”三步确保生效。拓展功能可根据活动需求灵活添加,提升脚本实用性与玩家参与度,只要命令格式正确、逻辑闭环,就能实现稳定的定时刷怪效果。