Exemplo n.º 1
0
        private void LoadConfig(string configFile)
        {
            ConfigReader reader = new ConfigReader(configFile);

            Port      = reader["port"].GetUShort();
            AdminPort = reader["adminPort"].GetUShort();
            PublicIP  = IPAddress.Parse(reader["PublicIP"].GetString());
            PrivateIP = IPAddress.Parse(reader["PrivateIP"].GetString());

            RequiresEULA = reader["requiresEULA"]?.GetBool() ?? false;
            Tespia       = reader["tespia"]?.GetBool() ?? false;

            foreach (var worldConfig in reader["center"])
            {
                var center = new Center
                {
                    Channels               = worldConfig["channelNo"].GetByte(),
                    ID                     = worldConfig["world"].GetByte(),
                    Port                   = worldConfig["port"].GetUShort(),
                    IP                     = IPAddress.Parse(worldConfig["ip"].GetString()),
                    AdultWorld             = worldConfig["adult"]?.GetBool() ?? false,
                    EventDescription       = worldConfig["eventDesc"]?.GetString() ?? "",
                    BlockCharacterCreation = worldConfig["BlockCharCreation"]?.GetBool() ?? false,
                    State                  = worldConfig["worldState"]?.GetByte() ?? 0,
                    Name                   = worldConfig.Name,
                };
                center.UserNo = new int[center.Channels];

                Worlds.Add(center.ID, center);
            }

            RedisBackend.Init(reader);
            WzReader.Load();
        }
Exemplo n.º 2
0
 public int GetOnlineId() => RedisBackend.GetOnlineId(WorldID, 50);
Exemplo n.º 3
0
        private void LoadConfig(string configFile)
        {
            ConfigReader reader = new ConfigReader(configFile);

            Port      = reader["port"].GetUShort();
            AdminPort = reader["adminPort"].GetUShort();
            PrivateIP = IPAddress.Parse(reader["PrivateIP"]?.GetString() ?? "127.0.0.1");
            World     = new WorldServer(reader["gameWorldId"].GetByte());

            World.UserWarning = reader["userWarning"]?.GetInt() ?? 400; // 11000
            World.UserLimit   = reader["userLimit"]?.GetInt() ?? 600;   // 12000

            if (World.UserLimit < World.UserWarning)
            {
                var tmp = World.UserLimit;
                World.UserLimit   = World.UserWarning;
                World.UserWarning = tmp;
            }

            Tespia = reader["tespia"]?.GetBool() ?? false;

            LocalServer     ls;
            LocalServerType lst;

            foreach (var serverCategory in reader.RootNode.Where(x => x.SubNodes != null))
            {
                switch (serverCategory.Name)
                {
                case "login": lst = LocalServerType.Login; break;

                case "game": lst = LocalServerType.Game; break;

                case "shop": lst = LocalServerType.Shop; break;

                case "mapgen": lst = LocalServerType.MapGen; break;

                case "claim": lst = LocalServerType.Claim; break;

                case "itc": lst = LocalServerType.ITC; break;

                default: lst = LocalServerType.Unk; break;
                }

                if (lst == LocalServerType.Unk)
                {
                    System.Windows.Forms.MessageBox.Show("Found unparsable block in center config file: " + serverCategory.Name);
                }
                else if (lst == LocalServerType.Claim)
                {
                    ls = new LocalServer()
                    {
                        Name      = "claim",
                        Port      = serverCategory["port"].GetUShort(),
                        PublicIP  = IPAddress.Parse(serverCategory["PublicIP"].GetString()),
                        PrivateIP = IPAddress.Parse(serverCategory["PrivateIP"].GetString()),
                        Type      = lst
                    };
                    LocalServers.Add("claim", ls);
                }
                else
                {
                    byte channelId = 0;
                    foreach (var serverConfigBlock in serverCategory)
                    {
                        ls = new LocalServer()
                        {
                            Name           = serverConfigBlock.Name,
                            Port           = serverConfigBlock["port"].GetUShort(),
                            PublicIP       = IPAddress.Parse(serverConfigBlock["PublicIP"].GetString()),
                            PrivateIP      = IPAddress.Parse(serverConfigBlock["PrivateIP"].GetString()),
                            RateMobEXP     = serverConfigBlock["EXP_Rate"]?.GetDouble() ?? 1.0,
                            RateMesoAmount = serverConfigBlock["MESO_Rate"]?.GetDouble() ?? 1.0,
                            RateDropChance = serverConfigBlock["DROP_Rate"]?.GetDouble() ?? 1.0,
                            Type           = lst,
                        };

                        ls.SetRates(ls.RateMobEXP, ls.RateDropChance, ls.RateMesoAmount, false, true);

                        LocalServers.Add(ls.Name, ls);
                        if (lst == LocalServerType.Game)
                        {
                            World.GameServers.Add(channelId, ls);
                            ls.ChannelID = channelId;
                        }
                        else if (lst == LocalServerType.Shop)
                        {
                            World.ShopServers.Add(channelId, ls);
                            ls.ChannelID = channelId;
                        }
                        channelId++;
                    }

                    if (lst == LocalServerType.Game)
                    {
                        World.Channels = channelId;
                    }
                }
            }


            RedisBackend.Init(reader);
        }