예제 #1
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.");
            }
예제 #2
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (from == null)
            {
                return;
            }
            if (from.Deleted)
            {
                return;
            }
            if (player == null)
            {
                return;
            }
            if (player.Deleted)
            {
                return;
            }

            bool resendGump = false;

            ChatPersistance.CheckAndCreateWorldChatAccountEntry(player);

            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;

            //Filter By Name
            if (info.ButtonID == 1)
            {
                if (ChatPersistance.m_AdminFilterMode != WorldChatAccountEntry.FilterMode.Name)
                {
                    ChatPersistance.m_AdminFilterMode           = WorldChatAccountEntry.FilterMode.Name;
                    ChatPersistance.m_PlayersSquelchedAdminPage = 1;

                    ChatPersistance.AdminSortSquelchedPlayersByName();
                    ChatPersistance.UpdateAdminGumps();
                }

                resendGump = true;
            }

            //Filter By Account
            if (info.ButtonID == 2)
            {
                if (ChatPersistance.m_AdminFilterMode != WorldChatAccountEntry.FilterMode.Account)
                {
                    ChatPersistance.m_AdminFilterMode           = WorldChatAccountEntry.FilterMode.Account;
                    ChatPersistance.m_PlayersSquelchedAdminPage = 1;

                    ChatPersistance.AdminSortSquelchedPlayersByAccount();
                    ChatPersistance.UpdateAdminGumps();
                }

                resendGump = true;
            }

            //Filter By Expiration
            if (info.ButtonID == 3)
            {
                if (ChatPersistance.m_AdminFilterMode != WorldChatAccountEntry.FilterMode.Date)
                {
                    ChatPersistance.m_AdminFilterMode           = WorldChatAccountEntry.FilterMode.Date;
                    ChatPersistance.m_PlayersSquelchedAdminPage = 1;

                    ChatPersistance.AdminSortSquelchedPlayersByDate();
                    ChatPersistance.UpdateAdminGumps();
                }

                resendGump = true;
            }

            //Previous
            if (info.ButtonID == 4)
            {
                if (ChatPersistance.m_PlayersSquelchedAdminPage > 1)
                {
                    ChatPersistance.m_PlayersSquelchedAdminPage--;
                }

                ChatPersistance.UpdateAdminGumps();

                resendGump = true;
            }

            //Next
            if (info.ButtonID == 5)
            {
                if (ChatPersistance.m_PlayersSquelchedAdminPage < m_TotalPages)
                {
                    ChatPersistance.m_PlayersSquelchedAdminPage++;
                }

                resendGump = true;
            }

            //Enable World Chat
            if (info.ButtonID == 6)
            {
                ChatPersistance.Enabled = !ChatPersistance.Enabled;

                if (ChatPersistance.Enabled)
                {
                    player.SendMessage("WorldChat has been enabled for all players.");
                }

                else
                {
                    player.SendMessage("WorldChat has been disabled for all players.");
                }

                ChatPersistance.UpdateAdminGumps();

                resendGump = true;
            }

            //Squelch Player By Target
            if (info.ButtonID == 7)
            {
                ChatPersistance.WorldChatAdminSquelch(player, TimeSpan.FromHours(24));

                resendGump = false;
            }

            //Squelch Player By Name
            if (info.ButtonID == 8)
            {
                player.SendMessage("Please enter the name of the player to add to the Squelched List.");
                player.Prompt = new WorldChatAdminSquelchPlayerPrompt(player);

                resendGump = true;
            }

            //Remove Entry
            if (info.ButtonID >= 10 && info.ButtonID <= 19)
            {
                PlayerSquelchEntry squelchEntry = null;

                int entryIndex = (m_PageNumber - 1) * EntriesPerPage + (info.ButtonID - 10);

                if (entryIndex < ChatPersistance.m_PlayersSquelched.Count)
                {
                    ChatPersistance.m_PlayersSquelched.RemoveAt(entryIndex);
                }

                ChatPersistance.UpdateAdminGumps();

                resendGump = true;
            }

            //24 Hour Squelch
            if (info.ButtonID >= 20 && info.ButtonID <= 29)
            {
                PlayerSquelchEntry squelchEntry = null;

                int entryIndex = (m_PageNumber - 1) * EntriesPerPage + (info.ButtonID - 20);

                if (entryIndex < ChatPersistance.m_PlayersSquelched.Count)
                {
                    ChatPersistance.m_PlayersSquelched[entryIndex].m_SquelchExpiration = DateTime.UtcNow + TimeSpan.FromHours(24);
                }

                ChatPersistance.UpdateAdminGumps();

                resendGump = true;
            }

            //1 Week Squelch
            if (info.ButtonID >= 30 && info.ButtonID <= 39)
            {
                PlayerSquelchEntry squelchEntry = null;

                int entryIndex = (m_PageNumber - 1) * EntriesPerPage + (info.ButtonID - 30);

                if (entryIndex < ChatPersistance.m_PlayersSquelched.Count)
                {
                    ChatPersistance.m_PlayersSquelched[entryIndex].m_SquelchExpiration = DateTime.UtcNow + TimeSpan.FromDays(7);
                }

                ChatPersistance.UpdateAdminGumps();

                resendGump = true;
            }

            //1 Month Squelch
            if (info.ButtonID >= 40 && info.ButtonID <= 49)
            {
                PlayerSquelchEntry squelchEntry = null;

                int entryIndex = (m_PageNumber - 1) * EntriesPerPage + (info.ButtonID - 40);

                if (entryIndex < ChatPersistance.m_PlayersSquelched.Count)
                {
                    ChatPersistance.m_PlayersSquelched[entryIndex].m_SquelchExpiration = DateTime.UtcNow + TimeSpan.FromDays(30);
                }

                ChatPersistance.UpdateAdminGumps();

                resendGump = true;
            }

            //1 Year Squelch
            if (info.ButtonID >= 50 && info.ButtonID <= 59)
            {
                PlayerSquelchEntry squelchEntry = null;

                int entryIndex = (m_PageNumber - 1) * EntriesPerPage + (info.ButtonID - 50);

                if (entryIndex < ChatPersistance.m_PlayersSquelched.Count)
                {
                    ChatPersistance.m_PlayersSquelched[entryIndex].m_SquelchExpiration = DateTime.UtcNow + TimeSpan.FromDays(365);
                }

                ChatPersistance.UpdateAdminGumps();

                resendGump = true;
            }

            if (resendGump)
            {
                player.CloseGump(typeof(WorldChatAdminGump));
                player.SendGump(new WorldChatAdminGump(player));
            }
        }