It is now sane

Here is the code:

Code:
//1. Put this file in the "codam" folder of the "main" server folder.
//2. Add the below line to "modlist.gsc":
//[[register]]("Alive players counter", codam\aliveplayers_counter::main);

main(phase, register)
{
	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/main");
	switch(phase)
	{
		case "init": _init(register); break;
	}
}
_init(register)
{
	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/_init");
	
	if (isdefined(level.showaliveplayerscount))
		return;
	level.showaliveplayerscount = true;

	if (getCvar("g_gametype") == "sd")
	{
		[[register]]("spawnPlayer", ::spawnPlayer, "thread");
		[[register]]("gt_spawnSpectator", ::spawnSpectator, "thread");
	}
}

spawnPlayer(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9)
{
	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/spawnPlayer");

	thread hudAlivePlayersCount();
}
spawnSpectator(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9)
{
	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/spawnSpectator");

	//Clear counter
	if (isdefined(self.hud_counter_friends))
	{
		self.hud_counter_friends destroy();
	}
	if (isdefined(self.hud_counter_enemies))
	{
		self.hud_counter_enemies destroy();
	}
}

hudAlivePlayersCount()
{
	codam\utils::_debug("NNNNNNNNNNNN Alive players counter/hudAlivePlayersCount");

	level endon("death");
	level endon("intermission");

	wait(0.05);
	if (isdefined(level.gtd_call))
		teams = [[level.gtd_call ]]("teamsPlaying");

	if (!isdefined(teams) || (teams.size < 1))
	{
		teams = [];
		teams[teams.size] = "allies";
		teams[teams.size] = "axis";
	}
	iter = 0;
	for (;;)
	{
		displayAlivePlayersCount(teams, iter);
		iter = 1 - iter;
		wait(0.5);
	}
}

displayAlivePlayersCount(teams, iter)
{
	numonteam = [];
	aliveonteam = [];
	players = getentarray("player", "classname");

	for (i = 0; i < players.size; i++)
	{
		player = players[i];
		team = player.sessionteam;

		if (!isdefined(team) || (team == "none"))
		{
			team = player.pers["team"];
			if (!isdefined(team))
				continue;
		}

		if (isdefined(numonteam[team]))
			numonteam[team ]++;
		else
			numonteam[team] = 1;

		if (player.sessionstate != "playing")
			continue;

		if (isdefined(aliveonteam[team]))
			aliveonteam[team]++;
		else
			aliveonteam[team] = 1;
	}

	for (i = 0; i < teams.size; i++)
	{
		teamInLoop = teams[i];
		
		if (teamInLoop != "spectator")
		{
			for (ii = 0; ii < players.size; ii++)
			{
				player = players[ii];
				player_sTeam = player.sessionteam;

				if (player_sTeam != "spectator")
				{
					if (player_sTeam == teamInLoop)
					{
						//FRIENDS
						if (!isdefined(player.hud_counter_friends))
						{
							//CREATE HUD
							hud[ii] = newClientHudElem(player);
							hud[ii].color = (0.6, 1, 0);
							hud[ii].x = 570;
							hud[ii].y = 75;
							hud[ii].fontScale = 1.5;
							player.hud_counter_friends = hud[ii];
						}
						//SET VALUE
						if (isdefined(aliveonteam[teamInLoop]))
						{
							player.hud_counter_friends setValue(aliveonteam[teamInLoop]);
						}
						else
						{
							player.hud_counter_friends setValue(0);
						}
					}
					else
					{
						//ENEMIES
						if (!isdefined(player.hud_counter_enemies))
						{
							//CREATE HUD
							hud[ii] = newClientHudElem(player);
							hud[ii].color = (1, 0.2, 0);
							hud[ii].x = 610;
							hud[ii].y = 75;
							hud[ii].fontScale = 1.5;
							player.hud_counter_enemies = hud[ii];
						}
						//SET VALUE
						if (isdefined(aliveonteam[teamInLoop]))
						{
							player.hud_counter_enemies setValue(aliveonteam[teamInLoop]);
						}
						else
						{
							player.hud_counter_enemies setValue(0);
						}
					}
				}
			}
		}
	}
	return;
}