I have been running a server with dynamic slots and mapcycle based on current players population and it's working great. The only problem with my current approach is that it's very possible to play the same map twice in a row.
In the commands.txt I got my "mapcycles" set up like so:
Code:
small1 'sv_maxplayers 8;map carousel ss;say * "Next Map: Derelict Slayer Snipers"' 4
.
.
.
small16 'sv_maxplayers 8;map wizard tss;say * "Next Map: Wizard TeamSlayer Snipers"' 4
mid1 'sv_maxplayers 12;map hangemhigh tss;say * "Next Map: HangEmHigh TeamSlayer Snipers"' 4
.
.
.
mid16 'sv_maxplayers 12;map bloodgulch caketheflag10m;say * "Next Map: Bloodgulch CTF"' 4
big1 'sv_maxplayers 16;map timberland caketheflag10m;say * "Next Map: Timberland CTF"' 4
.
.
.
big16 'sv_maxplayers 16;map icefields cakephobia10m;say * "Next Map: Icefields CTF"' 4
And then in the events.txt I switch to the next map in one of the "mapcycles" based on the current number of players:
Code:
event_end $mode!:cbctf $mode!:twl2v2 $mode!:twlassault $pn<8 'small$rand'
event_end $mode!:cbctf $mode!:twl2v2 $mode!:twlassault $pn>7 $pn<12 'mid$rand'
event_end $mode!:cbctf $mode!:twl2v2 $mode!:twlassault $pn>11 'big$rand'
Hopefully one day we will get the
Code:
event_end $pn<8 'mapcycle:smallmapcycle.txt'
command but right now I feel it's the next best thing 
Another nice addition would be arguments in the mapcycle.txt like
Code:
$pn>8bloodgulch:ctf
$pn<8 beavercreek:slayer
ratrace:ctf
beavercreek:teamslayer
So it would only execute certain entries of the mapcycle if the argument is valid
Bookmarks