清除地图怪物配置方法 - BLUE引擎清怪实战案例
摘要:清除地图怪物是BLUE引擎用于清理指定地图怪物的命令CLEARMAPMON,格式为命令名加地图号,人物的宝宝与禁止清除怪物列表中的怪物不在处理范围内。本文按官方帮助文档整理命令格式、参数说明、清除效果与脚本配置步骤,梳理全图清除与单图清除的常见坑点,说明它在动态刷怪与怪物数量检查里的搭配用法,并附七条问答。…
前几天有个一起折腾脚本的朋友来找我,说他那张打宝地图白天人多的时候怪物刷得满满当当,一到后半夜没人了,怪物还留在图里白占机器资源,问我有没有办法让地图自己空下来。我把BLUE引擎里的清除地图怪物做法发给了他,一行命令就把他这个问题解决了。
这条命令就是CLEARMAPMON,只认一个地图号参数,执行后能把指定地图里的怪物一次清空。它最常用的场合是动态刷怪:地图里有人就正常刷怪,人走光了就把怪清掉,省下来的资源留给还在线的玩家。
下面按官方帮助文档的顺序,把命令格式、参数、清除效果和脚本里怎么配置调用讲一遍,再说说全图清除与单图清除容易搞混的地方,文末另附几个常被问到的问答。

命令格式:清除地图怪物的写法
官方文档对这条命令的功能写得很直白:用于清除指定地图里的怪物,人物的宝宝不在此范围以内,禁止清除怪物列表中的怪物不会被清除。文档还补了一句典型用途,动态刷怪方式下,有人的地图出现怪物,没人时地图上的怪物全部清除,以大大节约机器资源。地图怪物清理这件事,官方就给了一条命令来解决。
命令的完整写法只有两个部分:
CLEARMAPMON 地图号
CLEARMAPMON是命令名,后面空一格,再写你要清理的那张地图的地图号。命令不区分大小写,脚本引擎统一识别,命令与参数之间用一个空格隔开,多打空格或者少写参数都会导致脚本不识别。
官方给的标准示例如下,脚本段名是[@MIAN],执行段里直接调用这条清除怪物命令,再用#SAY给玩家一句提示:
[@MIAN]
#IF
#ACT
CLEARMAPMON 3
#SAY
盟重地图内所有的怪物都已经清理干净了。
上面这段里3就是盟重的地图号,官方示例清的就是盟重这张图。

参数说明:地图名与清除范围
这条命令的参数只有一个,结构简单,但它决定了清的是哪张图,写错就等于白执行。参数内容、释义与实操用法对照如下:
| 参数 | 释义 | 实操用法 |
|---|---|---|
| 地图号 | 要清理怪物的目标地图编号 | 填数字编号,官方示例清盟重填3 |
地图号就是地图配置里的编号,它与你在地图列表里看到的那张地图一一对应,所以想把盟重的怪清干净,参数就填3。这里有个容易绕进去的点:参数位填的是编号,不是地图名文本,地图名只是你给这张图起的称呼,脚本执行时认的是编号。也正因为如此,把地图名与清除范围拆开来看会更清楚,脚本里并没有地图名这个参数位,地图名要靠编号去对应。
清除范围方面,官方功能行没有给出任何坐标或半径参数,说明它作用的是整张地图,一次调用就把该图的怪物全部列入处理对象。官方功能行里同时写了两个边界条件:人物的宝宝不在此范围以内,禁止清除怪物列表中的怪物不会被清除。也就是说宠物和受保护名单里的怪都不受这条命令影响,它清的是该地图内的普通怪物。
参数这块先记牢一件事:地图号填错是最常见的失效原因,动手写之前先到地图配置里把编号核对一遍。
清除效果:地图瞬间清空的样子
脚本执行到这一行时,对应地图上的怪物会被立刻清掉,玩家视角里就是地图一下安静下来,原本挤在一起的怪全没了。整个动作一次性完成,不用等刷新周期,也没有逐只处理的过渡过程。
效果上有三个细节要先分清。一是人物的宝宝不在清除范围内,你带着宠物站在图里,宠物不会因为这条命令消失,想让宝宝消失得用别的命令单独处理。二是禁止清除怪物列表里登记的怪物不会被清掉,如果清完之后还有怪站着,先想想它是不是被加进了这份保护名单。三是命令只认地图号,作用对象就是参数指定的那一张图,其他地图的怪物不受任何影响。
这套效果最适合搭配动态刷怪用:地图里还有人时按原有节奏刷,动态刷怪的判定发现地图没人了,就调用一次清除命令把残怪收走,机器资源直接省下来。整个怪物刷新节奏和刷怪配置都不用动,只是多了一步人走清场的收尾动作。

配置步骤:在脚本里调用清除
第一步,进入服务端脚本目录,找到要挂这条命令的脚本文件。想做成NPC对话触发,就改Mir200\Envir\Market_Def下对应的NPC脚本;想跟着功能触发走,就写进QFunction-0.txt的功能段。
第二步,在脚本段的#ACT下面另起一行写入CLEARMAPMON,空一格后填目标地图的地图号,例如要清盟重就填3。
第三步,保存脚本文件,回到M2控制台执行一次重载脚本,让改动在下次触发时生效,不必重启服务端。
第四步,进入对应的地图看怪物是否已经清空,或者先用一次怪物数量检查确认剩余数量,再决定要不要继续调参数。
常见坑点:全图清除与单图清除
坑点一,把全图清除当成范围清除。CLEARMAPMON只有地图号一个参数,作用是整张地图一次清空,脚本里没有任何坐标或半径能限制它。如果你只想清某一小块区域,就该从刷怪配置那边入手,或者先用范围怪物数检测看清范围里的怪再决定怎么处理;指望着靠加坐标把这条命令缩小范围,是行不通的。
坑点二,以为它清的是自己站的地图。命令认的是参数里的地图号,写在哪个脚本段里都一样,只写一个地图号就永远只影响那一张图,不存在顺手把其他地图的怪也清掉的情况。
坑点三,把宝宝和受保护的怪算进清怪结果里。人物的宝宝不在清除范围内,禁止清除怪物列表中的怪物也不会被清掉,清完发现还剩怪,先核对这两类,别急着怀疑命令没生效。
坑点四,地图号写错。参数位填的是地图编号而不是地图名,编号对不上时命令照样执行,只是清的是另一张图,表现就像执行了没反应。全图清怪配置的关键就是这一步。
坑点五,脚本位置写错或者忘记重载。命令要写在会执行到的#ACT段里,改完脚本还要在M2控制台重载一次,否则改动不会生效。这类脚本改完没反应的排查顺序,也是先看段名和位置,再看有没有重载。
常见问题解答
1. 清除地图怪物用哪条命令,完整格式怎么写?
命令名是CLEARMAPMON,格式为命令名加一个地图号,比如要清编号3的盟重就把地图号写成3,执行后该地图里的怪物一次全部清除。人物的宝宝不在清除范围内,禁止清除怪物列表里登记的怪也不会被清掉。(本条问题整理自百度知道真实提问:传奇清除怪物脚本,2013年4月)
2. NPC刷怪脚本怎么先判断地图里还有没有怪物?
刷怪前先做一次怪物数量检查,用CHECKMONMAP加地图号和数量,数量填1就是判断该图还有没有怪;有怪时提示玩家先清完再刷新,没怪再执行刷怪,这样能避免同一张地图反复堆怪。(本条问题整理自百度知道真实提问:NPC刷怪问题,2014年3月)
3. 清完怪物怎么触发传送到下一个地图?
一种做法是在地图配置的地图参数里加杀怪触发,再在MapQuest_def目录建一份对应文本写传送脚本;另一种是在通关NPC脚本里用CHECKMONMAP判断剩余数量,数量归0再执行传送,两种都能把清完进下一层接起来。(本条问题整理自百度知道真实提问:传奇脚本杀死怪物触发传送至某个地图(MapQuest_def),2017年12月)
4. 动态刷怪模式下什么时候调用清除地图怪物比较合适?
动态刷怪的思路是有人的时候照常刷,人离开、地图在线人数归零时再把残怪收走。所以调用点一般放在玩家离开地图的触发段或者定时检测段里,而不是每次刷新前都清一遍,那样会把刚刷出来的怪一起清掉。
5. 执行清除命令后地图里还有怪物,怎么排查?
先核对地图号有没有写对,再确认命令写在会执行到的#ACT段里并且已经在M2控制台重载过脚本;如果剩下的是人物宝宝或者禁止清除怪物列表里的怪,那属于正常现象,它们本来就不在这条命令的清除范围内。
6. 清除地图怪物和KILLCALLMOB杀宝宝有什么区别?
CLEARMAPMON按地图号清空整张地图的普通怪物,不碰人物的宝宝;KILLCALLMOB是针对召唤宝宝单独处理的一条命令,作用对象正好相反。需要连宝宝一起清的时候,得在清完怪之后再单独调用后者。
7. 怎么用CHECKMONMAP确认清除后地图还剩多少怪物?
CHECKMONMAP属于条件检查,写在#IF段里,格式是命令名加地图号和数量,功能就是检查一张地图内的怪物数量,官方示例用CHECKMONMAP 3 30配合#SAY输出两种情况。清怪之后跑一次,把数量判断调到0作为传送下一层的条件即可。
收尾
清除地图怪物这条命令的价值在于把清场这一步交给脚本:CLEARMAPMON认地图号干活,一次清空整张图的普通怪物,不动人物宝宝,也绕开禁止清除怪物列表里登记的对象。把它接在动态刷怪的收尾环节,或者接在通关传送前的判定里,配合刷怪配置和怪物数量检查一起用,地图资源就不会被没人看管的怪白占着。
BLUE引擎清除地图中的怪物命令CLEARMAPMON的格式与示例出自官方CHM帮助文档,本文仅为单机调试参考,正式环境使用请先充分测试。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。






