Skip to content

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): run csr version for 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 list lists Metamod plugins (native .so files): NodeMod, YaPB, etc.
  • amx_plugins lists NodeMod TypeScript plugins from addons/nodemod/configs/plugins.ini. It requires admin access (ADMIN_ADMIN). Output is sent with echo so 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 legacy libnodemod.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 032 How many ReGameDLL bots to keep in the game.
bot_difficulty 03 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.