/// <summary> /// Updates a stored player's stats /// </summary> /// <param name="player"></param> /// <param name="StoredPlayer"></param> public static void PopulateStoredStats(SPlayer player, StoredPlayer StoredPlayer) { if (player != null && StoredPlayer != null) { StoredPlayer.totalTime = player.TimePlayed; StoredPlayer.firstLogin = player.firstLogin; StoredPlayer.lastSeen = DateTime.Now.ToString("G"); StoredPlayer.loginCount = player.loginCount; StoredPlayer.knownAccounts = player.knownAccounts; StoredPlayer.knownIPs = player.knownIPs; StoredPlayer.kills = player.kills; StoredPlayer.deaths = player.deaths; StoredPlayer.mobkills = player.mobkills; StoredPlayer.bosskills = player.bosskills; } }
/// <summary> /// Fills out a player's stats /// </summary> /// <param name="player"></param> /// <param name="StoredPlayer"></param> public static void PopulatePlayerStats(SPlayer player, StoredPlayer StoredPlayer) { if (StoredPlayer != null && player != null) { player.TimePlayed = StoredPlayer.totalTime; player.firstLogin = StoredPlayer.firstLogin; player.lastSeen = DateTime.UtcNow.ToString("G"); player.loginCount = StoredPlayer.loginCount + 1; player.knownAccounts = StoredPlayer.knownAccounts; player.knownIPs = StoredPlayer.knownIPs; player.kills = StoredPlayer.kills; player.deaths = StoredPlayer.deaths; player.mobkills = StoredPlayer.mobkills; player.bosskills = StoredPlayer.bosskills; } }
/// <summary> /// Returns the amount of time a player has collected /// </summary> /// <param name="player"></param> /// <returns></returns> public static string TimePlayed(this SPlayer player) { double time = player.timePlayed; var weeks = (int)Math.Floor(time / 604800); var days = (int)Math.Floor(((time / 604800) - weeks) * 7); var ts = new TimeSpan(0, 0, 0, (int)time); var sb = new StringBuilder(); if (weeks > 0) { sb.Append(string.Format("{0} week{1}{2}", weeks, weeks.Suffix(), days > 0 || ts.Hours > 0 || ts.Minutes > 0 || ts.Seconds > 0 ? ", " : "")); } if (days > 0) { sb.Append(string.Format("{0} day{1}{2}", days, days.Suffix(), ts.Hours > 0 || ts.Minutes > 0 || ts.Seconds > 0 ? ", " : "")); } if (ts.Hours > 0) { sb.Append(string.Format("{0} hour{1}{2}", ts.Hours, ts.Hours.Suffix(), ts.Minutes > 0 || ts.Seconds > 0 ? ", " : "")); } if (ts.Minutes > 0) { sb.Append(string.Format("{0} minute{1}{2}", ts.Minutes, ts.Minutes.Suffix(), ts.Seconds > 0 ? ", " : "")); } if (ts.Seconds > 0) { sb.Append(string.Format("{0} second{1}", ts.Seconds, ts.Seconds.Suffix())); } if (sb.Length == 0) { return(player.storage.TimePlayed()); } return(sb.ToString()); }
/// <summary> /// Used on logging in. Syncs a player's stats with stored values matching the player /// </summary> /// <param name="player"></param> public static void SyncStats(this SPlayer player) { if (player.storage == null) { return; } player.timePlayed = player.storage.totalTime; player.firstLogin = player.storage.firstLogin; player.lastSeen = DateTime.UtcNow.ToString("G"); player.loginCount = player.storage.loginCount + 1; player.knownAccounts = player.storage.knownAccounts; player.knownIPs = player.storage.knownIPs; player.kills = player.storage.kills; player.deaths = player.storage.deaths; player.mobkills = player.storage.mobkills; player.bosskills = player.storage.bosskills; }
/// <summary> /// Saves a player's stats into stored values /// </summary> /// <param name="player"></param> public static void SaveStats(this SPlayer player) { if (player == null || player.storage == null) { return; } player.storage.totalTime = player.timePlayed; player.storage.firstLogin = player.firstLogin; player.storage.lastSeen = DateTime.Now.ToString("G"); player.storage.loginCount = player.loginCount; player.storage.knownAccounts = player.knownAccounts; player.storage.knownIPs = player.knownIPs; player.storage.kills = player.kills; player.storage.deaths = player.deaths; player.storage.mobkills = player.mobkills; player.storage.bosskills = player.bosskills; Statistics.database.SaveUser(player.storage); }
public static void CmdUic(CommandArgs args) { if (args.Parameters.Count < 1) { args.Player.SendErrorMessage("Invalid syntax. Try /uix [playerName]"); return; } if (args.Parameters[0] == "self") { SPlayer player = Statistics.Tools.GetPlayer(args.Player.Index); if (player == null) { return; } if (player.TsPlayer.IsLoggedIn) { int pageNumber; if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) { return; } Tools.SendUic(args.Player, player, pageNumber); } else { args.Player.SendErrorMessage("You must be logged in to use this on yourself"); } } else { string name; var needNumber = false; if (args.Parameters.Count > 1) { var newArgs = new List <string>(args.Parameters); newArgs.RemoveAt(newArgs.Count - 1); name = string.Join(" ", newArgs); needNumber = true; } else { name = string.Join(" ", args.Parameters); } int pageNumber; if (!PaginationTools.TryParsePageNumber(args.Parameters, needNumber ? args.Parameters.Count - 1 : args.Parameters.Count + 1, args.Player, out pageNumber)) { return; } IPAddress ip; if (IPAddress.TryParse(name, out ip)) { var players = Statistics.Tools.GetPlayersByIp(ip.ToString()); if (players.Count > 1) { TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name)); return; } if (players.Count == 0) { var splayers = Statistics.Tools.GetStoredPlayersByIp(ip.ToString()); if (splayers.Count > 1) { TShock.Utils.SendMultipleMatchError(args.Player, splayers.Select(p => p.name)); return; } if (splayers.Count == 0) { args.Player.SendErrorMessage("No matches found for query '{0}'", name); return; } var splayer = splayers[0]; Tools.SendUic(args.Player, splayer, pageNumber); return; } var player = players[0]; Tools.SendUix(args.Player, player, pageNumber); return; } var players2 = Statistics.Tools.GetPlayers(name); if (players2.Count > 1) { TShock.Utils.SendMultipleMatchError(args.Player, players2.Select(p => p.Name)); return; } if (players2.Count == 0) { args.Player.SendErrorMessage( "Invalid player. Try /check name {0} to make sure you're using the right username", name); return; } var player2 = players2[0]; Tools.SendUic(args.Player, player2, pageNumber); } }
private static void PostLogin(TShockAPI.Hooks.PlayerPostLoginEventArgs args) { SPlayer player = Tools.GetPlayer(args.Player.Index); if (player == null) { Players.Add(new SPlayer(args.Player.Index)); PostLogin(new TShockAPI.Hooks.PlayerPostLoginEventArgs(args.Player)); return; } var storage = Tools.GetStoredPlayerExact(args.Player.UserAccountName); if (storage == null) { Log.ConsoleInfo("{0} has been registered to Statistics", args.Player.UserAccountName); player.storage = StoredPlayers.AddAndReturn(new StoredPlayer(args.Player.UserAccountName, DateTime.Now.ToString("G"), DateTime.Now.ToString("G"), 0, 1, args.Player.UserAccountName, args.Player.IP, 0, 0, 0, 0)); database.AddUser(player.storage); player.SyncStats(); HighScores.highScores.Add(new HighScore(player.Name, player.kills, player.mobkills, player.deaths, player.bosskills, player.timePlayed)); return; } player.storage = storage; if (player.storage.knownIPs.Length > 0) { if (!player.storage.knownIPs.Contains(args.Player.IP)) { player.storage.knownIPs += ", " + args.Player.IP; } } else { player.storage.knownIPs = args.Player.IP; } if (player.storage.knownAccounts.Length > 0) { if (!player.storage.knownAccounts.Contains(args.Player.UserAccountName)) { player.storage.knownAccounts += ", " + args.Player.UserAccountName; } } else { player.storage.knownAccounts = args.Player.UserAccountName; } player.SyncStats(); Log.ConsoleInfo("Successfully linked account {0} with stored player {1}", args.Player.UserAccountName, player.storage.name); }
public static void Check_Kills(CommandArgs args) { if (args.Parameters.Count == 1) { if (STools.GetPlayer(args.Player.Index) != null) { SPlayer player = STools.GetPlayer(args.Player.Index); if (player.TSPlayer.IsLoggedIn) { args.Player.SendInfoMessage("You have killed {0} player{4}, {1} mob{5}, {2} boss{6} and died {3} time{7}.", player.kills, player.mobkills, player.bosskills, player.deaths, STools.Suffix(player.kills), STools.Suffix(player.mobkills), STools.Suffix2(player.bosskills), STools.Suffix(player.deaths)); } else { args.Player.SendErrorMessage("You must be logged in to use this on yourself."); } } else if (TSServerPlayer.Server.Name == args.Player.Name) { args.Player.SendErrorMessage("The console has no stats to check."); } else { args.Player.SendErrorMessage("Something broke. Please try again later."); } } if (args.Parameters.Count > 1) { args.Parameters.RemoveAt(0); // fixes command fail when checking another player's kills string name = string.Join(" ", args.Parameters); if (STools.GetPlayer(name).Count == 1) { SPlayer player = STools.GetPlayer(name)[0]; if (player.TSPlayer.IsLoggedIn) { args.Player.SendInfoMessage("{0} has killed {1} player{5}, {2} mob{6}, {3} boss{7} and died {4} time{8}.", player.TSPlayer.Account.Name, player.kills, player.mobkills, player.bosskills, player.deaths, STools.Suffix(player.kills), STools.Suffix(player.mobkills), STools.Suffix2(player.bosskills), STools.Suffix(player.deaths)); } else { args.Player.SendErrorMessage("{0} is not logged in.", player.Name); } } else if (STools.GetPlayer(name).Count > 1) { args.Player.SendMultipleMatchError(STools.GetPlayer(name).Select(p => p.Name)); } else { if (STools.GetStoredPlayer(name).Count == 1) { StoredPlayer StoredPlayer = STools.GetStoredPlayer(name)[0]; args.Player.SendInfoMessage("{0} has killed {1} player{5}, {2} mob{6}, {3} boss{7} and died {4} time{8}.", StoredPlayer.name, StoredPlayer.kills, StoredPlayer.mobkills, StoredPlayer.bosskills, StoredPlayer.deaths, STools.Suffix(StoredPlayer.kills), STools.Suffix(StoredPlayer.mobkills), STools.Suffix2(StoredPlayer.bosskills), STools.Suffix(StoredPlayer.deaths)); } else if (STools.GetStoredPlayer(name).Count > 1) { args.Player.SendMultipleMatchError(STools.GetStoredPlayer(name).Select(p => p.name)); } else { args.Player.SendErrorMessage("Player {0} is not in the database.", name); } } } }
/* ------------------ */ #region Check Time public static void Check_Time(CommandArgs args) { if (args.Parameters.Count == 1) { if (STools.GetPlayer(args.Player.Index) != null) { SPlayer player = STools.GetPlayer(args.Player.Index); if (player.TSPlayer.IsLoggedIn) { args.Player.SendInfoMessage("You have played for {0}.", STools.TimePlayed(player.TimePlayed)); } else { args.Player.SendErrorMessage("You must be logged in to use this command."); } } else if (TSServerPlayer.Server.Name == args.Player.Name) { args.Player.SendErrorMessage("The console has no stats to check."); } else { args.Player.SendErrorMessage("Something broke. Please try again later."); } } if (args.Parameters.Count > 1 && args.Parameters.Count != 1) { args.Parameters.RemoveAt(0); string name = string.Join(" ", args.Parameters); if (STools.GetPlayer(name).Count == 1) { SPlayer player = STools.GetPlayer(name)[0]; if (player.TSPlayer.IsLoggedIn) { args.Player.SendInfoMessage("{0} has played for {1}.", player.TSPlayer.Account.Name, STools.TimePlayed(player.TimePlayed)); } else { args.Player.SendErrorMessage("{0} is not logged in.", player.Name); } } else if (STools.GetPlayer(name).Count > 1) { args.Player.SendMultipleMatchError(STools.GetPlayer(name).Select(p => p.Name)); } else { if (STools.GetStoredPlayer(name).Count == 1) { StoredPlayer StoredPlayer = STools.GetStoredPlayer(name)[0]; args.Player.SendInfoMessage("{0} has played for {1}.", StoredPlayer.name, STools.TimePlayed(StoredPlayer.totalTime)); } else if (STools.GetStoredPlayer(name).Count > 1) { args.Player.SendMultipleMatchError(STools.GetStoredPlayer(name).Select(p => p.name)); } else { args.Player.SendErrorMessage("Player {0} is not in the database.", name); } } } }
public static void UI_Character(CommandArgs args) { if (args.Parameters.Count > 0) { if (args.Parameters[0] == "self") { if (STools.GetPlayer(args.Player.Index) != null) { SPlayer player = STools.GetPlayer(args.Player.Index); if (player.TSPlayer.IsLoggedIn) { int pageNumber; if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) { return; } else { var uicInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(player.firstLogin)); uicInfo.Add(string.Format("Character info for {0}.", args.Parameters[0])); uicInfo.Add(string.Format("First login: {0} ({1} ago).", player.firstLogin, STools.TimeSpanPlayed(time_1))); uicInfo.Add("Last seen: Now"); uicInfo.Add(string.Format("Logged in {0} times since registering. Overall play time: {1}.", player.loginCount, STools.TimePlayed(player.TimePlayed))); PaginationTools.SendPage(args.Player, pageNumber, uicInfo, new PaginationTools.Settings { HeaderFormat = "Character Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uic {0} {1} for more.", args.Parameters[0], pageNumber + 1), FooterTextColor = Color.Lime }); } } else { args.Player.SendErrorMessage("You must be logged in to use this on yourself."); } } else { args.Player.SendErrorMessage("Something broke. Please try again later."); } } else { string name = ""; bool needNumber = false; if (args.Parameters.Count > 1) { var newArgs = new List <string>(args.Parameters); newArgs.RemoveAt(newArgs.Count - 1); name = string.Join(" ", newArgs); needNumber = true; } else { name = string.Join(" ", args.Parameters); } int pageNumber; if (!PaginationTools.TryParsePageNumber(args.Parameters, needNumber ? args.Parameters.Count - 1 : args.Parameters.Count + 1, args.Player, out pageNumber)) { return; } IPAddress IP; if (IPAddress.TryParse(name, out IP)) { if (STools.GetPlayerByIP(IP.ToString()).Count == 1) { SPlayer player = STools.GetPlayerByIP(IP.ToString())[0]; var uicInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(player.firstLogin)); uicInfo.Add(string.Format("Character info for {0}.", player.Name)); uicInfo.Add(string.Format("First login: {0} ({1} ago).", player.firstLogin, STools.TimeSpanPlayed(time_1))); uicInfo.Add("Last seen: Now"); uicInfo.Add(string.Format("Logged in {0} times since registering. Overall play time: {1}.", player.loginCount, STools.TimePlayed(player.TimePlayed))); PaginationTools.SendPage(args.Player, pageNumber, uicInfo, new PaginationTools.Settings { HeaderFormat = "Extended User Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uic {0} {1} for more.", player.Name, pageNumber + 1), FooterTextColor = Color.Lime }); } else if (STools.GetPlayerByIP(IP.ToString()).Count > 1) { //TShock.Utils.SendMultipleMatchError(args.Player, args.Player.SendMultipleMatchError( STools.GetPlayerByIP(IP.ToString()).Select(p => p.Name)); } else if (STools.GetStoredPlayerByIP(IP.ToString()).Count == 1) { StoredPlayer StoredPlayer = STools.GetStoredPlayerByIP(IP.ToString())[0]; var uicInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.firstLogin)); var time_2 = DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.lastSeen)); uicInfo.Add(string.Format("Character info for {0}.", StoredPlayer.name)); uicInfo.Add(string.Format("First login: {0} ({1} ago).", StoredPlayer.firstLogin, STools.TimeSpanPlayed(time_1))); uicInfo.Add(string.Format("Last seen: {0} ({1} ago).", StoredPlayer.lastSeen, STools.TimeSpanPlayed(time_2))); uicInfo.Add(string.Format("Logged in {0} times since registering. Overall play time: {1}.", StoredPlayer.loginCount, STools.TimePlayed(StoredPlayer.totalTime))); PaginationTools.SendPage(args.Player, pageNumber, uicInfo, new PaginationTools.Settings { HeaderFormat = "Character Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uic {0} {1} for more.", StoredPlayer.name, pageNumber + 1), FooterTextColor = Color.Lime }); } else if (STools.GetStoredPlayerByIP(IP.ToString()).Count > 1) { //TShock.Utils.SendMultipleMatchError(args.Player, args.Player.SendMultipleMatchError( STools.GetStoredPlayerByIP(IP.ToString()).Select(p => p.name)); } else { args.Player.SendErrorMessage("Invalid IP address! Try /check ip \"{0}\".", name); } } else { if (STools.GetPlayer(name).Count == 1) { SPlayer player = STools.GetPlayer(name)[0]; var uicInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(player.firstLogin)); uicInfo.Add(string.Format("Character info for {0}.", player.Name)); uicInfo.Add(string.Format("First login: {0} ({1} ago).", player.firstLogin, STools.TimeSpanPlayed(time_1))); uicInfo.Add("Last seen: Now"); uicInfo.Add(string.Format("Logged in {0} times since registering. Overall play time: {1}.", player.loginCount, STools.TimePlayed(player.TimePlayed))); PaginationTools.SendPage(args.Player, pageNumber, uicInfo, new PaginationTools.Settings { HeaderFormat = "Extended User Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uic {0} {1} for more.", player.Name, pageNumber + 1), FooterTextColor = Color.Lime }); } else if (STools.GetPlayer(name).Count > 1) { //TShock.Utils.SendMultipleMatchError(args.Player, STools.GetPlayer(name).Select(p => p.Name)); args.Player.SendMultipleMatchError(STools.GetPlayer(name).Select(p => p.Name)); } else { if (STools.GetStoredPlayer(name).Count == 1) { StoredPlayer StoredPlayer = STools.GetStoredPlayer(name)[0]; var uicInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.firstLogin)); var time_2 = DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.lastSeen)); uicInfo.Add(string.Format("Character info for {0}.", StoredPlayer.name)); uicInfo.Add(string.Format("First login: {0} ({1} ago).", StoredPlayer.firstLogin, STools.TimeSpanPlayed(time_1))); uicInfo.Add(string.Format("Last seen: {0} ({1} ago).", StoredPlayer.lastSeen, STools.TimeSpanPlayed(time_2))); uicInfo.Add(string.Format("Logged in {0} times since registering. Overall play time: {1}.", StoredPlayer.loginCount, STools.TimePlayed(StoredPlayer.totalTime))); PaginationTools.SendPage(args.Player, pageNumber, uicInfo, new PaginationTools.Settings { HeaderFormat = "Character Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uic {0} {1} for more.", StoredPlayer.name, pageNumber + 1), FooterTextColor = Color.Lime }); } else if (STools.GetStoredPlayer(name).Count > 1) { //TShock.Utils.SendMultipleMatchError(args.Player, STools.GetStoredPlayer(name).Select( args.Player.SendMultipleMatchError(STools.GetStoredPlayer(name).Select( p => p.name)); } else { args.Player.SendErrorMessage("Invalid player! Try /check name {0}.", name); } } } } } else { //args.Player.SendErrorMessage("Invalid syntax. Try /uic [playerName]"); args.Player.SendErrorMessage("Invalid syntax! Try /uic <player/self>"); } }
/* Yama's suggestions */ #region UI Extended public static void UI_Extended(CommandArgs args) { if (args.Parameters.Count > 0) { if (args.Parameters[0] == "self") { if (STools.GetPlayer(args.Player.Index) != null) { SPlayer player = STools.GetPlayer(args.Player.Index); if (player.TSPlayer.IsLoggedIn) { int pageNumber; if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) { return; } else { var uixInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(player.firstLogin)); uixInfo.Add(string.Format("UIX info for {0}.", player.Name)); //uixInfo.Add(string.Format("{0} is a member of group {1}.", player.Name, player.TSPlayer.Group.Name)); uixInfo.Add(string.Format("Group: {0}.", player.TSPlayer.Group.Name)); uixInfo.Add(string.Format("First login: {0} ({1}ago).", player.firstLogin, STools.TimeSpanPlayed(time_1))); uixInfo.Add("Last seen: Now"); uixInfo.Add(string.Format("Overall play time: {0}.", STools.TimePlayed(player.TimePlayed))); uixInfo.Add(string.Format("Logged in {0} times since registering.", player.loginCount)); try { uixInfo.Add(string.Format("Known accounts: {0}.", player.knownAccounts)); } catch { uixInfo.Add("No known accounts found."); } try { uixInfo.Add(string.Format("Known IPs: {0}.", player.knownIPs)); } catch { uixInfo.Add("No known IPs found."); } PaginationTools.SendPage(args.Player, pageNumber, uixInfo, new PaginationTools.Settings { //HeaderFormat = "Extended User Information [Page {0} of {1}]", HeaderFormat = "Extended User Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uix {0} {1} for more.", args.Parameters[0], pageNumber + 1), FooterTextColor = Color.Lime }); } } else { args.Player.SendErrorMessage("You must be logged in to use this on yourself."); } } else { args.Player.SendErrorMessage("Something broke. Please try again later."); } } else { string name = ""; bool needNumber = false; if (args.Parameters.Count > 1) { var newArgs = new List <string>(args.Parameters); newArgs.RemoveAt(newArgs.Count - 1); name = string.Join(" ", newArgs); needNumber = true; } else { name = string.Join(" ", args.Parameters); } int pageNumber; if (!PaginationTools.TryParsePageNumber(args.Parameters, needNumber ? args.Parameters.Count - 1 : args.Parameters.Count + 1, args.Player, out pageNumber)) { return; } IPAddress IP; if (IPAddress.TryParse(name, out IP)) { if (STools.GetPlayerByIP(IP.ToString()).Count == 1) { SPlayer player = STools.GetPlayerByIP(IP.ToString())[0]; if (player.TSPlayer.IsLoggedIn) { var uixInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(player.firstLogin)); uixInfo.Add(string.Format("UIX info for {0}.", player.Name)); uixInfo.Add(string.Format("Group: {0}.", player.TSPlayer.Group.Name)); uixInfo.Add(string.Format("First login: {0} ({1} ago).", player.firstLogin, STools.TimeSpanPlayed(time_1))); uixInfo.Add("Last seen: Now"); uixInfo.Add(string.Format("Overall play time: {0}.", STools.TimePlayed(player.TimePlayed))); uixInfo.Add(string.Format("Logged in {0} times since registering.", player.loginCount)); try { uixInfo.Add(string.Format("Known accounts: {0}.", string.Join(", ", player.knownAccounts.Split(',')))); } catch { uixInfo.Add("No known accounts found."); } try { uixInfo.Add(string.Format("Known IPs: {0}.", string.Join(", ", player.knownIPs.Split(',')))); } catch { uixInfo.Add("No known IPs found."); } PaginationTools.SendPage(args.Player, pageNumber, uixInfo, new PaginationTools.Settings { HeaderFormat = "Extended User Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uix {0} {1} for more.", player.Name, pageNumber + 1), FooterTextColor = Color.Lime }); } else { args.Player.SendErrorMessage("{0} is not logged in.", player.Name); } } else if (STools.GetPlayerByIP(IP.ToString()).Count > 1) { //TShock.Utils.SendMultipleMatchError(args.Player, args.Player.SendMultipleMatchError( STools.GetPlayerByIP(IP.ToString()).Select(p => p.Name)); } else if (STools.GetStoredPlayerByIP(IP.ToString()).Count == 1) { StoredPlayer StoredPlayer = STools.GetStoredPlayerByIP(IP.ToString())[0]; var uixInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.firstLogin)); uixInfo.Add(string.Format("UIX info for {0}.", StoredPlayer.name)); //uixInfo.Add(string.Format("{0} is a member of group {1}", StoredPlayer.name, TShock.Users.GetUserByName(StoredPlayer.name).Group)); uixInfo.Add(string.Format("Group: {0}.", TShock.UserAccounts.GetUserAccountByName(StoredPlayer.name).Group)); uixInfo.Add(string.Format("First login: {0} ({1} ago).", StoredPlayer.firstLogin, STools.TimeSpanPlayed(time_1))); uixInfo.Add(string.Format("Last seen: {0} ({1} ago).", StoredPlayer.lastSeen, STools.TimeSpanPlayed(DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.lastSeen))))); uixInfo.Add(string.Format("Overall play time: {0}.", STools.TimePlayed(StoredPlayer.totalTime))); uixInfo.Add(string.Format("Logged in {0} times since registering.", StoredPlayer.loginCount)); try { uixInfo.Add(string.Format("Known accounts: {0}.", string.Join(", ", StoredPlayer.knownAccounts.Split(',')))); } catch { uixInfo.Add("No known accounts found."); } try { uixInfo.Add(string.Format("Known IPs: {0}.", string.Join(", ", StoredPlayer.knownIPs.Split(',')))); } catch { uixInfo.Add("No known IPs found."); } PaginationTools.SendPage(args.Player, pageNumber, uixInfo, new PaginationTools.Settings { HeaderFormat = "Extended User Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uix {0} {1} for more.", StoredPlayer.name, pageNumber + 1), FooterTextColor = Color.Lime }); } else if (STools.GetStoredPlayerByIP(IP.ToString()).Count > 1) { //TShock.Utils.SendMultipleMatchError(args.Player, args.Player.SendMultipleMatchError( STools.GetStoredPlayerByIP(IP.ToString()).Select(p => p.name)); } else { //args.Player.SendErrorMessage("Invalid IP address. Try /check ip {0} to make sure you're using the right IP address", name); args.Player.SendErrorMessage("Invalid IP address. Try /check ip {0}.", name); } } else { if (STools.GetPlayer(name).Count == 1) { SPlayer player = STools.GetPlayer(name)[0]; if (player.TSPlayer.IsLoggedIn) { var uixInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(player.firstLogin)); uixInfo.Add(string.Format("UIX info for {0}.", player.Name)); uixInfo.Add(string.Format("Group: {0}.", player.TSPlayer.Group.Name)); uixInfo.Add(string.Format("First login: {0} ({1} ago).", player.firstLogin, STools.TimeSpanPlayed(time_1))); uixInfo.Add("Last seen: Now"); uixInfo.Add(string.Format("Logged in {0} times since registering.", player.loginCount)); try { uixInfo.Add(string.Format("Known accounts: {0}.", string.Join(", ", player.knownAccounts.Split(',')))); } catch { uixInfo.Add("No known accounts found."); } try { uixInfo.Add(string.Format("Known IPs: {0}.", string.Join(", ", player.knownIPs.Split(',')))); } catch { uixInfo.Add("No known IPs found."); } PaginationTools.SendPage(args.Player, pageNumber, uixInfo, new PaginationTools.Settings { HeaderFormat = "Extended User Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uix {0} {1} for more.", player.Name, pageNumber + 1), FooterTextColor = Color.Lime }); } else { args.Player.SendErrorMessage("{0} is not logged in.", player.Name); } } else if (STools.GetPlayer(name).Count > 1) { //TShock.Utils.SendMultipleMatchError(args.Player, STools.GetPlayer(name).Select(p => p.Name)); args.Player.SendMultipleMatchError(STools.GetPlayer(name).Select(p => p.Name)); } else { if (STools.GetStoredPlayer(name).Count == 1) { StoredPlayer StoredPlayer = STools.GetStoredPlayer(name)[0]; var uixInfo = new List <string>(); var time_1 = DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.firstLogin)); uixInfo.Add(string.Format("UIX info for {0}.", StoredPlayer.name)); //uixInfo.Add(string.Format("{0} is a member of group {1}", StoredPlayer.name, TShock.Users.GetUserByName(StoredPlayer.name).Group)); uixInfo.Add(string.Format("Group: {0}.", TShock.UserAccounts.GetUserAccountByName(StoredPlayer.name).Group)); uixInfo.Add(string.Format("First login: {0} ({1} ago).", StoredPlayer.firstLogin, STools.TimeSpanPlayed(time_1))); uixInfo.Add(string.Format("Last seen: {0} ({1} ago).", StoredPlayer.lastSeen, STools.TimeSpanPlayed(DateTime.Now.Subtract(DateTime.Parse(StoredPlayer.lastSeen))))); uixInfo.Add(string.Format("Overall play time: {0}.", STools.TimePlayed(StoredPlayer.totalTime))); uixInfo.Add(string.Format("Logged in {0} times since registering.", StoredPlayer.loginCount)); try { uixInfo.Add(string.Format("Known accounts: {0}.", string.Join(", ", StoredPlayer.knownAccounts.Split(',')))); } catch { uixInfo.Add("No known accounts found."); } try { uixInfo.Add(string.Format("Known IPs: {0}.", string.Join(", ", StoredPlayer.knownIPs.Split(',')))); } catch { uixInfo.Add("No known IPs found."); } PaginationTools.SendPage(args.Player, pageNumber, uixInfo, new PaginationTools.Settings { HeaderFormat = "Extended User Information ({0}/{1})", HeaderTextColor = Color.Lime, LineTextColor = Color.White, FooterFormat = string.Format("Type /uix {0} {1} for more.", StoredPlayer.name, pageNumber + 1), FooterTextColor = Color.Lime }); } else if (STools.GetStoredPlayer(name).Count > 1) { args.Player.SendMultipleMatchError(STools.GetStoredPlayer(name).Select( p => p.name)); } else { args.Player.SendErrorMessage("Invalid player! Try /check name {0}.", name); } } } } } else { //args.Player.SendErrorMessage("Invalid syntax. Try /uix [playerName]"); args.Player.SendErrorMessage("Invalid syntax! Try /uix <player/self>"); } }