https://forums.alliedmods.net/showthread.php?t=134190 This plugin would replace the existing RTV and nominate options and replace them with it's own cvars (that are all but identical), while also providing vastly more control over which maps are added to votes by default, as well as which maps are available to be nominated by players. While the link above goes into great detail explaining all the uses that the plugin has for really tweaking what maps show up and how often (including weighting the likelihood of certain map types to show up), I feel that the server could benefit from this in 2 simple ways. (and then 2 more ways that I just think are neat). 1. Allowing players to see "sub-menus" of map categories when they type !nominate in chat. So that they can quickly jump to whatever category of map they want to select instead of scrolling through dozens of pages alphabetically to do so. I've included the picture below as an example, but also note that admins can create their own custom category of maps as well, for instance a Christmas or Halloween category. 2. Removing certain maps from the nominate list when the server has greater/fewer than X number of players on. This would apply mostly to small KOTH maps, but possibly to other maps as well that do not play well on a full server, but are fun otherwise. This would help prevent the server turning into a clusterfuck and everyone screaming to RTV when going from 32 players on beerbowl to something like nucleus or fith_boxing when players aren't expecting it. Conversely this could also remove certain 5 CP or large PLR maps from the nominate list when there are only a handful of players and those maps are just too large. These are configurable on a per-map or per-catory basis so it can all be changed extremely easily with a few brackets and simple lines of code. Those are the two big appeals for this plugin, these next two aren't things that some players may notice or care about, but I think are neat (and are completely optional/configurable within the plugin) 3.Runoff votes. If a single map doesn't win a majority, it can be set up to have a runoff vote between the winners until there is one. 4. Blocking the first 3 slots in the vote to prevent accidental voting. This will cut down on the first option winning at least 60-70% of the time simply because players click to remove the menu from their screen, or they happen to be switching weapons or something at the time (as this uses the number pad #s, not the F#s).
3 and 4 would be appreciated more than 1 and 2, imo. It's always annoying when the map the server least wants wins because it was otherwise divided among a few other good choices.
Using the existing nominate list, I put together what an option could be for implementing the various map categories. ctf_haarp, snowdrift, and slate are attack/defend maps that use the flag to capture, so I'm not sure if those would better fall under the Attack & Defend category instead. "umc_rotation" { "Symmetrical Control Points" { “maps_invote” “1” "cp_abyss_b81" {} "cp_antiquity_rc1" {} "cp_axle_rc1" {} "cp_badlands_pro" {} "cp_croissant_final" {} "cp_follower" {} "cp_foundry" {} "cp_freight_final1" {} "cp_geomance_rc" {} "cp_glassworks_rc6a" {} "cp_gothic" {} "cp_granary_pro_rc8" {} "cp_gullywash_final1" {} "cp_indulge" {} "cp_konkreet" {} "cp_labor" {} "cp_mainline_rc5" {} "cp_mannbase_b15b" {} "cp_metalworks" {} "cp_miningco_b4_fix" {} "cp_obscure_remake_ugc_rc2" {} "cp_powerhouse" {} "cp_process_final" {} "cp_prolane_v4" {} "cp_science2" {} "cp_shelter_rc2" {} "cp_snakewater" {} "cp_standin_final" {} "cp_sulfur_rc2" {} "cp_sunshine" {} "cp_toy_fort_alt2" {} "cp_vanguard" {} "cp_villa_b17a" {} "cp_warmfront" {} "cp_warpath2_u4" {} "cp_well" {} "cp_yukon_final" {} } "Attack & Defend" { “maps_invote” “0” "cp_alloy_rc3" {} "cp_amaranth_rc1b" {} "cp_desperados_b2" {} "cp_dustbowl_pro_v2" {} "cp_egypt_final" {} "cp_ferrum_rc1" {} "cp_forest_shrine_a15" {} "cp_fulgur_rc2a" {} "cp_furnace_rc" {} "cp_glacier_rc6" {} "cp_gorge" {} "cp_gravelpit" {} "cp_hadal_b13a" {} "cp_haddou" {} "cp_hazyfort_rc6" {} "cp_ironworks_b2" {} "cp_mercenarypark" {} "cp_mossrock" {} "cp_mountainlab" {} "cp_overgrown_rc7b" {} "cp_osiris_b15" {} "cp_redfort_b3" {} "cp_rumble_rc5" {} "cp_sakura_hill_72c" {} "cp_scourge_b4" {} "cp_silvertrail_b5" {} "cp_skull_island_b2" {} "cp_snowbase_b5_s2" {} "cp_steel" {} "cp_treehouse_b4" {} "cp_vigor_b2" {} } "Capture the Flag" { “maps_invote” “1” "ctf_2bine_v1" {} "ctf_chaos" {} "ctf_convoy_storm_b1" {} "ctf_doublecross" {} "ctf_haarp" {} "ctf_hotspring_b3a" {} "ctf_landfall" {} "ctf_mach4" {“max_players” “20” } "ctf_pipedream_rc3" {} "ctf_powerhouse_night" {} "ctf_slate_b2" {} "ctf_snowdrift_b4a" {} "ctf_turbine_pro_b1" {} "ctf_urbanbrook_rc" {} "ctf_vitalism_b2" } "Payload" { “maps_invote” “2” "pl_5curve" {} "pl_alpen_rc1 {} "pl_amaryllis_b2" {} "pl_angkor_rc2" {} "pl_badwater_pro_v12" {} "pl_barnblitz_pro8" {} "pl_beerbowl_b5a" {} "pl_beerbowl_b6a" {} "pl_beerbowl_b6b" {} "pl_beerbowl_b7" {} "pl_beerbowl_b7c" {} "pl_beerbowl_rc1" {} "pl_blastpitt_rc3" {} "pl_borneo" {} "pl_boundary_final1" {} "pl_boxcanyon_rc9" {} "pl_buzznest_b3" {} "pl_cannonburg_b2" {} "pl_cashworks_final1" {} "pl_cavern_b7f" {} "pl_clifftop_b3" {} "pl_cornfarm_rc" {} "pl_cranetop_b8" {} "pl_deadwood" {} "pl_enclosure_final" {} "pl_erosion_b1" {} "pl_escarpment_rc1" {} "pl_farmstead_rc1" {} "pl_frontier_final" {} "pl_gloryhole_b1" {} "pl_goldrush" {} "pl_goodwater" {} "pl_great_heights_b3" {} "pl_halfacre" {} "pl_hatfactory55" {} "pl_haywire_rc5" {} "pl_highwood_b19" {} "pl_hoodoo_final" {} "pl_humidity_rc5" {} "pl_lionroar_rc1" {} "pl_manngrove_rc5" {} "pl_mesaworks_rc3" {} "pl_metropolis_b5" {} "pl_midwest_b25" {} "pl_millstone_v3" {} "pl_mineshaft_final_rc9" {} "pl_moonbase_rc3" {} "pl_mountainside_rc2" {} "pl_narrows_a130" {} "pl_oasis_b4" {} "pl_olympia_a26" {} "pl_operandi_a14" {} "pl_outback_rc4" {} "pl_pharoah_rc1" {} "pl_pier" {} "pl_quagmire" {} "pl_rebirth_rc1" {} "pl_rivercrossing_rc2a" {} "pl_rocketravine_b6" {} "pl_rust" {} "pl_shoreleave_rc1" {} "pl_sludgepit_final4" {} "pl_snowycoast" {} "pl_summercoast_b7" {} "pl_swiftwater_final1" {} "pl_thundermountain" {} "pl_upward" {} "pl_vesper_b4" {} "pl_vigil_rc7" {} "pl_volcanic_a26" {} "pl_warpath_b7" {} "pl_yosai_b3a" {} "mpl_losthorizon_b10" {} } "Payload Race" { “maps_invote” “0” "default_min_players" "12" "plr_animus_a8" {} "plr_bananabay" {} "plr_fishladder3" {} "plr_frostfell_b2" {} "plr_guavagulf_a7b" {} "plr_hierarch_rc2b" {} "plr_highwind_a5" {} "plr_hightower" {} "plr_nightfall_final" {} "plr_panic_b2" {} "plr_pipeline" {} "plr_solitude_b1" {} "plr_upward_rc2" {} "plr_valentine_b2" {} "plr_yuno_b1" {} "pl_waste_v2" {} } "King of the Hill" { "maps_invote" "0" "default_max_players" "24" "koth_ahau_rc2" {} "koth_arctic_b3" {} "koth_brazil" {} "koth_coalplant_b7" {} "koth_coulee_b4_fix" {} "koth_chasm_b1" {} "koth_dewm_rc1" {} "koth_databank_rc2" {} "koth_dockyard" {} "koth_garbage_day" {} "koth_hangar_rc2" {} "koth_harvest" {} "koth_highpass" {} "koth_kemptown_rc1" {} "koth_lakeside" {} "koth_lazarus" {} "koth_lighthouse_rc5" {} "koth_moonshine" {} "koth_nerve" {} "koth_nucleus" {} "koth_occult_rc6" {} "koth_oilfield" {} "koth_viaduct" {} "koth_sawmill" {} "koth_slaughter_b2a" {} "koth_suijin" {} "koth_synthetic_rc6a" {} "koth_waste" {} "koth_wetrock_b12" {} } "Holiday" { "maps_invote" "0" "cp_5gorge_xmas" {} "cp_snowlodge_b5" {} "ctf_snowfall_final" {} "pd_snowville_event" {} "pl_coldrush_rc1" {} "pl_coldwater_rc2" {} "pl_wutville_event" {} "plr_snowthistle_b3" {} } "Silly, Medieval, and Other" { "maps_invote" "0" "billiards" {} "cp_arena_trains_b2" {} "cp_burghausen_rc1" {} "cp_degrootkeep" {} "cp_kakariko_a3" {} "cp_kuriast" {} "cp_orange_final" {} "cp_orangezone_45" {} "cp_redfort_b5" {} "cp_rooftime_nm3" {} "cp_wetlands" {} "ctf_darktower" {} "ctf_eggwar_b2" {} "dom_canalzone2_b4" {“min_players” “24”} "dom_cliffhanger_b11" {“min_players” “24”} "fith_boxing_b2a" {} "koth_blast_b3p" {} "koth_dropdeadfred_v3" {} "koth_falling" {} "koth_lolcano_b3" {} "koth_megaman6" {} "koth_nippletwister_a3" {} "koth_sandvich_b1" {} "koth_skywalker1" {} "koth_wubwubwub_remix_vip" {} "pd_elvvis2" {} "pd_ritual_a7" {} "pd_watergate" {} "pl_minepit" {} "pl_yamashiro_medieval_b3" {} "plr_highertower" {} "plr_whalerace_a4a" {} } }
Good suggestion, seems like it would be a good fit. I'll take a look at it. Need to test and ensure this is compatible with our other stuff, note how to turn the current system off without destroying it, etc.
Met with Gary and Clutch to discuss this plugin. Keep an eye on the Fucked Admin area for more details regarding this.
I've been working on this. I have it in place on our second server. Finally got it functional and running. Now we just need to get it configured and then I can move everything over to the main server.
I got it working well enough that I put it on the main server. Congratulations you're all beta testers!
Glad the plugin is implemented and that it seems to be having a general positive response 1. It looks like some of the maps from the code I linked back in December have been updated since then. I looked around on the forums and hopefully this is a comprehensive list. I'll see if I can put together something more complete though. If someone could post the current new nominate list and the various categories, that would be very helpful for sorting this out as well, and also just something handy moving forward so people can see everything in a single spot. updates pl_midwest_b33 cp_villa_b18 cp_mannbase_b17a koth_wetrock_b13 new maps pl_edinbowl_b6b pl_watertrack_b9 pl_stallberg_rc3 pl_greenvalley2_b1 pl_lasti_rc6 pl_downpourpass_b1 pl_vanishingpoint pl_tavern_b1 pl_cybertech_b1 pl_morningshift_b3 pl_stranded_rc5 pl_skirmish_b3 pl_rustbelt_rc1 2. Just my opinion, but since we aren't in the season anymore, what about removing the Holiday and Halloween categories? This would have the minor bonus of reducing the number of map categories to choose from to a single page. Gary, Matt, or someone could just have the categories saved on a notepad somewhere to paste back in on special occasions (like a full moon or something). 3. There was talk tonight about how there are often multiple runoff votes due to not reaching the required percentage of voting. Some people suggested that the % of votes should be based on the number of players voting rather than the entire server population, but I didn't see a cvar for that on the UMC forum thread. I did see these cvars though, that could help solve the issue. (Note, these are for the umc-endvote.cfg although I'm not sure if this is being used, or just the core) // Specifies what action to take if the runoff vote reaches the maximum amount of runoffs and the set threshold has not been reached. // 0 - Do Nothing, // 1 - Change Map to Winner // - // Default: "0" // Minimum: "0.000000" // Maximum: "1.000000" sm_umc_endvote_runoff_failaction "0" // Specifies a maximum number of runoff votes to run for any given vote. // 0 = unlimited. // - // Default: "0" // Minimum: "0.000000" sm_umc_endvote_runoffs "0" It looks like it would be possible to limit it to a single runoff vote through these. Some players also requested having the percentage of votes be visible for the maps in the runoff to reflect their relative popularity, while others preferred that this statistic remained hidden to avoid tainting what people may vote for during the runoff. It seems like there may be a separate group of cvars that would need altering to avoid runoffs from an RTV instead of a normal end of map vote, at least from my glancing through the cvars. 4. I'm not sure if this is something that would be worth including, given the usual desire to leave maps after 2 or 3 rounds, but there is a cvar to include a map extension option in the end of map votes. Figured I'd throw this in just in case people have opinions on it. (Note, these are for the umc-endvote.cfg although I'm not sure if this is being used, or just the core) // Number of extensions allowed each map. // 0 disables the Extend Map option. // - // Default: "0" // Minimum: "0.000000" sm_umc_endvote_extends "0" it also allows configuration for how many more minutes/rounds an extension would add, so that maybe it would just add 1 more round or something like that. (Note, these are for the umc-endvote.cfg although I'm not sure if this is being used, or just the core) // Specifies how many more rounds each extension adds to the round limit. // - // Default: "5" // Minimum: "1.000000" sm_umc_endvote_extend_roundstep "5" // Specifies how many more minutes each extension adds to the time limit. // - // Default: "15" // Minimum: "1.000000" sm_umc_endvote_extend_timestep "15"
mapchooser file has been updated, but I'm unsure of where to upload the file to. Gary, Broodwich maybe can help. Here's what I have so far on my PC. There's a few maps missing because we've received complaints about them. I have the Winter/Holiday and Halloween maps saved in a separate file so we can add them whenever. "umc_rotation" { "Symmetrical Control Points" { “maps_invote” “1” "cp_abyss_b81" {} "cp_antiquity_rc1" {} "cp_axle_rc1" {} "cp_badlands_pro" {} "cp_croissant_final" {} "cp_follower" {} "cp_foundry" {} "cp_freight_final1" {} "cp_geomance_rc1" {} "cp_glassworks_rc6a" {} "cp_gothic" {} "cp_granary_pro_rc8" {} "cp_gullywash_final1" {} "cp_indulge" {} "cp_konkreet" {} "cp_labor" {} "cp_mainline_rc5" {} "cp_mannbase_b17a" {} "cp_metalworks" {} "cp_miningco_b4_fix" {} "cp_obscure_remake_ugc_rc2" {} "cp_powerhouse" {} "cp_process_final" {} "cp_prolane_v4" {} "cp_science2" {} "cp_shelter_rc2" {} "cp_snakewater" {} "cp_standin_final" {} "cp_sulfur_rc2" {} "cp_sunshine" {} "cp_toy_fort_alt2" {} "cp_vanguard" {} "cp_villa_b18" {} "cp_warmfront" {} "cp_warpath2_u4" {} "cp_well" {} "cp_yukon_final" {} } "Attack & Defend" { “maps_invote” “0” "cp_alloy_rc3" {} "cp_amaranth_rc1b" {} "cp_desperados_b2" {} "cp_dustbowl_pro_v2" {} "cp_egypt_final" {} "cp_ferrum_rc1" {} "cp_forest_shrine_a15" {} "cp_fulgur_rc2a" {} "cp_furnace_rc" {} "cp_glacier_rc6" {} "cp_gorge" {} "cp_gravelpit" {} "cp_hadal_b13a" {} "cp_haddou" {} "cp_hazyfort_rc6" {} "cp_ironworks_b2" {} "cp_mercenarypark" {} "cp_mossrock" {} "cp_mountainlab" {} "cp_overgrown_rc7b" {} "cp_osiris_b15" {} "cp_redfort_b3" {} "cp_rumble_rc5" {} "cp_sakura_hill_72c" {} "cp_scourge_b4" {} "cp_silvertrail_b5" {} "cp_skull_island_b2" {} "cp_snowbase_b5_s2" {} "cp_steel" {} "cp_treehouse_b4" {} "cp_vigor_b2" {} } "Capture the Flag" { “maps_invote” “1” "ctf_2bine_v1" {} "ctf_2fort_neocity" {} "ctf_chaos" {} "ctf_convoy_storm_b1" {} "ctf_doublecross" {} "ctf_haarp" {} "ctf_hotspring_b3a" {} "ctf_landfall" {} "ctf_mach4" {“max_players” “20” } "ctf_pipedream_rc3" {} "ctf_powerhouse_night" {} "ctf_slate_b2" {} "ctf_snowdrift_b4a" {} "ctf_turbine_pro_b1" {} "ctf_urbanbrook_rc" {} "ctf_vitalism_b2" } "Payload" { “maps_invote” “2” "pl_5curve" {} "pl_alpen_rc1 {} "pl_amaryllis_b2" {} "pl_angkor_rc2" {} "pl_badwater_pro_v12" {} "pl_barnblitz_pro8" {} "pl_beerbowl_b5a" {} "pl_beerbowl_b6a" {} "pl_beerbowl_b6b" {} "pl_beerbowl_b7" {} "pl_beerbowl_b7c" {} "pl_beerbowl_rc1" {} "pl_blastpitt_rc3" {} "pl_borneo" {} "pl_boundary_final1" {} "pl_boxcanyon_rc9" {} "pl_buzznest_b3" {} "pl_cannonburg_b2" {} "pl_cashworks_final1" {} "pl_cavern_b7f" {} "pl_clifftop_b3" {} "pl_cornfarm_rc" {} "pl_cranetop_b8" {} "pl_cybertech_b1" {} "pl_deadwood" {} "pl_edinbowl_b6b" {} "pl_enclosure_final" {} "pl_erosion_b1" {} "pl_escarpment_rc1" {} "pl_farmstead_rc1" {} "pl_frontier_final" {} "pl_gloryhole_b1" {} "pl_goldrush" {} "pl_goodwater" {} "pl_great_heights_b3" {} "pl_greenvalley2_b1" {} "pl_halfacre" {} "pl_hatfactory55" {} "pl_haywire_rc5" {} "pl_highwood_b19" {} "pl_hoodoo_final" {} "pl_humidity_rc5" {} "pl_lionroar_rc1" {} "pl_manngrove_rc5" {} "pl_mesaworks_rc3" {} "pl_metropolis_b5" {} "pl_midwest_b33" {} "pl_millstone_v4" {} "pl_mineshaft_final_rc9" {} "pl_moonbase_rc3" {} "pl_mountainside_rc2" {} "pl_narrows_a130" {} "pl_oasis_b4" {} "pl_olympia_a26" {} "pl_operandi_a14" {} "pl_outback_rc4" {} "pl_pharoah_rc1" {} "pl_pier" {} "pl_quagmire" {} "pl_rebirth_rc1" {} "pl_rivercrossing_rc2a" {} "pl_rocketravine_b6" {} "pl_rust" {} "pl_rustbelt_rc1" {} "pl_shoreleave_rc1" {} "pl_skirmish_b3" {} "pl_sludgepit_final4" {} "pl_snowycoast" {} "pl_stallberg_rc3" {} "pl_stranded_rc5" {} "pl_summercoast_b7" {} "pl_swiftwater_final1" {} "pl_tavern_b1" {} "pl_thundermountain" {} "pl_upward" {} "pl_vesper_b4" {} "pl_vigil_rc7" {} "pl_volcanic_a26" {} "pl_warpath_b7" {} "pl_yosai_b3a" {} "mpl_losthorizon_b10" {} } "Payload Race" { “maps_invote” “0” "default_min_players" "12" "plr_animus_a8" {} "plr_bananabay" {} "plr_fishladder3" {} "plr_frostfell_b2" {} "plr_guavagulf_a7b" {} "plr_hierarch_rc2b" {} "plr_highwind_a5" {} "plr_hightower" {} "plr_nightfall_final" {} "plr_panic_b2" {} "plr_pipeline" {} "plr_solitude_b1" {} "plr_upward_rc2" {} "plr_valentine_b2" {} "plr_yuno_b1" {} "pl_waste_v2" {} } "King of the Hill" { "maps_invote" "0" "default_max_players" "24" "koth_ahau_rc2" {} "koth_arctic_b3" {} "koth_brazil" {} "koth_coalplant_b7" {} "koth_coulee_b4_fix" {} "koth_chasm_b1" {} "koth_dewm_rc1" {} "koth_databank_rc2" {} "koth_dockyard" {} "koth_garbage_day" {} "koth_hangar_rc2" {} "koth_harvest" {} "koth_highpass" {} "koth_kemptown_rc1" {} "koth_lakeside" {} "koth_lazarus" {} "koth_lighthouse_rc5" {} "koth_moonshine" {} "koth_nerve" {} "koth_nucleus" {} "koth_occult_rc6" {} "koth_oilfield" {} "koth_viaduct" {} "koth_sawmill" {} "koth_slaughter_b2a" {} "koth_suijin" {} "koth_synthetic_rc6a" {} "koth_waste" {} "koth_wetrock_b13" {} } "Silly, Medieval, and Other" { "maps_invote" "0" "billiards" {} "cp_arena_trains_b2" {} "cp_burghausen_rc1" {} "cp_degrootkeep" {} "cp_kakariko_a3" {} "cp_kuriast" {} "cp_orange_final" {} "cp_orangezone_45" {} "cp_redfort_b5" {} "cp_rooftime_nm3" {} "cp_wetlands" {} "ctf_darktower" {} "ctf_eggwar_b2" {} "dom_canalzone2_b4" {“min_players” “24”} "dom_cliffhanger_b11" {“min_players” “24”} "fith_boxing_b2a" {} "koth_blast_b3p" {} "koth_dropdeadfred_v3" {} "koth_falling" {} "koth_lolcano_b3" {} "koth_megaman6" {} "koth_nippletwister_a3" {} "koth_sandvich_b1" {} "koth_skywalker1" {} "koth_wubwubwub_remix_vip" {} "pd_elvvis2" {} "pd_ritual_a7" {} "pd_watergate" {} "pl_minepit" {} "pl_yamashiro_medieval_b3" {} "plr_highertower" {} "plr_whalerace_a4a" {} } }
Played a little last night, general consensus was the nominate screen was MUCH nicer with this plugin, with the tradeoff of some slight drawbacks to actual voting (what Matt mentioned above, plus moving voting to numkeys caused some "omg where is my shotgun" confusion). I think the voting problem will resolve itself as our muscle memory adjusts.