Beispiel #1
0
        void Listener_OnPrivate(UserInfo user, string message)
        {
            if (!Server.ircControllers.Contains(user.Nick))
            {
                Pm(user.Nick, "You are not an IRC controller!"); return;
            }
            if (message.Split(' ')[0] == "resetbot" || banCmd.Contains(message.Split(' ')[0]))
            {
                Pm(user.Nick, "You cannot use this command from IRC!"); return;
            }
            if (Player.CommandHasBadColourCodes(null, message))
            {
                Pm(user.Nick, "Your command had invalid color codes!"); return;
            }

            Command cmd = Command.all.Find(message.Split(' ')[0]);

            if (cmd != null)
            {
                Server.s.Log("IRC Command: /" + message);
                usedCmd = user.Nick;
                try { cmd.Use(null, message.Split(' ').Length > 1 ? message.Substring(message.IndexOf(' ')).Trim() : ""); }
                catch { Pm(user.Nick, "Failed command!"); }
                usedCmd = "";
            }
            else
            {
                Pm(user.Nick, "Unknown command!");
            }
        }
 public override void Use(Player p, string message)
 {
     if (checker == null)
     {
         checker          = new Timer(60000);
         checker.Elapsed += new ElapsedEventHandler(checker_Elapsed);
         checker.Start();
     }
     String[] incoming = message.Split(' ');
     if (incoming.Length == 2)
     {
         nowCmd = Command.all.Find(incoming[0]);
         if (nowCmd != null)
         {
             //command exists
             nowCmd.isIntervalized      = true;
             nowCmd.intervalInMinutes   = int.Parse(incoming[1]);
             nowCmd.intervalUsingPlayer = p;
             try
             {
                 nowCmd.Use(nowCmd.intervalUsingPlayer, "");
             }
             catch (Exception e)
             {
                 Player.SendMessage(p, "An error occoured. please report this to the devs, cause this cmd seems to be not Interval-Compatible atm");
                 nowCmd.isIntervalized = false;
                 return;
             }
             nowCmd.nextExecution = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, DateTime.Today.Hour, DateTime.Today.Minute + nowCmd.intervalInMinutes, 0);
         }
         else
         {
             Player.SendMessage(p, "This command doesn't exist.");
         }
     }
     else if (incoming.Length == 1)
     {
         nowCmd = Command.all.Find(incoming[0]);
         if (nowCmd != null)
         {
             //command exists
             if (nowCmd.isIntervalized)
             {
                 nowCmd.isIntervalized = false;
                 Player.SendMessage(p, "Command will not be executed anymore in its Interval");
             }
         }
         else
         {
             Player.SendMessage(p, "This command doesn't exist.");
         }
     }
     else
     {
         this.Help(p); return;
     }
     nowCmd = null;
 }
Beispiel #3
0
        // Private methods
        private void LevelCommand(string name, string msg = "")
        {
            Command cmd = Command.all.Find(name.Trim());

            if (cmd != null && map != null)
            {
                try { cmd.Use(null, map.name + " " + msg.Trim()); }
                catch (Exception e) { Server.ErrorLog(e); }
            }
        }
Beispiel #4
0
        public override void Use(Player p, string message)
        {
            if (message != "")
            {
                Help(p); return;
            }
            if (p.possess != "")
            {
                Player.SendMessage(p, "Stop your current possession first.");
                return;
            }
            Command opchat = Command.all.Find("opchat");

            p.hidden = !p.hidden;
            if (p.hidden)
            {
                Player.GlobalDie(p, true);
                Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &finvisible" + Server.DefaultColor + ".");
                Player.GlobalChat(p, "&c- " + p.color + p.prefix + p.name + Server.DefaultColor + " disconnected.", false);
                if (p.opchat == false)
                {
                    opchat.Use(p, message);
                }
                else
                {
                }
                //Player.SendMessage(p, "You're now &finvisible&e.");
            }
            else
            {
                Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false);
                Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &8visible" + Server.DefaultColor + ".");
                Player.GlobalChat(p, "&a+ " + p.color + p.prefix + p.name + Server.DefaultColor + " joined the game.", false);
                if (p.opchat == true)
                {
                    opchat.Use(p, message);
                }
                else
                {
                }
                //Player.SendMessage(p, "You're now &8visible&e.");
            }
        }
Beispiel #5
0
        public override void Use(Player p, string message)
        {
            Command CmdFly = Command.all.Find("fly");

            if (p.level.ctfmode)
            {
                Player.SendMessage(p, "You can not fly while playing CTF, that is cheating!");
                if (p.isFlying)
                {
                    CmdFly.Use(p, String.Empty);
                }
                return;
            }
            p.isFlying = !p.isFlying;
            if (!p.isFlying)
            {
                return;
            }

            Player.SendMessage(p, "You are now flying. &cJump!");

            Thread flyThread = new Thread(new ThreadStart(delegate
            {
                Pos pos;
                ushort[] oldpos   = new ushort[3];
                List <Pos> buffer = new List <Pos>();
                while (p.isFlying)
                {
                    Thread.Sleep(20);
                    if (p.pos == oldpos)
                    {
                        continue;
                    }
                    try
                    {
                        List <Pos> tempBuffer = new List <Pos>();
                        List <Pos> toRemove   = new List <Pos>();
                        ushort x = (ushort)((p.pos[0]) / 32);
                        ushort y = (ushort)((p.pos[1] - 60) / 32);
                        ushort z = (ushort)((p.pos[2]) / 32);

                        try
                        {
                            for (ushort xx = (ushort)(x - 1); xx <= x + 1; xx++)
                            {
                                for (ushort yy = (ushort)(y - 1); yy <= y; yy++)
                                {
                                    for (ushort zz = (ushort)(z - 1); zz <= z + 1; zz++)
                                    {
                                        if (p.level.GetTile(xx, yy, zz) == Block.air)
                                        {
                                            pos.x = xx; pos.y = yy; pos.z = zz;
                                            tempBuffer.Add(pos);
                                        }
                                    }
                                }
                            }
                            foreach (Pos cP in tempBuffer)
                            {
                                if (!buffer.Contains(cP))
                                {
                                    buffer.Add(cP);
                                    p.SendBlockchange(cP.x, cP.y, cP.z, Block.glass);
                                }
                            }
                            foreach (Pos cP in buffer)
                            {
                                if (!tempBuffer.Contains(cP))
                                {
                                    p.SendBlockchange(cP.x, cP.y, cP.z, Block.air);
                                    toRemove.Add(cP);
                                }
                            }
                            foreach (Pos cP in toRemove)
                            {
                                buffer.Remove(cP);
                            }
                            tempBuffer.Clear();
                            toRemove.Clear();
                        }
                        catch { }
                    }
                    catch { }
                    p.pos.CopyTo(oldpos, 0);
                }

                foreach (Pos cP in buffer)
                {
                    p.SendBlockchange(cP.x, cP.y, cP.z, Block.air);
                }

                Player.SendMessage(p, "Stopped flying");
            }));

            flyThread.Start();
        }
Beispiel #6
0
        public override void Use(Player p, string message)
        {
            string dir         = "extra/jail/";
            string jailMapFile = dir + "xjail.map.xjail";

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            if (!File.Exists(jailMapFile))
            {
                StreamWriter SW = new StreamWriter(jailMapFile);
                SW.WriteLine(Server.mainLevel.name);
                SW.Close();
            }
            if (message == "")
            {
                Help(p); return;
            }
            else
            {
                StreamReader SR       = new StreamReader(jailMapFile);
                string       xjailMap = SR.ReadLine();
                SR.Close();
                Command jail = Command.all.Find("jail");
                if (message == "set")
                {
                    if (!p.level.name.Contains("cMuseum"))
                    {
                        jail.Use(p, "create");
                        StreamWriter SW = new StreamWriter(jailMapFile);
                        SW.WriteLine(p.level.name);
                        SW.Close();
                        Player.SendMessage(p, "The xjail map was set from '" + xjailMap + "' to '" + p.level.name + "'");
                        return;
                    }
                    else
                    {
                        Player.SendMessage(p, "You are in a museum!"); return;
                    }
                }
                else
                {
                    Player player = Player.Find(message);
                    if (player != null)
                    {
                        Command move       = Command.all.Find("move");
                        Command spawn      = Command.all.Find("spawn");
                        Command freeze     = Command.all.Find("freeze");
                        Command mute       = Command.all.Find("mute");
                        string  playerFile = dir + player.name + "_temp.xjail";
                        if (!File.Exists(playerFile))
                        {
                            StreamWriter writeFile = new StreamWriter(playerFile);
                            writeFile.WriteLine(player.level.name);
                            writeFile.Close();
                            if (!player.muted)
                            {
                                mute.Use(p, message);
                            }
                            if (!player.frozen)
                            {
                                freeze.Use(p, message);
                            }
                            move.Use(p, message + " " + xjailMap);
                            while (player.Loading)
                            {
                            }
                            if (!player.jailed)
                            {
                                jail.Use(p, message);
                            }
                            Player.GlobalMessage(player.color + player.name + Server.DefaultColor + " was XJailed!");
                            return;
                        }
                        else
                        {
                            StreamReader readFile  = new StreamReader(playerFile);
                            string       playerMap = readFile.ReadLine();
                            readFile.Close();
                            File.Delete(playerFile);
                            move.Use(p, message + " " + playerMap);
                            while (player.Loading)
                            {
                            }
                            mute.Use(p, message);
                            jail.Use(p, message);
                            freeze.Use(p, message);
                            spawn.Use(player, "");
                            Player.GlobalMessage(player.color + player.name + Server.DefaultColor + " was released from XJail!");
                            return;
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "Player not found"); return;
                    }
                }
            }
        }
 public override void Use(Player p, string message)
 {
     if (checker==null){
         checker = new Timer(60000);
         checker.Elapsed += new ElapsedEventHandler(checker_Elapsed);
         checker.Start();
     }
     String[] incoming = message.Split(' ');
     if(incoming.Length == 2)
     {
         nowCmd = Command.all.Find(incoming[0]);
         if (nowCmd != null)
         {
             //command exists
             nowCmd.isIntervalized = true;
             nowCmd.intervalInMinutes = int.Parse(incoming[1]);
             nowCmd.intervalUsingPlayer = p;
             try
             {
                 nowCmd.Use(nowCmd.intervalUsingPlayer, "");
             }
             catch (Exception e)
             {
                 Player.SendMessage(p, "An error occoured. please report this to the devs, cause this cmd seems to be not Interval-Compatible atm");
                 nowCmd.isIntervalized = false;
                 return;
             }
             nowCmd.nextExecution = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, DateTime.Today.Hour, DateTime.Today.Minute + nowCmd.intervalInMinutes, 0);
         }else{
             Player.SendMessage(p, "This command doesn't exist.");
         }
     }else if(incoming.Length == 1){
         nowCmd = Command.all.Find(incoming[0]);
         if (nowCmd != null)
         {
             //command exists
             if (nowCmd.isIntervalized)
             {
                 nowCmd.isIntervalized = false;
                 Player.SendMessage(p, "Command will not be executed anymore in its Interval");
             }
         }
         else
         {
             Player.SendMessage(p, "This command doesn't exist.");
         }
     }else{
         this.Help(p); return;
     }
     nowCmd = null;
 }
Beispiel #8
0
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                Help(p); return;
            }
            Player who = Player.Find(message.Split(' ')[0]);
            string cmd = message.Split(' ')[0].ToUpper();

            string par;

            try
            { par = message.Split(' ')[1].ToUpper(); }
            catch
            { par = ""; }

            string par2;

            try
            { par2 = message.Split(' ')[2]; }
            catch
            { par2 = ""; }

            string par3;

            try
            { par3 = message.Split(' ')[3]; }
            catch
            { par3 = ""; }

            if (cmd == "GO")
            {
                if ((par == "1") || (par == ""))
                {
                    string mapname = properMapName(p, false);
                    if (!Server.levels.Any(l => l.name == mapname))
                    {
                        Command.all.Find("load").Use(p, mapname);
                    }
                    Command.all.Find("goto").Use(p, mapname);
                }
                else if (par == "2")
                {
                    string mapname = p.name.ToLower() + "2";
                    if (!Server.levels.Any(l => l.name == mapname))
                    {
                        Command.all.Find("load").Use(p, mapname);
                    }
                    Command.all.Find("goto").Use(p, mapname);
                }
            }
            // Set Spawn (if you are on your own map level)
            else if (cmd == "SPAWN")
            {
                if ((p.name.ToUpper() == p.level.name.ToUpper()) || (p.name.ToUpper() + "00" == p.level.name.ToUpper()) || (p.name.ToUpper() + "2" == p.level.name.ToUpper()))
                {
                    Command.all.Find("setspawn").Use(p, "");
                }
                else
                {
                    Player.SendMessage(p, "You can only change the Spawn Point when you are on your own map.");
                }
            }
            // Map Commands
            else if (cmd == "MAP")
            {
                if (par == "ADD")
                {
                    if ((File.Exists(@"levels\" + p.name.ToLower() + ".lvl")) || (File.Exists(@"levels\" + p.name.ToLower() + "00.lvl")))
                    {
                        if (!File.Exists(@"levels\" + p.name.ToLower() + "2.lvl"))
                        {
                            Player.SendMessage(p, p.color + p.name + Server.DefaultColor + " you already have a map, let me create a second one for you.");
                            string mType;
                            if (par2.ToUpper() == "" || par2.ToUpper() == "DESERT" || par2.ToUpper() == "FLAT" || par2.ToUpper() == "FOREST" || par2.ToUpper() == "ISLAND" || par2.ToUpper() == "MOUNTAINS" || par2.ToUpper() == "OCEAN" || par2.ToUpper() == "PIXEL" || par2.ToUpper() == "SPACE")
                            {
                                if (par2 != "")
                                {
                                    mType = par2;
                                }
                                else
                                {
                                    mType = "flat";
                                }
                                Player.SendMessage(p, "Creating your 2nd map, " + p.color + p.name);
                                Command.all.Find("newlvl").Use(p, p.name.ToLower() + "2 " + mSize(p) + " " + mType);
                            }
                            else
                            {
                                Player.SendMessage(p, "A wrong map type was specified. Valid map types: Desert, flat, forest, island, mountians, ocean, pixel and space.");
                            }
                        }
                        else
                        {
                            Player.SendMessage(p, p.color + p.name + Server.DefaultColor + " you already have two maps.");
                            Player.SendMessage(p, "If you would like to delete one type /os map delete <1 or 2>");
                        }
                    }
                    else
                    {
                        string mType;
                        if (par2.ToUpper() == "" || par2.ToUpper() == "DESERT" || par2.ToUpper() == "FLAT" || par2.ToUpper() == "FOREST" || par2.ToUpper() == "ISLAND" || par2.ToUpper() == "MOUNTAINS" || par2.ToUpper() == "OCEAN" || par2.ToUpper() == "PIXEL" || par2.ToUpper() == "SPACE")
                        {
                            if (par2 != "")
                            {
                                mType = par2;
                            }
                            else
                            {
                                mType = "flat";
                            }
                            Player.SendMessage(p, "Creating your map, " + p.color + p.name);
                            Command.all.Find("newlvl").Use(p, p.name.ToLower() + " " + mSize(p) + " " + mType);
                        }
                        else
                        {
                            Player.SendMessage(p, "A wrong map type was specified. Valid map types: Desert, flat, forest, island, mountians, ocean, pixel and space.");
                        }
                    }
                }
                else if (par == "PHYSICS")
                {
                    if ((p.level.name.ToUpper().Equals(p.name.ToUpper())) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "00")) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "2")))
                    {
                        if (par2 != "")
                        {
                            if (par2 == "0")
                            {
                                Command.all.Find("physics").Use(p, p.level.name + " 0");
                            }
                            else if (par2 == "1")
                            {
                                Command.all.Find("physics").Use(p, p.level.name + " 1");
                            }
                            else if (par2 == "2")
                            {
                                Command.all.Find("physics").Use(p, p.level.name + " 2");
                            }
                            else if (par2 == "3")
                            {
                                Command.all.Find("physics").Use(p, p.level.name + " 3");
                            }
                            else if (par2 == "4")
                            {
                                Command.all.Find("physics").Use(p, p.level.name + " 4");
                            }
                        }
                        else
                        {
                            Player.SendMessage(p, "You didn't enter a number! Please enter one of these numbers: 0, 1, 2, 3, 4");
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "You have to be on one of your maps to set its physics!");
                    }
                }
                // Delete your map
                else if (par == "DELETE")
                {
                    if (par2 == "")
                    {
                        Player.SendMessage(p, "To delete one of your maps type /os map delete <1 or 2> 1 is your first map 2 is your second.");
                    }
                    else if (par2 == "1")
                    {
                        Command.all.Find("deletelvl").Use(p, properMapName(p, false));
                        Player.SendMessage(p, "Your 1st map has been removed.");
                        return;
                    }
                    else if (par2 == "2")
                    {
                        Command.all.Find("deletelvl").Use(p, p.name.ToLower() + "2");
                        Player.SendMessage(p, "Your 2nd map has been removed.");
                        return;
                    }
                }
                else
                {
                    //all is good here :)
                    Player.SendMessage(p, "/overseer map add [type - default is flat] -- Creates your map");
                    Player.SendMessage(p, "/overseer map physics -- Sets the physics on your map.");
                    Player.SendMessage(p, "/overseer map delete -- Deletes your map");
                    Player.SendMessage(p, "  Map Types: Desert, flat, forest, island, mountians, ocean, pixel and space");
                }
            }
            else if (cmd == "ZONE")
            {
                // List zones on a single block(dont need to touch this :) )
                if (par == "LIST")
                {
                    Command zone = Command.all.Find("zone");
                    zone.Use(p, "");
                }
                // Add Zone to your personal map(took a while to get it to work(it was a big derp))
                else if (par == "ADD")
                {
                    if ((p.level.name.ToUpper().Equals(p.name.ToUpper())) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "00")) || (p.level.name.ToUpper().Equals(p.name.ToUpper() + "2")))
                    {
                        if (par2 != "")
                        {
                            Command.all.Find("ozone").Use(p, par2);
                            Player.SendMessage(p, par2 + " has been allowed building on your map.");
                        }
                        else
                        {
                            Player.SendMessage(p, "You did not specify a name to allow building on your map.");
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "You must be on one of your maps to add or delete zones");
                    }
                }
                else if (par == "DEL")
                {
                    if ((p.level.name.ToLower().Equals(p.name.ToUpper())) || (p.level.name.ToLower().Equals(p.name.ToLower() + "00")) || (p.level.name.ToLower().Equals(p.name.ToLower() + "2")))
                    {
                        // I need to add the ability to delete a single zone, I need help!
                        if ((par2.ToUpper() == "ALL") || (par2.ToUpper() == ""))
                        {
                            Command zone  = Command.all.Find("zone");
                            Command click = Command.all.Find("click");
                            zone.Use(p, "del all");
                            click.Use(p, 0 + " " + 0 + " " + 0);
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "You have to be on one of your maps to delete or add zones!");
                    }
                }
                else
                {
                    // Unknown Zone Request
                    Player.SendMessage(p, "/overseer ZONE add [playername or rank] -- Add a zone for a player or a rank.");;
                    Player.SendMessage(p, "/overseer ZONE del [all] -- Deletes all zones.");
                    Player.SendMessage(p, "/overseer ZONE list -- show active zones on brick.");
                    Player.SendMessage(p, "You can only delete all zones for now.");
                }
            }
            //Lets player load the level
            else if (cmd == "LOAD")
            {
                if (par != "")
                {
                    if (par == "1")
                    {
                        Command.all.Find("load").Use(p, properMapName(p, false));
                        Player.SendMessage(p, "Your level is now loaded.");
                    }
                    else if (par == "2")
                    {
                        Command.all.Find("load").Use(p, p.name + "2");
                        Player.SendMessage(p, "Your 2nd level is now loaded.");
                    }
                }
                else
                {
                    Player.SendMessage(p, "Type /os load <1 or 2> to load one of your maps");
                }
            }
            else if (cmd == "KICKALL")
            {
                Command.all.Find("kickall").Use(p, "");
            }
            else
            {
                Help(p);
            }
        }
Beispiel #9
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Player.SendMessage(p, "This command can only be used in-game!"); return;
            }
            if (message == "check")
            {
                if (p.hidden)
                {
                    Player.SendMessage(p, "You are currently hidden!");
                    return;
                }
                else
                {
                    Player.SendMessage(p, "You are not currently hidden!");
                    return;
                }
            }
            else
            if (message != "")
            {
                if (p.possess != "")
                {
                    Player.SendMessage(p, "Stop your current possession first.");
                    return;
                }
            }
            Command opchat    = Command.all.Find("opchat");
            Command adminchat = Command.all.Find("adminchat");

            p.hidden = !p.hidden;
            if (p.hidden)
            {
                Player.GlobalDie(p, true);
                Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &finvisible" + Server.DefaultColor + ".");
                Player.GlobalChat(p, "&c- " + p.color + p.prefix + p.name + Server.DefaultColor + " " + (File.Exists("text/logout/" + p.name + ".txt") ? File.ReadAllText("text/logout/" + p.name + ".txt") : "Disconnected."), false);
                Server.IRC.Say(p.name + " left the game (Disconnected.)");
                if (!p.opchat)
                {
                    opchat.Use(p, message);
                }
                //Player.SendMessage(p, "You're now &finvisible&e.");
            }
            else
            {
                Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false);
                Player.GlobalMessageOps("To Ops -" + p.color + p.name + "-" + Server.DefaultColor + " is now &8visible" + Server.DefaultColor + ".");
                Player.GlobalChat(p, "&a+ " + p.color + p.prefix + p.name + Server.DefaultColor + " " + (File.Exists("text/login/" + p.name + ".txt") ? File.ReadAllText("text/login/" + p.name + ".txt") : "joined the game."), false);
                Server.IRC.Say(p.name + " joined the game");
                if (p.opchat)
                {
                    opchat.Use(p, message);
                }
                if (p.adminchat)
                {
                    adminchat.Use(p, message);
                }
                //Player.SendMessage(p, "You're now &8visible&e.");
            }
        }