Map voting on CS 1.6 is three separate pieces that people conflate: the nextmap plugin that announces and schedules the next map, the end-of-map vote (mapchooser), and Rock The Vote — a mid-map player-initiated vote to change early. Two of those ship with AMX Mod X; RTV does not, and knowing which is which saves a lot of confusion.
1. Know what AMX Mod X already gives you
A default AMX Mod X install (see installing AMXX 1.9) enables these in configs/plugins.ini:
nextmap.amxx— reads mapcycle.txt, powerssay nextmap, and forces the scheduled map at time limit.timeleft.amxx—say timeleftandsay thetime.mapchooser.amxx— the end-of-map vote menu that pops up in the final minutes.
None of these is Rock The Vote. RTV is a third-party plugin you add on top.
2. Configure the end-of-map vote (mapchooser)
By default mapchooser draws candidate maps from your mapcycle. You can pin an explicit pool instead with a votemap list at configs/maps.ini (one map per line). The cvars that matter live in amxx.cfg or server.cfg:
amx_extendmap_max 90 // total extra minutes a map may be extended to amx_extendmap_step 15 // minutes added each time "Extend" wins amx_vote_ratio 0.02 // fraction of players needed for a valid result amx_vote_time 10 // seconds the vote menu stays open
The vote fires in the closing minutes of mp_timelimit, so this whole system does nothing if mp_timelimit 0. Set a real time limit first — see the mp_ cvars reference.
3. Add a real Rock The Vote plugin
Install the RTV .amxx into addons/amxmodx/plugins/ and add its line to plugins.ini. Because RTV changes the map mid-round on demand, it needs guardrails so it cannot be spammed at round one:
// typical RTV cvars — confirm names against your plugin's own .sma/docs rtv_delay 15.0 // minutes into the map before RTV is allowed rtv_ratio 0.60 // fraction of connected players who must type rtv rtv_wait 5.0 // minutes between failed RTV attempts
RTV plugins are not standardized. Cvar names differ between the popular versions, so read the header of the exact .sma you deploy rather than copying a list. The three concepts above — delay, ratio, cooldown — exist in every good implementation, whatever they are named.
Load order matters: RTV, mapchooser and nextmap all want to control the next map, and the one that registers first wins the forward. Put your vote plugins in a deliberate order in plugins.ini — see plugins.ini load order. If you want a maintained pairing, the CSB Mapchooser plugin bundles RTV, nominations and the end-map vote so they do not fight each other.
4. Nominations and extend
Most RTV setups pair with a nominate command (say nominate or say /nominate) so players can push a specific map into the ballot. Keep the nomination pool identical to the vote pool — a map that can be nominated but is not installed produces a vote that resolves to a map the server then cannot load. The Extend option is governed by amx_extendmap_max and amx_extendmap_step above; set the max to a sane ceiling or a popular map gets extended for hours.
5. Make the schedule visible
Give players the commands so they use them instead of asking:
say nextmap // what plays next say timeleft // time remaining on this map say thetime // real-world server clock
An adverts plugin that periodically prints these keeps the chat calm near map end.
Common errors
- RTV "does nothing" — the ratio is unreachable on a low-population server (60% of 4 players is 3, and two of them are bots). Lower
rtv_ratiofor small servers. - Vote never appears at map end —
mp_timelimitis 0, ormapchooseris not inplugins.ini. The vote is scheduled off the time limit. - Two menus pop at once — RTV and
mapchooserboth triggered. Configure RTV to hand off to the end-map vote rather than run its own, or disable one. - Vote resolves to a missing map — your vote/nominate pool lists a map that is not in
cstrike/maps/. Keep the pool and the installed maps in sync. - Nextmap wrong after a vote — a plugin changed the scheduled map but
nextmapre-read the cycle. This is a load-order conflict; order the plugins deliberately.
Verification
Set mp_timelimit 2 on a test server, connect, and type rtv with enough clients (or bots plus a lowered ratio) to cross the threshold — the vote menu must appear and the winning map must load. Separately, let the two minutes expire without voting and confirm mapchooser runs and say nextmap matched the result. When both paths work, restore your real mp_timelimit.









