• 注册
  • 物品&功能 物品&功能 关注:8109 内容:1258

    关于GameEvent调用报空引用异常(NRE)导致游戏、服务器频繁崩溃的研究,以及修复Mod

  • 查看作者
  • 打赏作者
  • 当前位置: 七日杀中文网 > MOD下载 > 物品&功能 > 正文
  • 物品&功能
  • Lv.3
  • 原创

  • 原版并没有这个Bug,如果你安装的Mod包含召唤实体事件,那可能会触发这个Bug

    如果你的游戏或者服务器没有同样的NRE异常,那就没必要下这个Mod。

    —————————异常描述————————–

    最近玩游戏发现SpawnEntity(召唤实体事件)调用的Bug:由事件调用引起的空引用异常导致游戏、服务器频繁崩溃。

    1、同样的Mod,在服务器玩,服务器经常崩溃,体现为:丢东西浮空、掉进地心、传送卡半空等等,而服务器后台一直刷红字(NullReferenceException),报错代码:GameEventActionSequence.update()

    2、同样的Mod,在单机玩, 控制台就一直刷红字(NullReferenceException),只能Alt+F4强关游戏,而本地的log文件输出同样的错误:GameEventActionSequence.update()

    —————————异常触发以及修复————————–

    日志、报错截图:

    关于GameEvent调用报空引用异常(NRE)导致游戏、服务器频繁崩溃的研究,以及修复Mod关于GameEvent调用报空引用异常(NRE)导致游戏、服务器频繁崩溃的研究,以及修复Mod

    本机日志目录:C:\Users\用户\AppData\Roaming\7DaysToDie\logs

    服务器日志目录:盘符:\ xxx\xxx\steamapps\common\7 Days to Die Dedicated Server\7DaysToDieServer_Data

    出错Mod代码示例,见图:

    关于GameEvent调用报空引用异常(NRE)导致游戏、服务器频繁崩溃的研究,以及修复Mod

    上图的代码,是导致游戏、服务器频繁报红、崩溃的根源。

    该NRE异常不是能百分百触发的,触发条件:如果目标实体已死亡,假如这时候SpawnEntity还在运行,那么就会报错、崩溃。

    解决办法:添加<property name=”action_type” value=”Game”/>

    修复之后的代码如图:

    关于GameEvent调用报空引用异常(NRE)导致游戏、服务器频繁崩溃的研究,以及修复Mod

    —————————为什么要设置action_type————————–

    action_type的类型是枚举,有三个取值:TwitchAction,TwitchVote,Game,而C#枚举默认值是第一个。

    因此,如果SpawnEntity所在的事件序列不设置action_type,那么就会用默认值TwitchAction,事件管理器在事件处理过程中会对TwitchAction做特殊处理,就在TwitchAction处理过程中报了NRE异常(Requester是Null)

    再看ActionSpawnEntity对目标是否死亡的处理逻辑流程:

    1、目标死亡

    2、如果action_typeTwitchAction,做特殊处理(NRE异常)

    3、action完成

    如果action_type是Game,那么第1、3步执行完,action就结束了

    如果action_type是TwitchAction,就要处理第2步(NRE异常)

    TwitchAction特殊处理报错分析:报错代码是Requester.entityId,Debug发现Requester是Null,Null调用肯定报NRE异常,但是仔细查看了Requester的相关引用和赋值,没发现有效赋值的地方,难道Requester永远是Null?(研究就到此为止了)

    —————————修复NRE异常的Mod————————–

    鉴于有同样情况的Mod可能有很多,就出个一劳永逸的修复Mod,这个Mod的作用是强制设置action_type的值是Game。

    当然你也可以手动在gameevents.xml里搜索SpawnEntity并设置action_sequence的action_type值是Game。

    PS:

    1、action_type的值有3个,有2个是Twitch相关的,还一个是Game。直接强制设置所有的action_type是Game,百分百是没问题的。

    2、建议所有Mod作者在写Mod时,如果涉及到召唤实体事件(SpawnEntity),一定要设置action_type,并且设置值是Game。

    3、还有一种修复办法,因为action_type是枚举,枚举的默认值是第一个,因此只要把Game放到第一个,像这样:Game,TwitchAction,TwitchVote,就修复了这个NRE异常(这个方法需要官方来处理)





    隐藏内容需要回复可以看见

    回复

    "点赞是美意,打赏是鼓励"

    Lv.3

    二楼Bug反馈

    回复
    我一直没找到是我哪个mod的问题,以为是1.3的bug,我都回1.2玩了
    回复
    Lv.1

    666

    回复
    Lv.8
    萌新驾到

    这个逼装的我给82分,剩下的用666的方式打给你!

    接点模组定制 +q 1079703478

    回复
    Lv.1

    1


    回复

    这个逼装的我给82分,剩下的用666的方式打给你!

    回复
    Lv.8

    卧槽还得是你牛逼,我大部分bug都找到原因了,唯独这个召唤实体报错的一直不知道原因,困扰我好几个月了。

    定制加Q417983415

    回复
    Lv.6
    浴火重生

    牛逼 大佬

    回复
    Lv.9

    这个逼装的我给82分,剩下的用666的方式打给你!感谢大佬的付出,赞一个!

    回复

    感谢大佬的付出,赞一个!这个逼装的我给82分,剩下的用666的方式打给你!

    回复

    MOD板块严查恶意、辱骂、讽刺等评论,如发现此类评论轻则小黑屋,重则永久封禁!

    如果发现帖子违规,用户可以点击帖子标题旁的向下箭头,选择举报内容

    涉及版权纠纷请确保你有所属版权,否则中文网有权不作处理

    请登录之后再进行评论

    登录
    • 大版主
    • 小版主
  • 英雄大人
    英雄大人
    白天在工作,晚上在睡觉,有事可以留言,不一定能及时回复!
  • yichen
  • 林小天
    林小天
    我还活着买断制版本,私聊我qq3807190901请标明来意
  • 雾凇
    雾凇
    旧日支配者-光暗扩展 MOD作者
  • 摸鱼摸鱼摸
    摸鱼摸鱼摸
    交流吹水群967780922
  • 银河
    银河
    CSOL大灾变欢迎你的到来。QQ群:967780922
  • 安安
    安安
    大背包、常显、叠加、除草树,唯一作者QQ383125283
  • 最强打野贝爷
    最强打野贝爷
    上班!上班!上班!
  • Cure_805
    Cure_805
    晚上在睡觉,白天在工作,不一定能及时回复,有事可以留言!
  • happy!
    happy!
    住院中
  • 妮可Neko
    妮可Neko
    无聊写些小玩意儿
  • 赞助广告位

  • 点击展示图片即可一键加入QQ群
    赞助广告:100R/月 目前空缺广告位:0

    分享网站

  • 繁体中文
  • 任务
  • 动态
  • 到底部
  • 帖子间隔 侧栏位置: