传奇地图参数NoManNoMon属性含义配置写法与各类触发场景详解

来源: 作者: 点击:
NoManNoMon是地图配置文件内的地图标识参数,很多在修改地图规则的人员容易混淆该参数与其他地图限制参数的作用,在配置完成后出现地图内单位异常刷新、人物无法正常进出的情况,想要用好这个参数,首先要理解它的基础作用。该参数写入地图对应的MapInfo配置条目当中,生效范围为整张地图,添加这个参数之后,地图会同时禁止人物和怪物生成,理解为地图不刷新任何怪物,同时不允许玩家进入,是双限制类型的地图参数。

很多人会把NoManNoMon和NoMon参数弄混,两者效果差异很大。NoMon仅代表地图不刷新怪物,玩家依旧可以正常走入地图,地图内已经存在的玩家不会被踢出。而NoManNoMon叠加了两层限制,第一层限制怪物刷新,地图不会根据怪物配置表刷出任何野怪,地图内原本存在的怪物在被清理之后不会重新生成;第二层限制人物进入,当玩家尝试通过走路、传送、地图跳转、NPC传送等方式进入该地图时,会直接拦截进入动作,无法踏入这张地图。

已经在地图内的角色,在地图配置新增NoManNoMon参数并重载地图配置之后,不会立刻被踢出地图,只会阻断后续新角色进入。这一点是调试时很容易踩坑的地方。如果需要清空地图内已有的玩家,单纯依靠这个参数无法实现,需要搭配脚本执行人物传送指令,把地图内的角色批量转移出去,再启用该地图参数。地图内留存的怪物,在参数重载之后不会自动消失,需要等待怪物被击杀才不会继续刷新,不会直接清除地图上现存怪物。

参数的书写格式有固定规范,在MapInfo里对应的地图行末尾添加NoManNoMon即可,不需要额外填写数字。错误的写法比如NoManNoMon=1这类带赋值的写法,引擎不会识别这个参数,整张地图的限制规则不会生效。该参数为开关型参数,写在配置行就代表开启,删除该参数代表关闭。同一条地图配置行可以和其他地图参数共存,例如搭配NoMine禁止挖矿、NoReconnect断线不留在地图等参数一起使用,多个参数之间用空格隔开。

该参数适合用于临时封闭地图场景,比如活动副本下线维护、未开放区域封锁,或是制作仅用于脚本中转、不允许玩家访问的后台地图。后台中转地图一般用来临时存放角色,执行完跳转逻辑之后立刻移出角色,这类地图加上NoManNoMon,能防止玩家利用传送漏洞卡进中转地图,避免出现人物卡在空白地图无法出来的问题。

使用该参数时要留意传送类脚本逻辑,脚本里使用地图跳转命令强制传送人物到NoManNoMon地图,部分引擎会判定传送失败,人物停留在原地,还有部分引擎会直接执行传送,人物可以强行进入。不同引擎对于脚本强制传送的判定逻辑存在区别,所以就算配置了NoManNoMon,也不能完全依靠这个参数拦截脚本传送,重要场景还要在传送NPC脚本增加地图权限判定,双重拦截防止玩家违规进入。

NoManNoMon不会对召唤物、分身这类单位产生额外特殊规则。玩家如果通过脚本强行进入地图,召唤出来的宝宝依旧存在,只是地图本身不会自动刷原生怪物。这个参数不会修改地图的属性、光照、碰撞层,地图地形文件本身不需要改动,只修改MapInfo文本即可完成配置重载。修改地图参数之后,部分引擎需要重启服务端或者重载地图配置才会生效,仅保存文本不会立刻更新规则,调试的时候要确认重载操作,避免反复修改却看不到效果。

如果需要单独只禁止玩家进入,保留怪物刷新,就不能使用NoManNoMon,要选用NoMan参数。只禁止怪物刷新,允许玩家自由进出,使用NoMon参数。三个参数各司其职,混用会造成预期之外的地图效果。很多调试案例中,想要做一个玩家可以进入但是没有怪物的场景,错误加上NoManNoMon,最后玩家无法进入地图,排查很久才发现参数选择错误。

当地图配置NoManNoMon之后,地图相关的刷怪计时器会停止工作,不会消耗刷怪资源。对于长期封闭的地图,启用该参数可以减少服务端刷怪循环的资源开销。活动开启的时候,只需要在MapInfo配置移除该参数,重载地图配置,地图就恢复正常,可以允许玩家进入,同时按照刷怪配置重新生成怪物。切换地图状态时,建议做好脚本配套,活动开启前清理地图残留怪物,保证地图开放之后环境符合预期。

在多层联动地图场景,比如地图分多个小区域,每个区域单独配置MapInfo条目,NoManNoMon只作用于当前填写的这张地图编号,不会影响相连的其他地图。相邻地图如果没有配置该参数,玩家依旧可以正常进入相邻区域,不会因为其中一张地图启用NoManNoMon,连带封锁整片地图组。制作地图封锁逻辑的时候,要逐个检查每一张子地图的配置,不要只修改主地图,忽略相连副地图造成漏洞。