/// <summary> /// Check if the command match the required paramenter. /// </summary> /// <param name="Command">Command to check.</param> /// <param name="p">Package Data.</param> /// <param name="ParamType">List of Paramenter.</param> public static bool MatchRequiredParam(this ICommand Command, Package p, params CommandParamType[] ParamType) { string RegexFilter = "^" + Regex.Escape("/" + Command.Name); for (int i = 0; i < ParamType.Length; i++) { if (ParamType[i] == CommandParamType.Any) { RegexFilter += @"\s+(.+)"; } else if (ParamType[i] == CommandParamType.String) { RegexFilter += @"\s+(\w+)"; } else if (ParamType[i] == CommandParamType.Integer) { RegexFilter += @"\s+(-*\d+)"; } } RegexFilter += @"\s*$"; if (Regex.IsMatch(p.DataItems[0], RegexFilter, RegexOptions.IgnoreCase)) { return true; } else { return false; } }
/// <summary> /// New Player - Create Player. /// </summary> /// <param name="ID">ID of the player.</param> /// <param name="Network">Network for the player.</param> /// <param name="Package">Package.</param> public Player(int ID, Networking Network, Package Package) { this.ID = ID; this.Network = Network; Thread.Add(new ThreadStart(ThreadStartPinging)); Update(Package, false); Core.PlayerCollection.Add(this); Core.PlayerCollection.SentToPlayer(new Package(Package.PackageTypes.ID, ID.ToString(), Package.TcpClient)); Core.PlayerCollection.SendToAllPlayer(new Package(Package.PackageTypes.CreatePlayer, ID.ToString(), null)); Core.PlayerCollection.SendToAllPlayer(new Package(Package.PackageTypes.GameData, ID, GenerateGameData(true), null)); Thread.Add(new ThreadStart(ThreadUpdateWorld)); for (int i = 0; i < Core.PlayerCollection.Count; i++) { if (Core.PlayerCollection[i].ID != ID) { Core.PlayerCollection.SentToPlayer(new Package(Package.PackageTypes.CreatePlayer, Core.PlayerCollection[i].ID.ToString(), Package.TcpClient)); Core.PlayerCollection.SentToPlayer(new Package(Package.PackageTypes.GameData, Core.PlayerCollection[i].ID, Core.PlayerCollection[i].GenerateGameData(true), Package.TcpClient)); } } if (Core.Setting.Server.WelcomeMessage != null) Core.PlayerCollection.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Server.WelcomeMessage, Package.TcpClient)); }
/// <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> /// Get the List of Paramenter values. /// </summary> /// <param name="Command">Command to get.</param> /// <param name="p">Package Data.</param> /// <param name="ParamType">List of Paramenter.</param> public static List<string> Groups(this ICommand Command, Package p, params CommandParamType[] ParamType) { List<string> ReturnString = new List<string>(); string RegexFilter = "^" + Regex.Escape("/" + Command.Name); for (int i = 0; i < ParamType.Length; i++) { if (ParamType[i] == CommandParamType.Any) { RegexFilter += @"\s+(.+)"; } else if (ParamType[i] == CommandParamType.String) { RegexFilter += @"\s+(\w+)"; } else if (ParamType[i] == CommandParamType.Integer) { RegexFilter += @"\s+(\d+)"; } } RegexFilter += @"\s*$"; for (int i = 0; i < ParamType.Length; i++) { ReturnString.Add(Regex.Match(p.DataItems[0], RegexFilter, RegexOptions.IgnoreCase).Groups[i + 1].Value); } return ReturnString; }
/// <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] }
private void HandleExecuteCommand(ExecuteCommandPacket packet) { if (!Authorized) { SendPacket(new AuthorizationDisconnectPacket { Reason = "Not authorized!" }); return; } Package Package = new Package(Package.PackageTypes.ChatMessage, packet.Command, null); Core.Command.HandleAllCommand(Package); }
private void ThreadStartListening() { int ErrorCount = 0; do { try { if (TcpClient.Available > -1) { string PackageString = Reader.ReadLine(); if (!string.IsNullOrWhiteSpace(PackageString)) { ThreadPool.QueueWorkItem(() => { Package Package = new Package(PackageString, TcpClient); if (Package.IsValid) Package.Handle(); Core.Logger.Debug($"Receive: {PackageString}", TcpClient); }); ErrorCount = 0; } else { ErrorCount++; if (ErrorCount > 10) { Core.Logger.Debug("Too much error received from the client.", TcpClient); throw new Exception("Too much error received from the client."); } } } else { Core.Logger.Debug("Unexpected error occured.", TcpClient); throw new Exception("Unexpected error occured."); } } catch (Exception) { if (IsActive) { IsActive = false; Dispose(); } } } while (IsActive); }
/// <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> /// 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> /// 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 /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> /// 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 /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 /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 /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 HandleTradeOffer(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player TradePlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); Core.Player.SentToPlayer(new Package(Package.PackageTypes.TradeOffer, Player.ID, p.DataItems[1], TradePlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have offered the following pokemon: " + p.DataItems[1]) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have offered the following pokemon: " + p.DataItems[1]), Logger.LogTypes.Trade, p.Client); }
/// <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 }
private void HandlePing(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player.Network.LastValidPing = DateTime.Now; }
private void HandleServerDataRequest(Package p) { List<string> DataItems = new List<string> { Core.Player.Count.ToString(), Core.Setting.MaxPlayers == -1 ? int.MaxValue.ToString() : Core.Setting.MaxPlayers.ToString(), Core.Setting.ServerName, string.IsNullOrWhiteSpace(Core.Setting.ServerMessage) ? "" : Core.Setting.ServerMessage }; if (Core.Player.Count > 0) { for (int i = 0; i < Core.Player.Count; i++) { DataItems.Add(Core.Player[i].isGameJoltPlayer ? string.Format("{0} ({1})", Core.Player[i].Name, Core.Player[i].GameJoltID.ToString()) : Core.Player[i].Name); } } Core.Player.SentToPlayer(new Package(Package.PackageTypes.ServerInfoData, DataItems, p.Client)); }
private void HandleChatCommand(Package p) { Core.Command.HandleAllCommand(p); }
private void HandleBattleStart(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player PVPPlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); string PVPPlayerName = PVPPlayer.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", PVPPlayer.Name, PVPPlayer.GameJoltID.ToString(), "") : Core.Setting.Token("SERVER_NOGAMEJOLT", PVPPlayer.Name, ""); if (Player.PvP_Validatated) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleStart, Player.ID, "", PVPPlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have accept the battle from " + PVPPlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have accept the battle from " + PVPPlayerName), Logger.LogTypes.PvP, p.Client); Player.PvP_Status = Player.PvPTypes.Battling; } else { string ValidationResult = Player.DoPvPValidation(); Player.PvP_Validatated = true; if (ValidationResult == null) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleStart, Player.ID, "", PVPPlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have accept the battle from " + PVPPlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have accept the battle from " + PVPPlayerName), Logger.LogTypes.PvP, p.Client); Player.PvP_Status = Player.PvPTypes.Battling; } else if (ValidationResult.Contains("You may use this team")) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, ValidationResult, Player.Network.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleStart, Player.ID, "", PVPPlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have accept the battle from " + PVPPlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have accept the battle from " + PVPPlayerName), Logger.LogTypes.PvP, p.Client); Player.PvP_Status = Player.PvPTypes.Battling; } else { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_PVPVALIDATION", ValidationResult), Player.Network.Client)); } } }
private void HandleBattlePokemonData(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player PVPPlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattlePokemonData, Player.ID, p.DataItems[1], PVPPlayer.Network.Client)); }
private void HandleBattleQuit(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player PVPPlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); string PVPPlayerName = PVPPlayer.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", PVPPlayer.Name, PVPPlayer.GameJoltID.ToString(), "") : Core.Setting.Token("SERVER_NOGAMEJOLT", PVPPlayer.Name, ""); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleQuit, Player.ID, "", PVPPlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have rejected the battle request from " + PVPPlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have rejected the battle request from " + PVPPlayerName), Logger.LogTypes.PvP, p.Client); Player.PvP_Status = Player.PvPTypes.Nothing; PVPPlayer.PvP_Status = Player.PvPTypes.Nothing; }
private void HandleBattleOffer(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player PVPPlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); Player.PvP_Pokemon = p.DataItems[1].Split('|').ToList(); string ValidationResult = Player.DoPvPValidation(); Player.PvP_Validatated = true; if (ValidationResult == null) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleOffer, Player.ID, p.DataItems[1], PVPPlayer.Network.Client)); } else if (ValidationResult.Contains("You may use this team")) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, ValidationResult, Player.Network.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleOffer, Player.ID, p.DataItems[1], PVPPlayer.Network.Client)); } else { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_PVPVALIDATION", ValidationResult), Player.Network.Client)); } }
private void HandleBattleJoin(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player PvPPlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); string PVPPlayerName = PvPPlayer.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", PvPPlayer.Name, PvPPlayer.GameJoltID.ToString(), "") : Core.Setting.Token("SERVER_NOGAMEJOLT", PvPPlayer.Name, ""); if (!Core.Setting.AllowPvP) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_PVPDISALLOW"), p.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleQuit, Player.ID, "", p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_PVPDISALLOW")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_PVPDISALLOW")), Logger.LogTypes.PvP, p.Client); return; } // Server Restart Timer. if (Core.Setting.AutoRestartTime >= 10 && (Core.Setting.StartTime.AddSeconds(Core.Setting.AutoRestartTime) - DateTime.Now).TotalSeconds <= 300) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft()), p.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleQuit, Player.ID, "", p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft())) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft())), Logger.LogTypes.PvP, p.Client); return; } Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleJoin, Player.ID, "", PvPPlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have joined the battle request from " + PVPPlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have joined the battle request from " + PVPPlayerName), Logger.LogTypes.PvP, p.Client); // Status Update Player.PvP_Status = Player.PvPTypes.Lobby; Player.PvP_OpponentID = PvPPlayer.ID; Player.PvP_Host = false; Player.PvP_Validatated = false; PvPPlayer.PvP_Status = Player.PvPTypes.Lobby; PvPPlayer.PvP_OpponentID = Player.ID; PvPPlayer.PvP_Host = true; PvPPlayer.PvP_Validatated = false; }
private void HandleBattleRequest(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player PvPPlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); string PVPPlayerName = PvPPlayer.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", PvPPlayer.Name, PvPPlayer.GameJoltID.ToString(), "") : Core.Setting.Token("SERVER_NOGAMEJOLT", PvPPlayer.Name, ""); if (!Core.Setting.AllowPvP) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_PVPDISALLOW"), p.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleQuit, Player.ID, "", p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_PVPDISALLOW")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_PVPDISALLOW")), Logger.LogTypes.PvP, p.Client); return; } // Server Restart Timer. if (Core.Setting.AutoRestartTime >= 10 && (Core.Setting.StartTime.AddSeconds(Core.Setting.AutoRestartTime) - DateTime.Now).TotalSeconds <= 300) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft()), p.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleQuit, Player.ID, "", p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to trade with the following reason: " + Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft())) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to trade with the following reason: " + Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft())), Logger.LogTypes.PvP, p.Client); return; } // Check if you are blocked. if (Player.IsMuteListed(PvPPlayer)) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_MUTEDTEMP", Player.GetMuteList(PvPPlayer).Reason, Player.GetMuteList(PvPPlayer).RemainingTime), p.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleQuit, Player.ID, "", p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_MUTEDTEMP", Player.GetMuteList(PvPPlayer).Reason, Player.GetMuteList(PvPPlayer).RemainingTime)) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to battle with the following reason: " + Core.Setting.Token("SERVER_MUTEDTEMP", Player.GetMuteList(PvPPlayer).Reason, Player.GetMuteList(PvPPlayer).RemainingTime)), Logger.LogTypes.PvP, p.Client); return; } Core.Player.SentToPlayer(new Package(Package.PackageTypes.BattleRequest, Player.ID, "", PvPPlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have sent a battle request to " + PVPPlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have sent a battle request to " + PVPPlayerName), Logger.LogTypes.PvP, p.Client); }
private void HandleTradeStart(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player TradePlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); string TradePlayerName = TradePlayer.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", TradePlayer.Name, TradePlayer.GameJoltID.ToString(), "") : Core.Setting.Token("SERVER_NOGAMEJOLT", TradePlayer.Name, ""); Core.Player.SentToPlayer(new Package(Package.PackageTypes.TradeStart, Player.ID, "", TradePlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have accept the trade from " + TradePlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have accept the trade from " + TradePlayerName), Logger.LogTypes.Trade, p.Client); }
private void HandleGamestateMessage(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.ChatMessage, Player.isGameJoltPlayer ? "The player " + Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), p.DataItems[0]) : "The player " + Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, p.DataItems[0]), null)); Core.Logger.Log(Player.isGameJoltPlayer ? "The player " + Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), p.DataItems[0]) : "The player " + Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, p.DataItems[0]), Logger.LogTypes.Server, p.Client); }
private void HandleTradeJoin(Package p) { Player Player = Core.Player.GetPlayer(p.Client); Player TradePlayer = Core.Player.GetPlayer(p.DataItems[0].ToInt()); string TradePlayerName = TradePlayer.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", TradePlayer.Name, TradePlayer.GameJoltID.ToString(), "") : Core.Setting.Token("SERVER_NOGAMEJOLT", TradePlayer.Name, ""); if (!Core.Setting.AllowTrade) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_TRADEDISALLOW"), p.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.TradeQuit, Player.ID, "", p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to trade with the following reason: " + Core.Setting.Token("SERVER_TRADEDISALLOW")) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to trade with the following reason: " + Core.Setting.Token("SERVER_TRADEDISALLOW")), Logger.LogTypes.Trade, p.Client); return; } // Server Restart Timer. if (Core.Setting.AutoRestartTime >= 10 && (Core.Setting.StartTime.AddSeconds(Core.Setting.AutoRestartTime) - DateTime.Now).TotalSeconds <= 300) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft()), p.Client)); Core.Player.SentToPlayer(new Package(Package.PackageTypes.TradeQuit, Player.ID, "", p.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "is unable to trade with the following reason: " + Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft())) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "is unable to trade with the following reason: " + Core.Setting.Token("SERVER_TRADEPVPFAIL", Core.Listener.TimeLeft())), Logger.LogTypes.Trade, p.Client); return; } Core.Player.SentToPlayer(new Package(Package.PackageTypes.TradeJoin, Player.ID, "", TradePlayer.Network.Client)); Core.Logger.Log(Player.isGameJoltPlayer ? Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "have joined the trade request from " + TradePlayerName) : Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "have joined the trade request from " + TradePlayerName), Logger.LogTypes.Trade, p.Client); }