I wrote two plugins to bring much needed functionality to competitive tf2 matches based on features present in other competitive games. Both plugins are open-source, thoroughly tested, and ready for community feedback.
AdvancedPause
AdvancedPause is an extension of F2's Pause plugin that automatically pauses a game when a player disconnects, and allows that player to rejoin at the same position they disconnected. A player's health, position, velocity, ammo, ubercharge, and more are restored upon reconnecting. The plugin retains F2's original pause functionality, which provides accidental unpause protection, a 5 second unpause countdown, and unlimited chat during a pause. Once all players who are going to reconnect have rejoined, the game can be unpaused and play can resume almost as if no disconnect occurred.
Because the player's state can not be exactly reproduced, care has been taken to prevent the plugin from being abuseable. Players that disconnect while dead will have to sit out a death timer when they rejoin, and changing loadouts is not allowed; i.e. a medic cannot build with Quick-Fix, disconnect and switch to uber, and have a full uber. If a loadout change occurs, the player will be slain. Many other scenarios have been considered and are detailed in the technical document.
Current version: 1.0.1
Download
Source
GG Concede
GG Concede provides a "gg" command that allows a team to concede the match to their opponents. Typing !gg or /gg in chat, or gg in console will start a 10 second countdown after which the match will end, unless someone on the conceding uses the "cancel" command (!cancel or /cancel in chat). Spectators and the opposing team are alerted that their opponents are calling gg in 10 seconds. This plugin can eliminate "dead time," in which it is mathematically impossible for the losing team to win and players typically stop trying, and instead replace it with a concise and respectful end to the match.
In league play, each round win may affect a team's rankings, so conditions can be set on when a team can GG out. GG Concede features ConVars to limit when a gg can be called: round win threshold, win difference, time left (e.g. less than 3 minutes left). These conditions can be set to ensure that neither team can be cheated out of a fair chance to earn round wins.
On pug and lobby servers, the gg_vote ConVar can be set to have the gg command initiate a vote instead of a countdown. The vote lasts for 10 seconds and a majority of players must !gg in order to end the game.
ConVars
gg_enabled - Sets whether calling gg is enabled
gg_vote - Sets whether a team must vote on gg.
gg_winnerconcede - Sets whether the winning team can call gg
gg_winthreshold - Sets the number of round wins a team must win before their opponents may call gg
gg_windifference - Sets the difference in round wins required for the losing team to call gg
gg_timeleft - Sets the number of minutes left in the game before a team can call gg
Current version: 1.1.0
Download
Source
Installation
- SourceMod is required for these plugins.
- Remove F2's Pause Plugin (pause.smx) before installing (don't worry, it has all the same functionality)
- Place AdvancedPause.smx and/or ggconcede.smx in /tf/addons/sourcemod/plugins/
- Configure ConVar settings by adding them to your server's config files
- Change server level once to load plugins
Comments
Competitive TF2 is a great game and deserves the same functionality as other Valve games like Dota 2, which has automatic pausing on player disconnect and player reconnecting as well as a "gg" game ending mechanism. The ultimate goal of this project is for Valve to take notice and properly implement the functionality in game. In the meantime, these thoroughly tested plugins are a close approximation. Please use them on your scrim server and make suggestions for improvements on this thread or report issues on the github page. If you are a programmer, you can check out the commented source code on github and read my detailed documentation on how the plugins work. After a few weeks of beta testing and community feedback, these plugins should be ready for league play and make the functionality a standard for competitive tf2.
Credits
- Sawr - plugin design, development
- Hedge - testing, ideas, advice
- F2 - original pause plugin
and countless others who paved the road with SourceMod.