static void Main(string[] args) { Console.OutputEncoding = Encoding.Unicode; Console.Title = "Grand Cheese Login"; Console.WriteLine(" ////////////////////////////////////////"); Console.WriteLine(" Grand Cheese Season V / Center "); Console.WriteLine(" ////////////////////////////////////////"); Console.WriteLine(); Log.Get().Info("Getting server list..."); using (var db = Database.Get()) { var servers = db.Query <Server>("SELECT * FROM servers").ToArray(); foreach (var server in servers) { Data.Servers.Add(server); } } Log.Get().Info("Loaded {0} server{1}.", Data.Servers.Count, Data.Servers.Count == 1 ? "" : "s"); var serverApp = new ServerApp(); serverApp.StartServer(9501); // This won't work on Mono probably while (true) { Console.ReadLine(); } }
static void Main(string[] args) { Console.OutputEncoding = Encoding.Unicode; Console.Title = "Grand Cheese Game"; Console.WriteLine(" ////////////////////////////////////////"); Console.WriteLine(" Grand Cheese Season V / Game "); Console.WriteLine(" ////////////////////////////////////////"); Console.WriteLine(); Lua.RunLuaScript("Config"); using (var db = Database.Get()) { var server = db.Query <KServerInfo>("SELECT * FROM servers WHERE port = @port", new { port = Lua.GetLuaGlobal("port").CastToNumber() }).FirstOrDefault(); if (server != null) { Info = server; } } var serverApp = new ServerApp { CreateUserClient = (Client c) => { c.User = new UserClient(c); }, CustomInvoke = (ServerApp app, Client c, Packet p, short opcode) => { if (c.User == null) { c.User = new UserClient(c); } var user = (UserClient)c.User; var method = app.serverPackets[opcode]; var invocationArgs = new List <object>(); foreach (var param in method.GetParameters()) { if (param.ParameterType == typeof(Client)) { invocationArgs.Add(c); } else if (param.ParameterType == typeof(Packet)) { invocationArgs.Add(p); } else if (param.ParameterType == typeof(KUser)) { invocationArgs.Add(user.KUser); } } switch (method.DeclaringType.Name) { case "KUser": method.Invoke(user.KUser, invocationArgs.ToArray()); break; default: try { method.Invoke(null, invocationArgs.ToArray()); } catch (TargetInvocationException ex) { Log.Get().Error(ex, "Unhandled packet. Failed to call as static."); } break; } } }; serverApp.StartServer(Info.Port, "game"); Lua.RunLuaScript("CharDefaultInfo"); if (serverApp.initialized) { // Delay the loading of the shell just in case... System.Threading.Thread.Sleep(2500); // Start the Lua shell Console.WriteLine(); Console.WriteLine(GetLuaInfo()); //var script = new Script(); while (true) { Console.Write("> "); var input = Console.ReadLine(); if (input == "exit") { Environment.Exit(0); } try { Console.WriteLine(Lua.script.DoString(input).CastToString()); } catch (Exception ex) { Log.Get().Fatal(ex.Message); } } } }
static void Main(string[] args) { Console.OutputEncoding = Encoding.Unicode; Console.Title = "Grand Cheese Game"; Console.WriteLine(" ////////////////////////////////////////"); Console.WriteLine(" Grand Cheese Season V / Game "); Console.WriteLine(" ////////////////////////////////////////"); Console.WriteLine(); using (var db = Database.Get()) { var server = db.Query <Server>("SELECT * FROM servers WHERE port = @port", new { port = 9401 }).FirstOrDefault(); if (server != null) { Data.Data.Server = server; } } var serverApp = new ServerApp { CreateUserClient = (Client c) => { c.User = new UserClient(c); }, CustomInvoke = (ServerApp app, Client c, Packet p, short opcode) => { if (c.User == null) { c.User = new UserClient(c); } var user = (UserClient)c.User; var method = app.serverPackets[opcode]; Console.WriteLine(method.DeclaringType.Name); switch (method.DeclaringType.Name) { case "KUser": method.Invoke(user.KUser, new object[] { c, p }); break; default: if (method.GetParameters().Length == 1) { method.Invoke(null, new object[] { user.KUser }); } else { Log.Get().Warn("Unhandled. Attempting to call as static."); method.Invoke(null, new object[] { c, p }); } break; } } }; serverApp.StartServer(Data.Data.Server.Port, "game"); // This won't work on Mono probably while (true) { Console.ReadLine(); } }