先停掉M2、DBServer、网关,把MirServer整个目录复制一份改名备份。技能问题最怕边测边改,Magic.DB或脚本一旦写崩,没有备份回滚会很麻烦。
一、先判断是全技能坏还是单个技能坏
建三个小号分别试烈火、火球、治愈术:
全职业基础技能都没伤害也没特效,问题在M2开关、插件、客户端补丁、引擎核心;
只有某一个自定义技能释放卡死,重点查该技能的触发脚本和特效索引;
物理攻击正常,法道技能全废,先查Magic.DB加载和技能特效资源;
有飞行动画但打中不掉血,查伤害字段和伤害类型。
这个区分决定后面查哪里,不要一上来重装引擎。
二、Magic.DB核心字段核对
用DBC2000或BDE管理工具打开Mud2\DB\Magic.DB,找到异常技能所在行,按顺序看这几个字段:
MagicId不能重复,重复会导致M2加载时只认第一条;
MagIdx要和服务端脚本、客户端特效索引对得上,自定义技能别乱填高位序号;
技能类型,攻击技能不能填成被动或状态;
职业限制,1战士2法师3道士,填错职业放出来无效;
学习等级,测试角色没到等级,技能放了也没效果;
攻击最小值、攻击最大值,有一个是0就必然无伤害;
伤害类型,物理、魔法、道术要言,选错判定直接失效;
动画ID、施法特效、命中特效,填的数值必须对应客户端Data里Magic.wil/Effect.wil的实际帧序号;
范围、目标类型,单体技能写成群体或坐标错误,也可能让服务端运算阻塞。
改完点保存,然后同时重启DBServer和M2。只重启M2,数据库经常不重载。
三、释放瞬间卡死,优先查特效资源
卡死通常不是伤害算不出来,而是客户端读特效失败,主线程卡在解帧。
检查客户端Data目录:
Magic.wil/Magic2.wil是否存在,大小是不是0KB;
Effect.wil是否完整;
自定义pak补丁密码在登录器配置器里是否全绿;
微端先关掉,微端缺资源时会一直等待下发,表现就是放技能定屏。
服务端和客户端补丁必须同源。别拿别的版本Skill.wil硬凑,版本不对,释放时找不到动画帧,就会卡住。
再用M2自带的资源校验看一下Aniclass编号:技能里写的特效编号,在Aniclass.wil里必须存在对应帧。编号超出文件实际范围,一释放就卡。
四、脚本死循环和触发冲突
进Mir200\Envir\QuestDiary,还有QFunction.txt、QSpell.txt相关段,找这个技能的释放触发。
常见写法问题:
while循环没退出条件;
检测变量用了不存在的自定义字段;
释放时同时刷怪、喊话、写库、算概率、叠状态,逻辑太重;
调用了@段落但那个标签根本没定义;
自定义技能用了引擎不支持的高级触发指令。
排错方法很简单:把该技能在QFunction里的触发段整段注释掉,再进游戏放一次。如果不卡了,就是脚本问题,然后逐行放开测试。
M2控制台释放技能时如果刷红字,直接看报错行号,比盲改快。
五、插件和引擎核心冲突
进PlugClient目录,临时移走非必要的DLL:
技能增强类插件;
ESP、G盾类防护插件;
来源不明的第三方便利工具。
只留引擎原配插件,重启M2测试。插件版本和引擎主程序必须同代,跨版本加载经常表现为技能无伤害或释放卡死。
M2启动日志里看有没有Magic.DB加载失败、DBC路径错误、插件注册失败。默认DBC路径一般是D:\MirServer\Mud2\DB,路径不对技能表根本没进内存。
六、M2技能参数和加载模式
进M2Server,选项,功能设置,技能设置:
威力修正系数默认1.0,被改成0或极小值,技能看着放了但不掉血;
技能特效加载模式,实时加载改预加载,避免释放瞬间临时解包卡顿;
关掉技能释放强制同步先测一次;
检查技能耗蓝和释放间隔,间隔写成0、范围写成几十,也会让运算阻塞。
七、进程和缓存残留
Win10/Win11下如果之前引擎闪退过,任务管理器里搜M2Server、GameSrv、LoginGate,有残留进程全部结束。客户端根目录的Cache文件夹清掉,重新进游戏。
八、标准修复顺序
备份整个MirServer;
关插件,用原版引擎核心起服;
查Magic.DB字段,尤其是伤害值和特效编号;
注释技能触发脚本验证;
替换同源客户端Data补丁;
开M2日志看红字;
单技能没问题再逐个恢复插件和自定义脚本。
按这个顺序走,大部分无伤害、无特效、释放卡死都能定位到具体那一行配置。最典型的三种情况:伤害字段填0、MagIdx指向空特效、QFunction里脚本死循环,占实际故障的八成以上。
一、先判断是全技能坏还是单个技能坏
建三个小号分别试烈火、火球、治愈术:
全职业基础技能都没伤害也没特效,问题在M2开关、插件、客户端补丁、引擎核心;
只有某一个自定义技能释放卡死,重点查该技能的触发脚本和特效索引;
物理攻击正常,法道技能全废,先查Magic.DB加载和技能特效资源;
有飞行动画但打中不掉血,查伤害字段和伤害类型。
这个区分决定后面查哪里,不要一上来重装引擎。
二、Magic.DB核心字段核对
用DBC2000或BDE管理工具打开Mud2\DB\Magic.DB,找到异常技能所在行,按顺序看这几个字段:
MagicId不能重复,重复会导致M2加载时只认第一条;
MagIdx要和服务端脚本、客户端特效索引对得上,自定义技能别乱填高位序号;
技能类型,攻击技能不能填成被动或状态;
职业限制,1战士2法师3道士,填错职业放出来无效;
学习等级,测试角色没到等级,技能放了也没效果;
攻击最小值、攻击最大值,有一个是0就必然无伤害;
伤害类型,物理、魔法、道术要言,选错判定直接失效;
动画ID、施法特效、命中特效,填的数值必须对应客户端Data里Magic.wil/Effect.wil的实际帧序号;
范围、目标类型,单体技能写成群体或坐标错误,也可能让服务端运算阻塞。
改完点保存,然后同时重启DBServer和M2。只重启M2,数据库经常不重载。
三、释放瞬间卡死,优先查特效资源
卡死通常不是伤害算不出来,而是客户端读特效失败,主线程卡在解帧。
检查客户端Data目录:
Magic.wil/Magic2.wil是否存在,大小是不是0KB;
Effect.wil是否完整;
自定义pak补丁密码在登录器配置器里是否全绿;
微端先关掉,微端缺资源时会一直等待下发,表现就是放技能定屏。
服务端和客户端补丁必须同源。别拿别的版本Skill.wil硬凑,版本不对,释放时找不到动画帧,就会卡住。
再用M2自带的资源校验看一下Aniclass编号:技能里写的特效编号,在Aniclass.wil里必须存在对应帧。编号超出文件实际范围,一释放就卡。
四、脚本死循环和触发冲突
进Mir200\Envir\QuestDiary,还有QFunction.txt、QSpell.txt相关段,找这个技能的释放触发。
常见写法问题:
while循环没退出条件;
检测变量用了不存在的自定义字段;
释放时同时刷怪、喊话、写库、算概率、叠状态,逻辑太重;
调用了@段落但那个标签根本没定义;
自定义技能用了引擎不支持的高级触发指令。
排错方法很简单:把该技能在QFunction里的触发段整段注释掉,再进游戏放一次。如果不卡了,就是脚本问题,然后逐行放开测试。
M2控制台释放技能时如果刷红字,直接看报错行号,比盲改快。
五、插件和引擎核心冲突
进PlugClient目录,临时移走非必要的DLL:
技能增强类插件;
ESP、G盾类防护插件;
来源不明的第三方便利工具。
只留引擎原配插件,重启M2测试。插件版本和引擎主程序必须同代,跨版本加载经常表现为技能无伤害或释放卡死。
M2启动日志里看有没有Magic.DB加载失败、DBC路径错误、插件注册失败。默认DBC路径一般是D:\MirServer\Mud2\DB,路径不对技能表根本没进内存。
六、M2技能参数和加载模式
进M2Server,选项,功能设置,技能设置:
威力修正系数默认1.0,被改成0或极小值,技能看着放了但不掉血;
技能特效加载模式,实时加载改预加载,避免释放瞬间临时解包卡顿;
关掉技能释放强制同步先测一次;
检查技能耗蓝和释放间隔,间隔写成0、范围写成几十,也会让运算阻塞。
七、进程和缓存残留
Win10/Win11下如果之前引擎闪退过,任务管理器里搜M2Server、GameSrv、LoginGate,有残留进程全部结束。客户端根目录的Cache文件夹清掉,重新进游戏。
八、标准修复顺序
备份整个MirServer;
关插件,用原版引擎核心起服;
查Magic.DB字段,尤其是伤害值和特效编号;
注释技能触发脚本验证;
替换同源客户端Data补丁;
开M2日志看红字;
单技能没问题再逐个恢复插件和自定义脚本。
按这个顺序走,大部分无伤害、无特效、释放卡死都能定位到具体那一行配置。最典型的三种情况:伤害字段填0、MagIdx指向空特效、QFunction里脚本死循环,占实际故障的八成以上。

