开服最怕的事就是怪不打人。祖玛卫士站那儿跟木桩子似的,玩家砍它它不动,法师雷电术劈下去它就掉血,但连个转身动作都没有。配置表查了,刷怪坐标看了,AI设置也翻了,全都对得上,可它就是不动。这种时候常规检查已经没用,得从几个平时没人注意的地方下手。
**第一处:Monster.DB的Race字段填错了**
怪物数据库Monster.DB里,Race字段决定了怪物的攻击行为模式。祖玛卫士正确的Race值是81,对应的是“近战主动攻击”类型。但很多人建库的时候偷懒,从别的怪物复制一条记录过来改个名字就完事,Race字段忘了改。比如复制了僵尸的数据,僵尸Race是51,属于“慢速近战”类型,表现出来就是反应迟钝,玩家走到脸上它才动,甚至干脆不动。
Race=81的祖玛卫士攻击逻辑是:检测到玩家进入视野范围,立刻转向玩家并开始移动,接近之后发动近战攻击。如果Race=51,检测频率低很多,视野范围也偏小,玩家跑过去砍两刀了它还没完成目标锁定。
检查方法是用DBC2000打开Monster.DB,找到祖玛卫士那条记录,看Race字段是不是81。不是的话改回来,保存之后重载怪物数据或者重启M2生效。顺便看一眼Racelmg字段,这个字段控制攻击动作的图形效果,祖玛卫士应该是19,填错了的话打出来动作是别的怪物模样,但攻击效果本身不受影响。
还有一种情况是Race字段填了82,这是祖玛雕像的值。祖玛卫士和祖玛雕像的Race不一样,虽然看起来都是石头怪,但引擎内部的处理逻辑有区别。把卫士填成82,它会用雕像的AI逻辑,移动速度偏慢,攻击前摇也不对,玩家感受就是这只卫士不对劲。
**第二处:地图参数里嵌了禁止攻击的隐藏标记**
Mir200\Map文件夹里每个地图文件都有对应的地图参数配置,写在D:\MirServer\Mir200\Envir\MapInfo.txt里。有些地图参数里带了NODEAL或者NOATTACK之类的标记,意思是不允许任何攻击行为。祖玛寺庙某些楼层如果加了这种参数,所有怪物都打不了人,不只是祖玛卫士的问题。
但更隐蔽的是地图文件本身的标记位。地图文件里每个格子存了地形属性,其中某些数值段会触发M2的特殊处理。比如某个格子的属性值被设成了障碍物类型,同时触发了阻挡攻击的判定,怪物路径计算的时候发现玩家坐标点被标记成“不可攻击目标”,AI逻辑直接跳过攻击步骤。
碰到全图怪物都不打人的情况,把玩家传送到另一个地图试一下。到了别的地图怪物正常攻击,那就是地图参数的问题。查MapInfo.txt里那张地图的配置行,把所有限制类参数去掉再试。如果只有特定坐标点上的祖玛卫士不打人,在那个坐标旁边刷一只新卫士看它打不打,新的打旧的打就是格子属性问题,换坐标刷怪就行。
**第三处:游戏速度参数把怪物锁死了**
M2的选项-参数设置-游戏速度里面,有一项叫怪物攻击速度补偿。很多人调这个参数是为了让玩家操作更顺手,不小心把怪物的攻击动作周期拉得太长。祖玛卫士的默认攻击间隔是1200毫秒左右,如果攻击速度补偿调到了500以上,怪物每次攻击的判定时间被拉长了数倍,看起来就是半天不动。
更隐蔽的是“怪物移动速度补偿”这个参数。调太高的话,怪物移动一步的时间被拉到好几秒,祖玛卫士走一步停两秒,玩家绕着它转圈它都追不上,自然也就打不到人。这个参数正常值在-100到100之间,超过这个范围就会出现怪物行动迟缓到几乎静止的效果。
还有一个地方是GameCenter.exe的控制台设置里,有“怪物处理循环间隔”的底层参数,不在M2界面上,要手动改配置文件。位置在D:\MirServer\Mir200\Config.ini里,字段是[M2Server]下面的MonsterProcessInterval。默认是100毫秒,如果被人改成了500甚至1000,全服所有怪物的AI刷新频率大幅降低,祖玛卫士当然不动。改回100,重启M2就好了。
**补充排查:脚本里做了怪物停战处理**
有些版本在登陆脚本QManage.txt或者机器人脚本里写了停战指令。比如使用了SETMONATTACK或者MONATTACK命令来控制全服怪物的攻击开关。这些命令通常用在特定活动中,比如安全区范围禁止怪物攻击、新手地图保护。如果某个NPC脚本或者定时器错误地执行了全局关闭怪物攻击,祖玛卫士就不打人了。
查QManage.txt的[@Login]段和Robot_def里的定时器脚本,搜索SETMONATTACK或者MONATTACK关键词。看到参数是0或者OFF就表示关闭攻击。改成1或者ON,重新加载脚本或者重启M2。有时候是脚本里有条件判断写反了,该开启的时候写了关闭,该关闭的时候写了开启,这种逻辑错误比参数填错更难发现,得顺着脚本的执行路径走一遍。
还有种情况是多级脚本调用的时候,下层脚本把怪物攻击状态改了,上层脚本没有恢复。比如某个任务脚本做了全服怪物停战,任务结束后忘了恢复攻击状态。用QuestDiary里的日志功能把脚本执行过程打出来看,找到修改状态的源头。
**第一处:Monster.DB的Race字段填错了**
怪物数据库Monster.DB里,Race字段决定了怪物的攻击行为模式。祖玛卫士正确的Race值是81,对应的是“近战主动攻击”类型。但很多人建库的时候偷懒,从别的怪物复制一条记录过来改个名字就完事,Race字段忘了改。比如复制了僵尸的数据,僵尸Race是51,属于“慢速近战”类型,表现出来就是反应迟钝,玩家走到脸上它才动,甚至干脆不动。
Race=81的祖玛卫士攻击逻辑是:检测到玩家进入视野范围,立刻转向玩家并开始移动,接近之后发动近战攻击。如果Race=51,检测频率低很多,视野范围也偏小,玩家跑过去砍两刀了它还没完成目标锁定。
检查方法是用DBC2000打开Monster.DB,找到祖玛卫士那条记录,看Race字段是不是81。不是的话改回来,保存之后重载怪物数据或者重启M2生效。顺便看一眼Racelmg字段,这个字段控制攻击动作的图形效果,祖玛卫士应该是19,填错了的话打出来动作是别的怪物模样,但攻击效果本身不受影响。
还有一种情况是Race字段填了82,这是祖玛雕像的值。祖玛卫士和祖玛雕像的Race不一样,虽然看起来都是石头怪,但引擎内部的处理逻辑有区别。把卫士填成82,它会用雕像的AI逻辑,移动速度偏慢,攻击前摇也不对,玩家感受就是这只卫士不对劲。
**第二处:地图参数里嵌了禁止攻击的隐藏标记**
Mir200\Map文件夹里每个地图文件都有对应的地图参数配置,写在D:\MirServer\Mir200\Envir\MapInfo.txt里。有些地图参数里带了NODEAL或者NOATTACK之类的标记,意思是不允许任何攻击行为。祖玛寺庙某些楼层如果加了这种参数,所有怪物都打不了人,不只是祖玛卫士的问题。
但更隐蔽的是地图文件本身的标记位。地图文件里每个格子存了地形属性,其中某些数值段会触发M2的特殊处理。比如某个格子的属性值被设成了障碍物类型,同时触发了阻挡攻击的判定,怪物路径计算的时候发现玩家坐标点被标记成“不可攻击目标”,AI逻辑直接跳过攻击步骤。
碰到全图怪物都不打人的情况,把玩家传送到另一个地图试一下。到了别的地图怪物正常攻击,那就是地图参数的问题。查MapInfo.txt里那张地图的配置行,把所有限制类参数去掉再试。如果只有特定坐标点上的祖玛卫士不打人,在那个坐标旁边刷一只新卫士看它打不打,新的打旧的打就是格子属性问题,换坐标刷怪就行。
**第三处:游戏速度参数把怪物锁死了**
M2的选项-参数设置-游戏速度里面,有一项叫怪物攻击速度补偿。很多人调这个参数是为了让玩家操作更顺手,不小心把怪物的攻击动作周期拉得太长。祖玛卫士的默认攻击间隔是1200毫秒左右,如果攻击速度补偿调到了500以上,怪物每次攻击的判定时间被拉长了数倍,看起来就是半天不动。
更隐蔽的是“怪物移动速度补偿”这个参数。调太高的话,怪物移动一步的时间被拉到好几秒,祖玛卫士走一步停两秒,玩家绕着它转圈它都追不上,自然也就打不到人。这个参数正常值在-100到100之间,超过这个范围就会出现怪物行动迟缓到几乎静止的效果。
还有一个地方是GameCenter.exe的控制台设置里,有“怪物处理循环间隔”的底层参数,不在M2界面上,要手动改配置文件。位置在D:\MirServer\Mir200\Config.ini里,字段是[M2Server]下面的MonsterProcessInterval。默认是100毫秒,如果被人改成了500甚至1000,全服所有怪物的AI刷新频率大幅降低,祖玛卫士当然不动。改回100,重启M2就好了。
**补充排查:脚本里做了怪物停战处理**
有些版本在登陆脚本QManage.txt或者机器人脚本里写了停战指令。比如使用了SETMONATTACK或者MONATTACK命令来控制全服怪物的攻击开关。这些命令通常用在特定活动中,比如安全区范围禁止怪物攻击、新手地图保护。如果某个NPC脚本或者定时器错误地执行了全局关闭怪物攻击,祖玛卫士就不打人了。
查QManage.txt的[@Login]段和Robot_def里的定时器脚本,搜索SETMONATTACK或者MONATTACK关键词。看到参数是0或者OFF就表示关闭攻击。改成1或者ON,重新加载脚本或者重启M2。有时候是脚本里有条件判断写反了,该开启的时候写了关闭,该关闭的时候写了开启,这种逻辑错误比参数填错更难发现,得顺着脚本的执行路径走一遍。
还有种情况是多级脚本调用的时候,下层脚本把怪物攻击状态改了,上层脚本没有恢复。比如某个任务脚本做了全服怪物停战,任务结束后忘了恢复攻击状态。用QuestDiary里的日志功能把脚本执行过程打出来看,找到修改状态的源头。

