예제 #1
0
        void HandleGenerate(Player p, CountdownGame game, string x, string y, string z)
        {
            if (!CheckExtraPerm(p, 1))
            {
                return;
            }

            int width, height, length;

            if (!int.TryParse(x, out width) || !int.TryParse(y, out height) || !int.TryParse(z, out length))
            {
                width = 32; height = 32; length = 32;
            }
            if (width < 32 || !MapGen.OkayAxis(width))
            {
                width = 32;
            }
            if (height < 32 || !MapGen.OkayAxis(height))
            {
                height = 32;
            }
            if (length < 32 || !MapGen.OkayAxis(length))
            {
                length = 32;
            }

            if (!CmdNewLvl.CheckMapVolume(p, width, height, length))
            {
                return;
            }
            game.GenerateMap(p, width, height, length);
        }
예제 #2
0
        void HandleLeave(Player p, CountdownGame game)
        {
            if (!game.Players.Contains(p))
            {
                Player.Message(p, "Cannot leave as you did not join countdown to begin with.");
                return;
            }

            switch (game.Status)
            {
            case CountdownGameStatus.Disabled:
                Player.Message(p, "Cannot leave as countdown is not running.");
                return;

            case CountdownGameStatus.Enabled:
                game.PlayerLeftGame(p);
                return;

            case CountdownGameStatus.RoundCountdown:
                Player.Message(p, "Cannot leave when a round is about to start.");
                return;

            case CountdownGameStatus.RoundInProgress:
                if (game.Remaining.Contains(p))
                {
                    Player.Message(p, "Cannot leave when a round in progress - please wait until the round ends or you die.");
                }
                else
                {
                    game.PlayerLeftGame(p);
                }
                return;
            }
        }
예제 #3
0
        protected override void HandleStart(Player p, RoundsGame game_, string[] args)
        {
            if (game_.Running)
            {
                p.Message("{0} is already running", game_.GameName); return;
            }

            CountdownGame game  = (CountdownGame)game_;
            string        speed = args.Length > 1 ? args[1] : "";
            string        mode  = args.Length > 2 ? args[2] : "";

            switch (speed)
            {
            case "slow":     game.Interval = 800; break;

            case "normal":   game.Interval = 650; break;

            case "fast":     game.Interval = 500; break;

            case "extreme":  game.Interval = 300; break;

            case "ultimate": game.Interval = 150; break;

            default:
                p.Message("No speed specified, playing at 'normal' speed.");
                game.Interval = 650; speed = "normal"; break;
            }

            game.FreezeMode = mode == "freeze" || mode == "frozen";
            game.SpeedType  = speed;
            game.Start(p, "countdown", int.MaxValue);
        }
예제 #4
0
 static string FormatPlayer(Player pl, CountdownGame game)
 {
     if (game.Remaining.Contains(pl))
     {
         return(pl.ColoredName + " &a[IN]");
     }
     else
     {
         return(pl.ColoredName + " &c[OUT]");
     }
 }
예제 #5
0
        void HandleDisable(Player p, CountdownGame game)
        {
            if (!CheckExtraPerm(p, 1))
            {
                return;
            }

            if (game.Status == CountdownGameStatus.Disabled)
            {
                Player.Message(p, "Countdown is not running."); return;
            }
            game.Disable();
        }
예제 #6
0
 void HandleJoin(Player p, CountdownGame game)
 {
     if (!game.Running)
     {
         p.Message("Cannot join as countdown is not running.");
     }
     else if (game.RoundInProgress)
     {
         p.Message("Cannot join when a round is in progress. Wait until next round.");
     }
     else
     {
         game.PlayerJoinedGame(p);
     }
 }
예제 #7
0
        void HandleEnable(Player p, CountdownGame game)
        {
            if (!CheckExtraPerm(p, 1))
            {
                return;
            }

            if (game.Status == CountdownGameStatus.Disabled)
            {
                game.Enable(p);
            }
            else
            {
                Player.Message(p, "Countdown has already been enabled.");
            }
        }
예제 #8
0
        void HandleStart(Player p, CountdownGame game, string speed, string mode)
        {
            if (!CheckExtraPerm(p, 1))
            {
                return;
            }

            switch (game.Status)
            {
            case CountdownGameStatus.Disabled:
                Player.Message(p, "Countdown is not running."); return;

            case CountdownGameStatus.RoundCountdown:
                Player.Message(p, "A round is already about to begin."); return;

            case CountdownGameStatus.RoundInProgress:
                Player.Message(p, "A round is already in progress."); return;

            case CountdownGameStatus.Enabled:
                if (game.Players.Count < 2)
                {
                    Player.Message(p, "At least two players must join countdown before a round can begin."); return;
                }
                break;
            }

            switch (speed)
            {
            case "slow": game.Interval = 800; break;

            case "normal": game.Interval = 650; break;

            case "fast": game.Interval = 500; break;

            case "extreme": game.Interval = 300; break;

            case "ultimate": game.Interval = 150; break;

            default:
                Player.Message(p, "No speed specified, playing at 'normal' speed.");
                game.Interval = 650; speed = "normal"; break;
            }

            game.FreezeMode = mode == "freeze" || mode == "frozen";
            game.SpeedType  = speed;
            game.BeginRound(p);
        }
예제 #9
0
        void HandleEnd(Player p, CountdownGame game)
        {
            if (!CheckExtraPerm(p, 1))
            {
                return;
            }

            switch (game.Status)
            {
            case CountdownGameStatus.Disabled:
                Player.Message(p, "Countdown is not running."); break;

            case CountdownGameStatus.Enabled:
                Player.Message(p, "No round is currently running."); break;

            default:
                game.EndRound(); break;
            }
        }
예제 #10
0
        void HandlePlayers(Player p, CountdownGame game)
        {
            Player[] players = game.Players.Items;
            switch (game.Status)
            {
            case CountdownGameStatus.Disabled:
                Player.Message(p, "Countdown is not running.");
                break;

            case CountdownGameStatus.RoundInProgress:
                Player.Message(p, "Players in countdown:");
                Player.Message(p, players.Join(pl => FormatPlayer(pl, game)));
                break;

            default:
                Player.Message(p, "Players in countdown: ");
                Player.Message(p, players.Join(pl => pl.ColoredName));
                break;
            }
        }
예제 #11
0
        protected override void HandleStart(Player p, RoundsGame game_, string[] args)
        {
            if (game_.Running)
            {
                p.Message("{0} is already running", game_.GameName); return;
            }

            CountdownGame game  = (CountdownGame)game_;
            string        speed = args.Length > 1 ? args[1] : "";
            string        mode  = args.Length > 2 ? args[2] : "";

            if (!game.SetSpeed(speed))
            {
                p.Message("No speed specified, playing at 'normal' speed.");
                game.SetSpeed("normal");
            }

            game.FreezeMode = mode == "freeze" || mode == "frozen";
            game.Start(p, "countdown", int.MaxValue);
        }
예제 #12
0
        void HandleJoin(Player p, CountdownGame game)
        {
            switch (game.Status)
            {
            case CountdownGameStatus.Disabled:
                Player.Message(p, "Cannot join as countdown is not running.");
                return;

            case CountdownGameStatus.Enabled:
                game.PlayerJoinedGame(p);
                return;

            case CountdownGameStatus.RoundCountdown:
                Player.Message(p, "Cannot join when a round is about to start. Wait until next round.");
                return;

            case CountdownGameStatus.RoundInProgress:
                Player.Message(p, "Cannot join when a round is in progress. Wait until next round.");
                return;
            }
        }
예제 #13
0
        protected override void HandleSet(Player p, RoundsGame game_, string[] args)
        {
            if (args.Length < 4)
            {
                Help(p); return;
            }
            if (game_.Running)
            {
                p.Message("You must stop Countdown before replacing the map."); return;
            }

            ushort x = 0, y = 0, z = 0;

            if (!MapGen.GetDimensions(p, args, 1, ref x, ref y, ref z))
            {
                return;
            }

            CountdownGame game = (CountdownGame)game_;

            game.GenerateMap(p, x, y, z);
        }
예제 #14
0
        void HandleStart(Player p, string par1, string par2)
        {
            if (Server.Countdown.gamestatus != CountdownGameStatus.Enabled)
            {
                Player.SendMessage(p, "Either a game is already in progress or it hasn't been enabled"); return;
            }
            if (Server.Countdown.players.Count < 2)
            {
                Player.SendMessage(p, "Sorry, there aren't enough players to play."); return;
            }

            Server.Countdown.playersleftlist = Server.Countdown.players;
            CountdownGame game = Server.Countdown;

            switch (par1)
            {
            case "slow":
                game.speed = 800; game.speedtype = "slow"; break;

            case "normal":
                game.speed = 650; game.speedtype = "normal"; break;

            case "fast":
                game.speed = 500; game.speedtype = "fast"; break;

            case "extreme":
                game.speed = 300; game.speedtype = "extreme"; break;

            case "ultimate":
                game.speed = 150; game.speedtype = "ultimate"; break;

            default:
                p.SendMessage("You didn't specify a speed, resorting to 'normal'");
                game.speed = 650; game.speedtype = "normal"; break;
            }
            Server.Countdown.freezemode = (par2 == "freeze" || par2 == "frozen");
            Server.Countdown.GameStart(p);
        }
예제 #15
0
        void HandleReset(Player p, CountdownGame game, string type)
        {
            if (!CheckExtraPerm(p, 1))
            {
                return;
            }

            switch (game.Status)
            {
            case CountdownGameStatus.Disabled:
                Player.Message(p, "Countdown is not running."); break;

            case CountdownGameStatus.RoundCountdown:
                Player.Message(p, "Cannot reset map as a round is about to begin."); break;

            case CountdownGameStatus.RoundInProgress:
                Player.Message(p, "Cannot reset map as a round is already in progress."); break;

            default:
                Player.Message(p, "Resetting");
                game.ResetMap(); break;
            }
        }
예제 #16
0
        static string FormatPlayer(Player pl, CountdownGame game)
        {
            string suffix = game.Remaining.Contains(pl) ? " &a[IN]" : " &c[OUT]";

            return(pl.ColoredName + suffix);
        }
예제 #17
0
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                Help(p); return;
            }
            if (p == null)
            {
                Server.s.Log("'null' or console tried to use /countdown. 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 (par0 == "help")
            {
                Command.all.Find("help").Use(p, "countdown");
                return;
            }

            if (par0 == "goto")
            {
                try
                {
                    Command.all.Find("goto").Use(p, "countdown");
                }
                catch
                {
                    Player.SendMessage(p, "Countdown level not loaded");
                    return;
                }
            }

            else if (par0 == "join")
            {
                switch (CountdownGame.gamestatus)
                {
                case CountdownGameStatus.Disabled:
                    Player.SendMessage(p, "Sorry - Countdown isn't enabled yet");
                    return;

                case CountdownGameStatus.Enabled:
                    if (!CountdownGame.players.Contains(p))
                    {
                        CountdownGame.players.Add(p);
                        Player.SendMessage(p, "You've joined the Countdown game!!");
                        Player.GlobalMessage(p.name + " has joined Countdown!!");
                        if (p.level != CountdownGame.mapon)
                        {
                            Player.SendMessage(p, "You can type '/countdown goto' to goto the countdown map!!");
                        }
                        p.playerofcountdown = true;
                    }
                    else
                    {
                        Player.SendMessage(p, "Sorry, you have already joined!!, to leave please type /countdown leave");
                        return;
                    }
                    break;

                case CountdownGameStatus.AboutToStart:
                    Player.SendMessage(p, "Sorry - The game is about to start");
                    return;;

                case CountdownGameStatus.InProgress:
                    Player.SendMessage(p, "Sorry - The game is already in progress.");
                    return;

                case CountdownGameStatus.Finished:
                    Player.SendMessage(p, "Sorry - The game has finished. Get an op to reset it.");
                    return;
                }
            }

            else if (par0 == "leave")
            {
                if (CountdownGame.players.Contains(p))
                {
                    switch (CountdownGame.gamestatus)
                    {
                    case CountdownGameStatus.Disabled:
                        Player.SendMessage(p, "Sorry - Countdown isn't enabled yet");
                        return;

                    case CountdownGameStatus.Enabled:
                        CountdownGame.players.Remove(p);
                        CountdownGame.playersleftlist.Remove(p);
                        Player.SendMessage(p, "You've left the game.");
                        p.playerofcountdown = false;
                        break;

                    case CountdownGameStatus.AboutToStart:
                        Player.SendMessage(p, "Sorry - The game is about to start");
                        return;;

                    case CountdownGameStatus.InProgress:
                        Player.SendMessage(p, "Sorry - you are in a game that is in progress, please wait till its finished or till you've died.");
                        return;

                    case CountdownGameStatus.Finished:
                        CountdownGame.players.Remove(p);
                        if (CountdownGame.playersleftlist.Contains(p))
                        {
                            CountdownGame.playersleftlist.Remove(p);
                        }
                        p.playerofcountdown = false;
                        Player.SendMessage(p, "You've left the game.");
                        break;
                    }
                }
                else if (!(CountdownGame.playersleftlist.Contains(p)) && CountdownGame.players.Contains(p))
                {
                    CountdownGame.players.Remove(p);
                    Player.SendMessage(p, "You've left the game.");
                }
                else
                {
                    Player.SendMessage(p, "You haven't joined the game yet!!");
                    return;
                }
            }

            else if (par0 == "players")
            {
                switch (CountdownGame.gamestatus)
                {
                case CountdownGameStatus.Disabled:
                    Player.SendMessage(p, "The game has not been enabled yet.");
                    return;

                case CountdownGameStatus.Enabled:
                    Player.SendMessage(p, "Players who have joined:");
                    foreach (Player plya in CountdownGame.players)
                    {
                        Player.SendMessage(p, plya.color + plya.name);
                    }
                    break;

                case CountdownGameStatus.AboutToStart:
                    Player.SendMessage(p, "Players who are about to play:");
                    foreach (Player plya in CountdownGame.players)
                    {
                        {
                            Player.SendMessage(p, plya.color + plya.name);
                        }
                    }
                    break;

                case CountdownGameStatus.InProgress:
                    Player.SendMessage(p, "Players left playing:");
                    foreach (Player plya in CountdownGame.players)
                    {
                        {
                            if (CountdownGame.playersleftlist.Contains(plya))
                            {
                                Player.SendMessage(p, plya.color + plya.name + Server.DefaultColor + " who is &aIN");
                            }
                            else
                            {
                                Player.SendMessage(p, plya.color + plya.name + Server.DefaultColor + " who is &cOUT");
                            }
                        }
                    }
                    break;

                case CountdownGameStatus.Finished:
                    Player.SendMessage(p, "Players who were playing:");
                    foreach (Player plya in CountdownGame.players)
                    {
                        Player.SendMessage(p, plya.color + plya.name);
                    }
                    break;
                }
            }

            else if (par0 == "rules")
            {
                if (String.IsNullOrEmpty(par1))
                {
                    Player.SendMessage(p, "The aim of the game is to stay alive the longest.");
                    Player.SendMessage(p, "Don't fall in the lava!!");
                    Player.SendMessage(p, "Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disappering.");
                    Player.SendMessage(p, "The last person alive will win!!");
                }

                else if (par1 == "send")
                {
                    if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 1))
                    {
                        if (par2 == "all")
                        {
                            Player.GlobalMessage("Countdown Rules being sent to everyone by " + p.color + p.name + ":");
                            Player.GlobalMessage("The aim of the game is to stay alive the longest.");
                            Player.GlobalMessage("Don't fall in the lava!!");
                            Player.GlobalMessage("Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disappering.");
                            Player.GlobalMessage("The last person alive will win!!");
                            Player.SendMessage(p, "Countdown rules sent to everyone");
                        }
                        else if (par2 == "map")
                        {
                            Player.GlobalMessageLevel(p.level, "Countdown Rules being sent to " + p.level.name + " by " + p.color + p.name + ":");
                            Player.GlobalMessageLevel(p.level, "The aim of the game is to stay alive the longest.");
                            Player.GlobalMessageLevel(p.level, "Don't fall in the lava!!");
                            Player.GlobalMessageLevel(p.level, "Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disappering.");
                            Player.GlobalMessageLevel(p.level, "The last person alive will win!!");
                            Player.SendMessage(p, "Countdown rules sent to: " + p.level.name);
                        }
                    }
                    else if (!String.IsNullOrEmpty(par2))
                    {
                        Player who = Player.Find(par2);
                        if (who == null)
                        {
                            Player.SendMessage(p, "That wasn't an online player.");
                            return;
                        }
                        else if (who == p)
                        {
                            Player.SendMessage(p, "You can't send rules to yourself, use '/countdown rules' to send it to your self!!");
                            return;
                        }
                        else if (p.group.Permission < who.group.Permission)
                        {
                            Player.SendMessage(p, "You can't send rules to someone of a higher rank than yourself!!");
                            return;
                        }
                        else
                        {
                            Player.SendMessage(who, "Countdown rules sent to you by " + p.color + p.name);
                            Player.SendMessage(who, "The aim of the game is to stay alive the longest.");
                            Player.SendMessage(who, "Don't fall in the lava!!");
                            Player.SendMessage(who, "Blocks on the ground will disapear randomly, first going yellow, then orange, then red and finally disawhowhoering.");
                            Player.SendMessage(who, "The last person alive will win!!");
                            Player.SendMessage(p, "Countdown rules sent to: " + who.color + who.name);
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, par1 + " wasn't a correct parameter.");
                        return;
                    }
                }
            }

            else if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this, 2))
            {
                if (par0 == "download")
                {
                    try
                    {
                        using (WebClient WEB = new WebClient())
                        {
                            WEB.DownloadFile("http://db.tt/R0x1MFS", "levels/countdown.lvl");
                            Player.SendMessage(p, "Downloaded map, now loading map and sending you to it.");
                        }
                    }
                    catch
                    {
                        Player.SendMessage(p, "Sorry, Downloading Failed. PLease try again later");
                        return;
                    }
                    Command.all.Find("load").Use(p, "countdown");
                    Command.all.Find("goto").Use(p, "countdown");
                    Thread.Sleep(1000);
                    // Sleep for a bit while they load
                    while (p.Loading)
                    {
                        Thread.Sleep(250);
                    }
                    p.level.permissionbuild = LevelPermission.Nobody;
                    p.level.motd            = "Welcome to the Countdown map!!!! -hax";
                    ushort x = System.Convert.ToUInt16(8);
                    ushort y = System.Convert.ToUInt16(23);
                    ushort z = System.Convert.ToUInt16(17);
                    x *= 32; x += 16;
                    y *= 32; y += 32;
                    z *= 32; z += 16;
                    unchecked { p.SendPos((byte)-1, x, y, z, p.rot[0], p.rot[1]); }
                }

                else if (par0 == "enable")
                {
                    if (CountdownGame.gamestatus == CountdownGameStatus.Disabled)
                    {
                        try
                        {
                            Command.all.Find("load").Use(null, "countdown");
                            CountdownGame.mapon      = Level.Find("countdown");
                            CountdownGame.gamestatus = CountdownGameStatus.Enabled;
                            Player.GlobalMessage("Countdown has been enabled!!");
                        }
                        catch
                        {
                            Player.SendMessage(p, "Failed, have you downloaded the map yet??");
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "A Game is either already enabled or is already progress");
                        return;
                    }
                }

                else if (par0 == "disable")
                {
                    if (CountdownGame.gamestatus == CountdownGameStatus.AboutToStart || CountdownGame.gamestatus == CountdownGameStatus.InProgress)
                    {
                        Player.SendMessage(p, "Sorry, a game is currently in progress - please wait till its finished or use '/countdown cancel' to cancel the game");
                        return;
                    }
                    else if (CountdownGame.gamestatus == CountdownGameStatus.Disabled)
                    {
                        Player.SendMessage(p, "Already disabled!!");
                        return;
                    }
                    else
                    {
                        foreach (Player pl in CountdownGame.players)
                        {
                            Player.SendMessage(pl, "The countdown game was disabled.");
                        }
                        CountdownGame.gamestatus  = CountdownGameStatus.Disabled;
                        CountdownGame.playersleft = 0;
                        CountdownGame.playersleftlist.Clear();
                        CountdownGame.players.Clear();
                        CountdownGame.squaresleft.Clear();
                        CountdownGame.Reset(p, true);
                        Player.SendMessage(p, "Countdown Disabled");
                        return;
                    }
                }

                else if (par0 == "cancel")
                {
                    if (CountdownGame.gamestatus == CountdownGameStatus.AboutToStart || CountdownGame.gamestatus == CountdownGameStatus.InProgress)
                    {
                        CountdownGame.cancel = true;
                        Thread.Sleep(1500);
                        Player.SendMessage(p, "Countdown has been canceled");
                        CountdownGame.gamestatus = CountdownGameStatus.Enabled;
                        return;
                    }
                    else
                    {
                        if (CountdownGame.gamestatus == CountdownGameStatus.Disabled)
                        {
                            Player.SendMessage(p, "The game is disabled!!");
                            return;
                        }
                        else
                        {
                            foreach (Player pl in CountdownGame.players)
                            {
                                Player.SendMessage(pl, "The countdown game was canceled");
                            }
                            CountdownGame.gamestatus  = CountdownGameStatus.Enabled;
                            CountdownGame.playersleft = 0;
                            CountdownGame.playersleftlist.Clear();
                            CountdownGame.players.Clear();
                            CountdownGame.squaresleft.Clear();
                            CountdownGame.Reset(null, true);
                            return;
                        }
                    }
                }

                else if (par0 == "start" || par0 == "play")
                {
                    if (CountdownGame.gamestatus == CountdownGameStatus.Enabled)
                    {
                        if (CountdownGame.players.Count >= 2)
                        {
                            CountdownGame.playersleftlist = CountdownGame.players;
                            CountdownGame.playersleft     = CountdownGame.players.Count;
                            switch (par1)
                            {
                            case "slow":
                                CountdownGame.speed     = 800;
                                CountdownGame.speedtype = "slow";
                                break;

                            case "normal":
                                CountdownGame.speed     = 650;
                                CountdownGame.speedtype = "normal";
                                break;

                            case "fast":
                                CountdownGame.speed     = 500;
                                CountdownGame.speedtype = "fast";
                                break;

                            case "extreme":
                                CountdownGame.speed     = 300;
                                CountdownGame.speedtype = "extreme";
                                break;

                            case "ultimate":
                                CountdownGame.speed     = 150;
                                CountdownGame.speedtype = "ultimate";
                                break;

                            default:
                                p.SendMessage("You didn't specify a speed, resorting to 'normal'");
                                goto case "normal";     //More efficient
                            }
                            if (par2 == null || par2.Trim() == "")
                            {
                                CountdownGame.freezemode = false;
                            }
                            else
                            {
                                if (par2 == "freeze" || par2 == "frozen")
                                {
                                    CountdownGame.freezemode = true;
                                }
                                else
                                {
                                    CountdownGame.freezemode = false;
                                }
                            }
                            CountdownGame.GameStart(p);
                        }
                        else
                        {
                            Player.SendMessage(p, "Sorry, there aren't enough players to play.");
                            return;
                        }
                    }
                    else
                    {
                        Player.SendMessage(p, "Either a game is already in progress or it hasn't been enabled");
                        return;
                    }
                }

                else if (par0 == "reset")
                {
                    switch (CountdownGame.gamestatus)
                    {
                    case CountdownGameStatus.Disabled:
                        Player.SendMessage(p, "Please enable countdown first.");
                        return;

                    case CountdownGameStatus.AboutToStart:
                        Player.SendMessage(p, "Sorry - The game is about to start");
                        return;

                    case CountdownGameStatus.InProgress:
                        Player.SendMessage(p, "Sorry - The game is already in progress.");
                        return;

                    default:
                        Player.SendMessage(p, "Reseting");
                        if (par1 == "map")
                        {
                            CountdownGame.Reset(p, false);
                        }
                        else if (par1 == "all")
                        {
                            CountdownGame.Reset(p, true);
                        }
                        else
                        {
                            Player.SendMessage(p, "Please specify whether it is 'map' or 'all'");
                            return;
                        }
                        break;
                    }
                }

                else if (par0 == "tutorial")
                {
                    p.SendMessage("First, download the map using /countdown download");
                    p.SendMessage("Next, type /countdown enable to enable the game mode");
                    p.SendMessage("Next, type /countdown join to join the game and tell other players to join aswell");
                    p.SendMessage("When some people have joined, type /countdown start [speed] to start it");
                    p.SendMessage("[speed] can be 'ultimate', 'extreme', 'fast', 'normal' or 'slow'");
                    p.SendMessage("When you are done, type /countdown reset [map/all]");
                    p.SendMessage("use map to reset only the map and all to reset everything.");
                    return;
                }
            }
            else
            {
                p.SendMessage("Sorry, you aren't a high enough rank or that wasn't a correct command addition.");
                return;
            }
        }
예제 #18
0
        public void Start()
        {
            serverConfig = ConfigElement.GetAll(typeof(Server), typeof(ZombieGameProps));
            levelConfig  = ConfigElement.GetAll(typeof(Level));

            #pragma warning disable 0618
            Player.players       = PlayerInfo.Online.list;
            PlayerInfo.players   = PlayerInfo.Online.list;
            Server.levels        = LevelInfo.Loaded.list;
            PlayerBot.playerbots = PlayerBot.Bots.list;
            #pragma warning restore 0618

            StartTime      = DateTime.UtcNow;
            StartTimeLocal = StartTime.ToLocalTime();
            shuttingDown   = false;
            Log("Starting Server");
            try {
                if (File.Exists("Restarter.exe"))
                {
                    File.Delete("Restarter.exe");
                }
            } catch { }
            try {
                if (File.Exists("Restarter.pdb"))
                {
                    File.Delete("Restarter.pdb");
                }
            } catch { }

            CheckFile("MySql.Data.dll");
            CheckFile("System.Data.SQLite.dll");
            CheckFile("sqlite3.dll");
            CheckFile("Newtonsoft.Json.dll");
            CheckFile("LibNoise.dll");

            EnsureFilesExist();
            MoveOutdatedFiles();

            lava      = new LavaSurvival();
            zombie    = new ZombieGame();
            Countdown = new CountdownGame();
            LoadAllSettings();

            InitDatabase();
            Economy.LoadDatabase();
            Server.zombie.CheckTableExists();

            Level[] loaded = LevelInfo.Loaded.Items;
            foreach (Level l in loaded)
            {
                l.Unload();
            }

            Background.QueueOnce(UpgradeTasks.CombineEnvFiles);
            Background.QueueOnce(LoadMainLevel);
            Plugin.Load();
            Background.QueueOnce(UpgradeTasks.UpgradeOldBlacklist);
            Background.QueueOnce(LoadPlayerLists);
            Background.QueueOnce(LoadAutoloadCommands);
            Background.QueueOnce(UpgradeTasks.MovePreviousLevelFiles);
            Background.QueueOnce(UpgradeTasks.UpgradeOldLockdown);

            Background.QueueOnce(SetupSocket);
            Background.QueueOnce(InitTimers);
            Background.QueueOnce(InitRest);
            Background.QueueOnce(InitHeartbeat);

            Devs.Clear();
            Mods.Clear();
            Background.QueueOnce(InitTasks.UpdateStaffList);

            MainScheduler.QueueRepeat(ServerTasks.TemprankExpiry,
                                      null, TimeSpan.FromMinutes(1));
            Background.QueueRepeat(ServerTasks.AutoSave,
                                   1, TimeSpan.FromSeconds(Server.backupInterval));
            Background.QueueRepeat(ServerTasks.BlockUpdates,
                                   null, TimeSpan.FromSeconds(Server.blockInterval));
            Background.QueueRepeat(ThreadSafeCache.DBCache.CleanupTask,
                                   null, TimeSpan.FromMinutes(5));
        }
예제 #19
0
        public void Start()
        {
            serverConfig = ConfigElement.GetAll(typeof(Server), typeof(ZombieGame));

            PlayerInfo.players   = PlayerInfo.Online.list;
            Player.players       = PlayerInfo.Online.list;
            Server.levels        = LevelInfo.Loaded.list;
            PlayerBot.playerbots = PlayerBot.Bots.list;
            StartTime            = DateTime.UtcNow;
            StartTimeLocal       = StartTime.ToLocalTime();
            shuttingDown         = false;
            Log("Starting Server");
            try {
                if (File.Exists("Restarter.exe"))
                {
                    File.Delete("Restarter.exe");
                }
            } catch { }
            try {
                if (File.Exists("Restarter.pdb"))
                {
                    File.Delete("Restarter.pdb");
                }
            } catch { }

            CheckFile("MySql.Data.dll");
            CheckFile("System.Data.SQLite.dll");
            CheckFile("sqlite3.dll");
            CheckFile("Newtonsoft.Json.dll");
            CheckFile("LibNoise.dll");

            EnsureFilesExist();
            MoveOutdatedFiles();
            Chat.LoadCustomTokens();

            if (File.Exists("text/emotelist.txt"))
            {
                foreach (string s in File.ReadAllLines("text/emotelist.txt"))
                {
                    Player.emoteList.Add(s);
                }
            }
            else
            {
                File.Create("text/emotelist.txt").Dispose();
            }

            lava      = new LavaSurvival();
            zombie    = new ZombieGame();
            Countdown = new CountdownGame();
            LoadAllSettings();

            InitDatabase();
            Economy.LoadDatabase();
            Server.zombie.CheckTableExists();

            Level[] loaded = LevelInfo.Loaded.Items;
            foreach (Level l in loaded)
            {
                l.Unload();
            }
            ml.Queue(LoadMainLevel);
            Plugin.Load();
            ml.Queue(LoadPlayerLists);
            ml.Queue(LoadAutoloadCommands);
            ml.Queue(LoadGCAccepted);

            ml.Queue(InitTimers);
            ml.Queue(InitRest);
            ml.Queue(InitHeartbeat);
            UpdateStaffList();
        }
예제 #20
0
        public static void Start()
        {
            serverConfig = ConfigElement.GetAll(typeof(ServerConfig));
            zombieConfig = ConfigElement.GetAll(typeof(ZSConfig));
            levelConfig  = ConfigElement.GetAll(typeof(LevelConfig));
            zoneConfig   = ConfigElement.GetAll(typeof(ZoneConfig));

            #pragma warning disable 0618
            Player.players = PlayerInfo.Online.list;
            Server.levels  = LevelInfo.Loaded.list;
            #pragma warning restore 0618

            StartTime    = DateTime.UtcNow;
            shuttingDown = false;
            Logger.Log(LogType.SystemActivity, "Starting Server");
            ServicePointManager.Expect100Continue = false;

            CheckFile("MySql.Data.dll");
            CheckFile("System.Data.SQLite.dll");
            CheckFile("sqlite3_x32.dll");
            CheckFile("sqlite3_x64.dll");
            CheckFile("Newtonsoft.Json.dll");
            CheckFile("LibNoise.dll");

            EnsureFilesExist();
            MoveSqliteDll();
            MoveOutdatedFiles();

            lava      = new LavaSurvival();
            zombie    = new ZSGame();
            Countdown = new CountdownGame();
            LoadAllSettings();
            SrvProperties.GenerateSalt();

            InitDatabase();
            Economy.LoadDatabase();
            Server.zombie.CheckTableExists();

            Background.QueueOnce(UpgradeTasks.CombineEnvFiles);
            Background.QueueOnce(LoadMainLevel);
            Plugin.Load();
            Background.QueueOnce(UpgradeTasks.UpgradeOldBlacklist);
            Background.QueueOnce(LoadAutoloadMaps);
            Background.QueueOnce(UpgradeTasks.MovePreviousLevelFiles);
            Background.QueueOnce(UpgradeTasks.UpgradeOldTempranks);
            Background.QueueOnce(UpgradeTasks.UpgradeDBTimeSpent);
            Background.QueueOnce(LoadPlayerLists);
            Background.QueueOnce(UpgradeTasks.UpgradeOldLockdown);
            Background.QueueOnce(UpgradeTasks.UpgradeBots);

            Background.QueueOnce(SetupSocket);
            Background.QueueOnce(InitTimers);
            Background.QueueOnce(InitRest);
            Background.QueueOnce(InitHeartbeat);

            Devs.Clear();
            Mods.Clear();
            Background.QueueOnce(InitTasks.UpdateStaffList);

            ServerTasks.QueueTasks();
            Background.QueueRepeat(ThreadSafeCache.DBCache.CleanupTask,
                                   null, TimeSpan.FromMinutes(5));
        }
예제 #21
0
        public override void Use(Player p, string message)
        {
            if (message.Length == 0)
            {
                Help(p); return;
            }

            string[] args = message.ToLower().SplitSpaces();
            string   cmd = args[0], arg1 = "", arg2 = "", arg3 = "";

            if (args.Length > 1)
            {
                arg1 = args[1];
            }
            if (args.Length > 2)
            {
                arg2 = args[2];
            }
            if (args.Length > 3)
            {
                arg3 = args[3];
            }
            CountdownGame game = Server.Countdown;

            switch (cmd)
            {
            case "join":
                HandleJoin(p, game); return;

            case "leave":
                HandleLeave(p, game); return;

            case "players":
                HandlePlayers(p, game); return;

            case "rules":
                HandleRules(p, arg1); return;

            case "download":
            case "generate":
                HandleGenerate(p, game, arg1, arg2, arg3); return;

            case "enable":
                HandleEnable(p, game); return;

            case "disable":
            case "cancel":
                HandleDisable(p, game); return;

            case "start":
            case "play":
                HandleStart(p, game, arg1, arg2); return;

            case "end":
                HandleEnd(p, game); return;

            case "reset":
                HandleReset(p, game, arg1); return;

            default:
                Help(p); break;
            }
        }