public void Initialise(PublicSummoner publicSummoner, RegionType summonerRegion) { //Id cannot be set yet Region = summonerRegion; AccountId = publicSummoner.acctId; SummonerId = publicSummoner.summonerId; SummonerName = publicSummoner.name; InternalName = publicSummoner.internalName; SummonerLevel = publicSummoner.summonerLevel; ProfileIcon = publicSummoner.profileIconId; HasBeenUpdated = false; UpdateAutomatically = false; int time = (int)Time.UnixTime(); TimeCreated = time; TimeUpdated = time; RevisionDate = (int)publicSummoner.revisionDate.ToUnixTime(); LastUpdateTrial = 0; }
public Summoner(PublicSummoner publicSummoner, RegionType summonerRegion) { Initialise(publicSummoner, summonerRegion); }
bool GetRecentGames(string summonerName, ref PublicSummoner publicSummoner, ref List<PlayerGameStats> recentGames) { publicSummoner = RPC.GetSummonerByName(summonerName); if (publicSummoner == null) return false; RecentGames recentGameData = RPC.GetRecentGames(publicSummoner.acctId); recentGames = recentGameData.gameStatistics; recentGames.Sort(CompareGames); return true; }
void AnalyseRecentGames(List<string> arguments) { string summonerName = GetNameFromArguments(arguments); PublicSummoner publicSummoner = new PublicSummoner(); List<PlayerGameStats> recentGames = new List<PlayerGameStats>(); bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames); if (!foundSummoner) { NoSuchSummoner(); return; } foreach (var stats in recentGames) { GameResult result = new GameResult(stats); Console.Write("[{0}] [{1}] [{2}] ", stats.gameId, stats.createDate, result.Win ? "W" : "L"); if (stats.ranked) Console.Write("Ranked "); if (stats.gameType == "PRACTICE_GAME") { Console.Write("Custom "); switch (stats.gameMode) { case "CLASSIC": Console.Write("Summoner's Rift"); break; case "ODIN": Console.Write("Dominion"); break; default: Console.Write(stats.gameMode); break; } } else { switch (stats.queueType) { case "RANKED_TEAM_3x3": Output.Write("Twisted Treeline"); break; case "NORMAL": case "RANKED_SOLO_5x5": Console.Write("Summoner's Rift"); break; case "RANKED_TEAM_5x5": Console.Write("Summoner's Rift (team)"); break; case "ODIN_UNRANKED": Console.Write("Dominion"); break; case "BOT": Console.Write("Co-op vs. AI"); break; default: Console.Write(stats.queueType); break; } } Console.WriteLine(", {0}, {1}/{2}/{3}", GetChampionName(stats.championId), result.Kills, result.Deaths, result.Assists); List<string> units = new List<string>(); if (stats.adjustedRating != 0) units.Add(string.Format("Rating: {0} ({1})", stats.rating + stats.eloChange, SignPrefix(stats.eloChange))); if (stats.adjustedRating != 0) units.Add(string.Format("adjusted {0}", stats.adjustedRating)); if (stats.teamRating != 0) units.Add(string.Format("team {0} ({1})", stats.teamRating, SignPrefix(stats.teamRating - stats.rating))); PrintUnits(units); if (stats.predictedWinPct != 0.0) units.Add(string.Format("Predicted winning percentage {0}", Percentage(stats.predictedWinPct))); if (stats.premadeSize > 1) units.Add(string.Format("Queued with {0}", stats.premadeSize)); if (stats.leaver) units.Add("Left the game"); if (stats.afk) units.Add("AFK"); units.Add(string.Format("{0} ms ping", stats.userServerPing)); units.Add(string.Format("{0} s spent in queue", stats.timeInQueue)); PrintUnits(units); } }
void AnalyseSummonerProfile(List<string> arguments) { string summonerName = GetNameFromArguments(arguments); PublicSummoner publicSummoner = new PublicSummoner(); List<PlayerGameStats> recentGames = new List<PlayerGameStats>(); bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames); if (!foundSummoner) { NoSuchSummoner(); return; } PlayerLifeTimeStats lifeTimeStatistics = RPC.RetrievePlayerStatsByAccountID(publicSummoner.acctId, "CURRENT"); if (lifeTimeStatistics == null) { Output.WriteLine("Unable to retrieve lifetime statistics"); return; } List<PlayerStatSummary> summaries = lifeTimeStatistics.playerStatSummaries.playerStatSummarySet; Output.WriteLine("Name: " + publicSummoner.name); Output.WriteLine("Account ID: " + publicSummoner.summonerId); Output.WriteLine("Summoner level: " + publicSummoner.summonerLevel); //No idea what this value contains now //Output.WriteLine("IP: " + allSummonerData.summonerLevelAndPoints.infPoints); //The hidden "Team" variants of the "Premade" ratings are currently unused, it seems AnalayseStatistics("Unranked Summoner's Rift/Twisted Treeline", "Unranked", summaries); AnalayseStatistics("Ranked Twisted Treeline (team)", "RankedPremade3x3", summaries); AnalayseStatistics("Ranked Summoner's Rift (solo)", "RankedSolo5x5", summaries); AnalayseStatistics("Ranked Summoner's Rift (team)", "RankedPremade5x5", summaries); AnalayseStatistics("Unranked Dominion", "OdinUnranked", summaries); }
void AnalyseEnvironmentalRating(List<string> arguments, bool ranked, string season) { if (arguments.Count == 0) return; string summonerName = GetSummonerName(arguments[0]); var excludedNames = new List<string>(); for (int i = 1; i < arguments.Count; i++) excludedNames.Add(GetSummonerName(arguments[i])); PublicSummoner publicSummoner = new PublicSummoner(); List<PlayerGameStats> recentGames = new List<PlayerGameStats>(); bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames); if (!foundSummoner) { NoSuchSummoner(); return; } var knownSummoners = new HashSet<string>(); var currentRatings = new List<int>(); var topRatings = new List<int>(); int gameCount = 0; foreach (var stats in recentGames) { GameResult result = new GameResult(stats); if ( (stats.gameType == "PRACTICE_GAME") || (!ranked && stats.queueType != "NORMAL") || (ranked && stats.queueType != "RANKED_SOLO_5x5") ) continue; var ids = new List<int>(); foreach (var fellowPlayer in stats.fellowPlayers) ids.Add(fellowPlayer.summonerId); var names = RPC.GetSummonerNames(ids); bool isValidGame = true; foreach (var name in excludedNames) { if (names.IndexOf(name) >= 0) { isValidGame = false; break; } } if (!isValidGame) continue; gameCount++; foreach (var name in names) { if (knownSummoners.Contains(name)) continue; knownSummoners.Add(name); PublicSummoner summoner = RPC.GetSummonerByName(name); if (summoner == null) { Console.WriteLine("Unable to load summoner {0}", name); return; } PlayerLifeTimeStats lifeTimeStatistics = RPC.RetrievePlayerStatsByAccountID(summoner.acctId, season); if (lifeTimeStatistics == null) { Console.WriteLine("Unable to retrieve lifetime statistics for summoner {0}", name); return; } List<PlayerStatSummary> summaries = lifeTimeStatistics.playerStatSummaries.playerStatSummarySet; const string target = "RankedSolo5x5"; foreach (var summary in summaries) { if (summary.playerStatSummaryType == target) { int games = summary.wins + summary.losses; if (games == 0) break; Console.Write("{0}: ", name); if (summary.maxRating >= 2200) Console.ForegroundColor = ConsoleColor.White; else if (summary.maxRating >= 1850) Console.ForegroundColor = ConsoleColor.DarkCyan; else if (summary.maxRating >= 1500) Console.ForegroundColor = ConsoleColor.DarkYellow; else if (summary.maxRating < 1150 && summary.maxRating != 0) Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write("{0} (top {1}), ", summary.rating, summary.maxRating); Console.ResetColor(); Console.Write("{0} W - {1} L ({2})", summary.wins, summary.losses, SignPrefix(summary.wins - summary.losses)); if (summary.leaves > 0) Console.Write(", left {0} {1}", summary.leaves, (summary.leaves > 1 ? "games" : "game")); Console.WriteLine(""); currentRatings.Add(summary.rating); topRatings.Add(summary.maxRating); break; } } } } currentRatings.Sort(); topRatings.Sort(); PrintRatings("Current ratings", currentRatings); PrintRatings("Top ratings", topRatings); int playerCount = 9 * gameCount; int rankedPlayers = topRatings.Count; float rankedRatio = (float)rankedPlayers / playerCount; Console.WriteLine("Ranked players: {0}/{1} ({2:F1}%)", rankedPlayers, playerCount, rankedRatio * 100); }
void AnalyseSummonerProfile(List<string> arguments) { string summonerName = GetSummonerName(arguments[0]); PublicSummoner publicSummoner = new PublicSummoner(); List<PlayerGameStats> recentGames = new List<PlayerGameStats>(); bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames); if (!foundSummoner) { NoSuchSummoner(); return; } Output.WriteLine("Name: " + publicSummoner.name); Output.WriteLine("Account ID: " + publicSummoner.acctId); Output.WriteLine("Summoner ID: " + publicSummoner.summonerId); Output.WriteLine("Summoner level: " + publicSummoner.summonerLevel); string[] seasonStrings = { "CURRENT", "TWO", "ONE", }; foreach (string seasonString in seasonStrings) { Output.WriteLine("Season: \"{0}\"", seasonString); PlayerLifeTimeStats lifeTimeStatistics = RPC.RetrievePlayerStatsByAccountID(publicSummoner.acctId, seasonString); if (lifeTimeStatistics == null) { Output.WriteLine("Unable to retrieve lifetime statistics"); return; } List<PlayerStatSummary> summaries = lifeTimeStatistics.playerStatSummaries.playerStatSummarySet; //The hidden "Team" variants of the "Premade" ratings are currently unused, it seems AnalayseStatistics("Unranked Summoner's Rift/Twisted Treeline", "Unranked", summaries); AnalayseStatistics("Ranked Twisted Treeline (team)", "RankedPremade3x3", summaries); AnalayseStatistics("Ranked Summoner's Rift (solo)", "RankedSolo5x5", summaries); AnalayseStatistics("Ranked Summoner's Rift (team)", "RankedPremade5x5", summaries); AnalayseStatistics("Unranked Dominion", "OdinUnranked", summaries); } }
public void endPublicSummonerResponder(PublicSummoner summoner) { endPSummoners.Add(summoner); if (summoner != null) { pvpnet.RPC.GetRecentGamesAsync(summoner.acctId, new FluorineFx.Net.Responder<RecentGames>(endFellowRecentGamesResponder)); pvpnet.RPC.RetrievePlayerStatsByAccountIDAsync(summoner.acctId, "CURRENT", new FluorineFx.Net.Responder<PlayerLifeTimeStats>(endPlayerLifeStatsResponder)); } }
private void updateSummoner(PublicSummoner pSumm, PlayerLifeTimeStats summStats, AggregatedStats aggStats, AllPublicSummonerDataDTO summPages, MasteryBook masteries) { PlayerStatSummary rSolo5x5; PlayerStatSummary rTeam5x5; PlayerStatSummary normal5x5; List<ChampionStatistics> champStats = ChampionStatistics.GetChampionStatistics(aggStats); db.updateSummoner("summonerLevel", pSumm.summonerLevel.ToString(), pSumm.summonerId); db.updateSummoner("profileIconId", pSumm.profileIconId.ToString(), pSumm.summonerId); if ((rSolo5x5 = summStats.getRankedSolo5x5()) != null) { db.updateSummoner("solo5x5_elo", rSolo5x5.rating.ToString(), pSumm.summonerId); db.updateSummoner("solo5x5_wins", rSolo5x5.wins.ToString(), pSumm.summonerId); db.updateSummoner("solo5x5_losses", rSolo5x5.losses.ToString(), pSumm.summonerId); db.updateSummoner("solo5x5_maxElo", rSolo5x5.maxRating.ToString(), pSumm.summonerId); } if ((rTeam5x5 = summStats.getRankedTeam5x5()) != null) { db.updateSummoner("team5x5_elo", rTeam5x5.rating.ToString(), pSumm.summonerId); db.updateSummoner("team5x5_wins", rTeam5x5.wins.ToString(), pSumm.summonerId); db.updateSummoner("team5x5_losses", rTeam5x5.losses.ToString(), pSumm.summonerId); db.updateSummoner("team5x5_maxElo", rTeam5x5.maxRating.ToString(), pSumm.summonerId); } if ((normal5x5 = summStats.getNormal5x5()) != null) { db.updateSummoner("normal5x5_elo", normal5x5.rating.ToString(), pSumm.summonerId); db.updateSummoner("normal5x5_wins", normal5x5.wins.ToString(), pSumm.summonerId); db.updateSummoner("normal5x5_losses", normal5x5.losses.ToString(), pSumm.summonerId); db.updateSummoner("normal5x5_maxElo", normal5x5.maxRating.ToString(), pSumm.summonerId); } db.updateSummoner("ranked_kills", ChampionStatistics.totalRankedKills(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_assists", ChampionStatistics.totalRankedAssists(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_deaths", ChampionStatistics.totalRankedDeaths(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_pentaKills", ChampionStatistics.totalRankedPentaKills(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_quadraKills", ChampionStatistics.totalRankedQuadraKills(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_tripleKills", ChampionStatistics.totalRankedTripleKills(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_doubleKills", ChampionStatistics.totalRankedDoubleKills(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_minionKills", ChampionStatistics.totalRankedMinionKills(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_goldEarned", ChampionStatistics.totalRankedGoldEarned(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_turretsDestroyed", ChampionStatistics.totalRankedTurretsDestroyed(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_mostKills", ChampionStatistics.rankedMostKills(champStats).ToString(), pSumm.summonerId); db.updateSummoner("ranked_mostDeaths", ChampionStatistics.rankedMostDeaths(champStats).ToString(), pSumm.summonerId); /** Update Runes and Masteries */ }