コード例 #1
0
        void cmdChatBans(BasePlayer player, string command, string[] args)
        {
            if (args.Length > 1)
            {
                player.ChatMessage(m_configData.Messages["invalid_arguments"]);
                return;
            }

            List <ulong> contextPlayers = new List <ulong>();

            foreach (ulong userID in m_configData.BannedPlayers.Keys)
            {
                string playerName = PlayerName(userID);
                if (args.Length == 1 && !playerName.Contains(args[0], System.Globalization.CompareOptions.IgnoreCase))
                {
                    continue;
                }

                BanItem banItem = m_configData.BannedPlayers[userID];
                contextPlayers.Add(userID);

                string message = m_configData.Messages["player_was_banned"];
                message = message.Replace("%player_name", playerName);
                message = message.Replace("%player_steamid", userID.ToString());
                message = message.Replace("%reason", banItem.reason);

                player.ChatMessage(contextPlayers.Count.ToString() + ") " + banItem.timestamp + " " + message);
            }
            SetContextPlayers(player.userID, contextPlayers);
        }
コード例 #2
0
        /// <summary>
        /// Parses a given IHtmlDocument of the Ban user page.
        /// </summary>
        /// <param name="document">An IHtmlDocument of the ban page.</param>
        /// <returns>The BanPage.</returns>
        public static BanPage ParseBanPage(IHtmlDocument document)
        {
            if (document == null)
            {
                throw new ArgumentNullException(nameof(document));
            }

            var banPage = new BanPage();
            var banList = document.QuerySelector(@"table[class=""standard full""]");

            if (banList == null)
            {
                return(banPage);
            }

            GetPageInfo(document, banPage);

            var banListBody = banList.QuerySelector("tbody");
            var banListRows = banListBody.QuerySelectorAll("tr");

            foreach (var banListRow in banListRows)
            {
                var banItem = new BanItem();
                var tds     = banListRow.QuerySelectorAll("td");
                if (!tds.Any())
                {
                    continue;
                }

                var type         = tds[0].QuerySelector("a");
                var date         = tds[1];
                var horribleJerk = tds[2].QuerySelector("a");
                var reason       = tds[3];
                var requestedBy  = tds[4].QuerySelector("a");
                var approvedBy   = tds[5].QuerySelector("a");

                banItem.Type   = type.TextContent;
                banItem.PostId = Convert.ToInt32(type.GetAttribute("href").Split('=').Last(), CultureInfo.InvariantCulture);

                banItem.Date = DateTime.Parse(date.TextContent, CultureInfo.InvariantCulture);

                banItem.HorribleJerk   = horribleJerk.TextContent;
                banItem.HorribleJerkId = Convert.ToInt32(horribleJerk.GetAttribute("href").Split('=').Last(), CultureInfo.InvariantCulture);

                banItem.PunishmentReason = reason.InnerHtml;

                banItem.RequestedBy   = requestedBy.TextContent;
                banItem.RequestedById = Convert.ToInt32(requestedBy.GetAttribute("href").Split('=').Last(), CultureInfo.InvariantCulture);

                banItem.ApprovedBy   = approvedBy.TextContent;
                banItem.ApprovedById = Convert.ToInt32(approvedBy.GetAttribute("href").Split('=').Last(), CultureInfo.InvariantCulture);
                banPage.Bans.Add(banItem);
            }

            return(banPage);
        }
コード例 #3
0
        void cmdBan(BasePlayer player, string command, string[] args)
        {
            if (player.net.connection.authLevel == 0 && !permission.UserHasPermission(player.userID.ToString(), "SSNBans.ban"))
            {
                return;
            }

            if (args.Length < 2)
            {
                player.ChatMessage(m_configData.Messages["invalid_arguments"]);
                return;
            }

            ulong userId = UserIdByAlias(player.userID, args[0]);

            if (userId == 0)
            {
                player.ChatMessage(m_configData.Messages["player_not_found"]);
                return;
            }

            string playerName = PlayerName(userId);

            string reason = "";

            for (int i = 1; i < args.Length; ++i)
            {
                reason += args[i];
                if (i < args.Length - 1)
                {
                    reason += " ";
                }
            }

            if (m_configData.BannedPlayers.ContainsKey(userId))
            {
                BanItem banItem = m_configData.BannedPlayers[userId];
                string  message = m_configData.Messages["player_is_banned_already"];
                message = message.Replace("%player_name", playerName);
                message = message.Replace("%player_steamid", userId.ToString());
                message = message.Replace("%reason", banItem.reason);
                player.ChatMessage(message);
            }
            else
            {
                BanItem banItem = new BanItem();
                banItem.reason    = reason;
                banItem.timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                m_configData.BannedPlayers[userId] = banItem;

                ConsoleSystem.Run.Server.Quiet(string.Format("banid {0} \"{1}\" \"{2}\"", userId.ToString(), playerName, reason).ToString(), true);
                ConsoleSystem.Run.Server.Quiet("server.writecfg", true);

                SaveConfig();

                string message = m_configData.Messages["player_was_banned"];
                message = message.Replace("%player_name", playerName);
                message = message.Replace("%player_steamid", userId.ToString());
                message = message.Replace("%reason", banItem.reason);
                ConsoleSystem.Broadcast("chat.add", 0, message, 1.0);

                BasePlayer targetPlayer = BasePlayer.FindByID(userId);
                if (targetPlayer != null)
                {
                    targetPlayer.Kick(message);
                }

                NotifyPlayerBan(userId, playerName, reason);
            }
        }