From f7bf26f5c37bd1f443c13ca4c5ce433c20b5f14a Mon Sep 17 00:00:00 2001 From: ChocoTaco Date: Mon, 4 Feb 2019 15:22:59 -0500 Subject: [PATCH] Autobalance refinement One counter --- Classic/scripts/autoexec/Autobalance.cs | 49 +++++-------------- Classic/scripts/autoexec/TeamBalanceNotify.cs | 2 + 2 files changed, 14 insertions(+), 37 deletions(-) diff --git a/Classic/scripts/autoexec/Autobalance.cs b/Classic/scripts/autoexec/Autobalance.cs index 368328c..f9327f4 100644 --- a/Classic/scripts/autoexec/Autobalance.cs +++ b/Classic/scripts/autoexec/Autobalance.cs @@ -2,52 +2,27 @@ function Autobalance( %game, %client, %respawn ) { if( $CurrentMissionType !$= "LakRabbit" && $Host::EnableTeamBalanceNotify && $StatsMsgPlayed $= 1 && !$Host::TournamentMode ) - { - //Generate random to get random client - %team1random = getRandom(1,$PlayerCount[1]); - %team2random = getRandom(1,$PlayerCount[2]); - - %AutobalanceCount[0] = 0; - %AutobalanceCount[1] = 0; - %AutobalanceCount[2] = 0; - - for(%i = 0; %i < ClientGroup.getCount(); %i++) - { - %client = ClientGroup.getObject(%i); - - //For autobalance - //Pick a random client on a team - if( %client.team == 1 && %team1random == %AutobalanceCount[1] ) - %team1canidate = %client; - if( %client.team == 2 && %team2random == %AutobalanceCount[2] ) - %team2canidate = %client; - - //if(!%client.isAIControlled()) - %AutobalanceCount[%client.team]++; - - //Safetynet - if( %team1canidate $= "" ) - %team1canidate = %client; - if( %team2canidate $= "" ) - %team2canidate = %client; - } - + { if( $Team1Difference == 1 || $Team2Difference == 1 || $PlayerCount[1] == $PlayerCount[2] ) { $StatsMsgPlayed = 0; return; } //Safetynet - else if( team1canidate $= "" || team2canidate $= "" ) + else if( $team1canidate $= "" || $team2canidate $= "" ) { - schedule(2500, 0, "Autobalance", %game, %client, %respawn); - return; + messageAll('MsgTeamBalanceNotify', '\c0Autobalance error.'); + //Trigger GetCounts + ResetClientChangedTeams(); + //Reset Stats. + $StatsMsgPlayed = 0; + return; } //Team 1 else if( $Team1Difference >= 2 ) { - %client = %team1canidate; - %team = %team1canidate.team; + %client = $team1canidate; + %team = $team1canidate.team; %otherTeam = ( %team == 1 ) ? 2 : 1; Game.clientChangeTeam( %client, %otherTeam, 0 ); @@ -62,8 +37,8 @@ function Autobalance( %game, %client, %respawn ) //Team 2 else if( $Team2Difference >= 2 ) { - %client = %team2canidate; - %team = %team2canidate.team; + %client = $team2canidate; + %team = $team2canidate.team; %otherTeam = ( %team == 1 ) ? 2 : 1; Game.clientChangeTeam( %client, %otherTeam, 0 ); diff --git a/Classic/scripts/autoexec/TeamBalanceNotify.cs b/Classic/scripts/autoexec/TeamBalanceNotify.cs index 4dd1f05..5968c70 100644 --- a/Classic/scripts/autoexec/TeamBalanceNotify.cs +++ b/Classic/scripts/autoexec/TeamBalanceNotify.cs @@ -60,6 +60,8 @@ function StatsUnbalanceSound( %game, %client, %respawn ) else if( $Team1Difference >= 2 || $Team2Difference >= 2 ) { messageAll('MsgTeamBalanceNotify', '\c1Teams are unbalanced: \c0Autobalance Initializing.~wgui/vote_nopass.wav'); + //Schedule a GetCounts update before the autobalance fire + schedule(22000, 0, "ResetClientChangedTeams"); schedule(30000, 0, "Autobalance", %game, %client, %respawn); } }