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.amxxis not inplugins.ini, or thecsxmodule is not running. Checkamxx pluginsandamxx modules. - Ranks reset every map —
csstats_resetwas left at1. Set it to0after a deliberate wipe. - Ranking never persists across restarts — the server has no write permission to
addons/amxmodx/data/, socsstats.datcannot be saved. Fix the directory ownership. - New players push old ones out —
csstats_maxsizeis 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.









