CS

CS2-MapManager-COFYYE

MapManager is a CS2 plugin that manages map rotations, handles next map selection, voting systems, and offers customizable options for server admins to control map cycles and player interactions.

by cofyye19293counterstrikesharp
counterstrikesharpcounterstrikesharp-plugincs2cs2pluginscs2servercssharpmapchoosermapcyclemapmanagerplugins

GitHub Repo stars GitHub Downloads GitHub issues Donate Discord

⭐ Star this repo if you find it useful!

MapManager for Counter-Strike 2

Advanced Map Management Plugin

Complete map management solution for CS2 servers with voting system, RTV, and advanced configuration options.


Download · Report Bug · Request Feature · Donate

Features

  • Next Map Configuration & Display: Set the next map in the cycle and display it for players.
  • Map Voting: Players can vote for a new map towards the end of the current map.
  • Real-time Voting Percentages: View the percentage of votes for each map in real time.
  • Rock The Vote (RTV): Players can vote to trigger a map change vote, with configurable thresholds and timing restrictions.
  • Admin Map List: Admins can access a list of available maps and instantly change the current map.
  • Dynamic Map Cycle: Set which maps are part of the cycle and which ones can be changed from the map list.
  • Dynamic Map Selection: Maps are selected based on the current number of players, with options for max and min player thresholds.
  • Custom Map Display: Show custom names instead of map values (e.g., showing "Dust II" instead of "de_dust2").
  • Round/Timelimit-Based Map Changes: Change maps based on the number of rounds or time limits.
  • Vote Start Sound: Play a sound when the voting for a new map begins.
  • Ignore Option: Players can now choose to ignore the current vote.
  • Extend Map Option: Allows players to vote to extend the current map instead of switching to a new one.
  • Timeleft Command (!timeleft): Displays the remaining time before the map changes.
  • Current Map Command (!currentmap): Shows the name of the map currently being played.
  • Last Map Command (!lastmap): Displays the previously played map.
  • Map Change Delay: Configurable delay after the current map ends before the next map loads.
  • Vote Trigger Time: Set how long before the end of the map the voting process should start.
  • Command Aliases: Each command can have multiple aliases for easier accessibility.

Screenshots

  1. !nextmap Command in Chat: Displays the next map when the !nextmap command is typed in chat.

    Nextmap Command

  2. Start of Map Voting: Displays when a map vote begins.

    Map Voting Start

  3. Voting Percentage After Map Selection: Shows the percentage of votes for each map.

    Voting Percentage

  4. Player Voting Logs: Shows logs of which players voted for which maps and the next map.

    Player Voting Logs

  5. Admin Map List: Displays the map list that the admin can access and modify.

    Admin Map List

  6. Support for Local Language Change: Demonstrates the plugin’s support for language customization.

    Language Support

Dependencies

To run this plugin, you need the following dependencies:

  1. Metamod:Source (2.x)
    Download from: Metamod:Source Official Site

  2. CounterStrikeSharp (Version 1.0.355 or higher)
    REQUIRED: You must use CounterStrikeSharp version 1.0.355 or higher. Using an older version will cause your server to crash!
    Download from: CounterStrikeSharp GitHub Releases

  3. CS2MenuManager
    REQUIRED: This plugin uses CS2MenuManager for menu functionality. You must install it on your server.
    Download from: CS2MenuManager GitHub Releases

    CS2MenuManager Configuration:

    This plugin uses the WASD Menu from CS2MenuManager. You can configure menu behavior, colors, and controls by editing the config.toml file located at:
    csgo/addons/counterstrikesharp/shared/CS2MenuManager/config.toml

    Sound Settings - Configure menu sounds:

    [Sound]
    Select = "sounds/ui/item_sticker_select.vsnd_c"
    Exit = ""
    ScrollUp = "sounds/ui/csgo_ui_contract_type4.vsnd_c"
    ScrollDown = "sounds/ui/csgo_ui_contract_type4.vsnd_c"

    Button Mapping - Change which keys control the menu:

    [Buttons]
    ScrollUp = "W"
    ScrollDown = "S"
    Select = "E"
    Prev = "Shift"
    Exit = "Tab"

    WASD Menu Appearance - Customize menu colors and appearance:

    [WasdMenu]
    TitleColor = "Green"
    ScrollUpDownKeyColor = "Cyan"
    SelectKeyColor = "Green"
    PrevKeyColor = "Orange"
    ExitKeyColor = "Red"
    SelectedOptionColor = "Orange"
    OptionColor = "White"
    DisabledOptionColor = "Grey"
    ArrowColor = "Purple"
    FreezePlayer = false

    Note: The enable_player_freeze_in_menu option has been removed from MapManager config. Player freezing is now controlled by the FreezePlayer setting in CS2MenuManager's config.toml file.

  4. MultiAddonManager (optional)
    Download from: MultiAddonManager GitHub Releases

    • If you want to play a sound when map voting begins, this dependency is required. You can use your own custom sounds, though no tutorial is provided. Search online for guidance.
    • Alternatively, if you'd like to use pre-configured sounds, visit this link: Steam Workshop Sounds.

    Setup for Sounds:

    • To enable the sounds, you must add the 3420306144 ID to the multiaddonmanager.cfg file.
    • Path to file: game/csgo/cfg/multiaddonmanager/multiaddonmanager.cfg.
    • Add the ID under the mm_extra_addons section, for example:
      "....,3420306144"

Commands and Permissions

  1. !nextmap

    • Description: Displays the next map in the cycle.
    • Access: Available to all players.
  2. !timeleft

    • Description: Displays the remaining time before the current map ends (rounds/minutes).
    • Access: Available to all players.
  3. !currentmap

    • Description: Displays the current map name.
    • Access: Available to all players.
  4. !lastmap

    • Description: Displays the last played map.
    • Access: Available to all players.
  5. !rtv

    • Description: Vote to trigger a map change vote (Rock The Vote).
    • Access: Available to all players.
  6. css_nextmap

    • Description: Sets the next map in the rotation.
    • Access: Admins only, requires @css/changemap permission.
  7. css_maps

    • Description: Lists all maps and allows instant map changes.
    • Access: Admins only, requires @css/changemap permission.

Configuration Tutorial

Below is a step-by-step guide explaining the available configuration options for MapManager. These options allow you to customize how the plugin behaves and interacts with players.

General Settings

Configuration Options

  1. vote_map_enable

    • Possible Values: true, false
    • Description: Enables or disables the voting system for a new map.
      • true: Voting is enabled.
      • false: Voting is disabled.
  2. vote_map_duration

    • Possible Values: Integer values between 1 and 45 (e.g., 15, 30, etc.)
    • Description: Specifies the duration (in seconds) for the map voting period. Must be greater than 0 and less than 45, otherwise an error will occur.
  3. depends_on_the_round

    • Possible Values: true, false
    • Description: Determines whether map voting is based on rounds or time.
      • true: The plugin uses mp_maxrounds to trigger voting. Voting will automatically start during freeze time of the next round with extended freeze time.
      • false: The plugin uses mp_timelimit to trigger voting. Voting will start immediately without freeze time extension.
  4. enable_random_nextmap

    • Possible Values: true, false
    • Description: Determines if the next map is selected randomly or cyclically.
      • true: The next map will be chosen randomly.
      • false: The next map will follow a cyclic order.
  5. enable_player_voting_in_chat

    • Possible Values: true, false
    • Description: Logs in the chat which player voted for which map.
      • true: Displays voting logs in the chat.
      • false: Disables voting logs.
  6. enable_nextmap_command

    • Possible Values: true, false
    • Description: Enables or disables the !nextmap command.
  7. enable_lastmap_command

    • Possible Values: true, false
    • Description: Enables or disables the !lastmap command.
  8. enable_currentmap_command

    • Possible Values: true, false
    • Description: Enables or disables the !currentmap command.
  9. enable_timeleft_command

    • Possible Values: true, false
    • Description: Enables or disables the !timeleft command.
  10. enable_command_ads_in_chat

    • Possible Values: true, false
    • Description: Displays command advertisements in chat every 5 minutes if enabled.
  11. enable_ignore_vote

    • Possible Values: true, false
    • Description: Adds an "Ignore Vote" option to the map voting menu.
  12. ignore_vote_position

    • Possible Values: "top", "bottom"
    • Description: Defines whether the "Ignore Vote" option appears at the top or bottom of the voting menu.
  13. enable_extend_map

    • Possible Values: true, false
    • Description: Adds an "Extend Map" option to the map voting menu.
  14. extend_map_time

    • Possible Values: Integer values greater than 0
    • Description: Defines how much time the map will be extended.
      • If depends_on_round is true, the value represents rounds.
      • If depends_on_round is false, the value represents minutes.
  15. extend_map_position

    • Possible Values: "top", "bottom"
    • Description: Defines whether the "Extend Map" option appears at the top or bottom of the voting menu.
  16. delay_to_change_map_in_the_end

    • Possible Values: Integer values greater than 5
    • Description: Defines the delay (in seconds) between the end of the current map and the actual map change.
  17. vote_trigger_time_before_map_end

    • Possible Values: Integer values greater than 2
    • Description: Defines how long before the end of the current map the vote is triggered.
      • If depends_on_round is true, the value is in rounds.
      • If depends_on_round is false, the value is in minutes.
  18. display_map_by_value

    • Possible Values: true, false
    • Description: Defines how maps are displayed.
      • true: Displays the map by its technical name (e.g., de_dust2).
      • false: Displays the map by its custom tag (e.g., Dust II).
  19. rtv_enable

    • Possible Values: true, false
    • Description: Enables or disables the Rock The Vote (RTV) feature.
  20. rtv_min_players

    • Possible Values: Integer values between 0 and 64
    • Description: Minimum number of players required for RTV to be available.
  21. rtv_time_after_map_start

    • Possible Values: Integer values between 0 and 300
    • Description: Time (in minutes) that must pass after map start before RTV can be triggered.
  22. rtv_minimum_votes_percent

    • Possible Values: Integer values between 0 and 100
    • Description: Percentage of players required to vote for RTV to trigger a map vote.
  23. commands_css_nextmap

    • Possible Values: List of strings
    • Description: Defines alias commands for css_nextmap.
  24. commands_css_maps

    • Possible Values: List of strings
    • Description: Defines alias commands for css_maps.
  25. commands_nextmap

    • Possible Values: List of strings
    • Description: Defines alias commands for !nextmap.
  26. commands_lastmap

    • Possible Values: List of strings
    • Description: Defines alias commands for !lastmap.
  27. commands_currentmap

    • Possible Values: List of strings
    • Description: Defines alias commands for !currentmap.
  28. commands_timeleft

    • Possible Values: List of strings
    • Description: Defines alias commands for !timeleft.
  29. commands_rtv

    • Possible Values: List of strings
    • Description: Defines alias commands for !rtv.
  30. sounds

  • Possible Values: An array of string paths to sound files.
  • Description: Specifies the sounds that play when map voting begins.
    • Add as many sounds as you'd like, and the plugin will play one randomly.
    • Leave this field empty ([]) to disable sounds.
  1. maps
  • Description: A list of maps with customizable settings for each map. Each map entry contains the following:
    • map_value: The technical name of the map (e.g., de_dust2).
    • map_display: The custom display name for the map (e.g., Dust II).
    • map_is_workshop: true if the map is from the Steam Workshop; false otherwise.
    • map_workshop_id: The Workshop ID of the map (required if map_is_workshop is true, otherwise set to "").
    • map_cycle_enabled: true if the map should be included in the map cycle; false if it should only appear in the admin map list (css_maps).
    • map_can_vote: true if the map should appear in the voting system; false if it should not.
    • map_min_players: Minimum number of players required for the map to be included in voting.
    • map_max_players: Maximum number of players allowed for the map to be included in voting.

Required Server Configuration

IMPORTANT: Before installing this plugin, you must configure the following cvars in your server configuration files. These cvars are essential for the plugin to work correctly.

Add these cvars to one of the following files depending on your server setup:

  • gamemode_competitive.cfg
  • gamemode_casual.cfg
  • gamemode_custom.cfg
  • server.cfg
  • Or any other relevant configuration file your server uses

Required CVars:

mp_match_can_clinch 0
mp_endmatch_votenextmap 0
mp_endmatch_votenextleveltime 0
mp_halftime 0

IMPORTANT - Disable Workshop Collection Parameters:

You MUST NOT use the following parameters in your CS2 server startup configuration:

  • +host_workshop_collection
  • +mapgroup mg_active or +mapgroup mg_custom or any similar mapgroup parameter

These parameters will conflict with the plugin's map management system and must be removed or disabled.

Installation

  1. Download the MapManager v1.4 plugin as a .zip file.
  2. Upload the contents of the .zip file into the following directory on your server:

    game/csgo/addons/counterstrikesharp/plugins

  3. After uploading, change the map or restart your server to activate the plugin.
  4. The configuration file will be generated at:

    game/csgo/addons/counterstrikesharp/configs/plugins/MapManager-COFYYE/MapManager-COFYYE.json
    Adjust all settings in this file as needed.

Language Support

The language files are located in the following directory:

game/csgo/addons/counterstrikesharp/plugins/MapManager-COFYYE/lang

Currently, there are two language files:

  • en.json (English)
  • sr.json (Serbian)

Bug Reports & Suggestions

If you encounter any bugs or issues while using the plugin, please report them on the GitHub Issues page. Provide a detailed description of the problem, and I will work on resolving it as soon as possible.

Feel free to submit any suggestions for improvements or new features you'd like to see in future releases. Your feedback is highly appreciated!

Credits

  • Code Snippets for Menu (v1.0 - v1.2): The menu code snippets used in versions 1.0 through 1.2 were sourced from oqyh's GitHub. I would like to thank him for providing valuable resources that helped in building the initial menu system of this plugin.
  • CS2MenuManager (v1.3+): Starting from version 1.3, this plugin uses CS2MenuManager for menu functionality.
  • Other Contributors: A big thank you to all other authors and contributors of similar plugins that inspired the creation of this MapManager plugin. Their work was a key part of shaping the final version of this plugin.

This plugin is my version of the MapManager functionality, combining various elements from the community to provide a better and more customizable experience for server admins and players alike.

CS2-MapManager-COFYYE - CS2 Plugin | sourcemods.info