void MainC(string[] args) { Disk disk = new Disk("server.bin"); PartitionTable partitions = disk.Partitions; PartitionInfo fs_pi = partitions[0]; FatFileSystem fs = new FatFileSystem(fs_pi.Open()); PartitionInfo mfs_pi = partitions[1]; FatFileSystem mfs = new FatFileSystem(mfs_pi.Open()); svtime = DateTime.Now.Ticks; Console.WriteLine("Starting..."); netListener = new EventBasedNetListener(); client = new NetManager(netListener, new XorEncryptLayer("dreamscape")); inetListener = new EventBasedNetListener(); iclient = new NetManager(inetListener); lua = new Lua(); gameInstance = new Instance("DataModel"); Factory factoryContainer = new Factory("Factories"); factoryContainer.Parent = gameInstance; CharacterFactory characterFactory = new CharacterFactory("CharacterFactory"); characterFactory.Parent = factoryContainer; GameLibrary gameLibrary = new GameLibrary("GameLibrary"); gameLibrary.Parent = factoryContainer; lua.LoadCLRPackage(); lua.DebugHook += Lua_DebugHook; SparseStream stream = fs.OpenFile("lua\\main.lua", FileMode.Open, FileAccess.Read); byte[] data = new byte[stream.Length]; stream.Read(data, 0, data.Length); string code = Encoding.ASCII.GetString(data); stream.Close(); lua["netwriter"] = new NetDataWriter(); lua["netserver"] = client; lua["DataModel"] = gameInstance; lua.DoString("import('dreamhost','dreamscape','System','NLua','LiteNetLib','LiteNetLib.Utils','dreamhost.lua')\n" + code, svtime.ToString()); this.characterFactory = characterFactory; client.Start(6698); Console.WriteLine("Server ready! Hosting on UDP port 6698."); client.AutoRecycle = true; netListener.ConnectionRequestEvent += (request) => { Console.WriteLine("Connection"); LuaFunction func = lua["peerhandle"] as LuaFunction; try { func.Call(request); } catch (Exception e) { request.Accept(); Console.WriteLine(e); } }; netListener.PeerDisconnectedEvent += (peer, info) => { Player plr = null; foreach (Player i in characterFactory.Children) { if (i.peer == peer) { plr = i; } } Console.WriteLine("Disconnect"); LuaFunction func = lua["peerdisconnect"] as LuaFunction; try { func.Call(peer, info, plr); } catch (Exception e) { Console.WriteLine(e); } }; netListener.PeerConnectedEvent += (peer) => { Player player = new Player(gameLibrary.FindEntropy().ToString(), peer); player.Parent = characterFactory; Console.WriteLine("Successful Connect"); LuaFunction func = lua["peerconnect"] as LuaFunction; try { func.Call(peer, player); } catch (Exception e) { Console.WriteLine(e); } }; netListener.NetworkReceiveEvent += NetworkReceive; Console.WriteLine("Starting info server..."); inetListener.PeerConnectedEvent += (peer) => { Console.WriteLine("Sending peer info"); NetDataWriter writer = new NetDataWriter(); LuaFunction func = lua["getinfo"] as LuaFunction; try { writer.Put(func.Call(peer).First() as string); } catch (Exception e) { Console.WriteLine(e); writer.Put("Please contact the <b>SYSOP</b> for this server.\n" + e); } peer.Send(writer, DeliveryMethod.ReliableSequenced); }; inetListener.ConnectionRequestEvent += (request) => { Console.WriteLine("Connected to info"); request.Accept(); }; iclient.Start(6699); iclient.AutoRecycle = true; Console.WriteLine("Info server ready! Hosting on UDP port 6699."); while (true) { client.PollEvents(); Thread.Sleep(15); } }