风暴英雄MVP究竟是怎么算的 代码分析

  别争了别瞎猜了!我来告诉你们MVP究竟是怎么算的!

风暴英雄代码分析:MVP究竟是怎么算的

  废话不说了直接来干货。

  相关步骤:

  第1步,检测游戏类型。游戏模式为竞技场模式(乱斗),攻防战(可能是星际2遗留),调试模式,商店试用模式;以下开关[游戏结束后奖励面板被禁用,游戏不是由匹配系统构建,调试模式,游戏模式不是教程1,游戏模式不是地图机制教学]以上所有条件任意一个条件成立则阻断计算过程并阻止游戏后奖励面板显示。

  第2步,当游戏模式是教程1或游戏模式是地图机制教程,设置手动授予MVP玩家开关为真。

  第3步,遍历全场数据,确认全场和每队的攻城、英雄伤害、承受伤害、治疗量、贡献经验值的数据量和对应玩家。

  第4步,获胜队伍每玩家的MVP积分 +2.0 。

  第5步,为每个玩家增加MVP积分,数值为 击杀数 * 1.0 。

  第6步,为每个玩家增加MVP积分,数值为 助攻数 * 权重值。若玩家使用失落的维京人或者阿巴瑟,权重为0.75 ,否则为 1 。

  第7步,若玩家总死亡时间大于 0.0 ,则为该玩家增加MVP积分,数值为 ( 玩家总死亡时间 / 游戏总时长 ) * 100.0 * 权重值。若玩家使用古,权重为 -0.85 ;使用加尔或小鱼人,权重值为 -1.0;其他英雄权重值为 -0.5 。若玩家总死亡时间小于等于 0.0 ,不进行该步骤计算。

  第8步,为每队英雄伤害最高的一位玩家增加MVP积分 1.0 。若该玩家英雄伤害大于敌方队伍最高英雄伤害(即全场最高英雄伤害),为该玩家再增加MVP积分 1.0 。

  第9步,为每队攻城伤害最高的一位玩家增加MVP积分 1.0 。若该玩家攻城伤害大于敌方队伍最高攻城伤害(即全场最高攻城伤害),为该玩家再增加MVP积分 1.0 。

  第10步,为每队战斗型英雄承受伤害量最高的一位玩家增加MVP积分 0.5 。若该玩家战斗型英雄承受伤害量大于敌方队伍最高战斗型英雄承受伤害量(即全场最高战斗型英雄承受伤害量),为该玩家再增加MVP积分 1.0 。

  第11步,若该玩家的治疗量为全场最高治疗量,为该玩家再增加MVP积分 1.0 。

  第12步,为每队贡献经验值最高的一位玩家增加MVP积分 1.0 。若该玩家贡献经验值大于敌方队伍最高贡献经验值(即全场最高贡献经验值),为该玩家再增加MVP积分 1.0 。

  第13步,设置生产量奖励权重为 2.0 。

  第14步,如果全场最高攻城伤害大于 0 ,为每位玩家增加生产量奖励分值,数值为 生产量奖励权重 * ( 该玩家攻城伤害 / 全场最高攻城伤害 )

  第15步,如果全场最高英雄伤害大于 0 ,为每位玩家增加生产量奖励分值,数值为 生产量奖励权重 * ( 该玩家英雄伤害 / 全场最高英雄伤害 )

  第16步,如果全场最高贡献经验值大于 0 ,为每位玩家增加生产量奖励分值,数值为 生产量奖励权重 * ( 该玩家贡献经验值 / 全场最高贡献经验值 )

  第17步,如果全场最高治疗量大于 0 ,且玩家所使用英雄为辅助型英雄,为该玩家增加生产量奖励分值,数值为 生产量奖励权重 * ( 该玩家治疗量 / 全场最高治疗量 ) * 0.5 。

  第18步,如果全场最高承受伤害大于 0 ,且玩家所使用英雄为战斗型英雄,为该玩家增加生产量奖励分值,数值为 生产量奖励权重 * ( 该玩家承受伤害 / 全场最高治疗量 ) * 0.5 。

  第19步,为每个玩家增加MVP积分,数值为 生产量奖励分值 。

  第20步,将MVP授予MVP积分最高的玩家。

  第21步,若有两位玩家MVP积分相同,将MVP授予给两者中贡献经验值更高的一位。

  第22步,若两位玩家MVP积分相同且贡献经验值相同,则在两者中随机挑选一位作为MVP。

  第23步,若手动授予MVP玩家开关为真,将MVP授予1号玩家(教程模式,玩家永远在1号位)。

  第24步,初始化相关UI显示界面。

  (原文来源:NGA 作者: TinkoLiu)