HEROM2引擎里做自助刷怪,不能只写传送和刷怪命令,必须加入怪物判断检查,否则玩家容易卡在无怪地图,或者反复刷怪导致怪物堆积。怪物判断通常分三类:检测当前地图怪物数量、检测指定地图怪物数量、检测目标怪物是否已清空。下面按HEROM2常用写法给出可直接参考的脚本示例。
NPC主入口
[@main]
IF
SAY
\
选择地图后将自动检测怪物数量。\
怪物不足时会重新刷新。\
\
\
\
\
<关闭/@exit>
进入地图前先检测怪物数量
[@go1]
IF
CHECKMONMAP 3 10
ACT
MAPMOVE 蜈蚣洞 150 150
SENDMSG 6 地图内怪物充足,已进入刷怪点。
ELSEACT
CALL [@RefMon1]
这里CHECKMONMAP 3 10表示检测地图3内怪物数量是否达到10只以上。地图编号需要按实际版本替换,不能直接照搬。
怪物不足时补刷
[@RefMon1]
IF
ACT
MonGen 蜈蚣 20 1
MonGen 蝎子 15 1
SENDMSG 6 地图怪物不足,已补充刷新。
DELAYGOTO 2000 @GoMap1
[@GoMap1]
IF
ACT
MAPMOVE 蜈蚣洞 150 150
MonGen用于临时补充怪物,格式通常为“怪物名称 数量 刷新时间”。如果版本使用MonGen.txt固定刷怪,也可以不写MonGen,只提示玩家等待自然刷新。
指定地图怪物判断
如果玩家不在目标地图,就不能用当前地图检测,需要改用指定地图检测。
[@status]
IF
CHECKMONMAP 3 0
ACT
SENDMSG 6 蜈蚣洞当前无怪物。
ELSEACT
SENDMSG 6 蜈蚣洞仍有怪物存在。
CHECKMONMAP 3 0表示地图3内怪物数量为0。这个判断适合放在NPC里,让玩家进入前查看地图状态。
清空地图后触发变量
如果刷怪活动要求“清空地图后发奖励”,可以用怪物死亡事件配合数量检测。HEROM2里可参考GetMonsterCount判断指定地图剩余怪物数量。
[@MonsterDie]
IF
MapEqual 3
GetMonsterCount 3 0
ACT
SET [100] 1
SENDMSG 6 地图怪物已全部清空。
BREAK
MapEqual 3表示当前事件发生在地图3。GetMonsterCount 3 0表示检测地图3内所有怪物数量为0。这里需要确认当前HEROM2版本是否在QFunction或事件脚本中支持[@MonsterDie],不支持时要改用定时器轮询。
定时器轮询检测
如果引擎不支持怪物死亡事件,可以用定时器定时检测。
[@OnTimer]
IF
ISONMAP 3
GetMonsterCount 3 0
ACT
SET [100] 1
SENDMSG 6 地图怪物已清空。
BREAK
定时器检测要注意间隔,避免频繁执行影响性能。检测完成后应关闭或重置定时器,防止重复触发。
防卡怪循环
自助刷怪脚本常见问题是玩家进入地图后没有怪物。可以加入循环检测。
[@CheckMonLoop]
IF
CHECKMONMAP 3 5
ACT
SENDMSG 6 当前地图怪物充足。
BREAK
ELSEACT
MonGen 蜈蚣 10 1
DELAYGOTO 3000 @CheckMonLoop
这里每3秒检测一次,如果怪物不足5只就补充刷新。实际使用时要限制循环次数,避免无限刷怪。
[@CheckMonLoop]
IF
SMALL P0 10
ACT
INC P0 1
CHECKMONMAP 3 5
CALL [@MonOK]
ELSEACT
SENDMSG 6 多次刷新后仍无怪物,请稍后再试。
BREAK
[@MonOK]
IF
CHECKMONMAP 3 5
ACT
SENDMSG 6 怪物已刷新完成。
ELSEACT
MonGen 蜈蚣 10 1
DELAYGOTO 3000 @CheckMonLoop
P0用于记录循环次数,防止无限执行。
多地图判断示例
如果有多个刷怪地图,可以分别检测。
[@go2]
IF
CHECKMONMAP 5 8
ACT
MAPMOVE 祖玛寺庙 200 200
SENDMSG 6 祖玛寺庙怪物充足。
ELSEACT
MonGen 祖玛卫士 10 1
MonGen 祖玛弓箭手 10 1
DELAYGOTO 2000 @GoMap2
[@GoMap2]
IF
ACT
MAPMOVE 祖玛寺庙 200 200
不同地图要使用不同地图编号和不同怪物组合,不能共用同一组MonGen。
背包与等级限制
自助刷怪通常需要加入进入条件。
[@go1]
IF
CHECKLEVEL 30
CHECKBAGSPACE 1
CHECKMONMAP 3 10
ACT
MAPMOVE 蜈蚣洞 150 150
SENDMSG 6 已进入刷怪地图。
ELSESAY
变量规划
P0:循环检测次数。
[100]:地图清空标记。
地图编号:按实际版本从M2地图管理中查询。
CHECKMONMAP适合快速判断指定地图怪物数量。GetMonsterCount适合事件触发时精确判断剩余怪物。MonGen适合临时补刷,但不建议长期替代MonGen.txt固定刷怪配置。
常见问题排查
进入地图后没有怪物,先确认地图编号是否正确。CHECKMONMAP始终判断为有怪,检查数量阈值是否过低。GetMonsterCount不触发,确认事件标签是否被当前引擎支持。MonGen不生效,检查怪物名称是否与数据库一致。循环刷怪过多,必须加入次数限制和延迟。
HEROM2传奇自助刷怪脚本添加怪物判断检查:CHECKMONMAP、GetMonsterCount与防卡怪循环
来源:
作者:
点击:

