[Release] [ZM] High Round Tracker
-
After searching for a script that could track and save the highest round records for each player count (solo, duo, trio, and 4-player teams), I came across an older script from 2020: ZM Highest Round Tracker. which I have used as a reference for this script as it had become outdated. This script requires T6 utils https://github.com/alicealys/t6-gsc-utils
Script can be found below or at my github: https://github.com/CoreyUK/T6ZM-Scripts/blob/main/RoundSaver/CUKRoundSaver
I'm no GSC god so don't expect too much from me
#include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\gametypes_zm\_hud_util; #include maps\mp\gametypes_zm\_hud_message; init() { level.highRoundOnePlayer = 0; level.highRoundTwoPlayers = 0; level.highRoundThreePlayers = 0; level.highRoundFourPlayers = 0; level.highRoundPlayersOne = "None"; level.highRoundPlayersTwo = "None"; level.highRoundPlayersThree = "None"; level.highRoundPlayersFour = "None"; level thread high_round_tracker(); level thread onPlayerConnect(); } onPlayerConnect() { for(;;) { level waittill("connected", player); player thread high_round_info(); } } high_round_tracker() { thread high_round_info_giver(); gamemode = gamemodeName( getDvar( "ui_gametype" ) ); map = mapName( level.script ); if( level.script == "zm_transit" && getDvar( "ui_gametype" ) == "zsurvival" ) map = startLocationName( getDvar( "ui_zm_mapstartlocation" ) ); level.basepath = getDvar("fs_homepath") + "/"; path = level.basepath + "/logs/" + map + gamemode + "HighRound.txt"; file = fopen(path, "r"); text = fread(file); fclose(file); highroundinfo = strToK( text, ";" ); if ( highroundinfo.size >= 8 ) { level.highRoundOnePlayer = int( highroundinfo[ 0 ] ); level.highRoundTwoPlayers = int( highroundinfo[ 1 ] ); level.highRoundThreePlayers = int( highroundinfo[ 2 ] ); level.highRoundFourPlayers = int( highroundinfo[ 3 ] ); level.highRoundPlayersOne = highroundinfo[ 4 ]; level.highRoundPlayersTwo = highroundinfo[ 5 ]; level.highRoundPlayersThree = highroundinfo[ 6 ]; level.highRoundPlayersFour = highroundinfo[ 7 ]; } else { level.highRoundOnePlayer = 0; level.highRoundTwoPlayers = 0; level.highRoundThreePlayers = 0; level.highRoundFourPlayers = 0; level.highRoundPlayersOne = "None"; level.highRoundPlayersTwo = "None"; level.highRoundPlayersThree = "None"; level.highRoundPlayersFour = "None"; } for ( ;; ) { level waittill ( "end_game" ); players = get_players(); numPlayers = players.size; if ( numPlayers == 1 && level.round_number > level.highRoundOnePlayer ) { updateHighRoundRecord(1, players); } else if ( numPlayers == 2 && level.round_number > level.highRoundTwoPlayers ) { updateHighRoundRecord(2, players); } else if ( numPlayers == 3 && level.round_number > level.highRoundThreePlayers ) { updateHighRoundRecord(3, players); } else if ( numPlayers == 4 && level.round_number > level.highRoundFourPlayers ) { updateHighRoundRecord(4, players); } } } updateHighRoundRecord( numPlayers, players ) { level.highRoundPlayers = ""; for ( i = 0; i < players.size; i++ ) { if( level.highRoundPlayers == "" ) { level.highRoundPlayers = players[i].name; } else { level.highRoundPlayers = level.highRoundPlayers + "," + players[i].name; } } foreach( player in level.players ) { player tell( "New Record: ^1" + level.round_number ); player tell( "Set by: ^1" + level.highRoundPlayers ); } if( numPlayers == 1 ) { level.highRoundOnePlayer = level.round_number; level.highRoundPlayersOne = level.highRoundPlayers; } else if( numPlayers == 2 ) { level.highRoundTwoPlayers = level.round_number; level.highRoundPlayersTwo = level.highRoundPlayers; } else if( numPlayers == 3 ) { level.highRoundThreePlayers = level.round_number; level.highRoundPlayersThree = level.highRoundPlayers; } else if( numPlayers == 4 ) { level.highRoundFourPlayers = level.round_number; level.highRoundPlayersFour = level.highRoundPlayers; } log_highround_record( level.highRoundOnePlayer + ";" + level.highRoundTwoPlayers + ";" + level.highRoundThreePlayers + ";" + level.highRoundFourPlayers + ";" + level.highRoundPlayersOne + ";" + level.highRoundPlayersTwo + ";" + level.highRoundPlayersThree + ";" + level.highRoundPlayersFour ); } log_highround_record( newRecord ) { gamemode = gamemodeName( getDvar( "ui_gametype" ) ); map = mapName( level.script ); if( level.script == "zm_transit" && getDvar( "ui_gametype" ) == "zsurvival" ) map = startLocationName( getDvar( "ui_zm_mapstartlocation" ) ); level.basepath = getDvar("fs_homepath") + "/"; path = level.basepath + "/logs/" + map + gamemode + "HighRound.txt"; file = fopen( path, "w" ); fwrite( file, newRecord ); fclose( file ); } startLocationName( location ) { if( location == "cornfield" ) return "Cornfield"; else if( location == "diner" ) return "Diner"; else if( location == "farm" ) return "Farm"; else if( location == "power" ) return "Power"; else if( location == "town" ) return "Town"; else if( location == "transit" ) return "BusDepot"; else if( location == "tunnel" ) return "Tunnel"; } mapName( map ) { if( map == "zm_buried" ) return "Buried"; else if( map == "zm_highrise" ) return "DieRise"; else if( map == "zm_prison" ) return "Motd"; else if( map == "zm_nuked" ) return "Nuketown"; else if( map == "zm_tomb" ) return "Origins"; else if( map == "zm_transit" ) return "Tranzit"; return "NA"; } gamemodeName( gamemode ) { if( gamemode == "zstandard" ) return "Standard"; else if( gamemode == "zclassic" ) return "Classic"; else if( gamemode == "zsurvival" ) return "Survival"; else if( gamemode == "zgrief" ) return "Grief"; else if( gamemode == "zcleansed" ) return "Turned"; return "NA"; } high_round_info_giver() { highroundinfo = 1; roundmultiplier = 5; level endon( "end_game" ); while( 1 ) { level waittill( "start_of_round" ); if( level.round_number == ( highroundinfo * roundmultiplier )) { highroundinfo++; foreach( player in level.players ) { player tell( "High Round Record for 1 player: ^1" + level.highRoundOnePlayer ); player tell( "Set by: ^1" + level.highRoundPlayersOne ); player tell( "High Round Record for 2 players: ^1" + level.highRoundTwoPlayers ); player tell( "Set by: ^1" + level.highRoundPlayersTwo ); player tell( "High Round Record for 3 players: ^1" + level.highRoundThreePlayers ); player tell( "Set by: ^1" + level.highRoundPlayersThree ); player tell( "High Round Record for 4 players: ^1" + level.highRoundFourPlayers ); player tell( "Set by: ^1" + level.highRoundPlayersFour ); } } } } high_round_info() { wait 6; self tell( "High Round Record for 1 player: ^1" + level.highRoundOnePlayer ); self tell( "Set by: ^1" + level.highRoundPlayersOne ); self tell( "High Round Record for 2 players: ^1" + level.highRoundTwoPlayers ); self tell( "Set by: ^1" + level.highRoundPlayersTwo ); self tell( "High Round Record for 3 players: ^1" + level.highRoundThreePlayers ); self tell( "Set by: ^1" + level.highRoundPlayersThree ); self tell( "High Round Record for 4 players: ^1" + level.highRoundFourPlayers ); self tell( "Set by: ^1" + level.highRoundPlayersFour ); }