PDA

View Full Version : Ranking system of players in the race

Marllun
25/11/2016, 08:30 PM
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

Marllun
25/11/2016, 10:47 PM
someone help

Dignity
25/11/2016, 11:06 PM
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:

#define MAX_RACE_PARTICIPANTS ( 10 ) // people in the race
new racePositions [MAX_RACE_PARTICIPANTS] ;

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.

Marllun
26/11/2016, 12:03 AM
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])
{
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])
{
TextDrawSetString(TextoEvento[I], S);
TextDrawShowForPlayer(I, TextoEvento[I]);
}
else if(TotalDeCpsQuePegou[I] == MaximosPegos[2])
{
TextDrawSetString(TextoEvento[I], S);
TextDrawShowForPlayer(I, TextoEvento[I]);
}
for(new C = ID_Atual_CP_ADM; C >= 0; C --)
{
if(TotalDeCpsQuePegou[I] == (MaximoPegoAtual - C))
{
TextDrawSetString(TextoEvento[I], S);
TextDrawShowForPlayer(I, TextoEvento[I]);
}
}
new S[50];
TextDrawSetString(TextoEvento[I], S);
TextDrawShowForPlayer(I, TextoEvento[I]);
}
}
new ar[MAX_PLAYERS][2], tmpsize;
tmpsize = fill (ar);
process( ar , tmpsize );
CreateTop (ar , tmpsize);

{
{
else
{
new S[175], TotalQueFoi = 0;
foreach (Player, I) if(FoiProEvento[I] == 1) TotalQueFoi ++;
if(TempoMelhorCP == 999999999)
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
Float:Desempate1 = Valor_Distancia_Maxima, Float:Desempate2 = Valor_Distancia_Maxima, Float:Desempate3 = Valor_Distancia_Maxima,
Vencedor1 = -1, Vencedor2 = -1, Vencedor3 = -1,
// Achar o primeiro colocado ************************************************** ************************************************** ***
foreach (Player, I)
{
if((FoiProEvento[I] == 1) && (TotalDeCpsQuePegou[I] >= Resultado1) && (GetPlayerState(I) == 2))
{
}
}
foreach (Player, I)
{
if((TotalDeCpsQuePegou[I] == Resultado1) && (GetPlayerState(I) == 2))
{
}
}
foreach (Player, I)
{
if((Ganhador1[I] == 1) && (GetPlayerState(I) == 2))
{
if(D <= Desempate1)
{
Desempate1 = D;
Vencedor1 = I;
//break;
}
}
}
{
Desempate1 = Valor_Distancia_Maxima;
foreach (Player, I)
{
{
if(D <= Desempate1)
{
Desempate1 = D;
Vencedor2 = I;
//break;
}
}
}
}
{
Desempate1 = Valor_Distancia_Maxima;
foreach (Player, I)
{
{
if(D <= Desempate1)
{
Desempate1 = D;
Vencedor3 = I;
//break;
}
}
}
}
// 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))
{
}
}
foreach (Player, I)
{
if((TotalDeCpsQuePegou[I] == Resultado2) && (GetPlayerState(I) == 2))
{
}
}
foreach (Player, I)
{
{
if(D <= Desempate2)
{
Desempate2 = D;
Vencedor2 = I;
//break;
}
}
}
{
Desempate2 = Valor_Distancia_Maxima;
foreach (Player, I)
{
{
if(D <= Desempate2)
{
Desempate2 = D;
Vencedor3 = I;
//break;
}
}
}
}
}
// 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))
{
}
}
foreach (Player, I)
{
if((TotalDeCpsQuePegou[I] == Resultado3) && (GetPlayerState(I) == 2))
{
}
}
foreach (Player, I)
{
{
if(D <= Desempate3)
{
Desempate3 = D;
Vencedor3 = I;
//break;
}
}
}
}
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;
}