Setting Up a Stats System (CSStats and Rankings)

July 2, 2025 Daemon666 8 min read 8 vistas

A working rank system keeps players coming back — they want to climb. On CS 1.6 the standard, no-database way to do this is the csx module that ships with AMX Mod X plus its bundled stats plugins. It tracks kills, deaths, headshots and objectives, computes a rank, and shows a HUD summary when you die. No MySQL, no external service; the data lives in one file on the server.

1. Confirm the csx module is loaded

Ranking is powered by the csx module, not a plugin alone. Check it is enabled in addons/amxmodx/configs/modules.ini (the line csx), then confirm at runtime from the server console:

amxx modules

csx must read running. If it is missing, ranking natives are unavailable and every stats plugin silently does nothing. The module is part of a normal AMX Mod X 1.9 install.

2. Enable the stats plugins

Two plugins do the visible work; add them to addons/amxmodx/configs/plugins.ini if they are commented out:

stats.amxx      ; rank commands: /rank /top15 /stats
statsx.amxx     ; HUD stats shown to a player when they die

Load order is not critical here, but keep them below admin.amxx as usual — see plugins.ini load order. Change the map after editing, because plugins.ini is only re-read on map change or restart.

3. Where the ranking is stored

The rank database is a single binary file:

cstrike/addons/amxmodx/data/csstats.dat

Every player's accumulated kills, deaths, headshots, hits and objective actions live here, keyed by SteamID. Back this file up — losing it wipes every rank. A few cvars control how it grows and behaves; set them in amxx.cfg or a dedicated config:

csstats_maxsize 3000    // max number of players kept in the ranking
csstats_reset 0         // set to 1 once to wipe the ranking, then back to 0
csstats_rank 1          // 1 = rank by an algorithm using K/D and more

Raise csstats_maxsize on a busy server or old players get pruned to make room; lower it if the file grows unwieldy. To wipe the ranking cleanly, set csstats_reset 1, change map once, then set it back to 0 so it does not wipe again on every load.

4. The commands players will use

Once stats.amxx runs, players get chat triggers:

say /rank      // your rank, kills, deaths, K/D, accuracy
say /top15     // the server leaderboard
say /stats     // detailed personal stats
say /statsme   // same, alternate trigger on some builds

Advertise these in your MOTD or with an adverts plugin so players discover them. The leaderboard is what drives the competition, so make /top15 visible.

5. Tune the death HUD (statsx)

statsx.amxx shows the "you killed / were killed by" breakdown after each death, and it has its own cvars to control how much detail appears:

amx_statsx_mode 1       // 0 off, 1 normal HUD, 2 detailed
amx_statsx_duration 12  // seconds the panel stays on screen
amx_statsx_freq 2       // how often the round-end summary is shown

Keep the duration short; a stats panel that lingers into the next round annoys players. The weapon icons and names shown come from addons/amxmodx/configs/stats.ini, which maps each weapon to its display — leave it alone unless you add custom weapons.

6. How the rank number is computed

Players will ask why their rank moved, so it helps to know the model. The csx ranking is not a raw kill count — it weighs kills against deaths, rewards headshots and objective actions (planting, defusing, hostage rescues), and normalizes so a player with 100 kills and 20 deaths outranks one with 200 kills and 250 deaths. Two consequences worth telling players: farming kills while dying constantly barely moves your rank, and objective play counts even when your K/D is mediocre. This is why csstats_rank 1 feels fairer than a pure frag ladder. If you would rather rank purely by kills, some builds accept an alternate value, but the default weighted model is what keeps a public server's ladder honest and is worth leaving on. The one thing that resets everyone's position is a wipe of csstats.dat, so guard that file.

Common errors

  • /rank returns nothing or "unknown command"stats.amxx is not in plugins.ini, or the csx module is not running. Check amxx plugins and amxx modules.
  • Ranks reset every mapcsstats_reset was left at 1. Set it to 0 after a deliberate wipe.
  • Ranking never persists across restarts — the server has no write permission to addons/amxmodx/data/, so csstats.dat cannot be saved. Fix the directory ownership.
  • New players push old ones outcsstats_maxsize is too small for your traffic. Raise it.
  • Stats count on a non-Steam server look wrong — ranks are keyed by SteamID, and if non-Steam IDs collide two people share one rank. Configure Reunion to hand out stable IDs.

Verification

Play a round, get a kill, then type say /rank — your kill count should increment. Restart the server and check /rank again; if your numbers survived the restart, csstats.dat is being written correctly. Finally, confirm the death HUD from statsx appears and clears within the duration you set. For a database-backed ranking that survives across multiple servers you would move to an SQL stats plugin, but for a single box the csx system above is the reliable default.

Colaboradores: Daemon666 ✦
Compartir: