Пример #1
0
        private static void Start(string[] args)
        {
            string appPath = Path.GetDirectoryName(Application.ExecutablePath);

            if (!Debugger.IsAttached)
            {
                System.Environment.CurrentDirectory = appPath;
            }
            var p = new ManicDiggerProgram2();

            if (args.Length > 0)
            {
                if (args[0].EndsWith(".mdlink", StringComparison.InvariantCultureIgnoreCase))
                {
                    XmlDocument d = new XmlDocument();
                    d.Load(args[0]);
                    string mode = XmlTool.XmlVal(d, "/ManicDiggerLink/GameMode");
                    if (mode != "Fortress")
                    {
                        throw new Exception("Invalid game mode: " + mode);
                    }
                    p.connectdata.Ip = XmlTool.XmlVal(d, "/ManicDiggerLink/Ip");
                    int port = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerLink/Port"));
                    p.connectdata.Port     = port;
                    p.connectdata.Username = XmlTool.XmlVal(d, "/ManicDiggerLink/User");
                }
            }
            else
            {
                //new Thread(ServerThreadStart).Start();
                //p.GameUrl = "127.0.0.1:25570";
                //p.User = "******";
            }
            p.Start();
        }
Пример #2
0
    public void LoadServerClient(Server server)
    {
        string filename = "ServerClient.txt";

        if (!File.Exists(Path.Combine(GameStorePath.gamepathconfig, filename)))
        {
            Console.WriteLine(server.language.ServerClientConfigNotFound());
            SaveServerClient(server);
        }
        else
        {
            try
            {
                using (TextReader textReader = new StreamReader(Path.Combine(GameStorePath.gamepathconfig, filename)))
                {
                    XmlSerializer deserializer = new XmlSerializer(typeof(ServerClient));
                    server.serverClient = (ServerClient)deserializer.Deserialize(textReader);
                    textReader.Close();
                    server.serverClient.Groups.Sort();
                    SaveServerClient(server);
                }
            }
            catch //This if for the original format
            {
                using (Stream s = new MemoryStream(File.ReadAllBytes(Path.Combine(GameStorePath.gamepathconfig, filename))))
                {
                    server.serverClient = new ServerClient();
                    StreamReader sr = new StreamReader(s);
                    XmlDocument  d  = new XmlDocument();
                    d.Load(sr);
                    server.serverClient.Format                 = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerClient/Format"));
                    server.serverClient.DefaultGroupGuests     = XmlTool.XmlVal(d, "/ManicDiggerServerClient/DefaultGroupGuests");
                    server.serverClient.DefaultGroupRegistered = XmlTool.XmlVal(d, "/ManicDiggerServerClient/DefaultGroupRegistered");
                }
                //Save with new version.
                SaveServerClient(server);
            }
        }
        if (server.serverClient.DefaultSpawn == null)
        {
            // server sets a default spawn (middle of map)
            int x = server.d_Map.MapSizeX / 2;
            int y = server.d_Map.MapSizeY / 2;
            server.defaultPlayerSpawn = server.DontSpawnPlayerInWater(new Vector3i(x, y, MapUtil.blockheight(server.d_Map, 0, x, y)));
        }
        else
        {
            int z;
            if (server.serverClient.DefaultSpawn.z == null)
            {
                z = MapUtil.blockheight(server.d_Map, 0, server.serverClient.DefaultSpawn.x, server.serverClient.DefaultSpawn.y);
            }
            else
            {
                z = server.serverClient.DefaultSpawn.z.Value;
            }
            server.defaultPlayerSpawn = new Vector3i(server.serverClient.DefaultSpawn.x, server.serverClient.DefaultSpawn.y, z);
        }

        server.defaultGroupGuest = server.serverClient.Groups.Find(
            delegate(ManicDigger.Group grp)
        {
            return(grp.Name.Equals(server.serverClient.DefaultGroupGuests));
        }
            );
        if (server.defaultGroupGuest == null)
        {
            throw new Exception(server.language.ServerClientConfigGuestGroupNotFound());
        }
        server.defaultGroupRegistered = server.serverClient.Groups.Find(
            delegate(ManicDigger.Group grp)
        {
            return(grp.Name.Equals(server.serverClient.DefaultGroupRegistered));
        }
            );
        if (server.defaultGroupRegistered == null)
        {
            throw new Exception(server.language.ServerClientConfigRegisteredGroupNotFound());
        }
        Console.WriteLine(server.language.ServerClientConfigLoaded());
    }
Пример #3
0
    public void LoadConfig(Server server)
    {
        string filename = "ServerConfig.txt";

        if (!File.Exists(Path.Combine(GameStorePath.gamepathconfig, filename)))
        {
            Console.WriteLine(server.language.ServerConfigNotFound());
            SaveConfig(server);
            return;
        }
        try
        {
            using (TextReader textReader = new StreamReader(Path.Combine(GameStorePath.gamepathconfig, filename)))
            {
                XmlSerializer deserializer = new XmlSerializer(typeof(ServerConfig));
                server.config = (ServerConfig)deserializer.Deserialize(textReader);
                textReader.Close();
            }
        }
        catch //This if for the original format
        {
            try
            {
                using (Stream s = new MemoryStream(File.ReadAllBytes(Path.Combine(GameStorePath.gamepathconfig, filename))))
                {
                    server.config = new ServerConfig();
                    StreamReader sr = new StreamReader(s);
                    XmlDocument  d  = new XmlDocument();
                    d.Load(sr);
                    server.config.Format = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Format"));
                    server.config.Name   = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Name");
                    server.config.Motd   = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Motd");
                    server.config.Port   = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Port"));
                    string maxclients = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MaxClients");
                    if (maxclients != null)
                    {
                        server.config.MaxClients = int.Parse(maxclients);
                    }
                    string key = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Key");
                    if (key != null)
                    {
                        server.config.Key = key;
                    }
                    server.config.IsCreative  = Misc.ReadBool(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Creative"));
                    server.config.Public      = Misc.ReadBool(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Public"));
                    server.config.AllowGuests = Misc.ReadBool(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/AllowGuests"));
                    if (XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeX") != null)
                    {
                        server.config.MapSizeX = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeX"));
                        server.config.MapSizeY = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeY"));
                        server.config.MapSizeZ = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeZ"));
                    }
                    server.config.BuildLogging            = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/BuildLogging"));
                    server.config.ServerEventLogging      = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ServerEventLogging"));
                    server.config.ChatLogging             = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ChatLogging"));
                    server.config.AllowScripting          = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/AllowScripting"));
                    server.config.ServerMonitor           = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ServerMonitor"));
                    server.config.ClientConnectionTimeout = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ClientConnectionTimeout"));
                    server.config.ClientPlayingTimeout    = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ClientPlayingTimeout"));
                }
                //Save with new version.
                SaveConfig(server);
            }
            catch
            {
                //ServerConfig is really messed up. Backup a copy, then create a new one.
                try
                {
                    File.Copy(Path.Combine(GameStorePath.gamepathconfig, filename), Path.Combine(GameStorePath.gamepathconfig, filename + ".old"));
                    Console.WriteLine(server.language.ServerConfigCorruptBackup());
                }
                catch
                {
                    Console.WriteLine(server.language.ServerConfigCorruptNoBackup());
                }
                server.config = null;
                SaveConfig(server);
            }
        }
        server.language.OverrideLanguage = server.config.ServerLanguage;  //Switch to user-defined language.
        Console.WriteLine(server.language.ServerConfigLoaded());
    }