CS2: sv_deltaticks_enforce 0 gegen NETWORK_DISCONNECT_BADDELTATICK
Mit dem Standard 2 trennt CS2 Spieler und CSTV, wenn deren Bestätigungen außer der Reihe kommen. Neue Container starten mit +sv_deltaticks_enforce 0, beim Einrichten jeder Map und auf Messer-Servern setzt die App den Wert zusätzlich per RCON.
This commit is contained in:
1 parent
69fcf6d15a
commit
52c07c88b8
5 files changed
+9
-3
No files matched your search
@@ -61,6 +61,8 @@ export function buildMapCommands({ match, pool, seriesMap, secrets, settings, lo
|
|||||||
'mp_match_can_clinch 1',
|
'mp_match_can_clinch 1',
|
||||||
// Keine Map-Abstimmung nach Spielende: die nächste Map legt das Veto fest
|
// Keine Map-Abstimmung nach Spielende: die nächste Map legt das Veto fest
|
||||||
'mp_endmatch_votenextmap 0',
|
'mp_endmatch_votenextmap 0',
|
||||||
|
// Strenge Prüfung der Delta-Ticks (Standard 2) trennt Spieler und CSTV ohne echten Grund
|
||||||
|
'sv_deltaticks_enforce 0',
|
||||||
'mp_autoteambalance 0',
|
'mp_autoteambalance 0',
|
||||||
'mp_limitteams 0',
|
'mp_limitteams 0',
|
||||||
// Aufwärmphase läuft, bis der Organisator das Match startet (mp_warmup_end)
|
// Aufwärmphase läuft, bis der Organisator das Match startet (mp_warmup_end)
|
||||||
|
|||||||
@@ -266,8 +266,9 @@ export class DockerServerAdapter {
|
|||||||
CS2_GAMETYPE: '0',
|
CS2_GAMETYPE: '0',
|
||||||
CS2_GAMEMODE: mode === 'wingman' ? '2' : '1',
|
CS2_GAMEMODE: mode === 'wingman' ? '2' : '1',
|
||||||
CS2_SERVER_HIBERNATE: '0',
|
CS2_SERVER_HIBERNATE: '0',
|
||||||
// Ohne diesen Startparameter legt CS2 keine Rundensicherungen an (Rollback)
|
// -allow_round_backup_files: ohne ihn legt CS2 keine Rundensicherungen an (Rollback).
|
||||||
CS2_ADDITIONAL_ARGS: '-allow_round_backup_files',
|
// sv_deltaticks_enforce 0: sonst trennt CS2 Spieler und CSTV mit NETWORK_DISCONNECT_BADDELTATICK
|
||||||
|
CS2_ADDITIONAL_ARGS: '-allow_round_backup_files +sv_deltaticks_enforce 0',
|
||||||
TV_ENABLE: '1',
|
TV_ENABLE: '1',
|
||||||
TV_PORT: String(tvPort),
|
TV_PORT: String(tvPort),
|
||||||
TV_PW: secrets.tvPassword,
|
TV_PW: secrets.tvPassword,
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ export function buildKnifeCommands({ map, pool = { gameType: 0, gameMode: 1 }, w
|
|||||||
'mp_match_can_clinch 1',
|
'mp_match_can_clinch 1',
|
||||||
// Keine Map-Abstimmung nach Spielende: die nächste Map legt das Veto fest
|
// Keine Map-Abstimmung nach Spielende: die nächste Map legt das Veto fest
|
||||||
'mp_endmatch_votenextmap 0',
|
'mp_endmatch_votenextmap 0',
|
||||||
|
// Strenge Prüfung der Delta-Ticks (Standard 2) trennt Spieler und CSTV ohne echten Grund
|
||||||
|
'sv_deltaticks_enforce 0',
|
||||||
'mp_match_end_restart 1',
|
'mp_match_end_restart 1',
|
||||||
'mp_match_restart_delay 10',
|
'mp_match_restart_delay 10',
|
||||||
'mp_halftime 0',
|
'mp_halftime 0',
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ test('Ohne GSLT startet der Container im LAN-Modus, mit GSLT mit Token', async (
|
|||||||
assert.equal(env.SRCDS_TOKEN, undefined);
|
assert.equal(env.SRCDS_TOKEN, undefined);
|
||||||
assert.equal(env.CS2_GAMEMODE, '2');
|
assert.equal(env.CS2_GAMEMODE, '2');
|
||||||
assert.equal(env.CS2_MAXPLAYERS, '6', '4 Spieler + CSTV + Reserve');
|
assert.equal(env.CS2_MAXPLAYERS, '6', '4 Spieler + CSTV + Reserve');
|
||||||
assert.equal(env.CS2_ADDITIONAL_ARGS, '-allow_round_backup_files', 'Rundensicherung für Rollback');
|
assert.equal(env.CS2_ADDITIONAL_ARGS, '-allow_round_backup_files +sv_deltaticks_enforce 0', 'Rundensicherung für Rollback, keine Trennung wegen Delta-Ticks');
|
||||||
assert.equal(env.CS2_PORT, '27100');
|
assert.equal(env.CS2_PORT, '27100');
|
||||||
assert.equal(env.TV_PORT, '27200');
|
assert.equal(env.TV_PORT, '27200');
|
||||||
assert.ok(runArgs.includes('cs2-mapveto-gamefiles:/home/steam/cs2-dedicated'));
|
assert.ok(runArgs.includes('cs2-mapveto-gamefiles:/home/steam/cs2-dedicated'));
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ test('Log-Weiterleitung wird vor dem Mapwechsel gesetzt, unsichere URLs nicht',
|
|||||||
const ok = buildMapCommands({ ...base, logUrl: 'http://192.168.178.31:3000/api/logs/abc_D-1/KEY123' }).beforeMapChange;
|
const ok = buildMapCommands({ ...base, logUrl: 'http://192.168.178.31:3000/api/logs/abc_D-1/KEY123' }).beforeMapChange;
|
||||||
assert.ok(ok.includes('logaddress_add_http "http://192.168.178.31:3000/api/logs/abc_D-1/KEY123"'));
|
assert.ok(ok.includes('logaddress_add_http "http://192.168.178.31:3000/api/logs/abc_D-1/KEY123"'));
|
||||||
assert.ok(buildMapCommands({ ...base, logUrl: 'http://x/api/logs/a/b' }).afterMapChange.includes('mp_endmatch_votenextmap 0'), 'keine Map-Abstimmung nach dem Match');
|
assert.ok(buildMapCommands({ ...base, logUrl: 'http://x/api/logs/a/b' }).afterMapChange.includes('mp_endmatch_votenextmap 0'), 'keine Map-Abstimmung nach dem Match');
|
||||||
|
assert.ok(buildMapCommands({ ...base, logUrl: 'http://x/api/logs/a/b' }).afterMapChange.includes('sv_deltaticks_enforce 0'), 'keine Trennung wegen Delta-Ticks');
|
||||||
assert.ok(ok.indexOf('log on') < ok.indexOf('changelevel de_nuke'));
|
assert.ok(ok.indexOf('log on') < ok.indexOf('changelevel de_nuke'));
|
||||||
const bad = buildMapCommands({ ...base, logUrl: 'http://x"; quit' }).beforeMapChange;
|
const bad = buildMapCommands({ ...base, logUrl: 'http://x"; quit' }).beforeMapChange;
|
||||||
assert.ok(!bad.some((c) => c.startsWith('logaddress')));
|
assert.ok(!bad.some((c) => c.startsWith('logaddress')));
|
||||||
|
|||||||
Reference in new issue
Block a user