Beispiel #1
0
        /// <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);
         }
     }
 }