Setting Up MapChooser / End-of-Map Voting

July 2, 2025 Daemon666 8 min read 12 visualizações

The stock mapchooser.amxx that ships with AMX Mod X pops a vote menu in the closing minutes of a map and switches to the winner. It needs no extra download, but it does need a real mp_timelimit, a sane candidate pool, and a load order that keeps it from fighting nextmap and any Rock The Vote plugin. This gets all three right.

1. Confirm the plugin is loaded

Open addons/amxmodx/configs/plugins.ini and make sure the line is present and not commented:

mapchooser.amxx
nextmap.amxx
timeleft.amxx

These three ship enabled in a default AMXX 1.9 install. From the server console, amxx plugins should list mapchooser.amxx as running. If it reads bad load, resolve that before configuring anything — see plugins.ini load order.

2. The vote fires off mp_timelimit — set it

mapchooser schedules its vote for the final minute or two of the time limit. With mp_timelimit 0 the map never ends and the vote never runs. Set a real limit in server.cfg:

mp_timelimit 30   // minutes

Round and win limits end a map early too, and when they do, mapchooser runs its vote at that point instead. The full mp_ family is in the mp_ cvars reference.

3. Tune the vote cvars

Put these in amxx.cfg or server.cfg:

amx_extendmap_max 90     // ceiling in minutes a map may be extended to
amx_extendmap_step 15    // minutes added each time "Extend" wins
amx_vote_ratio 0.02      // minimum fraction of players for a valid result
amx_vote_time 10         // seconds the vote menu stays open
amx_show_activity 2      // announce the outcome

The Extend option is the one to watch: without a sane amx_extendmap_max, a popular map gets extended for hours because the crowd keeps voting to stay. A max of 90 on a 30-minute limit allows two extensions, then forces a change.

4. Control which maps appear on the ballot

By default mapchooser draws its candidates at random from mapcycle.txt. That means the vote quality is only as good as your rotation: a bloated mapcycle full of maps nobody wants produces a bad ballot. Keep the cycle curated. Every candidate must exist as cstrike/maps/<name>.bsp and, if you host downloads, be on your FastDL mirror — a vote that resolves to a map the server cannot load drops everyone.

A common refinement is to keep a smaller, hand-picked pool of "vote maps" separate from the full rotation, so the ballot only ever offers maps you know play well with a crowd. Whatever pool you use, the same rule holds: the map name on the ballot, the .bsp on disk, and the file on FastDL must all agree. Mismatched names are the single most common reason a vote appears to succeed and then strands everyone on a black screen.

5. Stop the three vote plugins from colliding

mapchooser, nextmap, and any Rock The Vote plugin all want to decide the next map. Whichever registers its forward first tends to win, so order them deliberately in plugins.ini and do not run two end-of-map voters at once. The full walkthrough of pairing RTV with the end-map vote is in the RTV and nextmap guide. If you would rather not referee them by hand, the CSB Mapchooser plugin bundles the end-map vote, nominations and RTV so they share one decision path.

Troubleshooting

  • Vote never appearsmp_timelimit 0, or mapchooser.amxx is not running. The vote is scheduled off the time limit; no limit, no vote.
  • Vote appears but result is ignored — too few players to meet amx_vote_ratio, or another plugin overrode the next map afterward. Lower the ratio on small servers and check load order.
  • Map extends foreveramx_extendmap_max is too high or unset. Cap it.
  • Two vote menus at once — both mapchooser and an RTV plugin triggered an end-map vote. Disable one, or use a bundle that unifies them.
  • Vote loads a broken map — a candidate .bsp is missing from cstrike/maps/ or absent from FastDL. Keep the mapcycle and installed maps in sync.

Verification

On a test server set a short limit and force the endgame:

mp_timelimit 2
amx_vote_time 10

Connect, wait for the last minute, and confirm the vote menu opens, counts votes, and switches to the winner. Type say nextmap after the vote to confirm the scheduled map matches the result. Once it behaves, restore your real mp_timelimit and, if you want mid-map voting too, add Rock The Vote on top.

Colaboradores: Daemon666 ✦
Compartilhar: