---
name: cs2-server-dedicato
description: Manuale operativo del server dedicato di Counter-Strike 2: installazione con SteamCMD, parametri della riga di comando, game_type/game_mode, ordine di esecuzione dei file .cfg, catalogo delle cvar (economia, round, respawn, armi, bot, rete, log), RCON, query A2S, GSLT, mappe del Workshop e diagnostica dei sintomi tipici. USA SEMPRE questa skill quando si parla di server CS2, srcds, cs2.exe, SteamCMD, server.cfg, gamemode_*.cfg, cvar mp_ o sv_ o bot_, rcon, GSLT, slot del server, warmup, mappe workshop, "non riesco a entrare nel server", "non mi muovo", "il server non parte" — anche quando la richiesta e' formulata come un problema di gioco e non come un problema di server. Vale sia per il server di King of the Olympus (cartella server/ di questo repo) sia per qualsiasi altro dedicato CS2.
---

# Server dedicato CS2 — manuale operativo

Le informazioni qui dentro sono di due tipi, e la distinzione conta:

- quelle **verificate su questo server** (build 24442510, Windows, Metamod 2.0 b1410 +
  CounterStrikeSharp 1.0.371), marcate dove serve;
- quelle **dalla documentazione pubblica** (Valve Developer Community e guide di hosting),
  utili ma non tutte vere per CS2: molte fonti riciclano ancora liste di CS:GO.

Da cui la regola che vale sempre: **una cvar esiste solo se il server te lo conferma.**
Le cvar inesistenti scritte in un `.cfg` passano in silenzio — nessun "Unknown command"
nel log — quindi la verifica va fatta interrogandole via RCON, una per una.

## Dove guardare

| Se devi... | Leggi |
|---|---|
| installare o aggiornare il server, aprire le porte, generare il GSLT | `references/01-installazione.md` |
| avviare il server, scegliere la modalita', usare mappe del Workshop | `references/02-avvio-e-modalita.md` |
| capire quale file .cfg viene eseguito quando, e dove mettere una regola | `references/03-file-di-configurazione.md` |
| trovare la cvar giusta: economia, round, respawn, armi, bot, rete, log | `references/04-cvar-e-comandi.md` |
| amministrare da remoto, leggere i log, interrogare il server dall'esterno | `references/05-rcon-log-e-query.md` |
| capire perche' qualcosa non funziona | `references/06-diagnostica.md` **(parti da qui, non dalle ipotesi)** |
| lavorare sul server concreto di questo repo | `references/07-questo-server.md` |

## I cinque fatti che spiegano meta' dei problemi

**1. `-maxplayers` viene ignorato da CS2.** Lo switch giusto per il dedicato e'
`-maxplayers_override`. Con quello sbagliato il log dice `numSlots 0` e nessuno entra —
nemmeno i bot. E `status` riporta `(0 max)` **sempre**, anche quando gli slot ci sono: la
verita' e' nel `console.log`, alla riga `SV: maxplayers set to N`.

**2. Le regole di gioco vanno in `gamemode_<modo>_server.cfg`, non in `server.cfg`.**
Quelle in `server.cfg` vengono sovrascritte dal gamemode config a ogni cambio mappa. In
`server.cfg` ci stanno identita', rete, RCON, log: le cose che non riguardano le regole.

**3. Il GSLT deve stare sulla riga di comando** (`+sv_setsteamaccount <token>`). Il login
a Steam avviene *prima* che CS2 esegua `server.cfg`, quindi un token scritto li' arriva
troppo tardi e viene ignorato in silenzio: il server ripiega sul login anonimo e i client
vengono rifiutati con "l'appID specificato dal server non e' valido".

**4. CS2 non avvia un round finche' non c'e' almeno un giocatore per schieramento.** Chi
entra da solo, con il riscaldamento spento, resta **immobile** con il timer a `0:00`. Non
e' un bug: il riscaldamento e' lo stato di attesa in cui si puo' camminare e sparare.
`mp_do_warmup_period` non esiste in CS2 — l'interruttore vero e' `mp_warmuptime`.

**5. `mp_maxrounds 0` non significa "nessun limite".** CS2 lo legge come "zero round da
giocare": appena qualcuno entra e sceglie una squadra la partita risulta gia' conclusa,
i giocatori restano congelati in intermission e la chat non si apre. Metti un numero alto.

## Il ciclo di lavoro tipico

```
SteamCMD (app 730)  →  cs2.exe con i parametri  →  server.cfg (identita', rete)
                                                →  gamemode_<modo>_server.cfg (regole)
                                                →  eventuali plugin
```

Modificare una regola significa quasi sempre: cambiare la riga in
`gamemode_<modo>_server.cfg`, poi `mp_restartgame 1` o un cambio mappa per rileggerla —
oppure, se serve subito, mandarla via RCON e ricopiarla nel file dopo.

## Comandi che si usano ogni giorno

```
status                       chi c'e', mappa, steamid del server
meta list                    Metamod e i suoi plugin (compreso CounterStrikeSharp)
css_plugins list             i plugin CounterStrikeSharp caricati
changelevel <mappa>          cambia mappa
mp_restartgame 1             riavvia il round applicando le cvar
mp_warmup_end                chiude il riscaldamento
bot_add_t / bot_add_ct       aggiunge un bot (serve bot_join_after_player 0 se sei solo)
sv_cheats 1                  abilita i comandi di test
```

## Sicurezza e buon senso

`rcon_password` e GSLT sono **credenziali**: non finiscono in un repository, non si
incollano in chat, non si mettono in un file condiviso. In questo repo il `.gitignore`
esiste anche per questo. Se un token e' stato esposto, si rigenera su
<https://steamcommunity.com/dev/managegameservers>.

Vale anche la pena sapere che certe funzionalita' dei plugin fanno **bannare i GSLT**
secondo le linee guida di Valve per i server: CounterStrikeSharp ha l'opzione
`FollowCS2ServerGuidelines` attiva di default proprio per bloccarle, e disattivarla e' una
scelta a proprio rischio.
