mirror of
https://github.com/ChocoTaco1/TacoServer.git
synced 2026-01-27 20:14:45 +00:00
95 lines
3 KiB
C#
95 lines
3 KiB
C#
// GetCounts was made to accurately keep track of how many players
|
|
// are on teams, on the server, on each team, spectator, etc.
|
|
// It runs every 2.5 seconds.
|
|
// It has since evolved into the place to inject other services
|
|
// and aspects within the server.
|
|
//
|
|
//
|
|
// To control whether the server auto resets when empty
|
|
// $Host::EmptyServerReset = 0;
|
|
|
|
package StartTeamCounts
|
|
{
|
|
|
|
function CreateServer( %mission, %missionType )
|
|
{
|
|
parent::CreateServer( %mission, %missionType );
|
|
//Call for a GetTeamCount update
|
|
GetTeamCounts( %game, %client, %respawn );
|
|
|
|
|
|
//Make sure teamchange variable is set
|
|
ResetClientChangedTeams();
|
|
//Set NBR notify varibles
|
|
ResetNBRNotify();
|
|
//Whether the server auto restarts when empty or not
|
|
$Host::Dedicated = $Host::EmptyServerReset;
|
|
}
|
|
|
|
};
|
|
|
|
// Prevent package from being activated if it is already
|
|
if (!isActivePackage(StartTeamCounts))
|
|
activatePackage(StartTeamCounts);
|
|
|
|
function GetTeamCounts( %game, %client, %respawn )
|
|
{
|
|
//Check pug password
|
|
CheckPUGpassword();
|
|
|
|
//Get teamcounts
|
|
if( $GetCountsClientTeamChange && $countdownStarted && $MatchStarted )
|
|
{
|
|
//Team Count code by Keen
|
|
$PlayerCount[0] = 0;
|
|
$PlayerCount[1] = 0;
|
|
$PlayerCount[2] = 0;
|
|
|
|
for(%i = 0; %i < ClientGroup.getCount(); %i++)
|
|
{
|
|
%client = ClientGroup.getObject(%i);
|
|
|
|
//if(!%client.isAIControlled())
|
|
$PlayerCount[%client.team]++;
|
|
}
|
|
|
|
//echo ("Clientgroup " @ ClientGroup.getCount());
|
|
//echo ("$PlayerCount[0] " @ $PlayerCount[0]);
|
|
//echo ("$PlayerCount[1] " @ $PlayerCount[1]);
|
|
//echo ("$PlayerCount[2] " @ $PlayerCount[2]);
|
|
//echo ("client.team " @ %client.team);
|
|
|
|
//Other variables
|
|
//Amount of players on teams
|
|
$TotalTeamPlayerCount = $PlayerCount[1] + $PlayerCount[2];
|
|
//Amount of all players including observers
|
|
$AllPlayerCount = $PlayerCount[1] + $PlayerCount[2] + $PlayerCount[0];
|
|
|
|
|
|
//Start Base Rape Notify
|
|
schedule(500, 0, "NBRStatusNotify");
|
|
//Start Team Balance Notify
|
|
schedule(1000, 0, "TeamBalanceNotify");
|
|
//Start AntiCloak
|
|
schedule(1500, 0, "ActivateAntiCloak");
|
|
|
|
//Set so counter wont run when it doesnt need to.
|
|
$GetCountsClientTeamChange = false;
|
|
}
|
|
|
|
//Call itself again. Every 2.5 seconds.
|
|
schedule(2500, 0, "GetTeamCounts");
|
|
}
|
|
|
|
//Run at DefaultGame::clientJoinTeam, DefaultGame::clientChangeTeam, DefaultGame::assignClientTeam in evo defaultgame.ovl
|
|
//Also Run at DefaultGame::onClientEnterObserverMode, DefaultGame::AIChangeTeam, DefaultGame::onClientLeaveGame, DefaultGame::forceObserver in evo defaultgame.ovl
|
|
//And finally GameConnection::onConnect in evo server.ovl
|
|
//Added so the bulk of GetCounts doesnt run when it doesnt need to causing unnecessary latency that may or may not have existed, but probably is good practice.
|
|
//GetCounts still runs every 2.5 seconds as it did, but whether or not someone has changed teams, joined obs, left, etc etc will decide whether or not the bulk of it runs.
|
|
|
|
//Let GetTeamCounts run if there is a Teamchange.
|
|
function ResetClientChangedTeams()
|
|
{
|
|
$GetCountsClientTeamChange = true;
|
|
}
|