单机传奇怪物攻城设置方法脚本编写M2配置以及触发方式和排错教程

来源: 作者: 点击:
怪物攻城的实现方式分为两种,一种是利用M2自带定时任务直接调用刷怪脚本,另一种是在NPC处设置手动触发,两种方式都依靠脚本文件完成怪物刷新逻辑,不同引擎脚本语法略有区别,HERO、GOM、GEE的指令写法存在差异,设置前先确认自身引擎类型,同时提前备份Mir200文件夹内的脚本文件,防止写错脚本导致服务端报错。

定时怪物攻城是使用最多的形式,定时任务在Mir200目录下的Envir文件夹,找到TimerConfig.txt定时配置文件,这个文件用来设置触发时间和调用脚本路径。文件内的格式分为时间参数和脚本路径,时间采用24小时制,格式为时:分,后面填写要执行的脚本文件路径,示例写法为19:30 @怪物攻城,@符号后面是脚本标签,标签名称需要和脚本内的标签保持一致,保存文件之后,重启M2,定时规则才会加载生效。部分引擎需要在M2选项功能设置里面开启定时任务开关,开关未开启,定时条目不会触发。

攻城脚本一般放在Envir下的MapQuest.txt或者QuestDiary文件夹内,新建或者打开对应的脚本文本,先写触发标签,再编写刷怪指令。刷怪核心指令为MonGen,这条指令用来在指定地图坐标刷新怪物,完整格式为MonGen 地图编号 X Y 怪物名称 数量 刷新间隔。地图编号可以在MapInfo.txt里面查询,主城地图大多是0,也就是比奇省,X和Y填写地图内的坐标,怪物名称必须和Monster.DB里面怪物名字完全一致,文字不能有差别,名字写错会刷不出怪物。数量填写单次刷新数量,刷新间隔单位是秒,填0代表一次性全部刷新,不会重复刷新。一条MonGen指令只能写一种怪物,多类怪物攻城就多行重复写这条指令。

脚本内部还可以增加辅助逻辑,比如给全服玩家发送提示文字,使用SendMsg指令,消息类型选择全服公告,在怪物刷新之前发送通知,提醒玩家攻城即将开始。也可以设置持续时长,使用Delay指令做延时,到时间之后清除地图内攻城怪物,清除怪物指令为ClearMon,格式是ClearMon 地图编号,执行之后地图内所有非原生刷新的怪物都会清理干净。如果想要分批次刷怪,就用多个Delay隔开,先刷小怪,延时几秒再刷BOSS,做出梯度进攻的效果。

手动触发的怪物攻城,就是在NPC脚本里面加入相同的攻城标签,玩家点击NPC选项,或者GM在M2控制台输入命令@怪物攻城,直接调用这套脚本,不需要等待定时。GM命令需要在M2的管理命令设置里面添加,绑定对应的脚本标签,设置好权限等级,只有GM权限账号才可以执行,避免普通玩家随意触发攻城。

设置完成之后有几个基础参数需要核对,Monster.DB里面怪物名称不能有错别字,脚本里的地图编号、坐标不能填错,坐标超出地图范围,怪物不会生成。如果脚本加载失败,M2日志会提示脚本语法错误、标签不存在,打开日志查看报错行数,修正符号和换行,脚本里面的空格、换行都不能随意乱加,部分引擎对大小写、全角符号敏感,所有标点都要用半角英文符号。

怪物攻城的范围也可以自由调整,只在安全区外围刷新,就选用安全区周边的坐标,分散在多个点位写MonGen指令,怪物就会从多个方向向主城聚拢。想要增加难度,可以搭配不同BOSS,调整怪物的移动速度、攻击模式,怪物的基础属性在Monster.DB里面修改,修改完成保存数据库,重启M2生效。

测试的时候优先用GM命令手动触发,不用等到定时时间,方便快速调试。测试观察怪物是否正常刷新、公告是否弹出、到时间怪物能不能清理。遇到只弹出公告但是没有怪物的情况,优先核对怪物名称、地图坐标、地图编号。触发之后直接M2报错,基本是脚本语法错误,检查指令拼写、符号格式。定时任务到点没有反应,检查TimerConfig.txt格式、定时开关是否开启、M2有没有重启加载定时配置。

脚本调试稳定之后,再设置固定的定时时间,保存所有脚本文件,做好备份。如果想要增加更多玩法,还可以搭配掉落、击杀计数、奖励发放逻辑,在怪物被击杀之后触发奖励脚本,给参与的角色发放道具,相关逻辑追加到对应怪物的死亡触发脚本中。