static void Main(string[] args) { try { var server = new Server(Console.Out); server.Start(Dns.GetHostName(), 11873); keepRunning.WaitOne(); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.WriteLine("\nPress ENTER to continue..."); Console.Read(); }
public Program() { "started".Trace(); GameServer.Database db = (GameServer.Database)_XmlSerializer.Deserialize(File.Open(Settings._Maps, FileMode.Open)); List<GameServer.Server> svrs = new List<GameServer.Server>(); foreach(Task task in db._tasks) { GameServer.Server _Server = new GameServer.Server(); _Server._Task = task; _Server.StartAsync(); svrs.Add(_Server); } PolicyServer ps = new PolicyServer { policyFile = "Server/PolicyFile.xml" }; ps.StartAsync(); WebServer.WebServer _WebServer = new WebServer.WebServer(); _WebServer.StartAsync(); Thread.Sleep(-1); }
public Program() { "started".Trace(); GameServer.Database db = (GameServer.Database)_XmlSerializer.Deserialize(File.Open(Settings._Maps, FileMode.Open)); List <GameServer.Server> svrs = new List <GameServer.Server>(); foreach (Task task in db._tasks) { GameServer.Server _Server = new GameServer.Server(); _Server._Task = task; _Server.StartAsync(); svrs.Add(_Server); } PolicyServer ps = new PolicyServer { policyFile = "Server/PolicyFile.xml" }; ps.StartAsync(); WebServer.WebServer _WebServer = new WebServer.WebServer(); _WebServer.StartAsync(); Thread.Sleep(-1); }
/// <summary> /// Main method /// </summary> public static void Main() { Server server = new Server(); server.RunService(); }
/// <summary> /// The main entry point for the application. /// </summary> static void Main(string[] args) { // Create server CheckConfig(Server.CONFIG_NAME); NativeMethods.SetConsoleCtrlHandler(new NativeMethods.HandlerRoutine(Close), true); try { server = new Server(); if (!server.Start(new AcceptAction(AcceptConnection))) { Console.WriteLine("Error starting server!"); server.Close(); return; } else { if(IPAddress.Parse(server.ListenIP).AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) Console.WriteLine("Server started. Listening on: {0}:{1}\n", server.ListenIP, server.ListenPort); else Console.WriteLine("Server started. Listening on: [{0}]:{1}\n", server.ListenIP, server.ListenPort); } } catch (Exception ex) { Console.WriteLine("Error starting server: " + ex.Message); if (server != null) server.Close(); return; } // Load map Map defaultMap = null; try { defaultMap = new Map(typeof(GameServer).Assembly.GetManifestResourceStream("GameServer.game.bmap")); World.CurrentMap = new Map(defaultMap); } catch { } // Initialize items World.PopulateBacteria(); string[] input = { "" }; // Input loop while (acceptServerConsoleInput(ref input)) { List<KeyValuePair<IPEndPoint, string>> playerData = server.GetClientInfo(); //can't change ordering - otherwise we'll get bugs when kicking by index switch (input[0].ToLower()) { case "help": Console.WriteLine("Commands:"); Console.WriteLine("\t clear"); Console.WriteLine("\t cls"); Console.WriteLine("\t exit"); Console.WriteLine("\t help"); Console.WriteLine("\t kick [playername|index]"); Console.WriteLine("\t prompte [playername]"); Console.WriteLine("\t restart"); Console.WriteLine("\t say all [message]"); Console.WriteLine("\t status"); break; case "kick": if (input.Length != 2) { Console.WriteLine(errorMessage); break; } if (playerData.Count == 0) { Console.WriteLine(noPlayersMessage); break; } // Figure out kick data int index = 0; KickData kd = int.TryParse(input[1], out index) ? new KickData(index) : new KickData(input[1]); if (!server.SendToClient(ServerAction.ServerKick, kd)) Console.WriteLine("There was an error with your request."); break; case "promote": if(input.Length != 2) { Console.WriteLine(errorMessage); break; } if (server.PromoteUser(input[1])) { Console.WriteLine("Promoted " + input[1] + " to admin!"); Console.WriteLine("You should probably kick them to force a re-log so everything works"); } else Console.WriteLine("Error promoting user " + input[1]); break; case "say": if (input.Length < 3 || input[1] != "all") { Console.WriteLine(errorMessage + " Try \"say all [message]\""); break; } if (playerData.Count == 0) { Console.WriteLine(noPlayersMessage); break; } // Send server message string output = string.Join(" ", input.Skip(2)); if (!server.SendToClient(ServerAction.ServerMessage, new TalkData(output))) Console.WriteLine("There was an error with your request."); break; case "status": if (input.Length != 1) { Console.WriteLine(errorMessage); break; } if (playerData.Count == 0) { Console.WriteLine(noPlayersMessage); break; } int i = 0; foreach (KeyValuePair<IPEndPoint, string> info in playerData) { if (!string.IsNullOrEmpty(info.Value)) Console.WriteLine(" [{0}]: {1,-21} ({2})", i, info.Key.ToString(), info.Value); else Console.WriteLine(" [{0}]: {1,-21}", i, info.Key.ToString()); i++; } break; case "clear": case "cls": if (input.Length != 1) { Console.WriteLine(errorMessage); break; } Console.Clear(); break; case "restart": try { server.Dispose(); Console.Write("Closed server. Restarting..."); } catch { Console.Write("Error closing server! Restarting..."); } try { server = new Server(); if (!server.Start(new AcceptAction(AcceptConnection))) throw new ServerStartException("Error restarting server!"); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } if (!server.Started) break; else Console.WriteLine("Restarted."); break; default: Console.WriteLine(errorMessage); break; } } Close(CtrlTypes.CTRL_CLOSE_EVENT); Console.WriteLine("Press any key to continue . . ."); Console.ReadKey(true); }