From 54bfe198d890010c50119add4be851e9f6eb7c1f Mon Sep 17 00:00:00 2001 From: SPP User Date: Sun, 25 Oct 2026 19:23:53 +0100 Subject: [PATCH] =?UTF-8?q?Aufw=C3=A4rmphase=20vor=20mp=5Fwarmup=5Fend=20a?= =?UTF-8?q?ls=20beendet=20markieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CS2 sendet Match_Start sofort nach mp_warmup_end, oft bevor die RCON-Antwort da ist. Bei fehlgeschlagenem Befehl wird die Markierung zurückgenommen. Co-Authored-By: Claude Opus 5.5 --- server/src/matchService.js | 4 ++-- server/src/servers/serverManager.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/server/src/matchService.js b/server/src/matchService.js index c8d0c53..76ddc4a 100644 --- a/server/src/matchService.js +++ b/server/src/matchService.js @@ -449,12 +449,12 @@ export class MatchService extends EventEmitter { } /** Organisator hat die Aufwärmphase beendet: ab dem nächsten Match_Start wird gezählt. */ - markWarmupEnded(matchId) { + markWarmupEnded(matchId, ended = true) { const match = this.getMatch(matchId); const row = this.seriesMaps(matchId).find((m) => m.number === match.current_map_number); if (!row) return; const state = row.live ? JSON.parse(row.live) : initialLiveState({ map: row.map, ctTeam: row.ct_team }); - state.warmupEnded = true; + state.warmupEnded = ended; this.db .prepare('UPDATE series_maps SET live = ? WHERE match_id = ? AND number = ?') .run(JSON.stringify(state), matchId, row.number); diff --git a/server/src/servers/serverManager.js b/server/src/servers/serverManager.js index 413252a..11ae7c8 100644 --- a/server/src/servers/serverManager.js +++ b/server/src/servers/serverManager.js @@ -322,13 +322,15 @@ export class ServerManager { const row = this.row(viewer.matchId); if (row?.status !== 'configured') throw new HttpError(409, 'Der Server ist noch nicht konfiguriert', 'wrong_state'); if (!this.adapter.sendCommands) throw new HttpError(501, 'Dieser Adapter unterstützt keine Befehle', 'unsupported'); + // Vor dem Befehl markieren: CS2 schickt Match_Start sofort nach mp_warmup_end, oft bevor RCON antwortet. + this.service.markWarmupEnded(viewer.matchId, true); try { await this.adapter.sendCommands(JSON.parse(row.handle), ['mp_warmup_pausetimer 0', 'mp_warmup_end']); } catch (err) { + this.service.markWarmupEnded(viewer.matchId, false); throw new HttpError(502, `Befehl konnte nicht gesendet werden: ${err.message}`, 'server_error'); } this.service.log(viewer.matchId, 'server', this.adapter.simulated ? 'Aufwärmphase beendet (simuliert)' : 'Aufwärmphase beendet – Match startet'); - this.service.markWarmupEnded(viewer.matchId); if (this.adapter.simulated) this.startDemoSimulation(viewer.matchId); this.service.changed(viewer.matchId); }