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); }
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; } }
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); }
static string FormatPlayer(Player pl, CountdownGame game) { if (game.Remaining.Contains(pl)) { return(pl.ColoredName + " &a[IN]"); } else { return(pl.ColoredName + " &c[OUT]"); } }
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(); }
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); } }
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."); } }
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); }
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; } }
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; } }
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); }
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; } }
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); }
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); }
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; } }
static string FormatPlayer(Player pl, CountdownGame game) { string suffix = game.Remaining.Contains(pl) ? " &a[IN]" : " &c[OUT]"; return(pl.ColoredName + suffix); }
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; } }
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)); }
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(); }
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)); }
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; } }