예제 #1
0
        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();
            }
        }
예제 #2
0
        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);
                    }
                }
            }
        }
예제 #3
0
        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();
            }
        }