fix: separate hotfix by client

This commit is contained in:
letheriver2007
2025-04-15 16:44:41 +08:00
parent 06a53f7362
commit a140c58d73
2 changed files with 13 additions and 11 deletions

View File

@@ -56,14 +56,13 @@ public static class ConfigManager
// Generate all necessary versions
var verList = new List<string>();
if (GameConstants.GAME_VERSION.Length > 4)
for (var i = 1; i < 6; i++)
verList.Add(GameConstants.GAME_VERSION + i.ToString());
else
verList.Add(GameConstants.GAME_VERSION);
Logger.Info(I18NManager.Translate("Server.ServerInfo.CurrentVersion",
verList.Aggregate((current, next) => $"{current}, {next}")));
var prefix = new List<string> { "CN", "OS" };
foreach (var pre in prefix)
if (GameConstants.GAME_VERSION[^1] == '5')
for (var i = 1; i < 6; i++)
verList.Add(pre + GameConstants.GAME_VERSION + i.ToString());
else
verList.Add(pre + GameConstants.GAME_VERSION);
if (!file.Exists)
{
@@ -83,6 +82,8 @@ public static class ConfigManager
if (!Hotfix.HotfixData.TryGetValue(version, out var _))
Hotfix.HotfixData[version] = new();
Logger.Info(I18NManager.Translate("Server.ServerInfo.CurrentVersion", GameConstants.GAME_VERSION));
SaveData(Hotfix, HotfixFilePath);
}

View File

@@ -36,9 +36,9 @@ internal partial class QueryGatewayHandler
if (ConfigManager.Config.GameServer.UsePacketEncryption)
gateServer.ClientSecretKey = Convert.ToBase64String(Crypto.ClientSecretKey!.GetBytes());
// Auto separate CN/OS prefix
var region = ConfigManager.Hotfix.Region;
if (region == BaseRegionEnum.None)
_ = Enum.TryParse(version[..2], out region);
if (region == BaseRegionEnum.None) _ = Enum.TryParse(version[..2], out region);
var baseUrl = region switch
{
BaseRegionEnum.CN => BaseUrl.CN,
@@ -46,6 +46,7 @@ internal partial class QueryGatewayHandler
_ => BaseUrl.OS
};
// Separate CN/OS hotfix by client
var ver = VersionRegex().Replace(version, "");
ConfigManager.Hotfix.HotfixData.TryGetValue(ver, out var urls);
if (urls != null)
@@ -66,6 +67,6 @@ internal partial class QueryGatewayHandler
Data = Convert.ToBase64String(gateServer.ToByteArray());
}
[GeneratedRegex(@"CN|OS|BETA|PROD|Android|Win|iOS")]
[GeneratedRegex(@"BETA|PROD|CECREATION|Android|Win|iOS")]
private static partial Regex VersionRegex();
}