/// <summary> /// Remove Player by Name /// </summary> /// <param name="Name">Player Name</param> /// <param name="Reason">Reason</param> public void Remove(string Name, string Reason) { Player Player = GetPlayer(Name); Player.Network.IsActive = false; if (Player.isGameJoltPlayer) { Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "left the server."), null)); Core.Logger.Log(Core.Setting.Token("SERVER_GAMEJOLT", Player.Name, Player.GameJoltID.ToString(), "left the server with the following reason: " + Reason), Logger.LogTypes.Info); OnlineSetting OnlineSetting = (from OnlineSetting p in Core.Setting.OnlineSettingListData where p.GameJoltID == Player.GameJoltID select p).FirstOrDefault(); OnlineSetting.Save(); Core.Setting.OnlineSettingListData.Remove(OnlineSetting); } else { Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.ChatMessage, Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "left the server."), null)); Core.Logger.Log(Core.Setting.Token("SERVER_NOGAMEJOLT", Player.Name, "left the server with the following reason: " + Reason), Logger.LogTypes.Info); } Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.DestroyPlayer, Player.ID.ToString(), null)); if (Reason != Core.Setting.Token("SERVER_PLAYERLEFT")) { Core.Player.SentToPlayer(new Package(Package.PackageTypes.Kicked, Reason, Player.Network.Client)); } Core.RCONPlayer.SendToAllPlayer(new RCON_Client_Listener.Packages.Package(RCON_Client_Listener.Packages.Package.PackageTypes.RemovePlayer, $"{Player.ID},{Player.ToString()}", null)); Player.Network.ThreadPool3.WaitForIdle(); PlayerEvent.Invoke(PlayerEvent.Types.Remove, $"{Player.ID},{Player.ToString()}"); Core.Player.Remove(Player); }
/// <summary> /// Generate World Data /// </summary> /// <param name="Player">Player to Generate.</param> public List <string> GenerateWorld(Player Player) { try { List <string> ReturnList = new List <string>(); if (Core.Setting.DoDayCycle) { CurrentTime = _CurrentTime.AddSeconds(TimeOffset).Hour.ToString() + "," + _CurrentTime.AddSeconds(TimeOffset).Minute.ToString() + "," + _CurrentTime.AddSeconds(TimeOffset).Second.ToString(); } else { CurrentTime = "12,0,0"; } if (Player.isGameJoltPlayer) { OnlineSetting OnlineSetting = (from OnlineSetting p in Core.Setting.OnlineSettingListData where Player.GameJoltID == p.GameJoltID select p).FirstOrDefault(); if (OnlineSetting.LastWorldUpdate == null || OnlineSetting.LastWorldUpdate.AddHours(1) <= DateTime.Now) { OnlineSetting.CurrentWorldSeason = GenerateSeason(OnlineSetting.Season); OnlineSetting.CurrentWorldWeather = GenerateWeather(OnlineSetting.Weather, OnlineSetting.Season); OnlineSetting.LastWorldUpdate = LastWorldUpdate; } ReturnList = new List <string> { OnlineSetting.Season == (int)SeasonType.Nothing ? Season.ToString() : OnlineSetting.CurrentWorldSeason.ToString(), OnlineSetting.Weather == (int)WeatherType.Nothing ? Weather.ToString() : OnlineSetting.CurrentWorldWeather.ToString(), CurrentTime }; } else { ReturnList = new List <string> { Season.ToString(), Weather.ToString(), CurrentTime }; } return(ReturnList); } catch (Exception) { return(null); } }
/// <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 /Player.Weather <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.Weather = Group[0].ToInt().RollOver(-5, 9); Settings.CurrentWorldWeather = Core.World.GenerateWeather(Settings.Weather, Settings.Season); Settings.LastWorldUpdate = DateTime.Now; Player.CommandFeedback(Core.World.ToString(Settings.CurrentWorldSeason, Settings.CurrentWorldWeather), $"have changed the player weather."); } } #endregion /Player.Weather <id> }
/// <summary> /// Return if the player is muted. /// </summary> /// <param name="Player">Player to check.</param> /// <param name="PlayerList">Player List to check. Null == Global.</param> public static bool IsMuteListed(this Player Player, Player PlayerList = null) { if (PlayerList == null) { // Use Global List if (Core.Setting.MuteList) { MuteList MuteList = Player.GetMuteList(); if (MuteList == null) { return(false); } else { if (MuteList.Duration == -1 || DateTime.Now < MuteList.StartTime.AddSeconds(MuteList.Duration)) { return(true); } else { Core.Setting.MuteListData.Remove(MuteList); Core.Setting.Save(); return(false); } } } else { return(false); } } else { // Use PlayerList if (Core.Setting.OnlineSettingList) { MuteList MuteList = Player.GetMuteList(PlayerList); if (MuteList == null) { return(false); } else { if (MuteList.Duration == -1 || DateTime.Now < MuteList.StartTime.AddSeconds(MuteList.Duration)) { return(true); } else { OnlineSetting OnlineSetting = PlayerList.GetOnlineSetting(); OnlineSetting.MuteListData.Remove(MuteList); OnlineSetting.Save(); return(false); } } } else { return(false); } } }