예제 #1
0
        public StatsUpdateList PullSurvivorStats(StatsUpdateList iList, bool iGatherFromAllPlayers)
        {
            iList.Clear();
            RunReport runReport = RunReport.Generate(Run.instance, GameResultType.Unknown);
            List <RunReport.PlayerInfo> playerInfoList = new List <RunReport.PlayerInfo> {
            };
            DateTime now   = DateTime.Now;
            TimeSpan delta = now - timeStart;

            for (int i = 0; i < runReport.playerInfoCount; i++)
            {
                if ((iGatherFromAllPlayers) ||
                    (runReport.GetPlayerInfo(i).isLocalPlayer))
                {
                    RunReport.PlayerInfo playerInfo = runReport.GetPlayerInfo(i);
                    ulong totalDamageDealt          = playerInfo.statSheet.GetStatValueULong(StatDef.totalDamageDealt) +
                                                      playerInfo.statSheet.GetStatValueULong(StatDef.totalMinionDamageDealt);


                    // The server doesn't have access to playerInfo.networkUser.userName, playerInfo.name, or playerInfo.networkUser.GetNetworkPlayerName().GetResolvedName();

                    string nameIdentifier = playerInfo.bodyName;

                    StatsUpdate update = new StatsUpdate(i + 1,
                                                         nameIdentifier,
                                                         delta,
                                                         totalDamageDealt,
                                                         playerInfo.statSheet.GetStatValueULong(StatDef.totalKills));
                    iList.Add(update);
                }
            }

            return(iList);
        }
예제 #2
0
        public string GetCharacterStats()
        {
            if (CachedCharacterBody == null)
            {
                return(string.Empty);
            }
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < CachedStatsToDisplay.Length; i++)
            {
                object stat = typeof(CharacterBody).GetProperty(CachedStatsToDisplay[i],
                                                                BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance).GetValue(CachedCharacterBody);
                sb.AppendLine($"{CachedStatsToDisplayNames[i]}: {stat}");
            }

            RunReport runReport = RunReport.Generate(Run.instance, GameResultType.Unknown);

            for (int i = 0; i < runReport.playerInfoCount; i++)
            {
                RunReport.PlayerInfo playerInfo = runReport.GetPlayerInfo(i);

                if (playerInfo.isLocalPlayer)
                {
                    sb.AppendLine($"Kills: {playerInfo.statSheet.GetStatValueULong(StatDef.totalKills)}");
                    sb.AppendLine($"Damage Dealt: {playerInfo.statSheet.GetStatValueULong(StatDef.totalDamageDealt)}");
                    sb.AppendLine($"Gold Collected: {playerInfo.statSheet.GetStatValueULong(StatDef.goldCollected)}");
                    sb.AppendLine($"Stages Completed: {playerInfo.statSheet.GetStatValueULong(StatDef.totalStagesCompleted)}");
                    break;
                }
            }

            return(sb.ToString());
        }
예제 #3
0
        public string GetCharacterStats()
        {
            if (CachedCharacterBody == null)
            {
                return(string.Empty);
            }
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < CachedCharacterBodyStats.Length; i++)
            {
                object stat = typeof(CharacterBody).GetProperty(CachedCharacterBodyStats[i],
                                                                BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance).GetValue(CachedCharacterBody);
                sb.AppendLine($"{CachedCharacterBodyStatsNames[i]}: {stat}");
            }

            RunReport runReport = RunReport.Generate(Run.instance, GameResultType.Unknown);

            RunReport.PlayerInfo playerInfo = null;

            for (int i = 0; i < runReport.playerInfoCount; i++)
            {
                if (runReport.GetPlayerInfo(i).isLocalPlayer)
                {
                    playerInfo = runReport.GetPlayerInfo(i);
                    break;
                }
            }

            if (playerInfo != null)
            {
                for (int i = 0; i < CachedStatSheetStats.Length; i++)
                {
                    StatDef statDef = (StatDef)typeof(StatDef).GetField(CachedStatSheetStats[i],
                                                                        BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static).GetValue(null);
                    sb.AppendLine($"{CachedStatSheetStatsNames[i]}: {playerInfo.statSheet.GetStatDisplayValue(statDef)}");
                }
            }

            return(sb.ToString());
        }
예제 #4
0
        public void Awake()
        {
            On.RoR2.CharacterBody.OnSprintStart += (orig, self) =>
            {
                RunReport            runReport  = RunReport.Generate(Run.instance, GameResultType.Unknown);
                RunReport.PlayerInfo playerInfo = null;

                if (runReport.GetPlayerInfo(0).isLocalPlayer)
                {
                    playerInfo = runReport.GetPlayerInfo(0);
                    Chat.AddMessage("Got player indo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                }
                if (playerInfo != null)
                {
                    StatDef statDef = (StatDef)typeof(StatDef).GetField("totalDamageDealt").GetValue(null);
                    sb2.AppendLine($"Damage dealt : {playerInfo.statSheet.GetStatDisplayValue(statDef)}");
                }

                Chat.AddMessage("Yo!");
                Chat.AddMessage("Damage Done : " + sb2.ToString());
                orig(self);
            };
        }
예제 #5
0
        public void UpdateDamageDealt()
        {
            if (Run.instance == null)
            {
                return;
            }

            RunReport runReport = RunReport.Generate(Run.instance, GameResultType.Unknown);

            for (int i = 0; i < runReport.playerInfoCount; i++)
            {
                if (!CachedDamageDealt.ContainsKey(runReport.GetPlayerInfo(i).master.gameObject))
                {
                    CachedDamageDealt.Add(runReport.GetPlayerInfo(i).master.gameObject, new CircularBuffer <ulong>(TICK_COUNT));
                }
            }

            for (int i = 0; i < runReport.playerInfoCount; i++)
            {
                var name           = runReport.GetPlayerInfo(i).master.gameObject;
                var curDamageDealt = runReport.GetPlayerInfo(i).statSheet.GetStatValueULong(StatDef.totalDamageDealt);
                CachedDamageDealt[name].Add(curDamageDealt);
            }
        }