Пример #1
0
        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++;
                }
            }
        }
Пример #2
0
            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.");
            }
Пример #3
0
        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);
            }
        }