static void HookStats() { if (TopStat.Stats.Contains(statMostInfected)) { return; // don't duplicate } statMostInfected = new TopStat("Infected", "ZombieStats", "TotalInfected", () => "Most players infected", TopStat.FormatInteger); statMaxInfected = new TopStat("Survived", "ZombieStats", "TotalRounds", () => "Most rounds survived", TopStat.FormatInteger); statMostSurvived = new TopStat("ConsecutiveInfected", "ZombieStats", "MaxInfected", () => "Most consecutive infections", TopStat.FormatInteger); statMaxSurvived = new TopStat("ConsecutiveSurvived", "ZombieStats", "MaxRounds", () => "Most consecutive rounds survived", TopStat.FormatInteger); infectedToken = new ChatToken("$infected", "Total number of players infected", p => Get(p).TotalInfected.ToString()); survivedToken = new ChatToken("$survived", "Total number of rounds survived", p => Get(p).TotalRoundsSurvived.ToString()); offlineZSStats = PrintOfflineZSStats; onlineZSStats = PrintOnlineZSStats; OfflineStat.Stats.Add(offlineZSStats); OnlineStat.Stats.Add(onlineZSStats); ChatTokens.Standard.Add(infectedToken); ChatTokens.Standard.Add(survivedToken); TopStat.Stats.Add(statMostInfected); TopStat.Stats.Add(statMostSurvived); TopStat.Stats.Add(statMaxInfected); TopStat.Stats.Add(statMaxSurvived); }
public override void Use(Player p, string message, CommandData data) { string[] args = message.SplitSpaces(); if (args.Length < 2) { Help(p); return; } int maxResults = 0, offset = 0; if (!CommandParser.GetInt(p, args[0], "Max results", ref maxResults, 1, 15)) { return; } TopStat stat = FindTopStat(args[1]); if (stat == null) { p.Message("%WUnrecognised type \"{0}\".", args[1]); return; } if (args.Length > 2) { if (!CommandParser.GetInt(p, args[2], "Offset", ref offset, 0)) { return; } } string limit = " LIMIT " + offset + "," + maxResults; List <string[]> stats = Database.GetRows(stat.Table, "DISTINCT Name, " + stat.Column, "ORDER BY" + stat.OrderBy + limit); p.Message("&a{0}:", stat.Title()); for (int i = 0; i < stats.Count; i++) { string nick = p.FormatNick(stats[i][0]); string value = stat.Formatter(stats[i][1]); p.Message("{0}) {1} %S- {2}", offset + (i + 1), nick, value); } }
public override void Use(Player p, string message) { string[] args = message.SplitSpaces(); if (args.Length < 2) { Help(p); return; } int offset = ParseOffset(p, args); int limit = ParseLimit(p, args); if (limit == -1 || offset == -1) { return; } TopStat stat = FindTopStat(args[0]); if (stat == null) { Player.Message(p, "/Top: Unrecognised type \"{0}\".", args[0]); return; } string strLimit = " LIMIT " + offset + "," + limit; DataTable db = Database.Backend.GetRows(stat.Table, "DISTINCT Name, " + stat.Column, "ORDER BY" + stat.OrderBy + strLimit); Player.Message(p, "&a{0}:", stat.Title()); for (int i = 0; i < db.Rows.Count; i++) { string player = PlayerInfo.GetColoredName(p, db.Rows[i]["Name"].ToString()); string item = db.Rows[i][stat.Column].ToString(); Player.Message(p, "{0}) {1} %S- {2}", offset + (i + 1), player, stat.Formatter(item)); } db.Dispose(); }