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(); }
public int GetOnlineId() => RedisBackend.GetOnlineId(WorldID, 50);
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); }