Compare only major.minor of the client's mod version

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 17:48:23 +02:00
co-authored by Claude Opus 5.5
parent e94123fa40
commit 2d38c8bee9
+11 -2
View File
@@ -12,7 +12,16 @@ namespace MSCO.Server;
/// </summary> /// </summary>
public sealed class GameServer public sealed class GameServer
{ {
public const string ModVersion = "2.8"; // muss mit MSCO.ModVersion übereinstimmen /// <summary>Netzwerk-Version (= MSCO.ProtocolVersion der Mod). Mods 2.8.x passen dazu (kleine Updates).</summary>
public const string ModVersion = "2.8";
/// <summary>"2.8.3" -> "2.8": kleine Mod-Updates (dritte Stelle) sind kompatibel.</summary>
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, ... public const int ServerId = 0; // Absender-ID des Servers; Spieler bekommen 1, 2, ...
static string[] SaveFiles => SaveStore.SaveFiles; static string[] SaveFiles => SaveStore.SaveFiles;
@@ -510,7 +519,7 @@ public sealed class GameServer
c.SteamId = steamId != 0 ? steamId.ToString() : "name:" + c.Name.ToLowerInvariant(); c.SteamId = steamId != 0 ? steamId.ToString() : "name:" + c.Name.ToLowerInvariant();
// Andere Version ist erlaubt (der Spieler wurde in der Mod schon gewarnt), nur vermerken // 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 (config.BannedSteamIds.Contains(c.SteamId)) { Reject(c, "You are banned from this server"); return; }
if (JoinedCount >= config.MaxPlayers) { Reject(c, "Server is full"); return; } if (JoinedCount >= config.MaxPlayers) { Reject(c, "Server is full"); return; }