Skip to content

Latest commit

 

History

History
929 lines (749 loc) · 49.4 KB

CHANGELOG.md

File metadata and controls

929 lines (749 loc) · 49.4 KB

Get5 Changelog

Updating

Whenever you update your Get5 plugin, remember to always update the translations folder. If you only replace the .smx files, Get5 will likely error as translations are often changed between versions.

Please see the installation instructions for details.

0.15.0

2023-07-01

This update changes the behavior of configuration parameters to make parameters apply consistently. Previously, only some configuration parameters would reset on map change while others would not.

Breaking Changes 🛠

The FCVAR_DONTRECORD flag has been removed from all parameters, which means they all reset to the value stored in the main configuration file when the map changes. In practice this means that any value you change during the course of a map via the console will not persist through a map change. If you want configuration parameters to be match-specific, you must either change them in the main config file or include them in the cvars section of your match configuration, which is loaded immediately following a map change. If you already use cvars and don't set parameters via console, you can safely update to 0.15.0.

The following configuration parameters are now FCVAR_PROTECTED, which means you can only set their values, never read them back from the console (it will output 1 if set and 0 if empty):

  1. get5_remote_backup_url

  2. get5_remote_backup_header_key

  3. get5_remote_backup_header_value

  4. get5_demo_upload_url

  5. get5_demo_upload_header_key

  6. get5_demo_upload_header_value

  7. get5_remote_log_url

  8. get5_remote_log_header_key

  9. get5_remote_log_header_value

0.14.7

2023-05-06

Bugfix.

  1. Fix missing loading of cvars if also using veto_mode with a KeyValues match configuration.

0.14.6

2023-04-29

Bugfix and minor adjustments.

  1. Fix missing acknowledgement of the --side_type argument for get5_creatematch.
  2. Rename helper function SideTypeFromString to SideChoiceFromString.
  3. Add get5_demo_upload_use_put and get5_demo_upload_timeout to improve flexibility of demo uploads.

0.14.5

2023-04-25

Bugfix.

  1. Prevent the presence of coaches in teams from messing up the stats in JSON events.

0.14.4

2023-04-16

Minor bugfix.

  1. Fix invalid parsing of workshop maps with IDs consisting of 64-bit integers.

0.14.3

2023-04-10

Minor bugfix.

  1. Prevent first joining player from resetting the ready waiting timer back to zero.

0.14.1

2023-04-08

Hotfix of stuff that should have been in 0.14.0.

  1. Fixed "create match with current teams" from the !get5 menu.
  2. Add option to disable formatting known map names via get5_format_map_names.

0.14.0

Note: Removed from releases. Please use newest 0.14.x instead. All changes below still apply.

2023-04-08

Breaking Changes 🛠

  1. The Get5_OnPlayerSay event now includes messages sent from Console (or potentially GOTV). You should filter out these messages on your end if you don't want to react to them. Note that console is always user_id 0 and GOTV's name is always GOTV. Alternatively, you can ignore all messages with an empty steamid.

  2. The stats system has been updated. This means that the structure has been modified to allow for more information, specifically the starting side and score for each side for each team, full stats for players as well as a new option to add team IDs.

    If you use any of the stats extensions, you must also update those plugins (get5_mysqlstats.smx and get5_apistats.smx)!

    These changes affect the structure of the get5_matchstats.cfg file generated by get5_dumpstats and the KeyValues returned by the Get5_GetMatchStats native. These are not changes to the JSON objects (see below for that) or the schema of the MySQL extension. If you don't use the native or dump match stats to a file, this does not affect you.

    Keys changed in the map root (i.e. map0):

    1. team1_name and team2_name removed.
    2. team1 and team2 added (objects), each with an id and a name key.

    Keys changed for each team (i.e. map0 -> team1):

    1. Players' SteamIDs and stats have moved from the root of the team object into an object called players.
    2. Added score_ct
    3. Added score_t
    4. Added starting_side (2 for T, 3 for CT as this is an integer enum)
  3. The structure of the Get5_OnSeriesInit JSON event has changed:

    Old:

    {
      "event": "series_start",
      "matchid": "29844",
      "team1_name": "TeamName",
      "team2_name": "AnotherTeamName"
    }

    New:

    {
      "event": "series_start",
      "num_maps": 3, // Bo3
      "matchid": "29844",
      "team1": {
        "id": "482", // nullable in JSON, empty string in SourceMod.
        "name": "TeamName"
      }
      // same for team2
    }
  4. The structure of the Get5_OnMapResult JSON event has changed:

    Old:

    {
      "event": "map_result",
      "matchid": "29844",
      "map_number": 0,
      "winner": {
        "team": "team1",
        "side": "t"
      },
      "team1_score": 10,
      "team2_score": 12
    }

    New:

    {
      "event": "map_result",
      "matchid": "29844",
      "map_number": 0,
      "winner": {
        "team": "team1",
        "side": "t"
      },
      "team1": {
        "id": "482", // nullable in JSON, empty string in SourceMod.
        "name": "TeamName",
        "series_score": 1,
        "score": 10,
        "score_ct": 4,
        "score_t": 6,
        "side": "t",
        "starting_side": "ct",
        "players": [
          {
            "name": "Nyxi",
            "steamid": "76561197996426755",
            "stats": {
              // Full player stats.
            }
          }
        ]
      },
      // same for team2
    }
  5. Similarly to 4., the structure of the Get5_OnRoundEnd JSON event has changed:

    Old:

    {
      "event": "round_end",
      "matchid": "29844",
      "map_number": 0,
      "round_number": 21,
      "round_time": 34944,
      "reason": 8,
      "winner": {
        "team": "team1",
        "side": "t"
      },
      "team1_score": 10,
      "team2_score": 12
    }

    New:

    {
      "event": "round_end",
      "matchid": "29844",
      "map_number": 0,
      "round_number": 21,
      "round_time": 34944,
      "reason": 8,
      "winner": {
        "team": "team1",
        "side": "t"
      },
      "team1": {
        "id": "482", // nullable in JSON, empty string in SourceMod.
        "name": "TeamName",
        "series_score": 1,
        "score": 10,
        "score_ct": 4,
        "score_t": 6,
        "side": "t",
        "starting_side": "ct",
        "players": [
          {
            "name": "Nyxi",
            "steamid": "76561197996426755",
            "stats": {
              // Full player stats.
            }
          }
        ]
      }
      // same for "team2"
    }

    These changes affect the corresponding forwards as well, so if you have a plugin that reads this data, you must update it. For full details and the SourceMod properties, see the event documentation.

  6. Get5 no longer sets its game state to none immediately following the end of the series, but now waits until the restore timer fires. Get5 will be in post_game until the timer runs out, similarly to when waiting for the next map. This means that GOTV broadcasts will have a chance to finish before Get5 releases the server.

  7. The map is now always reloaded when a match configuration is loaded if a game was previously played on the same map with no map reload in between. This is in effort to clear the game state and prevent bugs such as the warmup countdown timer stopping at 0.01.

  8. The get5_creatematch command has been replaced by a CLI-like command which lets you configure almost any type of match with a single command.

  9. num_maps in the match schema now defaults to 1 instead of 3.

  10. get5_scrim and the accompanying scrim_template.cfg file is now considered legacy, and you should instead use get5_creatematch --scrim --team1 home_team and add your home team to the new teams file to achieve the same result.

  11. Get5 now uses version 5.x of sm-json, which contains important fixes to plugin forwards. If you have any custom plugins reading from Get5 forwards, they should also update their version of this library and be recompiled.

  12. Removed HasAssist() and HasAttacker() from Get5PlayerDeathEvent in SourceMod forwards. You should simply check Assist and Attacker for null, respectively.

  13. Validation of JSON files is stricter than before. For instance; an empty string for a boolean or numeric value will now throw an error. As will "0" and "1". The reasoning behind this is to prevent silent errors such as a match file loading "correctly" but with unexpected behavior. Anyone using JSON files should consult the match schema prior to upgrading.

  14. Validation of KeyValues files (.cfg) is also stricter than before, and the feedback on errors should be better.

New Features / Changes 🎉

  1. Get5 is now built with SourceMod 1.11.
  2. The JSON "pretty print" spacing string has changed from 4 spaces to 2 spaces. This is strictly to reduce the size of the JSON payload and has no practical effect on the objects.
  3. The get5_mysqlstats extension now uses a transaction to update stat rows for each player. This improves performance via reduced I/O between the game server and the database server. It now also runs on the JSON methodmaps provided to forwards instead of copying the KeyValue stat object.
  4. The documentation of events is now rendered separately using ReDocly instead of being embedded in the Get5 documentation website. This allows for more space and makes it easier to browse/read. It also allows you to link directly to an event.
  5. The team configuration parameters (mp_teamname_1, mp_teamflag_1, mp_teamlogo_1 etc.) are now reset to blank when Get5 ends a series. Previously, these parameters would linger and would have to be manually reset or replaced by loading a new match configuration.
  6. You can now provide an id parameter to your team objects in match configurations, which is echoed back in the forwards and JSON events.
  7. side_type now accepts random as a parameter.
  8. Workshop maps are now correctly formatted in the map veto system, assuming they contain a known map. I.e. workshop/82722474/de_nuke_2 would format to Nuke, since it contains de_nuke. Previously, a complete match was required. The default Wingman maps now also format correctly (de_lake => Lake etc.).
  9. The !get5 menu has been significantly upgraded and now supports creating almost any type of match, similarly to the new get5_creatematch command, but using in-game menus only. It now also lets you browse recent backups and set a winner if force-ending a match.
  10. Any match configuration file can now take scrim: true in order to load in scrim mode, and team2 will then not be required.
  11. Cobblestone is now correctly detected in the chat-based veto system when typing !ban cobble. This needed a workaround as the map file is the only one that's actually misspelled (de_cbble).

0.13.1

2023-03-20

New Features / Changes 🎉

  1. Fix critical memory leaks and heap size issues.
  2. Fix missing HTTP event for Get5_OnTeamReadyStatusChanged if a team goes from ready to unready.

0.13.0

2023-02-18

Breaking Changes 🛠

  1. The map selection ("veto") system has been entirely reworked and can now be customized. Please see the development documentation for details. It is now also chat-based instead of using in-game menus. As the map selection system uses the !ban command, Get5 will now unload the default basebans.smx SourceMod plugin to prevent conflicts, as this also uses the !ban command. You are encouraged to instead simply remove this plugin from your server (delete it or move it to the disabled folder).

  2. Get5_OnMatchUnpaused's team property now always reflects the team that started the pause. Previously, this would be the team that triggered the unpause.

  3. Technical pauses can now be enabled without enabling tactical pauses. Previously, you would have to enable tactical pauses via get5_pausing_enabled to have access to technical pauses via get5_allow_technical_pause. These have now been decoupled.

  4. get5_server_id is now a string instead of an integer, which changes a few things:

    4.a. If you use the default MySQL extension for stats, you must run this command to make your server_id column accept a string. If you don't run this, and you set a non-integer value as your get5_server_id, your server will error. If you continue to use a regular integer for the cvar, it will still work without modifying your database schema. get5_server_id also still defaults to "0" for backwards compatibility.

    ALTER TABLE `get5_stats_matches`
        MODIFY COLUMN `server_id` VARCHAR(64) NOT NULL DEFAULT '0'

    4.b. The native has changed from:

    native int Get5_GetServerID();

    to this, accepting a buffer instead of returning an integer:

    native void Get5_GetServerID(char[] id, int length);
  5. get5_surrender_required_votes is now limited by the value provided to players_per_team, so you will not have a situation where you don't have enough players to successfully vote to surrender.

  6. Pauses are not consumed until they actually start, which means they can be canceled if you !unpause before the round ends. This behavior can be controlled via get5_allow_pause_cancellation.

New Features / Changes 🎉

  1. Admins can now use the command get5_add_ready_time to add more time during ready-up phases if a team needs more time.
  2. Tactical pauses now default to 60 seconds fixed-duration via get5_fixed_pause_time instead of a total pause time of 300 via get5_max_pause_time. This changes nothing for existing servers and only affects new installations of Get5.
  3. The in-game pause counters are now used for tactical timeouts, which makes them work properly with various GOTV overlays.
  4. To bring pauses more in line with the built-in ones, the ability to unpause fixed-duration tactical pauses if both teams !unpause can now be disabled via get5_allow_unpausing_fixed_pauses.
  5. There is a new forward/event called Get5_OnPauseBegan, which fires when a pause begins, unlike Get5_OnMatchPaused, which fires when pause is called by a player, even if it does not begin until the next round.
  6. If the map the server is on also happens to be the first map to be played after map selection, the server will not reload and ask everyone to ready, but instead simply start the match.
  7. Get5 now speaks Greek, Turkish and Swedish. (Thanks @GekasD, AliOnIce and OmegaSkid, respectively).
  8. You can now add Workshop maps to the maplist. Please note that this requires a Steam Web API key, or your match configuration will fail to load.
  9. Get5 now officially supports Wingman. If you are upgrading a Get5 installation, remember to copy in the new wingman config file from cfg/get5/live_wingman.cfg if you want to run Wingman matches.
  10. get5_pause_on_veto now defaults to enabled for new installations.
  11. You can now set get5_kick_on_force_end 1 if you want get5_endmatch to adhere to the value of get5_kick_when_no_match_loaded.

0.12.1

2023-01-16

What's Changed

This is a bugfix release. There are no breaking changes or translation changes, so you only need to replace the get5.smx for this one.

If you use the Get5_OnEvent forward in another plugin, please make sure it still works. It had wrong syntax, so it's unlikely you would have been using it in its previous format anyway.

Bug Fixes 🐞

New Contributors

  • @hammy2899 made their first contribution in #964

Full Changelog: https://github.com/splewis/get5/compare/v0.12.0...v0.12.1

0.12.0

2022-12-25

What's Changed

0.12 is now available. A bunch of stuff has been improved, bugs have been fixed and new features have been introduced. Please test it out and report any problems. As always, remember to update your translations folder and read the breaking changes (since 0.11).

Translations are still a bit hit-and-miss for some languages, so if you want to help complete them, head over to the documentation for instructions on how to help.

Breaking Changes 🛠

  1. Get5-DemoName header when uploading demos has been renamed to Get5-FileName, as this now also applies to uploading backups.
  2. Player connect/disconnect events/forwards now only fire when a match config is loaded (but now include matchid).
  3. You must now provide get5_time_to_start_veto separately from get5_time_to_start. If you don't set this variable, players will have infinite time to ready for veto.
  4. maplist is now required in match configurations. There is now no "default map list" in Get5.
  5. The filename property of the demo_finished and demo_upload_ended events now includes the folder, i.e. the full path to the file, if get5_demo_path is set.
  6. Get5_OnPreLoadMatchConfig() no longer fires when loading a backup file.
  7. If you use fromfile, make sure to always have JSON files end with .json, or Get5 will assume they are KeyValues, regardless of the format of the match config.

New Features 🎉

  1. You can now opt to disable the !stop command using get5_stop_command_no_damage and get5_stop_command_time_limit.
  2. Bots are now considered players in deciding the knife round winner and will also trigger 1vX player stats.
  3. You can now use fromfile when loading both maplist, spectators and team1/team2 in the match configurations, and both JSON and KeyValues is supported.
  4. You can use {TEAM1_SCORE} and {TEAM2_SCORE} in get5_hostname_format.
  5. ConVars can now be up to 512 characters, previously limited to 128. Note that the source of setting Cvars might impose a shorter length (direct console input seems to only allow up to around 128, but get5.cfg allows you to set up to 512). Your mileage may vary.
  6. You can prevent Get5 from restoring parameters provided in the cvars section of a match configuration to their pre-Get5-value using get5_reset_cvars_on_end - this is useful if you only use Get5 and want to provide parameters in your configs that don't like to be reset when the series ends.
  7. You can now automatically upload backups and also load backups from a remote URL using get5_loadbackup_url.
  8. All HTTP requests sent by Get5 (loading match config, loading backup, uploading demo, uploading backup, sending events) now include a Get5-Version HTTP header with the SemVer of Get5 (i.e. 0.12.0 or 0.12.0-353cee5 for a nightly), so you can gracefully handle breaking changes on the server-side - or outright refuse to communicate with an outdated server.
  9. You can now add custom aliases to all chat commands.

Bug Fixes 🐞

  1. Fixed a problem where players at index 0 in JSON match configurations were not elected as captains for veto.
  2. Increased max heap size from 4kb to 128kb to prevent various out-of-memory errors (Thanks @thelitlej).
  3. Fixed a problem with the backup system that would cause problems if restoring from the first round of the second half to any round in the first half.
  4. Lots of improvements to error handling/feedback related to match loading, team loading and backups.
  5. The hostname set via get5_hostname_format now properly resets when a series ends.
  6. Fixed a problem where loading a backup on a non-live server that happens to be on the correct map would not trigger a ready-up for backup restore, but instead immediately load the backup.
  7. Players are no longer marked as ready if they suicide in warmup when get5_auto_ready_active_players is enabled (killed via !coach for instance).

New Contributors

  • @thelitlej made their first contribution in #944

Full Changelog: https://github.com/splewis/get5/compare/v0.11.0...v0.12.0

0.11.0

2022-11-03

What's Changed

  • Improved communication to players about the use/availability of !coach, !ready and !unready commands during warmup, depending on match and individual player state.
  • Doubled duration of the auto ready hint so players are less likely to miss it.
  • Consumed pauses are now included in backups, so they can be properly restored if the game state is lost or if a new server is needed.
  • The Get5_OnSeriesResult event/forward now has a time_to_restore property, letting you know how long until Get5 no longer manages the server and GOTV broadcast has ended.
  • Demos are no longer split into two files if you use get5_loadbackup for the **same match and map ** during the live phase.
  • Prevent suicide via console using kill or explode.
  • Updated German translation. (Thanks @Apfelwurm)
  • Updated French translation. (Thanks @Iwhite67 @Gryfenfer97 @Maruchun0)
  • Updated Russian translation. (Thanks @Saph1s)
  • Updated Hungarian translation. (Thanks @enerbewow)
  • Updated Portuguese transaltion. (Thanks @SidiBecker and Nathy)
  • Updated Danish translation. (@nickdnk)
  • Improved Polish and Spanish translation. (Thanks axsusxd)
  • Lots of improvements to the documentation.
  • Lots of improvements to CI (Thanks @PhlexPlexico @Apfelwurm).

Breaking Changes 🛠

  • The format of Get5 backup files has changed to now include get5_server_id to prevent backup file collisions.
  • The mp_backup_round_file convar is now managed by Get5 automatically and also uses get5_server_id to prevent file collisions.
  • Backup files made with previous versions of Get5 cannot be used.
  • The built-in backup files created by the game (backup_round00.txt etc.) are now removed automatically by Get5 when merged into the Get5 backup system.
  • A new game state has been introduced: pending_restore, which is used when changing to a different map during a restore from backup. Previously, this would be either live or warmup.
  • Removed get5_end_match_on_empty_server as it was unreliable and buggy. You should instead use the new forfeiting system for similar behavior.

New Features 🎉

Bug Fixes 🐞

  • Fixed a problem where players would sometimes spawn in odd places when auto-placed onto teams when joining the server.
  • Fixed a problem where you could not join a team even if no Get5 match configuration was loaded.
  • Fixed a problem where a "CTs win!" callout would be heard as warmup ended, messing up the start of the knife round.
  • Added missing Player property to the Get5PlayerSayEvent.
  • Fixed a problem where the use of numbers in the cvars section of JSON match configurations would result in undefined behavior.
  • Fixed a bunch of issues with runaway timers causing problems if ending and restarting matches at various times, such as when waiting for a map change or a knife round decision.
  • We now prevent users from loading backups when it is not safe, and from issuing various commands that are not safe while waiting for a backup. This could cause all kinds of problems.
  • We now prevent multiple backups from being loaded on top of each other if multiple !stop or get5_loadbackup commands are issued in succession.
  • We no longer stop recording demos right after a match ends if there is a non-zero tv_delay, as it would cause the GOTV broadcast to freeze when the file is flushed to disk. This is a Valve bug we can only work around.

...and many, many more minor adjustments and tweaks. As always, big thanks to everyone who helped test and provide feedback on all the changes since 0.10, especially to OmegaSkid from SCL and @LukasW1337 from HLTV for daring to run nightly builds in production.

If I forgot to tag someone for something you helped with, @nickdnk.

Full Changelog: https://github.com/splewis/get5/compare/v0.10.5...v0.11.0

0.10.5

2022-10-04

What's Changed

Small hotfix. Should have been in 0.10.4, but hindsight 20/20.

Bug Fixes 🐞

  • Remove team [READY] tags if there is no knife round. #890.

Full Changelog: https://github.com/splewis/get5/compare/v0.10.4...v0.10.5

0.10.4

2022-10-03

What's Changed

This is a bug-fix release.

Bug Fixes 🐞

  • Fixed a case where multiple calls to !stop (such as all players spamming it) would cause Get5 to load multiple backups on top of each other. #887.
  • Fixed some lingering issues with timing of !stay or !swap which were thought to have been fixed in 0.10.3. To truly mitigate this problem, you now cannot elect to stay or swap until the knife round has completely ended and the game has returned to warmup mode. The default mp_round_restart_delay in the knife round has been reduced to 3 seconds, but you can set this even lower in the knife.cfg if you wish. #888
  • g_KnifeWinnerTeam now gets properly reset so that an unfortunately-timed restart of a match will not mess up the knife round. #888

Full Changelog: https://github.com/splewis/get5/compare/v0.10.3...v0.10.4

0.10.3

2022-09-16

This is strictly a bug-fix release. A problem has been identified and corrected that would cause a !swap or !stay command issued in a 1-second gap right as the knife-round ends to send the game directly into live mode, skipping the countdown, with an incorrect round number for the Get5_OnRoundStart event/forward.

What's Changed

Bug Fixes 🐞

  • Fix problems with game going directly to live, skipping countdown.

Full Changelog: https://github.com/splewis/get5/compare/v0.10.2...v0.10.3

0.10.2

2022-09-15

What's Changed

  • You can now define spectators in scrim templates.
  • Some code was optimized and renamed.

Bug Fixes 🐞

  • Sorted some problems related to team assignment priority when players are defined in multiple places in the match configuration.

    Players are now consistently assigned a slot in this order:

    1. Spectator
    2. Coach for team1
    3. Coach for team2
    4. Player on team1
    5. Player on team2

    If not found in any of these places, or if their assignment has no free slots, players are removed from the server.

  • The number of spectators cannot exceed mp_spectators_max and additional spectators will be kicked similarly to how players are kicked if a team is full.

Full Changelog: https://github.com/splewis/get5/compare/v0.10.1...v0.10.2

0.10.1

2022-09-11

What's Changed

A minor release here fixing some discovered problems with 0.10.0. There are no breaking changes.

Bug Fixes 🐞

  • The game no longer restarts (mp_restartgame 1) when loading a backup, as that would break some tournament logging systems. It now sends the game into warmup instead and then loads the backup.

  • The secondary GOTV (tv_enable1) is no longer kicked when performing a team !swap. It also no longer announces 2x PlayerX is now coaching Team X if you have coaches in the game.

  • As version 0.10.0 did not really work with get5_check_auths disabled, this has been remedied as well as it can. Note that running Get5 with team-locking disabled is discouraged and many things are not guaranteed to behave as you would expect. We recommend you leave it on (the default) and use get5_creatematch when players have joined the teams they want to be on, instead of loading match configurations with no SteamIDs in the teams. The coaching bug still exists if you use !coach without locking Steam IDs, as Get5 forwards to the internal coach t and coach ct commands in this case, which suffer from this problem, so beware of this! There is no coaching bug if locking the teams.

  • Team names are now team1 and team2 internally if no team name was provided. The team name gets auto-corrected when a player joins a team (team_PlayerName), but in between this, the team names would be empty, causing some messages to misbehave.

Full Changelog: https://github.com/splewis/get5/compare/v0.10.0...v0.10.1

0.10.0

2022-09-03

What's Changed

Version 0.10.0 is now completed. A lot has changed in this release and many bugs have been fixed. This is probably what version 0.9.0 should have been, so we strongly encourage everyone on 0.9.0 to upgrade to this version as soon as possible.

Breaking Changes 🛠

  • If you are updating from a version prior to 0.9, please read the breaking changes for that release as well: https://github.com/splewis/get5/releases/tag/v0.9.0

  • Removed deprecated bo2_series and maps_to_win match config parameters. Use num_maps and clinch_series to achieve similar behavior. See https://splewis.github.io/get5/latest/match_schema/#schema

  • get5_creatematch had its argument order changed to match get5_scrim: #806

  • If you update to this version from a previous Get5 version, ensure you make the following changes to your cfg/sourcemod/get5.cfg file:

    get5_time_format must be "%Y-%m-%d_%H-%M-%S" (or any equivalent with hours, minutes and seconds in it) get5_demo_name_format must include {TIME}, i.e: "{TIME}_{MATCHID}_map{MAPNUMBER}_{MAPNAME}"

    If you don't make this change, your demos will be overwritten if you use the backup system!

  • Backup files created with previous versions of Get5 will not work correctly.

  • Backups are now never written for pre-veto or veto stages, as that would be equivalent to simply reloading the match configuration.

  • The coaching and player team assignment system has been completely rewritten. The default coach console command is disabled, and you must use !coach in chat (or sm_coach in console) instead. You must also never set players_per_team to a value higher than the actual number of players you want on teams. If you don't use fixed coaches (that is, if you just put everyone in players and tell them to call !coach) and you want to be able to swap players for coaches, set coaches_per_team to 2 (or any higher value) to make room for a player to coach so that a coach can then become a player. Please consult the coach documentation for details.

  • Not exactly a breaking change, but we would strongly recommend you go over the Prohibited options section of https://splewis.github.io/get5/latest/configuration/#phase-configuration-files and remove any of those from your live.cfg, warmup.cfg and knife.cfg files, if they are present. These should also not go in your cvars section of a match configuration (except for tv_delay)!

  • First kills and first deaths are now per round, not **per team per round **: #660

  • A new coaching key in the stats now indicates if a player was a coach, and coaches no longer have their roundsplayed stat increased/set.

New Features 🎉

Known Issues

  • #549: If get5_end_match_on_empty_server is enabled, the entire match series will sometimes end on map changes or when first joining the server. This will be addressed in 0.11 which will also contain logic for surrendering. We recommend you disable get5_end_match_on_empty_server or live with this consequence.

Bug Fixes 🐞

  • Player stats are now initialized to zero: #814
  • Don't allow the use of !ready when a map change is pending: #832
  • Pause timer hints are now visible to GOTV clients: #834
  • Team ready-tags are now removed when the knife-round starts: #846
  • The knife-round now has correct call-out of the winning team, even if "CTs run down the clock": #838
  • A team's request to !stop is now reset when the round ends: #854
  • Added server collision protection to the get5_names.txt player name file.
  • Pauses used/consumed are now stored in backup files.
  • Fixed an invalid handle error when using fromfile when loading a team file in JSON.
  • The Get5_OnSeriesResult foward/event is now called immediately as the series ends, not after GOTV has finished broadcasting: #821
  • Fixed a bunch of problems with backups, such as map draws breaking it completely, players being put on the wrong side if restoring to a round after halftime or restoring to the last round of a match simply ending the match immediately.
  • Fixed invalid handle error when ending a match during veto, then restarting the veto.
  • GOTV broadcast delay now auto-adjusts mp_match_restart_delay so it is never too short.
  • cvars of a match configuration are now always correctly applied after values in knife.cfg, live.cfg and warmup.cfg.
  • Players joining a game during halftime are now automatically put on their team as soon as the next round starts.
  • The Get5_OnBackupRestore forward now correctly contains the match, map and round number being restored to. This can be used by other plugins to remove any data recorded after the beginning of that round, as the rounds will be replayed.
  • Fixed invalid client index errors in the veto system if a team is empty.
  • All backups for live rounds now contain a "Valve backup" file, making the restore logic for round 0 (first round) similar to that of any other live round.
  • Fixed a problem with server hibernation causing the use of get5_autoload_config to produce Gamerules lookup failed errors and not firing the Get5_OnSeriesInit forward/event.
  • The game now restarts once when the game goes live, clearing lingering UI indicators of a round-win from the knife round.
  • Fixed a problem where the game would change to live get5 state too early, causing the countdown and "going live" announcements to misbehave.
  • If a match is canceled during veto countdown, it now correctly stops counting down and resets its countdown for the next attempt.
  • Team ready tags have been moved behind the team names to prevent the UI from displaying [ as a start-letter for both teams when viewed from the default GOTV overlay.
  • Color variables are now stripped from console messages, preventing garbled icon output in the log files.
  • Fixed a problem where setting values to empty strings (such as "get5_demo_format" "") in the cvars section of a match configuration would be ignored.
  • g_MatchID is now correctly reset when a match ends, so get5_listbackups will not be stuck listing the last ended match's backups only: #849
  • ... and many, many more minor bugs and adjustments. See the full commit list below if you want to inspect the changes (it's a lot)

Full Changelog: https://github.com/splewis/get5/compare/v0.9.0...v0.10.0

New Contributors

  • @enerbewow made their first contribution in #805

0.9.0

2022-07-01

Breaking Changes 🛠

  • The entire event and forward system has been rewritten from the ground up. This means if you had any plugin using the SourceMod forwards or the JSON events, you will have to go through the event system documentation to update your implementation.
  • The misspelled get5_web_available command has been removed. The Get5 Web proof-of-concept system has been updated to accommodate this.
  • The MySQL extension has had its schema changed. Please verify that you have all the columns as defined in the template schema found here.
  • SourceMod 1.10 is now required. It also works fine on 1.11 though!
  • A lot of translations have been adjusted, so you must merge in the translations folder to your SourceMod translations folder (addons/sourcemod/translations) if you update from an earlier version of Get5!

New Features 🎉

  • A lot of new information has been added to the events and forward system, including grenades thrown and their victims, every player death and bomb plants/defuses. (@nickdnk)
  • The pausing-system has been totally reworked, using hints instead of the in-game counters. (@nickdnk + @PhlexPlexico with help from @rpkaul)
  • A slick, new documentation site has been built, replacing the outdated GitHub Wiki. (@nickdnk and @PhlexPlexico)
  • A complete CI-flow has been implemented (@PhlexPlexico). We plan to do a lot more frequent releases going forward and hopefully reach a 1.0 version in the not-too-distant future.
  • Improved damage report to include kills, assists and flash assists. by @nickdnk in #725
  • Implement "random" value for "veto_first" by @tapir in #765
  • ... and a lot more minor stuff!

What happened to 0.8?

Breaking changes were merged into master after 0.7, and these ran under the 0.8.0 version internally in Get5, but no release was ever made, so we jumped straight to 0.9 instead of retconning 0.8.

Bug Fixes 🐞

This list is simply too long to go over. But it's a lot. We've closed around 50 issues since 0.7.2, and some of the changes can be found in these commits and pull requests:

  • In-game timeout counter by @VilkkuV in #547
  • Stats in JSON format by @jenrik in #686
  • Increased JSON buffer from 8kb to 64kb by @TimiSillman in #723
  • Pause/Unpause events and forwards by @PhlexPlexico in #626
  • Include Pause Forwards in get5.inc by @PhlexPlexico in #727
  • Fix g_BO2Match never being set to false on match load. by @PhlexPlexico in #726
  • Pause Game While Veto is going on. by @TandelK in #696
  • Match restore issues by @arildboifot in #652
  • Update clan tag prevention message to be debug. by @PhlexPlexico in #764
  • Update Dockerfile to debian 11 by @Apfelwurm in #760
  • Change gMapSides when knife round swaps. by @PhlexPlexico in #753
  • Create Github Pages Documentation by @PhlexPlexico in #752
  • Include timeouts for tech pauses. by @PhlexPlexico in #749
  • Add -E flag to spcomp to treat warnings as errors for workflow builds by @nickdnk in #766
  • Bring in check to not allow users the ability to unpause admin pauses. by @PhlexPlexico in #767
  • Swap pause type for restore to tracitcal by @PhlexPlexico in #769
  • Maintain Pause Count On Match Restore by @PhlexPlexico in #770
  • Fix pausing during match restore when users use a fixed pause timer. by @PhlexPlexico in #771
  • More fixed pause timer fixes. by @PhlexPlexico in #772
  • Match Restore Coach Fix by @PhlexPlexico in #754
  • 0.9 Release by @nickdnk in #803

New Contributors

  • @VilkkuV made their first contribution in #547
  • @TimiSillman made their first contribution in #723
  • @tapir made their first contribution in #765

Full Changelog: https://github.com/splewis/get5/compare/0.7.2...v0.9.0