Пример #1
0
 private void EditTntWarsGameBT_Click(object sender, EventArgs e)
 {
     try {
         string slctd = TntWarsGamesList.Items[TntWarsGamesList.SelectedIndex].ToString();
         if (slctd.StartsWith("-->"))
         {
             LoadTNTWarsTab(sender, e);
             return;
         }
         string[] split = slctd.Split(new string[] { " - " }, StringSplitOptions.None);
         TntWarsGame.GuiLoaded = TntWarsGame.Find(LevelInfo.Find(split[0]));
         LoadTNTWarsTab(sender, e);
     }
     catch { }
 }
Пример #2
0
        internal static void CheckGamesJoin(Player p, Level oldLvl)
        {
            Server.lava.PlayerJoinedLevel(p, p.level, oldLvl);
            Server.zombie.PlayerJoinedLevel(p, p.level, oldLvl);

            if (p.inTNTwarsMap)
            {
                p.canBuild = true;
            }
            TntWarsGame game = TntWarsGame.Find(p.level);

            if (game == null)
            {
                return;
            }

            if (game.GameStatus != TntWarsGame.TntWarsGameStatus.Finished &&
                game.GameStatus != TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
            {
                p.canBuild = false;
                Player.SendMessage(p, "TNT Wars: Disabled your building because you are in a TNT Wars map!");
            }
            p.inTNTwarsMap = true;
        }
Пример #3
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 == "")
            {
                Help(p); return;
            }

            try
            {
                Level foundLevel = Level.Find(message);
                if (foundLevel != null)
                {
                    Level startLevel = p.level;

                    GC.Collect();

                    if (p.level == foundLevel)
                    {
                        Player.SendMessage(p, "You are already in \"" + foundLevel.name + "\"."); return;
                    }
                    if (!p.ignorePermission)
                    {
                        if (p.group.Permission < foundLevel.permissionvisit)
                        {
                            Player.SendMessage(p, "You're not allowed to go to " + foundLevel.name + "."); return;
                        }
                    }
                    if (!p.ignorePermission)
                    {
                        if (p.group.Permission > foundLevel.pervisitmax)
                        {
                            if (!p.group.CanExecute(Command.all.Find("pervisitmax")))
                            {
                                Player.SendMessage(p, "Your rank must be " + foundLevel.pervisitmax + " or lower to go there!"); return;
                            }
                        }
                    }
                    {
                        if (!File.Exists("text/lockdown/map/" + message + ""))
                        {
                            p.Loading = true;
                            foreach (Player pl in Player.players)
                            {
                                if (p.level == pl.level && p != pl)
                                {
                                    p.SendDie(pl.id);
                                }
                            }
                            foreach (PlayerBot b in PlayerBot.playerbots)
                            {
                                if (p.level == b.level)
                                {
                                    p.SendDie(b.id);
                                }
                            }

                            Player.GlobalDie(p, true);
                            p.level = foundLevel; p.SendUserMOTD(); p.SendMap();

                            GC.Collect();

                            ushort x = (ushort)((0.5 + foundLevel.spawnx) * 32);
                            ushort y = (ushort)((1 + foundLevel.spawny) * 32);
                            ushort z = (ushort)((0.5 + foundLevel.spawnz) * 32);

                            if (Server.pctf.CTFStatus() != 0 && message == Server.pctf.currentLevelName)
                            {
                                unchecked { Server.pctf.sendToTeamSpawn(p); }
                            }
                            else
                            {
                                Server.pctf.PlayerDC(p);
                                if (!p.hidden)
                                {
                                    Player.GlobalSpawn(p, x, y, z, foundLevel.rotx, foundLevel.roty, true, "");
                                }
                                else
                                {
                                    unchecked { p.SendPos((byte)-1, x, y, z, foundLevel.rotx, foundLevel.roty); }
                                }
                            }

                            //if (!p.hidden) Player.GlobalSpawn(p, x, y, z, foundLevel.rotx, foundLevel.roty, true, "");
                            //else unchecked { p.SendPos((byte)-1, x, y, z, foundLevel.rotx, foundLevel.roty); }

                            foreach (Player pl in Player.players)
                            {
                                if (pl.level == p.level && p != pl && !pl.hidden)
                                {
                                    p.SendSpawn(pl.id, pl.color + pl.name, pl.pos[0], pl.pos[1], pl.pos[2], pl.rot[0], pl.rot[1]);
                                }
                            }

                            foreach (PlayerBot b in PlayerBot.playerbots)
                            {
                                if (b.level == p.level)
                                {
                                    p.SendSpawn(b.id, b.color + b.name, b.pos[0], b.pos[1], b.pos[2], b.rot[0], b.rot[1]);
                                }
                            }

                            if (!p.hidden)
                            {
                                Player.GlobalChat(p, p.color + "*" + p.name + Server.DefaultColor + " went to &b" + foundLevel.name, false);
                            }


                            p.Loading = false;

                            bool skipUnload = false;
                            if (startLevel.unload && !startLevel.name.Contains("&cMuseum "))
                            {
                                foreach (Player pl in Player.players)
                                {
                                    if (pl.level == startLevel)
                                    {
                                        skipUnload = true; break;
                                    }
                                }
                                if (!skipUnload && Server.AutoLoad)
                                {
                                    startLevel.Unload(true);
                                }
                            }

                            if (Server.lava.active && !Server.lava.sendingPlayers && Server.lava.map == foundLevel)
                            {
                                if (Server.lava.roundActive)
                                {
                                    Server.lava.AnnounceRoundInfo(p);
                                    Server.lava.AnnounceTimeLeft(!Server.lava.flooded, true, p);
                                }
                                else
                                {
                                    Player.SendMessage(p, "Vote for the next map!");
                                    Player.SendMessage(p, "Choices: " + Server.lava.VoteString);
                                }
                            }

                            if (Server.zombie.GameInProgess())
                            {
                                if (p.level.name == Server.zombie.currentLevelName)
                                {
                                    Server.zombie.InfectedPlayerLogin(p);
                                }
                            }

                            if (p.level.name != Server.zombie.currentLevelName)
                            {
                                if (ZombieGame.alive.Contains(p))
                                {
                                    ZombieGame.alive.Remove(p);
                                }
                                if (ZombieGame.infectd.Contains(p))
                                {
                                    ZombieGame.infectd.Remove(p);
                                }
                            }
                            if (p.inTNTwarsMap)
                            {
                                p.canBuild = true;
                            }
                            if (TntWarsGame.Find(p.level) != null)
                            {
                                if (TntWarsGame.Find(p.level).GameStatus != TntWarsGame.TntWarsGameStatus.Finished && TntWarsGame.Find(p.level).GameStatus != TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                                {
                                    p.canBuild = false;
                                    Player.SendMessage(p, "TNT Wars: Disabled your building because you are in a TNT Wars map!");
                                }

                                p.inTNTwarsMap = true;
                            }
                        }
                        else
                        {
                            Player.SendMessage(p, "The level " + message + " is locked.");
                        }
                    }
                }
                else if (Server.AutoLoad)
                {
                    if (!File.Exists("levels/" + message + ".mcf"))
                    {
                        Player.SendMessage(p, "Level \"" + message + "\" doesn't exist!");
                    }
                    else if (Level.Find(message) != null || Level.CheckLoadOnGoto(message))
                    {
                        Command.all.Find("load").Use(p, message);
                        foundLevel = Level.Find(message);
                        if (foundLevel != null)
                        {
                            Use(p, message);
                        }
                    }
                    else
                    if (!Server.CTFOnlyServer)
                    {
                        Player.SendMessage(p, "Level \"" + message + "\" cannot be loaded using /goto!");
                    }
                }
                else
                {
                    Player.SendMessage(p, "There is no level \"" + message + "\" loaded.");
                }

                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            catch (Exception e) { Server.ErrorLog(e); }
        }
Пример #4
0
        public void LoadTNTWarsTab(object sender, EventArgs e)
        {
            if (TntWarsGame.GuiLoaded == null)
            {
                //Clear all
                //Top
                SlctdTntWrsLvl.Text    = "";
                SlctdTntWrdStatus.Text = "";
                SlctdTntWrsPlyrs.Text  = "";
                //Difficulty
                TntWrsDiffCombo.Text     = "";
                TntWrsDiffCombo.Enabled  = false;
                TntWrsDiffSlctBt.Enabled = false;
                //scores
                TntWrsScrLmtUpDwn.Value        = 150;
                TntWrsScrLmtUpDwn.Enabled      = false;
                TntWrsScrPrKlUpDwn.Value       = 10;
                TntWrsScrPrKlUpDwn.Enabled     = false;
                TntWrsAsstChck.Checked         = true;
                TntWrsAsstChck.Enabled         = false;
                TntWrsAstsScrUpDwn.Value       = 5;
                TntWrsAstsScrUpDwn.Enabled     = false;
                TntWrsMltiKlChck.Checked       = true;
                TntWrsMltiKlChck.Enabled       = false;
                TntWrsMltiKlScPrUpDown.Value   = 5;
                TntWrsMltiKlScPrUpDown.Enabled = false;
                //Grace period
                TntWrsGracePrdChck.Checked  = true;
                TntWrsGracePrdChck.Enabled  = false;
                TntWrsGraceTimeChck.Value   = 30;
                TntWrsGraceTimeChck.Enabled = false;
                //Teams
                TntWrsTmsChck.Checked        = true;
                TntWrsTmsChck.Enabled        = false;
                TntWrsBlnceTeamsChck.Checked = true;
                TntWrsBlnceTeamsChck.Enabled = false;
                TntWrsTKchck.Checked         = false;
                TntWrsTKchck.Enabled         = false;
                //Status
                TntWrsStrtGame.Enabled = false;
                TntWrsEndGame.Enabled  = false;
                TntWrsRstGame.Enabled  = false;
                TntWrsDltGame.Enabled  = false;
                //Other
                TntWrsStreaksChck.Checked = true;
                TntWrsStreaksChck.Enabled = false;
                //New game
                if (TntWrsMpsList.SelectedIndex < 0)
                {
                    TntWrsCrtNwTntWrsBt.Enabled = false;
                }
                //Load lists
                TntWrsMpsList.Items.Clear();
                TntWarsGamesList.Items.Clear();
                TntWrsDiffCombo.Items.Clear();
                foreach (Level lvl in Server.levels)
                {
                    if (TntWarsGame.Find(lvl) == null)
                    {
                        TntWrsMpsList.Items.Add(lvl.name);
                    }
                    else
                    {
                        TntWarsGame T   = TntWarsGame.Find(lvl);
                        string      msg = lvl.name + " - ";
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.FFA)
                        {
                            msg += "FFA";
                        }
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.TDM)
                        {
                            msg += "TDM";
                        }
                        msg += " - ";
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Easy)
                        {
                            msg += "(Easy)";
                        }
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Normal)
                        {
                            msg += "(Normal)";
                        }
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Hard)
                        {
                            msg += "(Hard)";
                        }
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Extreme)
                        {
                            msg += "(Extreme)";
                        }
                        msg += " - ";
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                        {
                            msg += "(Waiting For Players)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.AboutToStart)
                        {
                            msg += "(Starting)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.GracePeriod)
                        {
                            msg += "(Started)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.InProgress)
                        {
                            msg += "(In Progress)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.Finished)
                        {
                            msg += "(Finished)";
                        }
                        TntWarsGamesList.Items.Add(msg);
                    }
                }
                TntWrsDiffCombo.Items.Add("Easy");
                TntWrsDiffCombo.Items.Add("Normal");
                TntWrsDiffCombo.Items.Add("Hard");
                TntWrsDiffCombo.Items.Add("Extreme");
            }
            else
            {
                //Load settings
                //Top
                SlctdTntWrsLvl.Text = TntWarsGame.GuiLoaded.lvl.name;
                if (TntWarsGame.GuiLoaded.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                {
                    SlctdTntWrdStatus.Text = "Waiting For Players";
                }
                if (TntWarsGame.GuiLoaded.GameStatus == TntWarsGame.TntWarsGameStatus.AboutToStart)
                {
                    SlctdTntWrdStatus.Text = "Starting";
                }
                if (TntWarsGame.GuiLoaded.GameStatus == TntWarsGame.TntWarsGameStatus.GracePeriod)
                {
                    SlctdTntWrdStatus.Text = "Started";
                }
                if (TntWarsGame.GuiLoaded.GameStatus == TntWarsGame.TntWarsGameStatus.InProgress)
                {
                    SlctdTntWrdStatus.Text = "In Progress";
                }
                if (TntWarsGame.GuiLoaded.GameStatus == TntWarsGame.TntWarsGameStatus.Finished)
                {
                    SlctdTntWrdStatus.Text = "Finished";
                }
                SlctdTntWrsPlyrs.Text = TntWarsGame.GuiLoaded.PlayingPlayers().ToString(CultureInfo.InvariantCulture);
                //Difficulty
                if (TntWarsGame.GuiLoaded.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                {
                    TntWrsDiffCombo.Enabled  = true;
                    TntWrsDiffSlctBt.Enabled = true;
                }
                else
                {
                    TntWrsDiffCombo.Enabled  = false;
                    TntWrsDiffSlctBt.Enabled = false;
                }
                TntWrsDiffCombo.SelectedIndex = TntWrsDiffCombo.FindString(TntWarsGame.GuiLoaded.GameDifficulty.ToString());
                //scores
                TntWrsScrLmtUpDwn.Value    = TntWarsGame.GuiLoaded.ScoreLimit;
                TntWrsScrLmtUpDwn.Enabled  = true;
                TntWrsScrPrKlUpDwn.Value   = TntWarsGame.GuiLoaded.ScorePerKill;
                TntWrsScrPrKlUpDwn.Enabled = true;
                if (TntWarsGame.GuiLoaded.ScorePerAssist == 0)
                {
                    TntWrsAsstChck.Checked     = false;
                    TntWrsAsstChck.Enabled     = true;
                    TntWrsAstsScrUpDwn.Enabled = false;
                }
                else
                {
                    TntWrsAstsScrUpDwn.Value   = TntWarsGame.GuiLoaded.ScorePerAssist;
                    TntWrsAstsScrUpDwn.Enabled = true;
                    TntWrsAsstChck.Checked     = true;
                    TntWrsAsstChck.Enabled     = true;
                }
                if (TntWarsGame.GuiLoaded.MultiKillBonus == 0)
                {
                    TntWrsMltiKlChck.Checked       = false;
                    TntWrsMltiKlChck.Enabled       = true;
                    TntWrsMltiKlScPrUpDown.Enabled = false;
                }
                else
                {
                    TntWrsMltiKlScPrUpDown.Value   = TntWarsGame.GuiLoaded.MultiKillBonus;
                    TntWrsMltiKlScPrUpDown.Enabled = true;
                    TntWrsMltiKlChck.Checked       = true;
                    TntWrsMltiKlChck.Enabled       = true;
                }
                //Grace period
                TntWrsGracePrdChck.Checked  = TntWarsGame.GuiLoaded.GracePeriod;
                TntWrsGracePrdChck.Enabled  = true;
                TntWrsGraceTimeChck.Value   = TntWarsGame.GuiLoaded.GracePeriodSecs;
                TntWrsGraceTimeChck.Enabled = TntWarsGame.GuiLoaded.GracePeriod;
                //Teams
                TntWrsTmsChck.Checked        = TntWarsGame.GuiLoaded.GameMode == TntWarsGame.TntWarsGameMode.TDM;
                TntWrsTmsChck.Enabled        = true;
                TntWrsBlnceTeamsChck.Checked = TntWarsGame.GuiLoaded.BalanceTeams;
                TntWrsBlnceTeamsChck.Enabled = true;
                TntWrsTKchck.Checked         = TntWarsGame.GuiLoaded.TeamKills;
                TntWrsTKchck.Enabled         = true;
                //Status
                switch (TntWarsGame.GuiLoaded.GameStatus)
                {
                case TntWarsGame.TntWarsGameStatus.WaitingForPlayers:
                    if (TntWarsGame.GuiLoaded.CheckAllSetUp(null, false, false))
                    {
                        TntWrsStrtGame.Enabled = true;
                    }
                    TntWrsEndGame.Enabled = false;
                    TntWrsRstGame.Enabled = false;
                    TntWrsDltGame.Enabled = true;
                    break;

                case TntWarsGame.TntWarsGameStatus.AboutToStart:
                case TntWarsGame.TntWarsGameStatus.GracePeriod:
                case TntWarsGame.TntWarsGameStatus.InProgress:
                    TntWrsStrtGame.Enabled = false;
                    TntWrsEndGame.Enabled  = true;
                    TntWrsRstGame.Enabled  = false;
                    TntWrsDltGame.Enabled  = false;
                    break;

                case TntWarsGame.TntWarsGameStatus.Finished:
                    TntWrsStrtGame.Enabled = false;
                    TntWrsEndGame.Enabled  = false;
                    TntWrsRstGame.Enabled  = true;
                    TntWrsDltGame.Enabled  = true;
                    break;
                }
                //Other
                TntWrsStreaksChck.Checked = TntWarsGame.GuiLoaded.Streaks;
                TntWrsStreaksChck.Enabled = true;
                //New game
                if (TntWrsMpsList.SelectedIndex < 0)
                {
                    TntWrsCrtNwTntWrsBt.Enabled = false;
                }
                //Load lists
                TntWrsMpsList.Items.Clear();
                TntWarsGamesList.Items.Clear();
                TntWrsDiffCombo.Items.Clear();
                foreach (Level lvl in Server.levels)
                {
                    if (TntWarsGame.Find(lvl) == null)
                    {
                        TntWrsMpsList.Items.Add(lvl.name);
                    }
                    else
                    {
                        TntWarsGame T   = TntWarsGame.Find(lvl);
                        string      msg = "";
                        if (T == TntWarsGame.GuiLoaded)
                        {
                            msg += "-->  ";
                        }
                        msg += lvl.name + " - ";
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.FFA)
                        {
                            msg += "FFA";
                        }
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.TDM)
                        {
                            msg += "TDM";
                        }
                        msg += " - ";
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Easy)
                        {
                            msg += "(Easy)";
                        }
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Normal)
                        {
                            msg += "(Normal)";
                        }
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Hard)
                        {
                            msg += "(Hard)";
                        }
                        if (T.GameDifficulty == TntWarsGame.TntWarsDifficulty.Extreme)
                        {
                            msg += "(Extreme)";
                        }
                        msg += " - ";
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                        {
                            msg += "(Waiting For Players)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.AboutToStart)
                        {
                            msg += "(Starting)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.GracePeriod)
                        {
                            msg += "(Started)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.InProgress)
                        {
                            msg += "(In Progress)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.Finished)
                        {
                            msg += "(Finished)";
                        }
                        TntWarsGamesList.Items.Add(msg);
                    }
                }
                TntWrsDiffCombo.Items.Add("Easy");
                TntWrsDiffCombo.Items.Add("Normal");
                TntWrsDiffCombo.Items.Add("Hard");
                TntWrsDiffCombo.Items.Add("Extreme");

                //Disable things because game is in progress
                if (!TntWarsEditable(sender, e))
                {
                    //Difficulty
                    TntWrsDiffCombo.Enabled  = false;
                    TntWrsDiffSlctBt.Enabled = false;
                    //scores
                    TntWrsScrLmtUpDwn.Enabled      = false;
                    TntWrsScrPrKlUpDwn.Enabled     = false;
                    TntWrsAsstChck.Enabled         = false;
                    TntWrsAstsScrUpDwn.Enabled     = false;
                    TntWrsMltiKlChck.Enabled       = false;
                    TntWrsMltiKlScPrUpDown.Enabled = false;
                    //Grace period
                    TntWrsGracePrdChck.Enabled  = false;
                    TntWrsGraceTimeChck.Enabled = false;
                    //Teams
                    TntWrsTmsChck.Enabled        = false;
                    TntWrsBlnceTeamsChck.Enabled = false;
                    TntWrsTKchck.Enabled         = false;
                    //Other
                    TntWrsStreaksChck.Enabled = false;
                }
            }
        }
Пример #5
0
        public bool Unload(bool silent = false, bool save = true)
        {
            if (Server.mainLevel == this || IsMuseum)
            {
                return(false);
            }
            if (Server.lava.active && Server.lava.map == this)
            {
                return(false);
            }
            OnLevelUnloadEvent.Call(this);
            if (cancelunload)
            {
                Logger.Log(LogType.SystemActivity, "Unload canceled by Plugin! (Map: {0})", name);
                cancelunload = false; return(false);
            }
            MovePlayersToMain();

            if (save && Changed && ShouldSaveChanges())
            {
                Save(false, true);
            }
            if (save && ShouldSaveChanges())
            {
                SaveBlockDBChanges();
            }

            if (TntWarsGame.Find(this) != null)
            {
                foreach (TntWarsGame.player pl in TntWarsGame.Find(this).Players)
                {
                    pl.p.CurrentTntGameNumber = -1;
                    Player.Message(pl.p, "TNT Wars: The TNT Wars game you are currently playing has been deleted!");
                    pl.p.PlayingTntWars = false;
                    pl.p.canBuild       = true;
                    TntWarsGame.SetTitlesAndColor(pl, true);
                }
                Logger.Log(LogType.GameActivity, "TNT Wars: Game deleted on " + name);
                TntWarsGame.GameList.Remove(TntWarsGame.Find(this));
            }
            MovePlayersToMain();
            LevelInfo.Loaded.Remove(this);

            try {
                if (!unloadedBots)
                {
                    unloadedBots = true;
                    BotsFile.Save(this);
                    PlayerBot.RemoveLoadedBots(this, false);
                }

                physThread.Abort();
                physThread.Join();
            } catch {
            } finally {
                Dispose();
                Server.DoGC();

                if (!silent)
                {
                    Chat.MessageOps(ColoredName + " %Swas unloaded.");
                }
                Logger.Log(LogType.SystemActivity, name + " was unloaded.");
            }
            return(true);
        }
Пример #6
0
        public bool Unload(bool silent = false, bool save = true)
        {
            if (Server.mainLevel == this || IsMuseum)
            {
                return(false);
            }
            if (Server.lava.active && Server.lava.map == this)
            {
                return(false);
            }
            if (LevelUnload != null)
            {
                LevelUnload(this);
            }
            OnLevelUnloadEvent.Call(this);
            if (cancelunload)
            {
                Server.s.Log("Unload canceled by Plugin! (Map: " + name + ")");
                cancelunload = false;
                return(false);
            }
            MovePlayersToMain();

            if (changed && ShouldSaveChanges())
            {
                Save(false, true);
                saveChanges();
            }
            if (TntWarsGame.Find(this) != null)
            {
                foreach (TntWarsGame.player pl in TntWarsGame.Find(this).Players)
                {
                    pl.p.CurrentTntGameNumber = -1;
                    Player.SendMessage(pl.p, "TNT Wars: The TNT Wars game you are currently playing has been deleted!");
                    pl.p.PlayingTntWars = false;
                    pl.p.canBuild       = true;
                    TntWarsGame.SetTitlesAndColor(pl, true);
                }
                Server.s.Log("TNT Wars: Game deleted on " + name);
                TntWarsGame.GameList.Remove(TntWarsGame.Find(this));
            }
            MovePlayersToMain();
            LevelInfo.Loaded.Remove(this);

            try
            {
                PlayerBot.RemoveAllFromLevel(this);
                //physChecker.Stop();
                //physChecker.Dispose();
                physThread.Abort();
                physThread.Join();
            }
            catch
            {
            }

            finally
            {
                Dispose();
                GC.Collect();
                GC.WaitForPendingFinalizers();

                if (!silent)
                {
                    Chat.GlobalMessageOps("&3" + name + Server.DefaultColor + " was unloaded.");
                }
                Server.s.Log(string.Format("{0} was unloaded.", name));
            }
            return(true);
        }
Пример #7
0
        public void LoadTNTWarsTab(object sender, EventArgs e)
        {
            if (tw_selected == null)
            {
                //Clear all
                //Top
                SlctdTntWrsLvl.Text = "";
                tw_txtStatus.Text   = "";
                tw_txtPlayers.Text  = "";
                //Difficulty
                TntWrsDiffCombo.Text     = "";
                TntWrsDiffCombo.Enabled  = false;
                TntWrsDiffSlctBt.Enabled = false;
                //scores
                tw_numScoreLimit.Value     = 150;
                tw_numScoreLimit.Enabled   = false;
                tw_numScorePerKill.Value   = 10;
                tw_numScorePerKill.Enabled = false;
                tw_cbScoreAssists.Checked  = true;
                tw_cbScoreAssists.Enabled  = false;
                tw_numScoreAssists.Value   = 5;
                tw_numScoreAssists.Enabled = false;
                tw_cbMultiKills.Checked    = true;
                tw_cbMultiKills.Enabled    = false;
                tw_numMultiKills.Value     = 5;
                tw_numMultiKills.Enabled   = false;
                //Grace period
                TntWrsGracePrdChck.Checked  = true;
                TntWrsGracePrdChck.Enabled  = false;
                TntWrsGraceTimeChck.Value   = 30;
                TntWrsGraceTimeChck.Enabled = false;
                //Teams
                TntWrsTmsChck.Checked     = true;
                TntWrsTmsChck.Enabled     = false;
                tw_cbBalanceTeams.Checked = true;
                tw_cbBalanceTeams.Enabled = false;
                tw_cbTeamKills.Checked    = false;
                tw_cbTeamKills.Enabled    = false;
                //Status
                tw_btnStartGame.Enabled  = false;
                tw_btnEndGame.Enabled    = false;
                tw_btnResetGame.Enabled  = false;
                tw_btnDeleteGame.Enabled = false;
                //Other
                tw_cbStreaks.Checked = true;
                tw_cbStreaks.Enabled = false;
                //New game
                if (TntWrsMpsList.SelectedIndex < 0)
                {
                    TntWrsCrtNwTntWrsBt.Enabled = false;
                }
                //Load lists
                TntWrsMpsList.Items.Clear();
                tw_lstGames.Items.Clear();
                TntWrsDiffCombo.Items.Clear();
                foreach (Level lvl in Server.levels)
                {
                    if (TntWarsGame.Find(lvl) == null)
                    {
                        TntWrsMpsList.Items.Add(lvl.name);
                    }
                    else
                    {
                        TntWarsGame T   = TntWarsGame.Find(lvl);
                        string      msg = lvl.name + " - ";
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.FFA)
                        {
                            msg += "FFA";
                        }
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.TDM)
                        {
                            msg += "TDM";
                        }
                        msg += " - ";
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Easy)
                        {
                            msg += "(Easy)";
                        }
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Normal)
                        {
                            msg += "(Normal)";
                        }
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Hard)
                        {
                            msg += "(Hard)";
                        }
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Extreme)
                        {
                            msg += "(Extreme)";
                        }
                        msg += " - ";
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                        {
                            msg += "(Waiting For Players)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.AboutToStart)
                        {
                            msg += "(Starting)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.GracePeriod)
                        {
                            msg += "(Started)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.InProgress)
                        {
                            msg += "(In Progress)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.Finished)
                        {
                            msg += "(Finished)";
                        }
                        tw_lstGames.Items.Add(msg);
                    }
                }
                TntWrsDiffCombo.Items.Add("Easy");
                TntWrsDiffCombo.Items.Add("Normal");
                TntWrsDiffCombo.Items.Add("Hard");
                TntWrsDiffCombo.Items.Add("Extreme");
            }
            else
            {
                //Load settings
                //Top
                SlctdTntWrsLvl.Text = tw_selected.lvl.name;
                if (tw_selected.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                {
                    tw_txtStatus.Text = "Waiting For Players";
                }
                if (tw_selected.GameStatus == TntWarsGame.TntWarsGameStatus.AboutToStart)
                {
                    tw_txtStatus.Text = "Starting";
                }
                if (tw_selected.GameStatus == TntWarsGame.TntWarsGameStatus.GracePeriod)
                {
                    tw_txtStatus.Text = "Started";
                }
                if (tw_selected.GameStatus == TntWarsGame.TntWarsGameStatus.InProgress)
                {
                    tw_txtStatus.Text = "In Progress";
                }
                if (tw_selected.GameStatus == TntWarsGame.TntWarsGameStatus.Finished)
                {
                    tw_txtStatus.Text = "Finished";
                }
                tw_txtPlayers.Text = tw_selected.PlayingPlayers().ToString(CultureInfo.InvariantCulture);
                //Difficulty
                if (tw_selected.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                {
                    TntWrsDiffCombo.Enabled  = true;
                    TntWrsDiffSlctBt.Enabled = true;
                }
                else
                {
                    TntWrsDiffCombo.Enabled  = false;
                    TntWrsDiffSlctBt.Enabled = false;
                }
                TntWrsDiffCombo.SelectedIndex = TntWrsDiffCombo.FindString(tw_selected.Difficulty.ToString());
                //scores
                tw_numScoreLimit.Value     = tw_selected.ScoreLimit;
                tw_numScoreLimit.Enabled   = true;
                tw_numScorePerKill.Value   = tw_selected.Config.ScorePerKill;
                tw_numScorePerKill.Enabled = true;
                if (tw_selected.Config.AssistScore == 0)
                {
                    tw_cbScoreAssists.Checked  = false;
                    tw_cbScoreAssists.Enabled  = true;
                    tw_numScoreAssists.Enabled = false;
                }
                else
                {
                    tw_numScoreAssists.Value   = tw_selected.Config.AssistScore;
                    tw_numScoreAssists.Enabled = true;
                    tw_cbScoreAssists.Checked  = true;
                    tw_cbScoreAssists.Enabled  = true;
                }
                if (tw_selected.Config.MultiKillBonus == 0)
                {
                    tw_cbMultiKills.Checked  = false;
                    tw_cbMultiKills.Enabled  = true;
                    tw_numMultiKills.Enabled = false;
                }
                else
                {
                    tw_numMultiKills.Value   = tw_selected.Config.MultiKillBonus;
                    tw_numMultiKills.Enabled = true;
                    tw_cbMultiKills.Checked  = true;
                    tw_cbMultiKills.Enabled  = true;
                }
                //Grace period
                TntWrsGracePrdChck.Checked  = tw_selected.Config.InitialGracePeriod;
                TntWrsGracePrdChck.Enabled  = true;
                TntWrsGraceTimeChck.Value   = tw_selected.Config.GracePeriodSeconds;
                TntWrsGraceTimeChck.Enabled = tw_selected.Config.InitialGracePeriod;
                //Teams
                TntWrsTmsChck.Checked     = tw_selected.GameMode == TntWarsGame.TntWarsGameMode.TDM;
                TntWrsTmsChck.Enabled     = true;
                tw_cbBalanceTeams.Checked = tw_selected.Config.BalanceTeams;
                tw_cbBalanceTeams.Enabled = true;
                tw_cbTeamKills.Checked    = tw_selected.Config.TeamKills;
                tw_cbTeamKills.Enabled    = true;
                //Status
                switch (tw_selected.GameStatus)
                {
                case TntWarsGame.TntWarsGameStatus.WaitingForPlayers:
                    if (tw_selected.CheckAllSetUp(null, false, false))
                    {
                        tw_btnStartGame.Enabled = true;
                    }
                    tw_btnEndGame.Enabled    = false;
                    tw_btnResetGame.Enabled  = false;
                    tw_btnDeleteGame.Enabled = true;
                    break;

                case TntWarsGame.TntWarsGameStatus.AboutToStart:
                case TntWarsGame.TntWarsGameStatus.GracePeriod:
                case TntWarsGame.TntWarsGameStatus.InProgress:
                    tw_btnStartGame.Enabled  = false;
                    tw_btnEndGame.Enabled    = true;
                    tw_btnResetGame.Enabled  = false;
                    tw_btnDeleteGame.Enabled = false;
                    break;

                case TntWarsGame.TntWarsGameStatus.Finished:
                    tw_btnStartGame.Enabled  = false;
                    tw_btnEndGame.Enabled    = false;
                    tw_btnResetGame.Enabled  = true;
                    tw_btnDeleteGame.Enabled = true;
                    break;
                }
                //Other
                tw_cbStreaks.Checked = tw_selected.Config.Streaks;
                tw_cbStreaks.Enabled = true;
                //New game
                if (TntWrsMpsList.SelectedIndex < 0)
                {
                    TntWrsCrtNwTntWrsBt.Enabled = false;
                }
                //Load lists
                TntWrsMpsList.Items.Clear();
                tw_lstGames.Items.Clear();
                TntWrsDiffCombo.Items.Clear();
                foreach (Level lvl in Server.levels)
                {
                    if (TntWarsGame.Find(lvl) == null)
                    {
                        TntWrsMpsList.Items.Add(lvl.name);
                    }
                    else
                    {
                        TntWarsGame T   = TntWarsGame.Find(lvl);
                        string      msg = "";
                        if (T == tw_selected)
                        {
                            msg += "-->  ";
                        }
                        msg += lvl.name + " - ";
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.FFA)
                        {
                            msg += "FFA";
                        }
                        if (T.GameMode == TntWarsGame.TntWarsGameMode.TDM)
                        {
                            msg += "TDM";
                        }
                        msg += " - ";
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Easy)
                        {
                            msg += "(Easy)";
                        }
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Normal)
                        {
                            msg += "(Normal)";
                        }
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Hard)
                        {
                            msg += "(Hard)";
                        }
                        if (T.Difficulty == TntWarsGame.TntWarsDifficulty.Extreme)
                        {
                            msg += "(Extreme)";
                        }
                        msg += " - ";
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.WaitingForPlayers)
                        {
                            msg += "(Waiting For Players)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.AboutToStart)
                        {
                            msg += "(Starting)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.GracePeriod)
                        {
                            msg += "(Started)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.InProgress)
                        {
                            msg += "(In Progress)";
                        }
                        if (T.GameStatus == TntWarsGame.TntWarsGameStatus.Finished)
                        {
                            msg += "(Finished)";
                        }
                        tw_lstGames.Items.Add(msg);
                    }
                }
                TntWrsDiffCombo.Items.Add("Easy");
                TntWrsDiffCombo.Items.Add("Normal");
                TntWrsDiffCombo.Items.Add("Hard");
                TntWrsDiffCombo.Items.Add("Extreme");

                //Disable things because game is in progress
                if (!TntWarsEditable(sender, e))
                {
                    //Difficulty
                    TntWrsDiffCombo.Enabled  = false;
                    TntWrsDiffSlctBt.Enabled = false;
                    //scores
                    tw_numScoreLimit.Enabled   = false;
                    tw_numScorePerKill.Enabled = false;
                    tw_cbScoreAssists.Enabled  = false;
                    tw_numScoreAssists.Enabled = false;
                    tw_cbMultiKills.Enabled    = false;
                    tw_numMultiKills.Enabled   = false;
                    //Grace period
                    TntWrsGracePrdChck.Enabled  = false;
                    TntWrsGraceTimeChck.Enabled = false;
                    //Teams
                    TntWrsTmsChck.Enabled     = false;
                    tw_cbBalanceTeams.Enabled = false;
                    tw_cbTeamKills.Enabled    = false;
                    //Other
                    tw_cbStreaks.Enabled = false;
                }
            }
        }