diff --git a/GameServer.cs b/GameServer.cs index e64c484..eb405eb 100644 --- a/GameServer.cs +++ b/GameServer.cs @@ -12,7 +12,16 @@ namespace MSCO.Server; /// public sealed class GameServer { - public const string ModVersion = "2.8"; // muss mit MSCO.ModVersion übereinstimmen + /// Netzwerk-Version (= MSCO.ProtocolVersion der Mod). Mods 2.8.x passen dazu (kleine Updates). + public const string ModVersion = "2.8"; + + /// "2.8.3" -> "2.8": kleine Mod-Updates (dritte Stelle) sind kompatibel. + public static string Protocol(string version) + { + if (string.IsNullOrEmpty(version)) return ""; + string[] parts = version.Trim().Split('.'); + return parts.Length >= 2 ? parts[0] + "." + parts[1] : version.Trim(); + } public const int ServerId = 0; // Absender-ID des Servers; Spieler bekommen 1, 2, ... static string[] SaveFiles => SaveStore.SaveFiles; @@ -510,7 +519,7 @@ public sealed class GameServer c.SteamId = steamId != 0 ? steamId.ToString() : "name:" + c.Name.ToLowerInvariant(); // Andere Version ist erlaubt (der Spieler wurde in der Mod schon gewarnt), nur vermerken - if (version != ModVersion) Log($"{c.Name} uses MSCO {version} (server {ModVersion}) - syncing may not work correctly"); + if (Protocol(version) != ModVersion) Log($"{c.Name} uses MSCO {version} (server {ModVersion}) - syncing may not work correctly"); if (config.BannedSteamIds.Contains(c.SteamId)) { Reject(c, "You are banned from this server"); return; } if (JoinedCount >= config.MaxPlayers) { Reject(c, "Server is full"); return; }