Originally posted by klax. Credits to @LoU for preserving this information. Introduction: Rock the Vote is a plugin for the HL/Source engines created by AlliedModders LLC. It allows players to register their votes for a map change without the need of a timed voting system, static rotations, and administrators. All that's required is the simple message \"rtv\". Rock the Mode is an original concept created by myself while playing with the Rock the Vote words, meant to serve as an option for Movie Battles II's gameplay modes. Usage: Red = Command becomes disabled if no map voting type is available (Roundlimit, Timelimit, RTV) or if the total number of allowed maps is less than or equal 5, as all available maps will be used for the voting without any need for nominations. Green = No visual message confirmation. Standard command list (All commands can be sent via say or sayteam and are case-insensitive): NOTE: Exclamation mark is optional, that's why it's enclosed in <>. rtv, !rtv unrtv, !unrtv rtm, !rtm unrtm, !unrtm nominate mapname, !nominate mapname revoke, !revoke maplist <number>, !maplist <number> search expression, !search expression elapsed map/mode, !elapsed map/mode nextgame, !nextgame <!>rtv: Use this command if you want to call for a map voting. A voting will only start once the number of players who rtv'ed is equal the number of players required for rtv to pass. The required number of players is defined by the Rate field. <!>unrtv: Use this command to revoke your previous rtv. Must be done before a voting starts. <!>rtm: Use this command if you want to call for a mode voting. A voting will only start once the number of players who rtm'ed is equal the number of players required for rtm to pass. The required number of players is defined by the RTM Rate field. <!>unrtm: Use this command to revoke your previous rtm. Must be done before a voting starts. <!>nominate mapname: Use this command to nominate a map for a future map voting. Current and recently played maps cannot be nominated. This command is of great importance when pick secondary maps is disabled, as they will never be picked automatically for a voting. If you nominate a map while you've already nominated another map, your nomination will be changed. There are two nomination types that an admin can choose from. The first type is the classic one, every player is entitled to a single map nomination to a maximum of 5 nominations among all players. If all 5 nominations have already been used, no new nomination will be accepted until a nomination becomes available again. The map order during a voting will be based on a FIFO (First-In, First-Out) order, AKA, first person who nominates will have his/her map at the head of the voting list. Second type will use a nomination count instead. Every player is entitled to a single nomination vote and there are no limits for the amount of nominations. When a voting starts, a maximum of 5 nominations will be picked with the priority as follow: 1) Nomination count (the most nominated maps will be picked). 2) Map priority (if nomination count equals for those maps, map priority will be checked and remove lower priority nominations to fit 5 nominations). 3) FIFO order (with nomination count equal, as well as the same map priority, the last nominated maps will be discarded). The order for the voting list will be nomination count and then a FIFO order, AKA, most nominated maps goes first, but if they equal in nomination count, the first nominated maps will be at the head of the voting list. Maps that have already been nominated can only be nominated again by another player under the second nomination type. <!>revoke: Use this command to revoke a map nomination. This is no longer required for changing your nomination and should only be used if you want to completely remove your nomination. <!>maplist <number>: Show the current map list in alphanumeric order. Current and recently played maps will not be displayed. Nominated maps under the first nomination type will not be displayed. If the list is too big, it will be split into smaller numbered lists. In this case, an argument containing the list number is required to display that list alone. <!>search expression: Use this command to search for a specific expression within the map list. The search is case-insensitive and will return all results containing that expression, including current, recently played and nominated maps. The result is in alphanumeric order. If expression is the wildcard *, all allowed maps will be returned as the result. If the result is too long, a warning will be returned instead. <!>elapsed map/mode: This command will display for how long the current map or mode has been running as HH:MM:SS. It also displays whether the current map or mode had any extensions. <!>nextgame: This command will display the queued for next round map or mode change, if there is one. Not to confuse with the admin command of same name. Voting command list (All commands can be sent via say or sayteam and are case-insensitive): NOTE: Exclamation mark is not optional for the vote command (!number). !number (vote) unvote, !unvote !number: Use this command to vote for a specific option during a voting. Re-voting will cause your previous vote to change to the new one. <!>unvote: Use this command to revoke your vote during a voting. This command is not required for changing your vote and should only be used if you want to completely remove your vote. Admin command list (All commands must be sent via /smod say and are case-insensitive): NOTE: Exclamation mark is *NOT* optional. !enable rtv/rtm/maps !disable rtv/rtm time !force rtv/rtm !cancel !nextgame !rehash /smod say !enable rtv/rtm/maps: Enable RTV/RTM when it's on cooldown. RTV or RTM must be configuration enabled for this command to have any effect. Maps argument enables all current recently played maps. For the maps argument, it will only have an effect if map votings are enabled and if enable recently played contains a non-zero value. /smod say !disable rtv/rtm time: Disable RTV/RTM for the specified time. Time must be an integer greater than or equal 0, and it's value is registered in seconds. Value 0 will disable RTV/RTM indefinitely (until a !rehash command is executed, or a server restart occurs, or finally, after an admin uses the !enable command). Ex: !disable rtv 3600 will disable RTV for 1 hour. RTV or RTM must be configuration enabled for this command to have any effect. /smod say !force rtv/rtm: Force a voting to begin. RTV or RTM must be configuration enabled for this command to have any effect. /smod say !cancel: This command serves two purposes. During a voting, it will cancel the current voting. After a voting, if change immediately is disabled and a map/mode has been queued for the next round, this command will cancel the queued change. /smod say !nextgame: If change immediately is disabled and a next map/mode has been queued for the next round, this command can be used to ignore the next round requirement and change to the next map/mode immediately. Not to confuse with the standard command of same name. /smod say !rehash: Use this command to force RTV/RTM into re-reading the configuration file and binding a new configuration without a process restart. All fields but Log can be rehashed. If you need to change the path to your log file, a process restart will still be required. Error checks will be performed during rehash, however, if an error is detected, warning() will be called instead of error() and RTV/RTM will rollback to the last valid configuration instead of crashing. Even with an invalid configuration, RTV/RTM will not cease to function during rehash. Updates: Update by Viserys (2016): No updates are expected on RTV/RTM. Latest RTV version includes DUEL support for RTM. - thanks LoU In addition, RTV commands like !rehash can now be sent via rcon say (attention: not svsay) and executed via server .cfg scripts. Download: The latest RTV/RTM script, including map lists and rtvrtm.cfg can be downloaded here . Please note you will need to be able to have install (for Python) and execution rights on the server you plan to install this on. The rtvrtm.cfg needs to be edited and the information on log paths, IPs, rconpassword, etc. need to be updated for your server. The attached rtvrtm.cfg includes examples. The maplists, both primary and secondary should also be updated. The .zip file includes readmes and instructions for both Windows and Linux installations. Installation: This is a server only tool, therefore only administrators are required to read this. The script was coded on Python 2.7 www.python.org. Python versions compatible (without changing anything) with this script are 2.5, 2.6 and 2.7. The script must be running at the same time as the MB2 server. The script is meant to work locally with the server, as it needs to read the log file. You will need to change two variables (cvars) within your server.cfg, if you haven't them already set to the correct values: seta g_logExplicit \"3\" seta g_logSync \"1\" The first cvar will both write the client slot id on every say/sayteam message and delimit messages from nicknames with double quotes, while the second one will write the log file in real time. If you've Name protection enabled you will also need to have g_logClientInfo enabled (\"1\"). It's also important to note that g_log must have a log file. For configuration, please open rtvrtm.cfg with a text editor. All descriptions and examples are included inside. You can run the script by just executing it. However, there are some command line options that you might want to add. Please refer to the Command Line Options section. Extra information: A voting option will have the number of players who voted for it displayed besides its ID and before the value, not after: Ex: 1(2): mb2_dotf, blabla ID: 1 Vote count: 2 Value: mb2_dotf The percentage displayed after a voting is calculated from the number of votes that the winning option received over the total number of players, not the total number of votes. Ex: (100 * most_voted) / total_players Ties will be handled by the map priority or mode priority systems. However, if the same priority options tie, a random call will be made to decide the victor. A second turn will only occur when it's configuration enabled, the voting has more than two options, the most voted option received less than or 50% votes from the total number of votes and more than two options received votes (a pseudo absolute majority requirement). A second turn will only have two options and will start after the main voting has completed. The priority system for maps/modes described above, is also used to define the options for second turn. Besides that, second turn works just like any other voting. Command Line Options: -h or --help = Display the options list and exit. --noreport = RTV/RTM will not send bug reports when unhandled exceptions occur. --noupdate = Update checks will not be performed while initializing. Useful for users without shell access. --quit = Check for updates and exit. This option will have no effect if --noupdate is set. -c <configuration file> = Set a specific path for RTV/RTM's configuration file. If not provided, configuration path is assumed to be <application folder>/rtvrtm.cfg. -t <tries> = Set the amount of server connection tries before giving up and raising an error() call. This will only be used during the initial configuration error checks. If not provided, it defaults to 5. It's recommended to set this value to 0 (infinite), if the server company in question restarts their servers in a daily basis. Recommendations: For server administrators: Lowering sv_timeout to a value between 120-240 seconds is a good idea. The faster the server drops timeout'ed clients, the faster RTV/RTM updates its valid player database. If you find your players flooding the chat with commands, you should consider enabling the Flood Protection system within RTV/RTM. This protection is individual for each player and is only enforced for non-voting/non-admin commands. Cvar values: Useful for parsers, such as weblists. 0 -> Admin voting only 1879 -> Roundlimit 1890 -> Timelimit 1928 -> RTV 2000 -> RTM 3769 -> Roundlimit + Timelimit 3807 -> Roundlimit + RTV 3879 -> Roundlimit + RTM 3818 -> Timelimit + RTV 3890 -> Timelimit + RTM 3928 -> RTV + RTM 5697 -> Roundlimit + Timelimit + RTV 5769 -> Roundlimit + Timelimit + RTM 5807 -> Roundlimit + RTV + RTM 5818 -> Timelimit + RTV + RTM 7697 -> Roundlimit + Timelimit + RTV + RTM Extras Admin voting command list (All commands must be sent via /smod say and are case-insensitive): NOTE: Exclamation mark is *NOT* optional. !description description !vote option !erase !force admin /smod say !description description: Use this command to add a description for an admin voting. The description will be displayed everytime the voting list is displayed. /smod say !vote option: Use this command to add an option for an admin voting. Options cannot be repeated and a minimum of two options must be added. A maximum of ten options can be added. /smod say !erase: Use this command to remove all admin voting options that you or another admin have previously added. It's recommended to always call this command first, before deciding to initiate an admin voting. /smod say !force admin: Use this command to initiate an admin voting. Admin voting is an automatic poll that will do nothing once it's completed. Its purpose is to provide an automatic and organized mechanism for admins to make decisions based on players' opinions. Commands from the Voting commands section are applied to an admin voting. A voting description and at least 2 voting options must be added before starting the voting.