/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /League if (this.MatchRequiredParam(p, Functions.CommandParamType.Nothing)) { if (Player != null && this.MatchRequiredPermission(Player)) { if (Player.PvP_Status == Player.PvPTypes.Lobby) { Player.PvP_Rules = new List<string> { Player.PvPRules.Custom_League.ToString() }; Player.PvP_Validatated = false; Core.Player.GetPlayer(Player.PvP_OpponentID).PvP_Rules = new List<string> { Player.PvPRules.Custom_League.ToString() }; Core.Player.GetPlayer(Player.PvP_OpponentID).PvP_Validatated = false; Player.CommandFeedback("The PvP match will now obey League rules. For more info refer:", null); Player.CommandFeedback("http://www.aggressivegaming.org/pokemon/link-forums/general-league-rules.219/", null); Core.Player.GetPlayer(Player.PvP_OpponentID).CommandFeedback("The PvP match will now obey League rules. For more info refer:", null); Core.Player.GetPlayer(Player.PvP_OpponentID).CommandFeedback("http://www.aggressivegaming.org/pokemon/link-forums/general-league-rules.219/", null); } } } #endregion /League }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Operator.Remove [Name] if (this.MatchRequiredParam(p, Functions.CommandParamType.Any, Functions.CommandParamType.Integer, Functions.CommandParamType.Any)) { if (Player != null && this.MatchRequiredPermission(Player)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Any, Functions.CommandParamType.Integer, Functions.CommandParamType.Any); if (!Core.Player.HasPlayer(Group[0])) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_PLAYERNOTEXIST"), p.Client)); } else { Player Players = Core.Player.GetPlayer(Group[0]); string PlayerName = Players.isGameJoltPlayer ? $"{Players.Name} ({ Players.GameJoltID})" : $"{Players.Name}"; if (Players.IsOperator()) { Players.RemoveOperator(); Player.CommandFeedback($"You have successfully remove {PlayerName} as operator.", $"have remove {PlayerName} as operator."); } else { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_NOTOPERATOR"), p.Client)); } } } else if (Player == null) { List<string> Group = this.Groups(p, Functions.CommandParamType.Any, Functions.CommandParamType.Integer, Functions.CommandParamType.Any); if (!Core.Player.HasPlayer(Group[0])) { Core.Logger.Log(Core.Setting.Token("SERVER_PLAYERNOTEXIST"), Loggers.Logger.LogTypes.Info); } else { Player Players = Core.Player.GetPlayer(Group[0]); string PlayerName = Players.isGameJoltPlayer ? $"{Players.Name} ({ Players.GameJoltID})" : $"{Players.Name}"; if (Players.IsOperator()) { Players.RemoveOperator(); Core.Logger.Log($"You have successfully remove {PlayerName} as operator.", Loggers.Logger.LogTypes.Info); } else { Core.Logger.Log(Core.Setting.Token("SERVER_NOTOPERATOR"), Loggers.Logger.LogTypes.Info); } } } } #endregion /Operator.Remove [Name] }
/// <summary> /// Convert Math Value to current culture. /// </summary> /// <param name="value">The value to convert in string.</param> /// <param name="Player">The Player Culture.</param> public static string ConvertStringCulture(this string value, Player Player = null) { if (Player == null) { return value.Replace(".", CurrentCulture).Replace(",", CurrentCulture); } else { return value.Replace(".", Player.DecimalSeparator).Replace(",", Player.DecimalSeparator); } }
/// <summary> /// Get if the <see cref="Player"/> actually exist in the <see cref="Player_Info"/> database. /// </summary> /// <param name="Player">Player to check.</param> public static bool Exist(Player Player) { if (Player.isGamejoltPlayer) { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"select ID from Player_Info where Gamejolt_ID = {Player.GamejoltID};")) return Result?.HasRows ?? false; } else { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"select ID from Player_Info where Gamejolt_ID = -1 AND Name = @Name;", new Dictionary<string, string>() { { "Name", Player.Name } })) return Result?.HasRows ?? false; } }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Player.World if (this.MatchRequiredParam(p, Functions.CommandParamType.Nothing)) { if (Player != null && this.MatchRequiredPermission(Player)) { OnlineSetting Settings = Player.GetOnlineSetting(); Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.World.ToString(Settings.CurrentWorldSeason,Settings.CurrentWorldWeather), Player.Network.Client)); } } #endregion /Player.World }
/// <summary> /// Check if the command match the required permission. /// </summary> /// <param name="Command">Command to check.</param> /// <param name="Player">Player.</param> public static bool MatchRequiredPermission(this ICommand Command, Player Player) { if (Command.RequiredPermission == Player.OperatorTypes.Player || (Command.RequiredPermission == Player.OperatorTypes.GameJoltPlayer && Player.isGameJoltPlayer) || (Player.GetOperatorList() != null && Player.GetOperatorList().OperatorLevel >= (int)Command.RequiredPermission)) { return true; } else { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_COMMANDPERMISSION"), Player.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to use /" + Command.Name + " due to insufficient permission.") : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to use /" + Command.Name + " due to insufficient permission."), Logger.LogTypes.Command, Player.Network.Client); return false; } }
/// <summary> /// Create a Help Page. /// </summary> /// <param name="Pages">Page Number. Start from Zero.</param> /// <param name="Player">Player.</param> public void Help(int Pages, Player Player = null) { switch (Pages) { default: this.HelpPageGenerator(Player, $"---------- Help: {Name} ----------", $"Usage: /Update", $"-------------------------------------", $"Description: {Description}", $"Required Permission: {RequiredPermission.ToString().Replace("Moderator", " Moderator")} and above." ); break; } }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Global.World if (this.MatchRequiredParam(p, Functions.CommandParamType.Nothing)) { if (Player != null && this.MatchRequiredPermission(Player)) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.World.ToString(), Player.Network.Client)); } else if (Player == null) { Core.Logger.Log(Core.World.ToString(), Logger.LogTypes.Info); } } #endregion /Global.World }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Restart if (this.MatchRequiredParam(p, Functions.CommandParamType.Nothing)) { if (Player != null && this.MatchRequiredPermission(Player)) { ClientEvent.Invoke(ClientEvent.Types.Restart, null); } else if (Player == null) { ClientEvent.Invoke(ClientEvent.Types.Restart, null); } } #endregion /Restart }
/// <summary> /// Create a Help Page. /// </summary> /// <param name="Pages">Page Number. Start from Zero.</param> /// <param name="Player">Player.</param> public void Help(int Pages, Player Player = null) { switch (Pages) { default: this.HelpPageGenerator(Player, $"---------- Help: {Name} ----------", $"Usage: /Timeoffset <Duration>", $"-------------------------------------", $"Duration: Amount of time offset in seconds.", $"-------------------------------------", $"Description: {Description}", $"Required Permission: {RequiredPermission.ToString().Replace("Moderator", " Moderator")} and above." ); break; } }
/// <summary> /// Create a Help Page. /// </summary> /// <param name="Pages">Page Number. Start from Zero.</param> /// <param name="Player">Player.</param> public void Help(int Pages, Player Player = null) { switch (Pages) { default: this.HelpPageGenerator(Player, $"---------- Help: {Name} ----------", $"Usage: /Player.Season [ID]", $"-------------------------------------", $"ID: Season ID.", $"Winter = 0 | Spring = 1 | Summer = 2 | Fall = 3 | Random = -1 | Default Season = -2 | SeasonMonth = -3 | Server Default = -4", $"-------------------------------------", $"Description: {Description}", $"Required Permission: GameJolt Player." ); break; } }
/// <summary> /// Create a Help Page. /// </summary> /// <param name="Pages">Page Number. Start from Zero.</param> /// <param name="Player">Player.</param> public void Help(int Pages, Player Player = null) { switch (Pages) { default: this.HelpPageGenerator(Player, $"---------- Help: {Name} ----------", $"Usage: /Global.Weather [ID]", $"-------------------------------------", $"ID: Weather ID.", $"Clear = 0 | Rain = 1 | Snow = 2 | Underwater = 3 | Sunny = 4 | Fog = 5 | Thunderstorm = 6 | Sandstorm = 7 | Ash = 8 | Blizzard = 9 | Random = -1 | Default Weather = -2 | WeatherSeason = -3 | Real World Weather = -4", $"-------------------------------------", $"Description: {Description}", $"Required Permission: {RequiredPermission.ToString().Replace("Moderator", " Moderator")} and above." ); break; } }
/// <summary> /// Create a Help Page. /// </summary> /// <param name="Pages">Page Number. Start from Zero.</param> /// <param name="Player">Player.</param> public void Help(int Pages, Player Player = null) { switch (Pages) { default: this.HelpPageGenerator(Player, $"---------- Help: {Name} ----------", $"Usage: /Season <ID>", $"-------------------------------------", $"ID: Season ID.", $"Winter = 0 | Spring = 1 | Summer = 2 | Fall = 3 | Random = -1 | Default Season = -2 | SeasonMonth = -3", $"-------------------------------------", $"Description: {Description}", $"Required Permission: {RequiredPermission.ToString().Replace("Moderator", " Moderator")} and above." ); break; } }
/// <summary> /// Create a Help Page. /// </summary> /// <param name="Pages">Page Number. Start from Zero.</param> /// <param name="Player">Player.</param> public void Help(int Pages, Player Player = null) { switch (Pages) { default: this.HelpPageGenerator(Player, $"---------- Help: {Name} ----------", $"Usage: /Player.Weather [ID]", $"-------------------------------------", $"ID: Weather ID.", $"Clear = 0 | Rain = 1 | Snow = 2 | Underwater = 3 | Sunny = 4 | Fog = 5 | Thunderstorm = 6 | Sandstorm = 7 | Ash = 8 | Blizzard = 9 | Random = -1 | Default Weather = -2 | WeatherSeason = -3 | Real World Weather = -4 | Server Default = -5", $"-------------------------------------", $"Description: {Description}", $"Required Permission: GameJolt Player." ); break; } }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /About if (this.MatchRequiredParam(p, Functions.CommandParamType.Nothing)) { if (Player != null && this.MatchRequiredPermission(Player)) { Player.CommandFeedback($"This server is created by jianmingyong.", null); Player.CommandFeedback($"It is running v{Core.Setting.ApplicationVersion}", null); } else if (Player == null) { Core.Logger.Log("This server is created by jianmingyong.", Logger.LogTypes.Info); Core.Logger.Log($"It is running v{Core.Setting.ApplicationVersion}", Logger.LogTypes.Info); } } #endregion /About }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Player.Season <id> if (this.MatchRequiredParam(p, Functions.CommandParamType.Integer)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Integer); if (Player != null && this.MatchRequiredPermission(Player)) { OnlineSetting Settings = Player.GetOnlineSetting(); Settings.Season = Group[0].Toint().RollOver(-4, 3); Settings.CurrentWorldSeason = Core.World.GenerateSeason(Settings.Season); Settings.LastWorldUpdate = DateTime.Now; Player.CommandFeedback(Core.World.ToString(Settings.CurrentWorldSeason, Settings.CurrentWorldWeather), $"have changed the player season."); } } #endregion /Player.Season <id> }
/// <summary> /// Get <see cref="Player"/> IP Address from the <see cref="Player_Info"/> database. /// </summary> /// <param name="Player">Player to get.</param> public static string GetIP(Player Player) { if (Player.isGamejoltPlayer) { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"select IP_Address from Player_Info where Gamejolt_ID = {Player.GamejoltID};")) { while (Result?.Read() ?? false) return Result["IP_Address"]?.ToString(); } } else { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"select IP_Address from Player_Info where Gamejolt_ID = -1 and Name = @Name;", new Dictionary<string, string>() { { "Name", Player.Name } })) { while (Result?.Read() ?? false) return Result["IP_Address"]?.ToString(); } } return null; }
/// <summary> /// Get <see cref="Player"/> ID from <see cref="Player_Info"/> database. /// </summary> /// <param name="Player">Player to get.</param> public static int GetID(Player Player) { if (Player.isGamejoltPlayer) { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"select ID from Player_Info where Gamejolt_ID = {Player.GamejoltID};")) { while (Result?.Read() ?? false) return Result["ID"]?.ToString().ToInt() ?? -1; } } else { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"select ID from Player_Info where Gamejolt_ID = -1 AND Name = @Name;", new Dictionary<string, string>() { { "Name", Player.Name } })) { while (Result?.Read() ?? false) return Result["ID"]?.ToString().ToInt() ?? -1; } } return -1; }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Update if (this.MatchRequiredParam(p, Functions.CommandParamType.Nothing)) { if (Player != null && this.MatchRequiredPermission(Player)) { using (Updater Updater = new Updater()) { Updater.Update(); } } else if (Player == null) { using (Updater Updater = new Updater()) { Updater.Update(); } } } #endregion /Update }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Timeoffset <Duration> if (this.MatchRequiredParam(p, Functions.CommandParamType.Integer)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Integer); if (Player != null && this.MatchRequiredPermission(Player)) { Core.World.TimeOffset = Group[0].ToInt(); Player.CommandFeedback(Core.World.ToString(), $"have changed the world time offset."); } else if (Player == null) { Core.World.TimeOffset = Group[0].ToInt(); Core.Logger.Log(Core.World.ToString(), Logger.LogTypes.Info); } } #endregion /Timeoffset <Duration> }
private void HandleGameData() { if (Core.PlayerCollection.HasPlayer(Package.TcpClient)) Core.PlayerCollection.GetPlayer(Package.TcpClient).Update(Package, true); else { // New Player - Pending to join. Player Player = new Player(Package); // Server Space Limit if (Core.PlayerCollection.Count >= Core.Setting.Server.MaxPlayers) { Core.PlayerCollection.SentToPlayer(new Package(Package.PackageTypes.Kicked, ServerMessage.Token(ServerMessage.Tokens.SERVER_FULL, null), Package.TcpClient)); Core.Logger.Log(Player.isGamejoltPlayer ? ServerMessage.Token(ServerMessage.Tokens.SERVER_GAMEJOLT, Player.Name, Player.GamejoltID.ToString(), "is unable to join the server with the following reason: " + ServerMessage.Token(ServerMessage.Tokens.SERVER_FULL, null)) : ServerMessage.Token(ServerMessage.Tokens.SERVER_NOGAMEJOLT, Player.Name, "is unable to join the server with the following reason: " + ServerMessage.Token(ServerMessage.Tokens.SERVER_FULL, null))); return; } Core.PlayerCollection.Add(Package); } }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Global.Weather <id> if (this.MatchRequiredParam(p, Functions.CommandParamType.Integer)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Integer); if (Player != null && this.MatchRequiredPermission(Player)) { Core.World.Weather = Core.World.GenerateWeather(Group[0].Toint(), Core.World.Season); Player.CommandFeedback(Core.World.ToString(), string.Format("have changed the global weather.")); } else if (Player == null) { Core.World.Weather = Core.World.GenerateWeather(Group[0].Toint(), Core.World.Season); Core.Logger.Log(Core.World.ToString(), Logger.LogTypes.Info); } } #endregion /Global.Weather <id> }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Say <Message> if (this.MatchRequiredParam(p, Functions.CommandParamType.Any)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Any); if (Player != null && this.MatchRequiredPermission(Player)) { Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.ChatMessage, Group[0], null)); Player.CommandFeedback(null, string.Format("have sent a server chat.")); } else if (Player == null) { Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.ChatMessage, Group[0], null)); Core.Logger.Log(Group[0], Logger.LogTypes.Server); } } #endregion /Say <Message> }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /deop <Name> if (this.MatchRequiredParam(p, Functions.CommandParamType.Any)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Any); if (Player != null && this.MatchRequiredPermission(Player)) { if (!Core.Player.HasPlayer(Group[0])) { Player.CommandFeedback(Core.Setting.Token("SERVER_PLAYERNOTEXIST"), null); } else { Player Players = Core.Player.GetPlayer(Group[0]); string PlayerName = Players.isGameJoltPlayer ? $"{Players.Name} ({ Players.GameJoltID})" : $"{Players.Name}"; if (Players.IsOperator()) { if (Players.GameJoltID == 116016 || Player.GameJoltID == 222452) { Player.CommandFeedback($"You are not allowed to change or remove {PlayerName} operator status.", null); } else { Players.RemoveOperator(); Player.CommandFeedback($"You have successfully remove {PlayerName} as operator.", $"have remove {PlayerName} as operator."); } } else { Player.CommandFeedback(Core.Setting.Token("SERVER_NOTOPERATOR"), null); } } } else if (Player == null) { if (!Core.Player.HasPlayer(Group[0])) { Core.Logger.Log(Core.Setting.Token("SERVER_PLAYERNOTEXIST"), Logger.LogTypes.Info); } else { Player Players = Core.Player.GetPlayer(Group[0]); string PlayerName = Players.isGameJoltPlayer ? $"{Players.Name} ({ Players.GameJoltID})" : $"{Players.Name}"; if (Players.IsOperator()) { if (Players.GameJoltID == 116016 || Player.GameJoltID == 222452) { Core.Logger.Log($"You are not allowed to change or remove {PlayerName} operator status.", Logger.LogTypes.Info); } else { Players.RemoveOperator(); Core.Logger.Log($"You have successfully remove {PlayerName} as operator.", Logger.LogTypes.Info); } } else { Core.Logger.Log(Core.Setting.Token("SERVER_NOTOPERATOR"), Logger.LogTypes.Info); } } } } #endregion /deop <Name> }
/// <summary> /// Generate a Help Page. /// </summary> /// <param name="Command">Command.</param> /// <param name="Player">Player.</param> /// <param name="Message">Message.</param> public static void HelpPageGenerator(this ICommand Command, Player Player, params string[] Message) { if (Player != null) { for (int i = 0; i < Message.Length; i++) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Message[i], Player.Network.Client)); } } else { for (int i = 0; i < Message.Length; i++) { Core.Logger.Log(Message[i], Logger.LogTypes.Info); } } }
/// <summary> /// Handle the Package data. /// </summary> /// <param name="p">Package data.</param> /// <param name="Player">Player.</param> public void Handle(Package p, Player Player = null) { // Start from the most inner depth Command. #region /Help <page> if (this.MatchRequiredParam(p, Functions.CommandParamType.Integer)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Integer); if (Player != null && this.MatchRequiredPermission(Player)) { List<string> GetHelpContent = GenerateHelp(Group[0].ToInt()); for (int i = 0; i < GetHelpContent.Count; i++) { Player.CommandFeedback(GetHelpContent[i], null); } } else if (Player == null) { List<string> GetHelpContent = GenerateHelp(Group[0].ToInt()); for (int i = 0; i < GetHelpContent.Count; i++) { Core.Logger.Log(GetHelpContent[i], Logger.LogTypes.Info); } } } #endregion /Help <page> #region /Help <name> if (this.MatchRequiredParam(p, Functions.CommandParamType.Any)) { List<string> Group = this.Groups(p, Functions.CommandParamType.Any); if (Player != null && this.MatchRequiredPermission(Player)) { for (int i = 0; i < Core.Command.Count; i++) { if (string.Equals(Group[0], Core.Command[i].Name, StringComparison.OrdinalIgnoreCase)) { Core.Command[i].Help(0, Player); } } } else if (Player == null) { for (int i = 0; i < Core.Command.Count; i++) { if (string.Equals(Group[0], Core.Command[i].Name, StringComparison.OrdinalIgnoreCase)) { Core.Command[i].Help(0, Player); } } } } #endregion /Help <name> #region /Help if (this.MatchRequiredParam(p, Functions.CommandParamType.Nothing)) { if (Player != null && this.MatchRequiredPermission(Player)) { List<string> GetHelpContent = GenerateHelp(0); for (int i = 0; i < GetHelpContent.Count; i++) { Player.CommandFeedback(GetHelpContent[i], null); } } else if (Player == null) { List<string> GetHelpContent = GenerateHelp(0); for (int i = 0; i < GetHelpContent.Count; i++) { Core.Logger.Log(GetHelpContent[i], Logger.LogTypes.Info); } } } #endregion /Help }
/// <summary> /// Create a Help Page. /// </summary> /// <param name="Pages">Page Number. Start from Zero.</param> /// <param name="Player">Player.</param> public void Help(int Pages, Player Player = null) { }
private void HandleGameData(Package p) { if (Core.Player.HasPlayer(p.Client)) { Core.Player.GetPlayer(p.Client).Update(p, true); } else { // New Player - Pending to join. Player Player = new Player(p); // Server Space Limit if (Core.Player.Count >= Core.Setting.MaxPlayers) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_FULL"), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_FULL")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_FULL")), Logger.LogTypes.Info, p.Client); return; } // Offline mode? if (!Core.Setting.OfflineMode && !Player.isGameJoltPlayer && string.IsNullOrWhiteSpace(p.DataItems[2])) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_OFFLINEMODE"), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_OFFLINEMODE")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_OFFLINEMODE")), Logger.LogTypes.Info, p.Client); return; } // GameMode bool IsGameModeMatched = false; for (int i = 0; i < Core.Setting.GameMode.Count; i++) { if (string.Equals(Core.Setting.GameMode[i].Trim(), Player.GameMode, StringComparison.OrdinalIgnoreCase) || string.Equals(Core.Setting.GameMode[i].Trim(), p.DataItems[0], StringComparison.OrdinalIgnoreCase)) { IsGameModeMatched = true; break; } else { IsGameModeMatched = false; } } if (!IsGameModeMatched) { string GameModeAllowed = null; for (int i = 0; i < Core.Setting.GameMode.Count; i++) { GameModeAllowed += Core.Setting.GameMode[i].Trim() + ", "; } GameModeAllowed = GameModeAllowed.Remove(GameModeAllowed.LastIndexOf(",")); Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_WRONGGAMEMODE", GameModeAllowed), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_WRONGGAMEMODE", GameModeAllowed)) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_WRONGGAMEMODE", GameModeAllowed)), Logger.LogTypes.Info, p.Client); return; } // BlackList if (Player.IsBlackListed()) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_BLACKLISTED", Player.GetBlackList().Reason, Player.GetBlackList().RemainingTime), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_BLACKLISTED", Player.GetBlackList().Reason, Player.GetBlackList().RemainingTime)) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_BLACKLISTED", Player.GetBlackList().Reason, Player.GetBlackList().RemainingTime)), Logger.LogTypes.Info, p.Client); return; } // IP BlackList if (Player.IsIPBlackListed()) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_IPBLACKLISTED", Player.GetIPBlackList().Reason, Player.GetIPBlackList().RemainingTime), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_IPBLACKLISTED", Player.GetIPBlackList().Reason, Player.GetIPBlackList().RemainingTime)) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_IPBLACKLISTED", Player.GetIPBlackList().Reason, Player.GetIPBlackList().RemainingTime)), Logger.LogTypes.Info, p.Client); return; } // WhiteList if (Core.Setting.WhiteList && !Player.IsWhiteListed()) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_DISALLOW"), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_DISALLOW")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_DISALLOW")), Logger.LogTypes.Info, p.Client); return; } // A Clone GHOST - kidding for (int i = 0; i < Core.Player.Count; i++) { if (Player.isGameJoltPlayer) { if (Player.GameJoltID == Core.Player[i].GameJoltID) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_CLONE"), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_CLONE")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_CLONE")), Logger.LogTypes.Info, p.Client); return; } } else { if (string.Equals(Player.Name, Core.Player[i].Name, StringComparison.Ordinal) && Core.Player[i].GameJoltID == -1) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Core.Setting.Token("SERVER_CLONE"), p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_CLONE")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to join the server with the following reason: " + Core.Setting.Token("SERVER_CLONE")), Logger.LogTypes.Info, p.Client); return; } } } // Else Let it roll :) Core.Player.Add(p); } }
/// <summary> /// Update <see cref="Player"/> into the <see cref="Player_Info"/> database. /// </summary> /// <param name="Player">Player to update.</param> public static bool Update(Player Player) { if (Exist(Player)) { if (Player.isGamejoltPlayer) { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"update Player_Info set Name = @Name, IP_Address = @IP, Last_Activity = {DateTime.Now.ToUnixTime()} where Gamejolt_ID = {Player.GamejoltID};", new Dictionary<string, string>() { { "Name", Player.Name } })) return Result?.RecordsAffected > 0; } else { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"update Player_Info set IP_Address = @IP, Last_Activity = {DateTime.Now.ToUnixTime()} where Gamejolt_ID = -1 AND Name = @Name;", new Dictionary<string, string>() { { "Name", Player.Name } })) return Result?.RecordsAffected > 0; } } else { if (Add(Player)) { if (Player.isGamejoltPlayer) { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"update Player_Info set Name = @Name, IP_Address = @IP, Last_Activity = {DateTime.Now.ToUnixTime()} where Gamejolt_ID = {Player.GamejoltID};", new Dictionary<string, string>() { { "Name", Player.Name } })) return Result?.RecordsAffected > 0; } else { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"update Player_Info set IP_Address = @IP, Last_Activity = {DateTime.Now.ToUnixTime()} where Gamejolt_ID = -1 AND Name = @Name;", new Dictionary<string, string>() { { "Name", Player.Name } })) return Result?.RecordsAffected > 0; } } else return false; } }
/// <summary> /// Add <see cref="Player"/> into the <see cref="Player_Info"/> database. /// </summary> /// <param name="Player">Player to add.</param> public static bool Add(Player Player) { if (Exist(Player)) return Update(Player); else { using (SQLiteDataReader Result = Core.Database.EnqueueTransaction($"insert into Player_Info (Name, Gamejolt_ID) values (@Name, {Player.GamejoltID});", new Dictionary<string, string>() { { "Name", Player.Name } })) return Result?.RecordsAffected > 0; } }