CS:GO has it built in to recover a past round.
Here is a list of cvars pertaining to it:
"mp_backup_restore_list_files" game - Lists recent backup round files matching the prefix, most recent files first, ac
"mp_backup_restore_load_autopause" = "1" game - Whether to automatically pause the match after restoring round data from backup
"mp_backup_restore_load_file" game - Loads player cash, KDA, scores and team scores; resets to the next round after t
"mp_backup_round_auto" = "1" game - If enabled will keep in-memory backups to handle reconnecting players even if th
"mp_backup_round_file" = "backup" game - If set then server will save all played rounds information to files filename_dat
"mp_backup_round_file_last" = "" game - Every time a backup file is written the value of this convar gets updated to hol
"mp_backup_round_file_pattern" = "%prefix%_round%round%.txt" game - If set then server will save all played rounds information to files named by thi
"sv_vote_issue_loadbackup_allowed" = "1" game notify replicated - Can people hold votes to load match from backup?