Ejemplo n.º 1
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Server.s.Log("'null' or console tried to use '/chatroom', This command is limited to ingame, sorry!!");
                return;
            }

            string[] command = message.ToLower().Split(' ');
            string   par0    = String.Empty;
            string   par1    = String.Empty;
            string   par2    = String.Empty;
            string   par3    = String.Empty;

            try
            {
                par0 = command[0];
                par1 = command[1];
                par2 = command[2];
                par3 = command[3];
            }
            catch { }

            if (message == null || par0 == null || message.Trim() == "" || par0.Trim() == "")
            {
                if (Server.Chatrooms.Count == 0)
                {
                    Player.SendMessage(p, "There are currently no rooms");
                    return;
                }
                else
                {
                    Player.SendMessage(p, "The current rooms are:");
                    foreach (string room in Server.Chatrooms)
                    {
                        Player.SendMessage(p, room);
                    }
                    return;
                }
            }
            else if (par0 == "join")
            {
                if (Server.Chatrooms.Contains(par1))
                {
                    if (p.spyChatRooms.Contains(par1))
                    {
                        Player.SendMessage(p, "The chat room '" + par1 + "' has been removed from your spying list because you are joining the room.");
                        p.spyChatRooms.Remove(par1);
                    }
                    Player.SendMessage(p, "You've joined the chat room '" + par1 + "'");
                    Player.ChatRoom(p, p.color + p.name + Server.DefaultColor + " has joined your chat room", false, par1);
                    p.Chatroom = par1;
                    return;
                }
                else
                {
                    Player.SendMessage(p, "Sorry, '" + par1 + "' is not a chat room");
                    return;
                }
            }
            else if (par0 == "leave")
            {
                Player.SendMessage(p, "You've left the chat room '" + p.Chatroom + "'");
                Player.ChatRoom(p, p.color + p.name + Server.DefaultColor + " has left the chat room", false, p.Chatroom);
                Player.GlobalMessage(p.color + p.name + Server.DefaultColor + " has left their chat room " + p.Chatroom);
                p.Chatroom = null;
                return;
            }
            else if (par0 == "create" || par0 == "make")
            {
                if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 1))
                {
                    if (Server.Chatrooms.Contains(par1))
                    {
                        Player.SendMessage(p, "Sorry, '" + par1 + "' already exists");
                        return;
                    }
                    else
                    {
                        Server.Chatrooms.Add(par1);
                        Player.GlobalMessage("The chat room '" + par1 + "' has been created");
                        return;
                    }
                }
                else
                {
                    Player.SendMessage(p, "Sorry, You aren't a high enough rank to do that");
                    return;
                }
            }
            else if (par0 == "delete" || par0 == "remove")
            {
                if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 3))
                {
                    if (Server.Chatrooms.Contains(par1))
                    {
                        Player.GlobalMessage(par1 + " is being deleted");
                        if (p.Chatroom == par1)
                        {
                            Command.all.Find("chatroom").Use(p, "leave");
                        }
                        Server.Chatrooms.Remove(par1);
                        foreach (Player pl in Player.players)
                        {
                            if (pl.Chatroom == par1)
                            {
                                pl.Chatroom = null;
                                Player.SendMessage(pl, "You've left the room '" + par1 + "' because it is being deleted");
                            }
                            if (pl.spyChatRooms.Contains(par1))
                            {
                                pl.spyChatRooms.Remove(par1);
                                pl.SendMessage("Stopped spying on chat room '" + par1 + "' because it is being deleted by: " + p.color + p.name);
                            }
                        }
                        Player.GlobalMessage("The chatroom '" + par1 + "' has been " + (par0 + "d"));
                        Player.SendMessage(p, (par0 + "d ") + " room '" + par1 + "'");
                        return;
                    }
                    else
                    {
                        Player.SendMessage(p, "Sorry, '" + par1 + "' doesn't exist");
                        return;
                    }
                }
                if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 2))
                {
                    if (Server.Chatrooms.Contains(par1))
                    {
                        foreach (Player pl in Player.players)
                        {
                            if (pl != p)
                            {
                                if (pl.Chatroom == par1)
                                {
                                    Player.SendMessage(p, "Sorry, someone else is in the room");
                                    return;
                                }
                            }
                        }
                        if (p.Chatroom == par1)
                        {
                            Command.all.Find("chatroom").Use(p, "leave");
                        }
                        Server.Chatrooms.Remove(par1);
                        foreach (Player pl in Player.players)
                        {
                            if (pl.spyChatRooms.Contains(par1))
                            {
                                pl.spyChatRooms.Remove(par1);
                                pl.SendMessage("Stopped spying on chat room '" + par1 + "' because it is being deleted by: " + p.color + p.name);
                            }
                        }
                        Player.SendMessage(p, (par0 + "d ") + " room '" + par1 + "'");
                    }
                    else
                    {
                        Player.SendMessage(p, "Sorry, '" + par1 + "' doesn't exist");
                        return;
                    }
                }
                else
                {
                    Player.SendMessage(p, "Sorry, You aren't a high enough rank to do that");
                    return;
                }
            }
            else if (par0 == "spy")
            {
                if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 4))
                {
                    if (Server.Chatrooms.Contains(par1))
                    {
                        if (p.Chatroom != par1)
                        {
                            if (p.spyChatRooms.Contains(par1))
                            {
                                Player.SendMessage(p, "'" + par1 + "' is already on your spying list!!");
                                return;
                            }
                            else
                            {
                                p.spyChatRooms.Add(par1);
                                Player.SendMessage(p, "'" + par1 + "' has been added to your chat room spying list");
                                return;
                            }
                        }
                        else
                        {
                            Player.SendMessage(p, "Sorry, you can't spy on your own room");
                            return;
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "Sorry, '" + par1 + "' isn't a room");
                        return;
                    }
                }
                else
                {
                    Player.SendMessage(p, "Sorry, '" + par0 + "' Wasn't a correct command addition and it wasn't a room. Sorry");
                    return;
                }
            }
            else if (par0 == "forcejoin") //[player] [room]
            {
                if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 5))
                {
                    Player pl = Player.Find(par1);
                    if (pl == null)
                    {
                        Player.SendMessage(p, "Sorry, '" + par1 + "' isn't a player");
                        return;
                    }
                    if (!Server.Chatrooms.Contains(par2))
                    {
                        Player.SendMessage(p, "Sorry, '" + par2 + " isn't a room");
                        return;
                    }
                    if (pl.group.Permission >= p.group.Permission)
                    {
                        Player.SendMessage(p, "Sorry, You can't do that to someone of higher or equal rank");
                        return;
                    }
                    else
                    {
                        if (Server.Chatrooms.Contains(par2))
                        {
                            if (pl.spyChatRooms.Contains(par2))
                            {
                                Player.SendMessage(pl, "The chat room '" + par2 + "' has been removed from your spying list because you are force joining the room '" + par2 + "'");
                                pl.spyChatRooms.Remove(par2);
                            }
                            Player.SendMessage(pl, "You've been forced to join the chat room '" + par2 + "'");
                            Player.ChatRoom(pl, pl.color + pl.name + Server.DefaultColor + " has force joined your chat room", false, par2);
                            pl.Chatroom = par2;
                            Player.SendMessage(p, pl.color + pl.name + Server.DefaultColor + " has been forced to join the chatroom '" + par2 + "' by you");
                            return;
                        }
                    }
                }
                else
                {
                    Player.SendMessage(p, "Sorry, You aren't a high enough rank to do that");
                    return;
                }
            }
            else if (par0 == "kick" || par0 == "forceleave")
            {
                if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 6))
                {
                    Player pl = Player.Find(par1);
                    if (pl == null)
                    {
                        Player.SendMessage(p, "Sorry, '" + par1 + "' isn't a player");
                        return;
                    }
                    if (pl.group.Permission >= p.group.Permission)
                    {
                        Player.SendMessage(p, "Sorry, You can't do that to someone of higher or equal rank");
                        return;
                    }
                    else
                    {
                        Player.SendMessage(pl, "You've been kicked from the chat room '" + pl.Chatroom + "'");
                        Player.SendMessage(p, pl.color + pl.name + Server.DefaultColor + " has been kicked from the chat room '" + pl.Chatroom + "'");
                        Player.ChatRoom(pl, pl.color + pl.name + Server.DefaultColor + " has been kicked from your chat room", false, pl.Chatroom);
                        pl.Chatroom = null;
                    }
                }
                else
                {
                    Player.SendMessage(p, "Sorry, You aren't a high enough rank to do that");
                    return;
                }
            }
            else if (par0 == "globalmessage" || par0 == "global" || par0 == "all")
            {
                string globalmessage = message.Replace(par0 + " ", "");
                if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 7))
                {
                    Player.GlobalChatRoom(p, globalmessage, true);
                    return;
                }
                else
                {
                    if (p.lastchatroomglobal.AddSeconds(30) < DateTime.Now)
                    {
                        Player.GlobalChatRoom(p, globalmessage, true);
                        p.lastchatroomglobal = DateTime.Now;
                        return;
                    }
                    else
                    {
                        Player.SendMessage(p, "Sorry, You must wait 30 seconds inbetween each global chatroom message!!");
                        return;
                    }
                }
            }
            else if (par0 == "help")
            {
                Help(p);
                return;
            }
            else if (Server.Chatrooms.Contains(par0))
            {
                Player.SendMessage(p, "Players in '" + par0 + "' :");
                foreach (Player pl in Player.players)
                {
                    if (pl.Chatroom == par0)
                    {
                        Player.SendMessage(p, pl.color + pl.name);
                    }
                }
                return;
            }
            else
            {
                Player.SendMessage(p, "Sorry, '" + par0 + "' Wasn't a correct command addition and it wasn't a room. Sorry");
                Help(p);
                return;
            }
        }