Ranking system of players in the race
#1

Hello everyone, I wanted to know how to create a ranking system in the race showing the first second to the tenth of the players in the race are the checkpoints of them I use the adrenaline game mode

Gamemode:https://sampforum.blast.hk/showthread.php?tid=5236
Reply
#2

someone help
Reply
#3

I'm not entirely sure on how to do it but I'd use an array to store the players in every time they pass a checkpoint.

I'm on my phone, but to give you an example:

PHP код:
//outside your checkpoint callback
#define MAX_RACE_PARTICIPANTS ( 10 ) // people in the race
new racePositions [MAX_RACE_PARTICIPANTS] ;
// inside your cp callback
new raceCount ;
racePositions [ ++ raceCount] = playerid 
To get the list, simply do a loop. 0 = first, 1 = second, 2 = third and so on.

Written on phone so it's missing stuff but this is what it comes down to.
Reply
#4

Then there's the one I have in my friend's gm he shows 1 2 3 place in the race sorry I'm from Brazil

Код:
public TimerTextDrawEvento()
{
    new MaximosPegos[3] = -1;
 	foreach (Player, I)
    {
        if(FoiProEvento[I] == 1)
        {
            new S[50];
			if(TotalDeCpsQuePegou[I] >= MaximosPegos[0])
			{
                format(S,sizeof(S),"~r~~h~~h~1| ~w~/ ~r~~h~%d", JogadoresNoEvento);
    TextDrawSetString(TextoEvento[I], S);
				TextDrawShowForPlayer(I, TextoEvento[I]);
				MaximosPegos[0] = TotalDeCpsQuePegou[I];
				MaximosPegos[1] = MaximosPegos[0] - 1;
				MaximosPegos[2] = MaximosPegos[0] - 2;
			}
			else if(TotalDeCpsQuePegou[I] == MaximosPegos[1])
			{
                format(S,sizeof(S),"~r~~h~~h~2| ~w~/ ~r~~h~%d", JogadoresNoEvento);
    TextDrawSetString(TextoEvento[I], S);
				TextDrawShowForPlayer(I, TextoEvento[I]);
			}
			else if(TotalDeCpsQuePegou[I] == MaximosPegos[2])
			{
                format(S,sizeof(S),"~r~~h~~h~3| ~w~/ ~r~~h~%d", JogadoresNoEvento);
    TextDrawSetString(TextoEvento[I], S);
				TextDrawShowForPlayer(I, TextoEvento[I]);
			}
		    for(new C = ID_Atual_CP_ADM; C >= 0; C --)
		    {
		        if(TotalDeCpsQuePegou[I] == (MaximoPegoAtual - C))
		        {
	                format(S,sizeof(S),"~r~~h~~h~%d| ~w~/ ~r~~h~%d", C, JogadoresNoEvento);
     TextDrawSetString(TextoEvento[I], S);
					TextDrawShowForPlayer(I, TextoEvento[I]);
                }
			}
			new S[50];
			format(S,sizeof(S),"~r~~h~~h~%d| ~w~/ ~r~~h~%d", Posicao[I], JogadoresNoEvento);
   TextDrawSetString(TextoEvento[I], S);
			TextDrawShowForPlayer(I, TextoEvento[I]);
        }
    }
	new ar[MAX_PLAYERS][2], tmpsize;
	tmpsize = fill (ar);
	process( ar , tmpsize );
	CreateTop (ar , tmpsize);

	if(LimiteJogadoresEvento != -1)
	{
		if(CPSADMAtivados == 0)
		{
		    if(ArquivoCPCarregado == -1) CancelarEvento();
		    else
		    {
				new S[175], TotalQueFoi = 0;
			    foreach (Player, I) if(FoiProEvento[I] == 1) TotalQueFoi ++;
			    if(TempoMelhorCP == 999999999)
					format(S, sizeof(S), "~r~~h~~h~CPs ID: ~w~%d~n~~p~~h~Recorde: Nenhum~n~~b~~h~~h~Jogadores no evento: ~w~%d", ArquivoCPCarregado, TotalQueFoi);
				else
				    format(S, sizeof(S), "~r~~h~~h~CPs ID: ~w~%d~n~~p~~h~Recorde: ~w~%s (%02d:%02d:%02d)~n~~b~~h~~h~Jogadores no evento: ~w~%d", ArquivoCPCarregado, NomeMelhor, CPs_Horas(TempoMelhorCP), CPs_Minutos(TempoMelhorCP), CPs_Segundos(TempoMelhorCP), TotalQueFoi);
			    TextDrawSetString(TextoEvento, S);
			   	foreach (Player, I) if(FoiProEvento[I] == 1) TextDrawShowForPlayer(I, TextoEvento);
			}
		}
		else
		{
			#define Valor_Distancia_Maxima 999999999.999
			new Resultado1 = -1, Resultado2 = -1, Resultado3 = -1,
				Float:Desempate1 = Valor_Distancia_Maxima, Float:Desempate2 = Valor_Distancia_Maxima, Float:Desempate3 = Valor_Distancia_Maxima,
				Vencedor1 = -1, Vencedor2 = -1, Vencedor3 = -1,
				Empatados1 = -1, Empatados2 = -1,
				Ganhador1[MAX_PLAYERS] = -1, Ganhador2[MAX_PLAYERS] = -1, Ganhador3[MAX_PLAYERS] = -1, JaFoiPremiado[MAX_PLAYERS] = 0;
			// Achar o primeiro colocado *******************************************************************************************************
		 	foreach (Player, I)
		    {
		        if((FoiProEvento[I] == 1) && (TotalDeCpsQuePegou[I] >= Resultado1) && (GetPlayerState(I) == 2))
		        {
		            Resultado1 = TotalDeCpsQuePegou[I];
		        }
		    }
		 	foreach (Player, I)
		    {
		        if((TotalDeCpsQuePegou[I] == Resultado1) && (GetPlayerState(I) == 2))
		        {
		            Ganhador1[I] = 1;
					if(Empatados1 < 2) Empatados1 ++;
		        }
		        else Ganhador1[I] = -1;
		    }
		   	foreach (Player, I)
		    {
		        if((Ganhador1[I] == 1) && (GetPlayerState(I) == 2))
		        {
		            new Float:D = GetDistanceToPoint(I, CoordenadasCPSADM[Resultado1][0], CoordenadasCPSADM[Resultado1][1], CoordenadasCPSADM[Resultado1][2]);
		            if(D <= Desempate1)
		            {
		                Desempate1 = D;
		                Vencedor1 = I;
		                //break;
		            }
		        }
		    }
		    JaFoiPremiado[Vencedor1] = 1;
		    if(Empatados1 == 1)
		    {
		        Desempate1 = Valor_Distancia_Maxima;
			   	foreach (Player, I)
			    {
			        if((Ganhador1[I] == 1) && (JaFoiPremiado[I] == 0) && (GetPlayerState(I) == 2))
			        {
			            new Float:D = GetDistanceToPoint(I, CoordenadasCPSADM[Resultado1][0], CoordenadasCPSADM[Resultado1][1], CoordenadasCPSADM[Resultado1][2]);
			            if(D <= Desempate1)
			            {
			                Desempate1 = D;
			                Vencedor2 = I;
			                //break;
			            }
			        }
			    }
			    JaFoiPremiado[Vencedor2] = 1;
		    }
			else if(Empatados1 == 2)
			{
			    Desempate1 = Valor_Distancia_Maxima;
			   	foreach (Player, I)
			    {
			        if((Ganhador1[I] == 1) && (JaFoiPremiado[I] == 0) && (GetPlayerState(I) == 2))
			        {
			            new Float:D = GetDistanceToPoint(I, CoordenadasCPSADM[Resultado1][0], CoordenadasCPSADM[Resultado1][1], CoordenadasCPSADM[Resultado1][2]);
			            if(D <= Desempate1)
			            {
			                Desempate1 = D;
			                Vencedor3 = I;
			                //break;
			            }
			        }
			    }
			    JaFoiPremiado[Vencedor3] = 1;
			}
		    // Achar o vencedor 2 *******************************************************************************************************
		    if(Vencedor2 == -1)
		    {
			 	foreach (Player, I)
			    {
			        if((FoiProEvento[I] == 1) && (TotalDeCpsQuePegou[I] >= Resultado2) && (TotalDeCpsQuePegou[I] != Resultado1) && (JaFoiPremiado[I] == 0) && (GetPlayerState(I) == 2))
			        {
			            Resultado2 = TotalDeCpsQuePegou[I];
			        }
			    }
			 	foreach (Player, I)
			    {
			        if((TotalDeCpsQuePegou[I] == Resultado2) && (GetPlayerState(I) == 2))
			        {
			            Ganhador2[I] = 1;
						if(Empatados2 < 1) Empatados2 ++;
			        }
			        else Ganhador2[I] = -1;
			    }
			   	foreach (Player, I)
			    {
			        if((Ganhador2[I] == 1) && (JaFoiPremiado[I] == 0) && (GetPlayerState(I) == 2))
			        {
			            new Float:D = GetDistanceToPoint(I, CoordenadasCPSADM[Resultado2][0], CoordenadasCPSADM[Resultado2][1], CoordenadasCPSADM[Resultado2][2]);
			            if(D <= Desempate2)
			            {
			                Desempate2 = D;
			                Vencedor2 = I;
			                //break;
			            }
			        }
			    }
			    JaFoiPremiado[Vencedor2] = 1;
			    if(Empatados2 == 1)
		    	{
		    	    Desempate2 = Valor_Distancia_Maxima;
				   	foreach (Player, I)
				    {
				        if((Ganhador2[I] == 1) && (JaFoiPremiado[I] == 0) && (GetPlayerState(I) == 2))
				        {
				            new Float:D = GetDistanceToPoint(I, CoordenadasCPSADM[Resultado2][0], CoordenadasCPSADM[Resultado2][1], CoordenadasCPSADM[Resultado2][2]);
				            if(D <= Desempate2)
				            {
				                Desempate2 = D;
				                Vencedor3 = I;
				                //break;
				            }
				        }
					}
					JaFoiPremiado[Vencedor3] = 1;
		    	}
			}
		    // Achar o vencedor 3 *******************************************************************************************************
		    if(Vencedor3 == -1)
		    {
			 	foreach (Player, I)
			    {
			        if((FoiProEvento[I] == 1) && (TotalDeCpsQuePegou[I] >= Resultado3) && (TotalDeCpsQuePegou[I] != Resultado1) && (TotalDeCpsQuePegou[I] != Resultado2)  && (JaFoiPremiado[I] == 0) && (GetPlayerState(I) == 2))
			        {
			            Resultado3 = TotalDeCpsQuePegou[I];
			        }
			    }
			 	foreach (Player, I)
			    {
			        if((TotalDeCpsQuePegou[I] == Resultado3) && (GetPlayerState(I) == 2))
			        {
			            Ganhador3[I] = 1;
			        }
			        else Ganhador3[I] = -1;
			    }
			   	foreach (Player, I)
			    {
			        if((Ganhador3[I] == 1) && (JaFoiPremiado[I] == 0) && (GetPlayerState(I) == 2))
			        {
			            new Float:D = GetDistanceToPoint(I, CoordenadasCPSADM[Resultado3][0], CoordenadasCPSADM[Resultado3][1], CoordenadasCPSADM[Resultado3][2]);
			            if(D <= Desempate3)
			            {
			                Desempate3 = D;
			                Vencedor3 = I;
			                //break;
			            }
			        }
			    }
			    JaFoiPremiado[Vencedor3] = 1;
			}
			foreach (Player, I)
			{
		        if(strcmp(NomeVencedor1, PlayerName(I)) == 0)
			  		Vencedor1 = I;
				else if(strcmp(NomeVencedor2, PlayerName(I)) == 0)
				    Vencedor2 = I;
				else if(strcmp(NomeVencedor3, PlayerName(I)) == 0)
				    Vencedor3 = I;
			}
		    new S[175];
		    if(Vencedor3 != -1) format(S, sizeof(S), "~r~1| ~w~%s ~y~%d~n~~r~2| ~w~%s ~y~%d~n~~r~3| ~w~%s ~y~%d", PlayerName(Vencedor1), TotalDeCpsQuePegou[Vencedor1], PlayerName(Vencedor2), TotalDeCpsQuePegou[Vencedor2], PlayerName(Vencedor3), TotalDeCpsQuePegou[Vencedor3]);
		    else if(Vencedor2 != -1) format(S, sizeof(S), "~r~1| ~w~%s ~y~%d~n~~r~2| ~w~%s ~y~%d~n~~r~3| ~w~Ninguem", PlayerName(Vencedor1), TotalDeCpsQuePegou[Vencedor1], PlayerName(Vencedor2), TotalDeCpsQuePegou[Vencedor2]);
		    else if(Vencedor1 != -1) format(S, sizeof(S), "~r~1| ~w~%s ~y~%d~n~~r~2| ~w~Ninguem~n~~r~3| ~w~Ninguem", PlayerName(Vencedor1), TotalDeCpsQuePegou[Vencedor1]);
		    TextDrawSetString(TextoEvento, S);
		   	foreach (Player, I) if(FoiProEvento[I] == 1) TextDrawShowForPlayer(I, TextoEvento);
  		}
	return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)