技能无法使用,表现形式分为点击技能图标没有反应、提示不能学习、学习之后拖到快捷键无法释放、释放提示缺少条件、释放之后没有特效和伤害,先区分现象,再逐一核对对应配置。
先检查技能数据库,使用DBC2000打开技能数据表,找到对应技能ID,核对基础字段。技能的魔法消耗字段设置,如果数值大于角色当前魔法值,释放的时候会直接拦截,部分版本不会弹出提示,只静默失效。技能需要的等级字段,角色等级达不到设定数值,就算已经学习,也无法释放。职业字段是重点,战士、法师、道士各自对应标识,职业标识写错,其他职业学完技能也不能释放。还有技能是否开启的标记字段,关闭标记的技能,数据库层面直接禁用。修改数据库之后保存,在引擎面板重载技能数据库,没有重载的情况下改动不会生效。
然后查看技能学习与触发脚本,很多自定义技能依靠脚本实现,原生数据库只负责基础判定。双击技能书学习的脚本,要确认学习标记是否成功写入角色变量,没有写入标记,角色面板虽然显示技能,但是引擎判定未习得,无法释放。还有技能释放触发段,释放标签写错、跳转标签缺失、条件判断语句拦截,都会导致技能调用中断。脚本里面的地图判定、HP判定、BUFF判定、PK模式判定,任意一条不满足,技能就无法执行。部分技能设置只能在指定地图使用,在其他地图点击没有任何反馈。脚本里面的英文半角符号如果写成中文标点,整条触发逻辑直接失效。
M2引擎内的技能控制参数也会限制技能释放,打开M2选项,找到技能相关设置。里面有技能冷却开关、全局技能禁用、技能最大释放间隔、禁止在安全区释放技能、禁止在某些模式释放技能等选项。全局技能开关关闭,所有技能都不能释放;单独勾选禁用某一项技能,该技能直接失效。冷却时间设置过大,刚释放完短时间内再点,看起来就是技能不能用。还有技能魔法盾、护体类技能,有叠加判定,部分版本参数冲突会出现开启之后无法再次释放。
客户端资源和技能编号同步问题,技能数据表里面的技能特效编号,和客户端pak里面的特效编号不一致,会出现技能点击之后消耗魔法,但是看不到特效,玩家会误以为技能没有释放。技能图标编号错误,图标显示异常,快捷键绑定失败。客户端技能文本配置缺失,也会出现技能学习成功,但是快捷键无法选中。遇到这类情况,核对技能ID、特效编号,同步补丁,清除客户端本地缓存再测试。
快捷键与操作模式问题,快捷键被其他功能占用,或者内挂设置屏蔽了技能快捷键。打开F12内挂,检查快捷键设置,确认对应按键没有被拾取、自动吃药、自动合击等功能占用。部分版本区分模式释放,比如攻击模式为和平的时候,群体攻击技能无法对怪物释放,需要切换攻击模式。合击技能还要检查元气值,元气没有攒满,合击按钮灰色无法点击,同时核对英雄是否处于存活、跟随状态,英雄死亡或者休息,合击技能不能触发。
BUFF和状态拦截,角色身上带有禁魔、封技能类状态,状态生效期间所有或者指定技能被锁住。可以查看角色身上状态列表,找到禁魔类buff,查看buff脚本里面的技能限制代码,确认buff持续时间、允许解除的方式。部分地图自带全局禁魔,进入地图之后所有魔法技能禁用,战士技能不受影响,这类属于地图参数控制。
权限相关的判定,管理权限、玩家权限分组里面有技能权限控制,低权限分组被限制使用高级技能,需要在权限配置里放开对应技能权限。还有行会、沙巴克专属技能,非对应行会成员无法释放,脚本里面做了行会标识判断。
排查顺序按照现象区分,提示缺少魔法,直接核对魔法消耗数值;提示等级不足,核对技能等级字段;完全没有提示,先看引擎日志,释放技能的时候日志会打印执行记录,有报错就定位脚本行数。先在本地单机测试,排除网络问题,单机正常外网不行,再考虑网关和数据包拦截。只单个技能失效,优先查数据库和该技能脚本;全部技能都不能用,优先看M2全局技能开关、禁魔状态、地图参数。
测试的时候新建空白角色,不携带任何buff,到普通地图测试,排除地图、状态带来的干扰。修改完脚本或者数据库,分批重载,改数据库就重载数据库,改脚本就重载脚本,不要直接重启引擎,方便定位改动点。自定义技能和原生技能分开排查,原生技能大多是数据库和M2参数问题,新增技能故障基本都来自脚本逻辑。
先检查技能数据库,使用DBC2000打开技能数据表,找到对应技能ID,核对基础字段。技能的魔法消耗字段设置,如果数值大于角色当前魔法值,释放的时候会直接拦截,部分版本不会弹出提示,只静默失效。技能需要的等级字段,角色等级达不到设定数值,就算已经学习,也无法释放。职业字段是重点,战士、法师、道士各自对应标识,职业标识写错,其他职业学完技能也不能释放。还有技能是否开启的标记字段,关闭标记的技能,数据库层面直接禁用。修改数据库之后保存,在引擎面板重载技能数据库,没有重载的情况下改动不会生效。
然后查看技能学习与触发脚本,很多自定义技能依靠脚本实现,原生数据库只负责基础判定。双击技能书学习的脚本,要确认学习标记是否成功写入角色变量,没有写入标记,角色面板虽然显示技能,但是引擎判定未习得,无法释放。还有技能释放触发段,释放标签写错、跳转标签缺失、条件判断语句拦截,都会导致技能调用中断。脚本里面的地图判定、HP判定、BUFF判定、PK模式判定,任意一条不满足,技能就无法执行。部分技能设置只能在指定地图使用,在其他地图点击没有任何反馈。脚本里面的英文半角符号如果写成中文标点,整条触发逻辑直接失效。
M2引擎内的技能控制参数也会限制技能释放,打开M2选项,找到技能相关设置。里面有技能冷却开关、全局技能禁用、技能最大释放间隔、禁止在安全区释放技能、禁止在某些模式释放技能等选项。全局技能开关关闭,所有技能都不能释放;单独勾选禁用某一项技能,该技能直接失效。冷却时间设置过大,刚释放完短时间内再点,看起来就是技能不能用。还有技能魔法盾、护体类技能,有叠加判定,部分版本参数冲突会出现开启之后无法再次释放。
客户端资源和技能编号同步问题,技能数据表里面的技能特效编号,和客户端pak里面的特效编号不一致,会出现技能点击之后消耗魔法,但是看不到特效,玩家会误以为技能没有释放。技能图标编号错误,图标显示异常,快捷键绑定失败。客户端技能文本配置缺失,也会出现技能学习成功,但是快捷键无法选中。遇到这类情况,核对技能ID、特效编号,同步补丁,清除客户端本地缓存再测试。
快捷键与操作模式问题,快捷键被其他功能占用,或者内挂设置屏蔽了技能快捷键。打开F12内挂,检查快捷键设置,确认对应按键没有被拾取、自动吃药、自动合击等功能占用。部分版本区分模式释放,比如攻击模式为和平的时候,群体攻击技能无法对怪物释放,需要切换攻击模式。合击技能还要检查元气值,元气没有攒满,合击按钮灰色无法点击,同时核对英雄是否处于存活、跟随状态,英雄死亡或者休息,合击技能不能触发。
BUFF和状态拦截,角色身上带有禁魔、封技能类状态,状态生效期间所有或者指定技能被锁住。可以查看角色身上状态列表,找到禁魔类buff,查看buff脚本里面的技能限制代码,确认buff持续时间、允许解除的方式。部分地图自带全局禁魔,进入地图之后所有魔法技能禁用,战士技能不受影响,这类属于地图参数控制。
权限相关的判定,管理权限、玩家权限分组里面有技能权限控制,低权限分组被限制使用高级技能,需要在权限配置里放开对应技能权限。还有行会、沙巴克专属技能,非对应行会成员无法释放,脚本里面做了行会标识判断。
排查顺序按照现象区分,提示缺少魔法,直接核对魔法消耗数值;提示等级不足,核对技能等级字段;完全没有提示,先看引擎日志,释放技能的时候日志会打印执行记录,有报错就定位脚本行数。先在本地单机测试,排除网络问题,单机正常外网不行,再考虑网关和数据包拦截。只单个技能失效,优先查数据库和该技能脚本;全部技能都不能用,优先看M2全局技能开关、禁魔状态、地图参数。
测试的时候新建空白角色,不携带任何buff,到普通地图测试,排除地图、状态带来的干扰。修改完脚本或者数据库,分批重载,改数据库就重载数据库,改脚本就重载脚本,不要直接重启引擎,方便定位改动点。自定义技能和原生技能分开排查,原生技能大多是数据库和M2参数问题,新增技能故障基本都来自脚本逻辑。

