[Pregunta] Balance de Equipos
#1

Hola, quisiera pedirles si me pudieran Ayudar para que los equipos tuvieran que estar Balanceados.

O sea, me refiero a que, estoy haciendo un GM con 2 equipos, pero puede llegar el momento en que se desbalenceen porque hay mas jugadores en un Equipo que en el otro, entonces lo ideal seria que los equipos tuvieran la misma cantidad de jugadores. Y si alguien quiere pasarse al otro equipo que esta lleno, le diga: Equipo full, escoje el otro.

Es para que el juego sea justo. Imaginen un equipo con 10 jugadores y el otro con 2
Gracias de antemano, ojala puedan ayudarme. Si no entendieron, avisenme
Reply
#2

Alguien sabe ?
Reply
#3

mira, recien se me ocurrio algo mas o menos que despues lo paso a codigo (beta xq no tengo forma de testearlo). basicamente es tener 2 arrays, en uno guardas la cantidad de integantes q tiene el equipo A y en el otro la del B. los comparas y si la diferencia es mayor o igual a 2 entonces pasas jugadores del equipo que mas jugadores tenga, hasta que las cant queden iguales o haya una diferencia de 1.
Reply
#4

Gracias por responder, aqui dejo unos codigos que me han dado, pero no funcionan como deberian. Si alguno lo puede reparar o si basandose puede hacer uno que funcione estaria muy agradecido

Код:
forward BalancearEquipos(playerid);

SetTimer("BalancearEquipos", 200, 1); // Eso lo puse en OnGameModeInit

public BalancearEquipos(playerid)
{
	new Equipo1, Equipo2;
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
       	if (GetPlayerTeam(i) == TEAM_GREEN) // Equipo 1
       	{
           	Equipo1++;
       	}
       	else if (GetPlayerTeam(i) == TEAM_RED) // Equipo 2
       	{
           	Equipo2++;
       	}
   	}
   	if (Equipo1+2 > Equipo2)
   	{
       	new idj[MAX_PLAYERS], cantequipo;
      	for(new i = 0; i < MAX_PLAYERS; i++)
      	{
         	if (GetPlayerTeam(playerid) == TEAM_GREEN) // Equipo 1
         	{
             	idj[playerid] = cantequipo;
             	cantequipo++;
         	}
         	if (idj[i] == random(cantequipo))
         	{
             	ForceClassSelection(playerid);
         	}
      	}
	}
   	else if (Equipo2+2 > Equipo1)
   	{
       	new idj[MAX_PLAYERS], cantequipo;
      	for(new i = 0; i < MAX_PLAYERS; i++)
      	{
         	if (GetPlayerTeam(playerid) == TEAM_RED) // Equipo 2
         	{
             	idj[playerid] = cantequipo;
             	cantequipo++;
         	}
         	if (idj[i] == random(cantequipo))
         	{
            	ForceClassSelection(playerid);
         	}
      	}
   	}
   	return 1;
}
// By bruunosoniico
Y el otro es:

Код:
public OnPlayerRequestSpawn(playerid)
{
	new Equipo1, Equipo2;
	for(new i = 0; i < GetMaxPlayers(); i++)
	{
		if(gTeam[playerid] == TEAM_GREEN) Equipo1 ++;
		else if(gTeam[playerid] == TEAM_RED) Equipo2 ++;
	}
	if(Equipo1 > Equipo2)
	{
		GameTextForPlayer(playerid,"~r~Este equipo esta lleno, elige otro.",3000,3);
		ForceClassSelection(playerid);
	}
	else if(Equipo2 > Equipo1)
	{
		GameTextForPlayer(playerid,"~r~Este equipo esta lleno, elige otro.",3000,3);
		ForceClassSelection(playerid);
	}
	return 1;
}
Pero ninguna de las 2 formas anteriores me funciona
Reply
#5

sacale el playerid al timer, xq lo definis mal si le pones playerd.
dejalo:
pawn Код:
forward BalancearEquipos();
public BalancearEquipos()
Reply
#6

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
sacale el playerid al timer, xq lo definis mal si le pones playerd.
dejalo:
pawn Код:
forward BalancearEquipos();
public BalancearEquipos()
Pero si quito el playerid
Me saltan 6 errores de que no estб definido playerid
Porque en el public BalancearEquipos() se usa...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)