Esempio n. 1
0
        /// <summary>
        /// Removes the specified client from the game, usually due to a disconnect. This also cleans up their votes and other game data.
        /// </summary>
        /// <param name="c">The client to remove.</param>
        public void RemoveClient(Client c)
        {
            // Remove this client's votes if they have any.
            if (ActiveRound != null)
            {
                ActiveRound.Votes.RemoveAll(v => v.ClientID == c.Info.ID && v.ClientName == c.Info.Name);
            }

            if (Admins.Contains(c))
            {
                Admins.Remove(c);
            }
            // Some race case is going on here... we need to check if there's even anything to remove.
            if (Clients.Count > 0)
            {
                Clients.Remove(c);
            }

            c = null;

            if (Clients.All(cl => cl.Info.IsSpectator) && ActiveRound != null)
            {
                DiscardActiveRound();
                BroadcastError(c, "RoundStopped", "There are no more non-spectator players, so the current round has been automatically discarded.");
            }

            // Check that every person hasn't already voted.
            CheckVoteCount();
        }
Esempio n. 2
0
 public string RemoveOperator(int id)
 {
     try
     {
         int count = 0;
         foreach (var Id in Operators.ToList())
         {
             if (Id.UserStatus.Contains("admin"))
             {
                 count++;
             }
         }
         var item = Operators.FirstOrDefault(x => x.OperatorID == id);
         if (item.OperatorID == id)
         {
             return("Нельзя удалить самого себя");
         }
         if (item.UserStatus.Contains("admin") && count == 1)
         {
             return("Нельзя удалить последнего админа");
         }
         if (item.UserStatus.Contains("admin"))
         {
             var admin = Admins.FirstOrDefault(i => i.Title == item.UserStatus);
             Admins.Remove(admin);
             Passwords.Remove(Passwords.FirstOrDefault(i => i.Flag == admin.Flag));
             SaveChanges();
         }
         Operators.Remove(item);
         SaveChanges();
         return("Запись успешно удалена");
     }
     catch (Exception ex) { return(ex.Message); }
 }
Esempio n. 3
0
        private static void RemoveAdmin(string username)
        {
            Admin admin = Admins.FirstOrDefault(x => x.UserName == username);

            if (admin == null)
            {
                throw new Exception("There is no such admin");
            }
            Admins.Remove(admin);
        }
Esempio n. 4
0
 public static void RemoveLevels(Player player)
 {
     if (player.Data.LevelAdmin > 0)
     {
         Admins.Remove(player);
     }
     if (player.Data.LevelVip > 0)
     {
         Vips.Remove(player);
     }
 }
 public void RemoveAdmin(Member member)
 {
     Admins.Remove(member.ID);
 }
Esempio n. 6
0
 public void RemoveAdmin(MessageSender sender)
 {
     Admins.Remove(sender);
 }
Esempio n. 7
0
        private void ParseChatCommand(ShootManiaXMLRPC.Structs.PlayerChat PC)
        {
            if (PC.Text == "!admins")
            {
                foreach (string admin in Admins)
                {
                    ChatSendServerMessage("Admin : " + admin);
                }
            }
            else if (PC.Text == "!players" &&
                     Admins.Contains(PC.Login))
            {
                foreach (var player in ServerManager.Server.GetPlayerList(100, 0))
                {
                    if (player.PlayerId > 0)
                    {
                        ChatSendServerMessage("[" + player.PlayerId + "] " + player.Nickname);
                    }
                }
            }
            else if (PC.Text.StartsWith("!addadmin") &&
                     Admins.Contains(PC.Login))
            {
                string admin = PC.Text.Replace("!addadmin ", string.Empty);

                if (!Admins.Contains(admin))
                {
                    Admins.Add(admin);
                    SaveAdmins();
                    ChatSendServerMessage("Admin added : " + admin);
                }
                else
                {
                    ChatSendServerMessage("Admin already exist : " + admin);
                }
            }
            else if (PC.Text.StartsWith("!deladmin") &&
                     Admins.Contains(PC.Login))
            {
                string admin = PC.Text.Replace("!deladmin ", string.Empty);

                if (admin != PC.Login)
                {
                    if (Admins.Contains(admin))
                    {
                        Admins.Remove(admin);
                        SaveAdmins();
                        ChatSendServerMessage("Admin removed : " + admin);
                    }
                    else
                    {
                        ChatSendServerMessage("Admin not found : " + admin);
                    }
                }
                else
                {
                    ChatSendServerMessage("You can't remove yourself !");
                }
            }
            else if (PC.Text == "!restartmap" &&
                     Admins.Contains(PC.Login))
            {
                ChatSendServerMessage("Restart map ...");
                ServerManager.Server.RestartMap(false);
            }
            else if (PC.Text == "!nextmap" &&
                     Admins.Contains(PC.Login))
            {
                ChatSendServerMessage("Next map ...");
                ServerManager.Server.NextMap(false);
            }
            else if (PC.Text.StartsWith("!map ") &&
                     Admins.Contains(PC.Login))
            {
                string newMap = PC.Text.Replace("!map ", string.Empty);

                foreach (var map in ServerManager.Server.GetMapList(1000, 0))
                {
                    if (map.FileName.ToLower().Contains(newMap.ToLower()))
                    {
                        ChatSendServerMessage("Map found : " + map.Name);
                        ServerManager.Server.ChooseNextMap(map.FileName);
                        ServerManager.Server.NextMap(false);
                        return;
                    }
                }

                ChatSendServerMessage("No map found with the pattern : " + newMap);
            }
            else if (PC.Text.StartsWith("!kick ") &&
                     Admins.Contains(PC.Login))
            {
                try {
                    int PlayerId = Convert.ToInt32(PC.Text.Replace("!kick ", string.Empty));

                    ServerManager.Server.KickId(PlayerId, "Kicked by admin");
                    ChatSendServerMessage("Played kicked");
                } catch {
                    ChatSendServerMessage("Invalid player id !");
                }
            }
            else if (PC.Text.StartsWith("!ban ") &&
                     Admins.Contains(PC.Login))
            {
                try {
                    int PlayerId = Convert.ToInt32(PC.Text.Replace("!ban ", string.Empty));

                    ServerManager.Server.BanId(PlayerId, "Banned by admin");
                    ChatSendServerMessage("Played banned");
                } catch {
                    ChatSendServerMessage("Invalid player id !");
                }
            }
            else if (PC.Text.StartsWith("!password ") &&
                     Admins.Contains(PC.Login))
            {
                string newPassword = PC.Text.Replace("!password ", string.Empty);

                ServerManager.Server.SetServerPassword(newPassword);
                ChatSendServerMessage("Password set to : " + newPassword);
            }
        }