19.03.2015, 20:19
(
Последний раз редактировалось admantis; 19.03.2015 в 23:30.
)
Puedes contar la cantidad de jugadores en cierto equipo y restar ese nъmero a la cantidad mбxima de jugadores que puede haber por equipo. Si el resultado no es 0, hay puestos disponibles.
Suponiendo que pueden haber como mбximo 10 mafiosos, y hay 5 (los cuentas usando un bucle for() o foreach), restas 10-5 y el resultado son los puestos disponibles. Para balancear los equipos, simplemente cuenta la cantidad de jugadores en ambos equipos, usando un bucle for() o foreach, y revisa cual es mayor. Si por ejemplo, en el equipo azul hay 10 jugadores y en el rojo hay 9, asignar el equipo rojo al jugador. Si ambos equipos tienen la misma cantidad de jugadores, asigna un equipo al azar (no importa cual sea, porque luego serбn balanceados).
Todo esto lo puedes hacer con simple lуgica y contando los jugadores agregando condiciones en un bucle foreach o for. Un ejemplo:
Suponiendo que pueden haber como mбximo 10 mafiosos, y hay 5 (los cuentas usando un bucle for() o foreach), restas 10-5 y el resultado son los puestos disponibles. Para balancear los equipos, simplemente cuenta la cantidad de jugadores en ambos equipos, usando un bucle for() o foreach, y revisa cual es mayor. Si por ejemplo, en el equipo azul hay 10 jugadores y en el rojo hay 9, asignar el equipo rojo al jugador. Si ambos equipos tienen la misma cantidad de jugadores, asigna un equipo al azar (no importa cual sea, porque luego serбn balanceados).
Todo esto lo puedes hacer con simple lуgica y contando los jugadores agregando condiciones en un bucle foreach o for. Un ejemplo:
PHP код:
new red_count, blue_count, new_team;
for(new i = 0; i != MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPlayerTeam(i) == TEAM_BLUE) blue_count++;
else red_count++;
}
if(red_count == blue_count) new_team = (random(2) == 0) ? TEAM_BLUE : TEAM_RED; // equipo al azar si hay misma cantidad de jugadores
if(red_count < blue_count) new_team = TEAM_RED; // equipo rojo si hay menos rojos que azules
if(red_count > blue_count) new_team = TEAM_BLUE; // equipo azul si hay mбs rojos que azules
SetPlayerTeam(playerid, new_team); // ya hemos elegido el equipo ahora asignarlo al jugador.