public WorldChatAdminGump(PlayerMobile pm_Mobile) : base(10, 10) { if (pm_Mobile == null) { return; } if (pm_Mobile.Deleted) { return; } player = pm_Mobile; ChatPersistance.ClearExpiredSquelchEntries(); ChatPersistance.CheckAndCreateWorldChatAccountEntry(player); if (player.m_WorldChatAccountEntry == null) { return; } Closable = true; Disposable = true; Dragable = true; Resizable = false; int whiteTextHue = 2655; int greenTextHue = 2599; AddPage(0); AddImage(305, 0, 201); AddImageTiled(186, 44, 546, 424, 200); AddImage(308, 468, 233); AddImage(0, 44, 202); AddImage(44, 0, 201); AddImage(0, 0, 206); AddImage(0, 468, 204); AddImage(731, 1, 207); AddImage(731, 468, 205); AddImage(44, 468, 233); AddImage(731, 45, 203); AddImageTiled(44, 44, 546, 424, 200); AddImage(0, 152, 202); AddImage(163, 0, 201); AddImage(166, 468, 233); AddImage(731, 152, 203); AddImage(31, 427, 3001); AddImage(274, 427, 3001); AddImage(355, 427, 3001); AddImage(29, 68, 3001); AddImage(272, 68, 3001); AddImage(353, 68, 3001); AddImage(498, 68, 3001); AddImage(482, 427, 3001); AddLabel(302, 17, 149, "World Chat Administration"); AddLabel(323, 41, 2606, "Squelched Players"); //------------------------------- int m_PageNumber = ChatPersistance.m_PlayersSquelchedAdminPage; int TotalPlayersSquelched = ChatPersistance.m_PlayersSquelched.Count; int m_TotalPages = (int)(Math.Ceiling((double)TotalPlayersSquelched / (double)EntriesPerPage)); if (m_TotalPages == 0) { m_TotalPages = 1; } if (m_PageNumber < 1) { m_PageNumber = 1; } if (m_PageNumber > m_TotalPages) { m_PageNumber = m_TotalPages; } ChatPersistance.m_PlayersSquelchedAdminPage = m_PageNumber; if (TotalPlayersSquelched > 0) { AddLabel(30, 123, 149, "Remove"); AddLabel(102, 123, 149, "Player Name"); AddLabel(229, 123, 149, "Account Name"); AddLabel(376, 123, 149, "Time Remaining"); AddLabel(512, 123, 149, "24 Hours"); AddLabel(583, 123, 149, "1 Week"); AddLabel(642, 123, 149, "1 Month"); AddLabel(706, 123, 149, "1 Year"); switch (ChatPersistance.m_AdminFilterMode) { case WorldChatAccountEntry.FilterMode.Name: AddButton(29, 84, 2154, 2151, 1, GumpButtonType.Reply, 0); AddLabel(70, 87, greenTextHue, "Filter Entries by Player Name"); AddButton(283, 84, 2151, 2154, 2, GumpButtonType.Reply, 0); AddLabel(317, 87, whiteTextHue, "Filter Entries by Account"); AddButton(506, 84, 2151, 2154, 3, GumpButtonType.Reply, 0); AddLabel(540, 87, whiteTextHue, "Filter Entries by Time Remaining"); break; case WorldChatAccountEntry.FilterMode.Account: AddButton(29, 84, 2151, 2154, 1, GumpButtonType.Reply, 0); AddLabel(70, 87, whiteTextHue, "Filter Entries by Player Name"); AddButton(283, 84, 2154, 2151, 2, GumpButtonType.Reply, 0); AddLabel(317, 87, greenTextHue, "Filter Entries by Account"); AddButton(506, 84, 2151, 2154, 3, GumpButtonType.Reply, 0); AddLabel(540, 87, whiteTextHue, "Filter Entries by Time Remaining"); break; case WorldChatAccountEntry.FilterMode.Date: AddButton(29, 84, 2151, 2154, 1, GumpButtonType.Reply, 0); AddLabel(70, 87, whiteTextHue, "Filter Entries by Player Name"); AddButton(283, 84, 2151, 2154, 2, GumpButtonType.Reply, 0); AddLabel(317, 87, whiteTextHue, "Filter Entries by Account"); AddButton(506, 84, 2154, 2151, 3, GumpButtonType.Reply, 0); AddLabel(540, 87, greenTextHue, "Filter Entries by Time Remaining"); break; } } if (ChatPersistance.m_PlayersSquelchedAdminPage > 1) { AddButton(127, 399, 4014, 4016, 4, GumpButtonType.Reply, 0); AddLabel(162, 399, whiteTextHue, "Previous"); } if (ChatPersistance.m_PlayersSquelchedAdminPage < m_TotalPages) { AddButton(608, 399, 4005, 4007, 5, GumpButtonType.Reply, 0); AddLabel(648, 399, whiteTextHue, "Next"); } if (ChatPersistance.Enabled) { AddLabel(45, 436, 168, "World Chat Enabled"); AddButton(91, 459, 2154, 2151, 6, GumpButtonType.Reply, 0); } else { AddLabel(45, 436, whiteTextHue, "World Chat Disabled"); AddButton(91, 459, 2151, 2154, 6, GumpButtonType.Reply, 0); } AddLabel(207, 436, 1164, "Squelch Player by Name"); AddButton(466, 463, 4010, 4007, 7, GumpButtonType.Reply, 0); AddLabel(404, 436, 2599, "Target Player to Squelch"); AddButton(266, 463, 4010, 4007, 8, GumpButtonType.Reply, 0); //--------------- int iStartY = 151; if (TotalPlayersSquelched > 0) { int startIndex = (m_PageNumber - 1) * EntriesPerPage; int endIndex = startIndex + EntriesPerPage; if (endIndex > TotalPlayersSquelched) { endIndex = TotalPlayersSquelched; } int buttonIndex = 0; for (int a = startIndex; a < endIndex; a++) { if (a < ChatPersistance.m_PlayersSquelched.Count) { PlayerSquelchEntry squelchEntry = ChatPersistance.m_PlayersSquelched[a]; string playerName = ""; string accountName = ""; string squelchExpiration = DateTime.UtcNow.ToShortDateString(); if (squelchEntry != null) { if (squelchEntry.m_Player != null) { playerName = squelchEntry.m_Player.RawName; Account account = squelchEntry.m_Player.Account as Account; accountName = account.Username; squelchExpiration = Utility.CreateTimeRemainingString(DateTime.UtcNow, squelchEntry.m_SquelchExpiration, true, true, true, true, false); } AddButton(36, iStartY + 3, 4004, 4007, 10 + buttonIndex, GumpButtonType.Reply, 0); //Remove AddLabel(Utility.CenteredTextOffset(136, playerName), iStartY, whiteTextHue, playerName); AddLabel(Utility.CenteredTextOffset(269, accountName), iStartY, whiteTextHue, accountName); AddLabel(Utility.CenteredTextOffset(425, squelchExpiration), iStartY, whiteTextHue, squelchExpiration); AddButton(523, iStartY + 3, 4029, 4029, 20 + buttonIndex, GumpButtonType.Reply, 0); AddButton(589, iStartY + 3, 4029, 4029, 30 + buttonIndex, GumpButtonType.Reply, 0); AddButton(648, iStartY + 3, 4029, 4029, 40 + buttonIndex, GumpButtonType.Reply, 0); AddButton(711, iStartY + 3, 4029, 4029, 50 + buttonIndex, GumpButtonType.Reply, 0); iStartY += 32; } } buttonIndex++; } } }
public override void OnResponse(Mobile from, string text) { PlayerMobile player = from as PlayerMobile; if (player == null) { return; } if (player.Deleted || !player.Alive) { return; } ChatPersistance.ClearExpiredSquelchEntries(); ChatPersistance.CheckAndCreateWorldChatAccountEntry(player); if (text == "" || text == null) { player.SendMessage("No player by that name has been found."); return; } string playerTargetName = text.ToLower(); Account playerAccount = player.Account as Account; if (playerAccount == null) { return; } if (playerAccount.accountMobiles == null) { return; } for (int a = 0; a < playerAccount.accountMobiles.Length; a++) { PlayerMobile pm_Mobile = playerAccount.accountMobiles[a] as PlayerMobile; if (pm_Mobile == null) { continue; } if (pm_Mobile.RawName == null || pm_Mobile.RawName == "") { continue; } if (pm_Mobile.RawName.ToLower() == playerTargetName) { player.SendMessage("You cannot squelch a player on your own account."); return; } } foreach (Account account in Accounts.GetAccounts()) { if (account == null) { continue; } if (account.accountMobiles == null) { continue; } for (int a = 0; a < account.accountMobiles.Length; a++) { PlayerMobile playerTarget = account.accountMobiles[a] as PlayerMobile; if (playerTarget == null) { continue; } if (playerTarget.RawName == null) { continue; } if (playerTarget.RawName.ToLower() == playerTargetName) { if (playerTarget.AccessLevel >= player.AccessLevel) { player.SendMessage("You must have a higher access level to Squelch that player."); return; } string accountName = ""; Account playerTargetAccount = playerTarget.Account as Account; if (playerTargetAccount == null) { return; } for (int b = 0; b < ChatPersistance.m_PlayersSquelched.Count; b++) { if (ChatPersistance.m_PlayersSquelched[b].m_Player == null) { continue; } Account squelchAccount = ChatPersistance.m_PlayersSquelched[b].m_Player.Account as Account; if (squelchAccount != null) { if (playerTargetAccount == squelchAccount) { accountName = playerTargetAccount.Username; player.SendMessage("That player's account (" + accountName + ") has already been Squelched. Use [WorldChatAdmin to manage current Squelches."); return; } } } ChatPersistance.m_PlayersSquelched.Add(new PlayerSquelchEntry(playerTarget, true, DateTime.UtcNow + TimeSpan.FromHours(24))); player.SendMessage(playerTarget.RawName + " added to WorldChat Squelch List."); switch (ChatPersistance.m_AdminFilterMode) { case WorldChatAccountEntry.FilterMode.Name: ChatPersistance.AdminSortSquelchedPlayersByName(); break; case WorldChatAccountEntry.FilterMode.Date: ChatPersistance.AdminSortSquelchedPlayersByDate(); break; } ChatPersistance.UpdateAdminGumps(); player.CloseGump(typeof(WorldChatAdminGump)); player.SendGump(new WorldChatAdminGump(player)); return; } } } player.SendMessage("No player by the name of " + playerTargetName + " has been found."); }
public void SendIgnorableMessage(int number, ChatUser from, string param1, string param2) { PlayerMobile player = from.Mobile as PlayerMobile; if (player == null) { return; } if (!ChatPersistance.Enabled) { player.SendMessage("World Chat system is currently offline."); return; } if (player.RawName == "Generic Player") { player.SendMessage("You must change your name before you may use the World Chat system."); return; } ChatPersistance.CheckAndCreateWorldChatAccountEntry(player); Account playerAccount = player.Account as Account; if (playerAccount == null) { return; } bool removeSquelch = false; PlayerSquelchEntry squelchEntryToRemove = null; ChatPersistance.ClearExpiredSquelchEntries(); foreach (PlayerSquelchEntry entry in ChatPersistance.m_PlayersSquelched) { if (entry.m_Player == null) { continue; } if (entry.m_Player.Account == null) { continue; } if (playerAccount == entry.m_Player.Account) { if (entry.m_SquelchExpiration >= DateTime.UtcNow) { string timeRemaining = Utility.CreateTimeRemainingString(DateTime.UtcNow, entry.m_SquelchExpiration, false, true, true, true, true); player.SendMessage("Your WorldChat privileges have been revoked and will be restored in " + timeRemaining + "."); return; } } } if (DateTime.UtcNow < player.m_WorldChatAccountEntry.LastMessageSent + ChatPersistance.ChatMessageCooldown) { player.SendMessage("You must wait another moment before posting another WorldChat message."); return; } player.m_WorldChatAccountEntry.LastMessageSent = DateTime.UtcNow; string message = "[WorldChat: " + player.Name + "] " + param2; if (player.Young) { message = "[WorldChat (Young) " + player.Name + "] " + param2; } if (player.Companion) { message = "[WorldChat (Companion) " + player.Name + "] " + param2; } int textHue = ChatPersistance.GlobalTextHue; if (player.m_WorldChatAccountEntry.GlobalTextHue != -1) { textHue = player.m_WorldChatAccountEntry.GlobalTextHue; } player.SendMessage(textHue, message); for (int a = 0; a < m_Users.Count; ++a) { ChatUser user = m_Users[a]; PlayerMobile otherPlayer = user.Mobile as PlayerMobile; if (otherPlayer == null) { continue; } if (otherPlayer == player) { continue; } if (otherPlayer.NetState == null) { continue; } ChatPersistance.CheckAndCreateWorldChatAccountEntry(otherPlayer); if (!otherPlayer.m_WorldChatAccountEntry.Enabled) { continue; } if (ChatPersistance.IsPlayerSquelched(player, otherPlayer)) { continue; } textHue = ChatPersistance.GlobalTextHue; if (otherPlayer.m_WorldChatAccountEntry.GlobalTextHue != -1) { textHue = otherPlayer.m_WorldChatAccountEntry.GlobalTextHue; } otherPlayer.SendMessage(textHue, message); //user.SendMessage(number, from.Mobile, param1, param2); } }