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); }
/// <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); }
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); } }