diff --git a/.env.example b/.env.example index d02de84..8ecda7f 100644 --- a/.env.example +++ b/.env.example @@ -65,7 +65,7 @@ KNIFE_MAP=de_mirage KNIFE_WARMUP_SECONDS=90 KNIFE_MAX_SERVERS=4 # Anfang des Servernamens im Serverbrowser, danach folgen die Teamnamen -CS2_SERVERNAME_PREFIX=MaxLAN +CS2_SERVERNAME_PREFIX=Maxlan DOCKER_BIN=docker # --- Static-Pool-Adapter (SERVER_ADAPTER=static) --- diff --git a/README.md b/README.md index 6d525d3..b521e68 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ Die Wahl wird als `mp_teamname_1` (Team mit CT-Start) und `mp_teamname_2` (T-Sta - **Map-Bilder** liegen lokal unter `client/public/maps/.webp` (960 px breit, je ca. 50–90 KB). `"image"` in `map-pools.json` verweist darauf. Neue oder fehlende Bilder lädt `npm run images` von [ghostcap-gaming/cs2-map-images](https://github.com/ghostcap-gaming/cs2-map-images), verkleinert sie und trägt den Pfad ein (`npm run images -- --force` lädt alle neu). Die Bilder stammen aus dem Spiel; die Rechte liegen bei Valve. Ohne Bild zeigt die Kachel ein Muster in der Map-Farbe. - **Seiten-Embleme** für CT und T liegen unter `client/public/sides/ct.png` und `client/public/sides/t.png` (quadratisch, z. B. 256×256). Fehlt eine Datei, erscheint ein schlichtes Ersatzsymbol. -- **Logo und Farben:** Das MaxLAN-e.V.-Logo liegt freigestellt unter `client/public/brand/maxlan-logo.webp`. Die Farben stehen als Variablen am Anfang von `client/src/styles.css`: Logo-Blau `#344A99` für Team A und Hauptbuttons, Logo-Rot `#A72A1C` für Team B und den Abschluss der Kopfzeile, jeweils aufgehellt für die Lesbarkeit. +- **Logo und Farben:** Das Maxlan-e.V.-Logo liegt freigestellt unter `client/public/brand/maxlan-logo.webp`. Die Farben stehen als Variablen am Anfang von `client/src/styles.css`: Logo-Blau `#344A99` für Team A und Hauptbuttons, Logo-Rot `#A72A1C` für Team B und den Abschluss der Kopfzeile, jeweils aufgehellt für die Lesbarkeit. - Bestehende Matches behalten die Map-Liste, mit der sie erstellt wurden. Neue Bilder erscheinen in neu erstellten Matches. > Die mitgelieferten Map-Pools entsprechen dem Stand der Entwicklung. Valve ändert den aktiven Map-Pool regelmäßig. Map-IDs bitte gegen die eigene Serverinstallation prüfen. Eine Map, die nicht existiert, führt zu „Konfiguration fehlgeschlagen“ mit Meldung. @@ -274,7 +274,7 @@ Jeder Host braucht eigene Spieldateien (rund 60 bis 90 GB). Die Ports müssen au Im Admin-Bereich (Reiter „Matches“) startet „Messer-Server starten“ einen Gameserver, der keinem Match gehört und dauerhaft läuft. Teams verbinden sich, spielen eine Messerrunde und gehen wieder. - Modus wählbar: **Competitive 5v5** (12 Plätze, Maps aus dem Competitive-Pool) oder **Wingman 2v2** (6 Plätze, Maps aus dem Wingman-Pool). -- Offen, ohne Passwort, sichtbar im LAN-Reiter von Steam (`MaxLAN | Messer 1 5v5 (Seitenwahl)`) und auf der Startseite mit „Verbinden“. +- Offen, ohne Passwort, sichtbar im LAN-Reiter von Steam (`Maxlan | Messer 1 5v5 (Seitenwahl)`) und auf der Startseite mit „Verbinden“. - Nur Messer, kein Geld, eine Runde. Vorher läuft eine Aufwärmphase zum Verbinden (`KNIFE_WARMUP_SECONDS`, Standard 90). Nach der Runde startet das Spiel von selbst neu (`mp_match_end_restart`). Wird der Server leer, setzt die App ihn zusätzlich zurück. - Fällt ein Messer-Server aus, startet die App ihn neu, höchstens fünfmal in Folge. Danach steht er auf „ausgefallen“ und lässt sich im Admin-Bereich neu starten. - Knöpfe pro Server: „Runde starten“ (Aufwärmphase sofort beenden), „Zurücksetzen“, „Neu starten“ (neuer Container), „Entfernen“. @@ -288,7 +288,7 @@ Der LAN-Reiter des Steam-Serverbrowsers (Steam → Ansicht → Spielserver → L - Pro Host lassen sich die LAN-Ports in `CS2_DOCKER_HOSTS` mit `"lanPorts":"27016-27019"` einschränken, wenn dort schon etwas anderes auf einem dieser Ports läuft. `"lanPorts":""` schaltet es für einen Host ab. Im Admin-Bereich steht das in der Spalte „LAN-Ports (Steam)“. - Ist ein Port trotzdem belegt, versucht der Start automatisch die nächsten freien Ports. - Server auf LAN-Ports laufen im Netz des Hosts (`--network host`), weil die Port-Weiterleitung von Docker die Suchanfragen (Broadcasts) des Serverbrowsers nicht weitergibt. Die Firewall des Hosts muss die Ports deshalb selbst erlauben. -- Der Servername im Browser ist `MaxLAN | Team A vs. Team B`. Den Anfang ändert `CS2_SERVERNAME_PREFIX`. +- Der Servername im Browser ist `Maxlan | Team A vs. Team B`. Den Anfang ändert `CS2_SERVERNAME_PREFIX`. - Die Server sind mit Passwort geschützt und zeigen ein Schloss. Ohne `CS2_GSLT` laufen sie mit `sv_lan 1` und erscheinen nicht im Internet-Reiter. ### Option B: Vorhandene Server (`SERVER_ADAPTER=static`) @@ -499,7 +499,7 @@ Alle Variablen mit Standardwerten stehen in [`.env.example`](.env.example). Die | `CS2_PORT_RANGE_START`, `CS2_PORT_RANGE_END` | `27015`, `27115` | Bereich der Spielports; CSTV liegt jeweils `CS2_TV_PORT_OFFSET` darüber | | `CS2_LAN_PORTS` | `27015-27020` | Spielports für den LAN-Reiter von Steam, werden zuerst vergeben; leer = aus | | `CS2_TV_PORT_OFFSET` | `100` | Abstand CSTV-Port zum Spielport (27015 → 27115) | -| `CS2_SERVERNAME_PREFIX` | `MaxLAN` | Anfang des Servernamens im Serverbrowser | +| `CS2_SERVERNAME_PREFIX` | `Maxlan` | Anfang des Servernamens im Serverbrowser | | `CS2_START_TIMEOUT_MINUTES` | `20` | Startzeit eines Servers inklusive Download der Spieldateien | | `KNIFE_MAP` | `de_mirage` | Standard-Map für Messer-Server | | `KNIFE_WARMUP_SECONDS` | `90` | Zeit zum Verbinden, bevor die Messerrunde beginnt | diff --git a/client/index.html b/client/index.html index c0bd84c..7534055 100644 --- a/client/index.html +++ b/client/index.html @@ -4,7 +4,7 @@ - CS2 Mapveto – MaxLAN e.V. + CS2 Mapveto – Maxlan e.V. diff --git a/client/src/App.jsx b/client/src/App.jsx index 0247fea..e5ea837 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -32,8 +32,8 @@ function MainLayout() { return (
- - MaxLAN e.V. + + Maxlan e.V. CS2 Mapveto {config?.server.simulated && ( diff --git a/client/src/pages/StreamOverviewPage.jsx b/client/src/pages/StreamOverviewPage.jsx index cc1f6c0..b48d3c8 100644 --- a/client/src/pages/StreamOverviewPage.jsx +++ b/client/src/pages/StreamOverviewPage.jsx @@ -46,7 +46,7 @@ export default function StreamOverviewPage() { return (
- MaxLAN e.V. + Maxlan e.V.

Stream-Übersicht nicht verfügbar

{error}

@@ -64,7 +64,7 @@ export default function StreamOverviewPage() {
- MaxLAN e.V. + Maxlan e.V.
Counter-Strike 2 {liveCount > 0 && {liveCount} live} diff --git a/client/src/pages/StreamPage.jsx b/client/src/pages/StreamPage.jsx index e5d9e12..96ce3ec 100644 --- a/client/src/pages/StreamPage.jsx +++ b/client/src/pages/StreamPage.jsx @@ -67,7 +67,7 @@ export function ScaledStage({ children }) { function StreamMessage({ title, text }) { return (
- MaxLAN e.V. + Maxlan e.V.

{title}

{text &&

{text}

}
@@ -99,7 +99,7 @@ function StreamContent({ matchId, code }) { return (
0 ? 'has-maps' : 'no-maps'}`}>
- MaxLAN e.V. + Maxlan e.V.
Counter-Strike 2 {state.modeLabel} diff --git a/client/src/styles.css b/client/src/styles.css index fc140cb..58af54d 100644 --- a/client/src/styles.css +++ b/client/src/styles.css @@ -1,6 +1,6 @@ /* ---------- Tokens ---------- */ :root { - /* MaxLAN-Farben aus dem Logo: Blau #344A99, Rot #A72A1C auf Schwarz */ + /* Maxlan-Farben aus dem Logo: Blau #344A99, Rot #A72A1C auf Schwarz */ --brand-blue: #344a99; --brand-red: #a72a1c; diff --git a/docs/Spieler-Anleitung.pdf b/docs/Spieler-Anleitung.pdf index 674f7e0..c129a0a 100644 Binary files a/docs/Spieler-Anleitung.pdf and b/docs/Spieler-Anleitung.pdf differ diff --git a/server/src/config.js b/server/src/config.js index d145ca0..30e7741 100644 --- a/server/src/config.js +++ b/server/src/config.js @@ -155,7 +155,7 @@ export function loadConfig(overrides = {}) { // Abstand des CSTV-Ports zum Spielport, z. B. Spiel 27015 -> CSTV 27115 tvPortOffset: int('CS2_TV_PORT_OFFSET', 100), // Anfang des Servernamens im Serverbrowser, danach folgen die Teamnamen - serverNamePrefix: str('CS2_SERVERNAME_PREFIX', 'MaxLAN'), + serverNamePrefix: str('CS2_SERVERNAME_PREFIX', 'Maxlan'), // Optional: mehrere Docker-Hosts als JSON-Liste, z. B. // [{"name":"host1","dockerHost":"ssh://cs2@192.168.178.111","publicHost":"192.168.178.111","portStart":27100,"portEnd":27139}] hosts: parseDockerHosts(str('CS2_DOCKER_HOSTS')), diff --git a/server/src/servers/dockerAdapter.js b/server/src/servers/dockerAdapter.js index 7305a7a..507410e 100644 --- a/server/src/servers/dockerAdapter.js +++ b/server/src/servers/dockerAdapter.js @@ -90,7 +90,7 @@ export class DockerServerAdapter { return plan; } - /** Servername im Steam-Serverbrowser, z. B. "MaxLAN | Team A vs. Team B". */ + /** Servername im Steam-Serverbrowser, z. B. "Maxlan | Team A vs. Team B". */ serverName(matchId, teamNames) { const prefix = this.options.serverNamePrefix ? sanitizeConsoleText(this.options.serverNamePrefix, 24) : ''; if (!teamNames) return `${prefix} ${matchId}`.trim();