这条信息出现在M2Server的运行日志里,意思是玩家对象在执行获得经验(GainExp)这个函数时触发了程序异常,后面的->0一般代表传入的经验值参数出了问题(例如算出来是0或者发生了数据溢出)。虽然单个出现通常不影响程序运行,但如果刷屏说明经验计算逻辑有毛病。
首要检查M2里的经验倍数设置。在M2选项-参数设置-经验里,杀怪经验倍数、行会经验倍数等不要填得过大,有的引擎上限很低,填几万倍会导致整数溢出或直接算出0,从而抛出这个异常。把它改回常见的1-100倍之间试试。
检查怪物数据库(Monster.DB)里对应怪物的经验值字段。如果手抖填了负数,或者填了一个超大的异常数值,引擎在计算时会出错并触发该提示。挨个核对最近改过的怪物经验,恢复成正常正整数。
查看是否使用了自定义脚本给予经验,比如用CalcVar计算变量后给EXP,或者给的经验公式是怪物经验*倍数,若公式里变量为空、除法分母为0,也会让经验值变成0或非法,进而报错。检查QuestDiary或QFunction里涉及GiveExp、CalcExp的脚本段。
部分版本的引擎在玩家满级后继续杀怪给经验时,如果满级处理代码写得不严谨,也会反复弹出这个0值异常。可以在M2参数里设置满级不再获得经验,或者检查升级经验文件(Exps.ini或!Setup.txt里的等级经验行)是否设置到了正确的等级上限,防止越界计算。
若是某张特定地图或某种特定怪物打死必出这行字,就重点查那张地图的刷怪文件和该怪物的经验设定;若是所有人杀任何怪都偶尔出,大概率是全局经验倍数或某个全局脚本变量污染导致。改完对应数值,重读脚本或重启M2后观察日志是否还刷。
首要检查M2里的经验倍数设置。在M2选项-参数设置-经验里,杀怪经验倍数、行会经验倍数等不要填得过大,有的引擎上限很低,填几万倍会导致整数溢出或直接算出0,从而抛出这个异常。把它改回常见的1-100倍之间试试。
检查怪物数据库(Monster.DB)里对应怪物的经验值字段。如果手抖填了负数,或者填了一个超大的异常数值,引擎在计算时会出错并触发该提示。挨个核对最近改过的怪物经验,恢复成正常正整数。
查看是否使用了自定义脚本给予经验,比如用CalcVar计算变量后给EXP,或者给的经验公式是怪物经验*倍数,若公式里变量为空、除法分母为0,也会让经验值变成0或非法,进而报错。检查QuestDiary或QFunction里涉及GiveExp、CalcExp的脚本段。
部分版本的引擎在玩家满级后继续杀怪给经验时,如果满级处理代码写得不严谨,也会反复弹出这个0值异常。可以在M2参数里设置满级不再获得经验,或者检查升级经验文件(Exps.ini或!Setup.txt里的等级经验行)是否设置到了正确的等级上限,防止越界计算。
若是某张特定地图或某种特定怪物打死必出这行字,就重点查那张地图的刷怪文件和该怪物的经验设定;若是所有人杀任何怪都偶尔出,大概率是全局经验倍数或某个全局脚本变量污染导致。改完对应数值,重读脚本或重启M2后观察日志是否还刷。

