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); }
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()); }
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()); }
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); }; }
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); } }