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; }