Server Administrators
Starting a Dedicated Server
./tools.sh run:server
# or with options:
MAP=de_inferno MAXPLAYERS=16 PORT=27015 ./tools.sh run:server
Configuration
Game data lives in game-test/cstrike/. Key files:
| File | Purpose |
|---|---|
gameinfo.txt |
Points engine to game DLL (Metamod or direct cs.so) |
server.cfg |
Server configuration (executed on map start) |
listenserver.cfg |
Listen server configuration |
addons/metamod/dlls/plugins.ini |
Metamod plugin list |
addons/nodemod/configs/plugins.ini |
NodeMod plugin list |
Metamod
Metamod-fwgs sits between the engine and the game DLL, enabling server plugins.
- Installed to:
cstrike/addons/metamod/dlls/csr_metamod_amd64.so - Config:
cstrike/addons/metamod/dlls/config.ini - Plugins:
cstrike/addons/metamod/dlls/plugins.ini
When built and installed, gameinfo.txt automatically points to Metamod as the game DLL.
Metamod loads dlls/csr_cstrike_amd64.so internally via config.ini (symlinks cs_amd64.so / cs.so may exist for compatibility).
meta console commands
Use the meta prefix in the server or (if enabled) client console. Typical commands:
| Command | Description |
|---|---|
meta version |
Metamod version |
meta list |
Loaded plugins and status |
meta game |
Game DLL / registered messages |
meta cmds |
Console commands registered by plugins |
meta cvars |
CVars registered by plugins |
meta refresh |
Reload Metamod configuration |
meta config |
Show Metamod config-related settings |
meta load <path> |
Load a plugin from path |
meta unload <name> |
Unload a plugin |
meta reload <name> |
Reload a plugin |
meta info <name> |
Plugin information |
meta pause <name> / meta unpause <name> |
Pause / resume plugin |
Metamod cvars (examples; set in config.ini or console): clientmeta (allow client meta commands), debuglevel, gamedll, exec_cfg. CSRetro paths differ from classic HLDS — use cstrike/addons/metamod/dlls/ as in Configuration above.
CSRetro Commands
csr version
csr version
- Server console (dedicated terminal, listen server log, or RCON): prints the full component table from the game DLL.
- Client developer console (
~in-game): runcsr versionfor the same information plus client DLL build number (cscl_ver/ internal build).
csr version lists CS Retro build identifiers baked into each binary (from VENDOR.md at configure time). meta list / meta version show loaded Metamod plugins at runtime (file names and plugin versions). Vendor table (VENDOR.md) documents the same revision table as the repo-root VENDOR.md.
Example (server console; exact revisions depend on your build):
------------------------------------------------------------
CS Retro 1.0.0 — Counter-Strike 1.6 on Xash3D FWGS (x64)
Monorepo revision: abcdef1 Configure date: 2026-03-23
All components below are CS Retro builds (modified for this project even
when a version label matches another public project).
Component Version / revision
----------------------- ----------------------------------------
Engine (Xash3D FWGS) revision ec1a65c
Client (cs16-client) revision 8009c16
Metamod (FWGS fork) revision 561fa50
NodeMod revision bf87e3f
ReGame DLL + game bot version 5.30.0 (csr_cstrike_*.so)
YaPB bot plugin version 4.5 (csr_yapb_*.so)
Runtime plugins: run "meta version" and "meta list" on this server.
------------------------------------------------------------
On the client, csr version adds client DLL build number (cscl_ver) plus the same component table.
The same one-line banner is printed automatically at server startup. The main menu background shows a compact summary.
NodeMod admin: amx_plugins and consoles
meta listlists Metamod plugins (native.sofiles): NodeMod, YaPB, etc.amx_pluginslists NodeMod TypeScript plugins fromaddons/nodemod/configs/plugins.ini. It requires admin access (ADMIN_ADMIN). Output is sent withechoso it appears in the in-game~console reliably (not only the server terminal).
If you see no output from admin commands in-game, ensure you have admin flags (e.g. users.ini) or, on a listen server, enable amx_listen_host_admin 1 (default): loopback clients on a non-dedicated server get full admin so amx_plugins works from ~.
amx_modules is a stub (NodeMod has no separate AMXX-style module layer); use amx_plugins instead.
MOTD on player join
On every map load (ServerActivate), the server automatically writes motd_csretro.txt to the game directory and points the motdfile CVAR at it. Players see a brief CSRetro description and component versions in the MOTD window when they join.
The MOTD content:
=== CS Retro 1.0.0 ===
Counter-Strike 1.6 on Xash3D FWGS (x64)
CS Retro stack — every component is built and shipped for CS Retro.
Engine Xash3D FWGS revision ec1a65c
Client cs16-client revision 8009c16
Metamod metamod-fwgs revision 561fa50
NodeMod nodemod-goldsrc revision bf87e3f
ReGame bot: v5.30.0 (csr_cstrike_*.so)
YaPB bot: v4.5 (Metamod plugin csr_yapb_*.so)
Console: csr version | Plugins: meta list / meta version
NodeMod
NodeMod provides a Node.js runtime for server-side TypeScript/JavaScript plugins.
- Installed to:
cstrike/addons/nodemod/dlls/libcsr_nodemod.so(or legacylibnodemod.so) - Plugins directory:
cstrike/addons/nodemod/plugins/ - Config:
cstrike/addons/nodemod/configs/plugins.ini
Console Variables (Server)
ReGameDLL built-in bots (game DLL)
These apply to the ReGameDLL bot system inside csr_cstrike_amd64.so (not YaPB):
| Cvar | Typical | Description |
|---|---|---|
bot_quota |
0–32 |
How many ReGameDLL bots to keep in the game. |
bot_difficulty |
0–3 |
ReGameDLL bot skill. |
bot_join_team |
any / T / CT |
Which team bots prefer. |
Set in server.cfg or console. Use either ReGameDLL bots or YaPB for bots — running both without care is confusing.
YaPB (Metamod plugin)
YaPB uses yb_* CVars. Important ones:
| Cvar | Description |
|---|---|
yb_quota |
Target bot count / fill behaviour (see yb_quota_mode). |
yb_quota_mode |
fill (keep N players), match (ratio vs humans), or normal. |
yb_quota_match |
Bots per human when mode is match. |
yb_difficulty |
YaPB skill band. |
See YaPB for the full yb_* list and paths (addons/yapb/conf/), and Server CVARs for a consolidated server reference.
Game / server rules (common)
| Cvar | Default | Description |
|---|---|---|
amx_listen_host_admin |
1 |
Listen server only: grant full NodeMod admin to loopback (127.0.0.1) clients when not dedicated (0 = off; use configs/users.ini only). |
sv_lan |
0 |
LAN-only mode (1 = no Steam auth) |
mp_timelimit |
25 |
Round time limit in minutes |
mp_maxrounds |
0 |
Max rounds (0 = unlimited) |
mp_friendlyfire |
0 |
Friendly fire |
Bot Menu (csr_botmenu)
The csr_botmenu NodeMod plugin provides an in-game bot management menu.
- Default bind:
h(command menu),p(bot menu) - Server-side: bot quota and difficulty can be adjusted in
server.cfg - See NodeMod for plugin setup.