Loop Sorting - 
Tuznn -  06.03.2017
Boa noite, 
Fiz um sorting para verificar a colocaзгo na corrida, ele estб funcionando perfeitamente. Sу que eu quero que fica em 1є lugar o jogador que pegou o CP primeiro. Por exemplo: Um player pega o CP 4 e em seguida outro player tambйm pega o CP 4, entгo era para o player que pegou antes ficar em 1є, sу que o sorting estб colocando o player que pegou o CP depois em 1є e o que pegou antes em 2є. Isso acontece se o ID do player que pegou o CP depois for maior que o do ID que pegou o CP antes.
Isso acontece porque o Loop pega o segundo ID para comparar com um id anterior. 
Segue o cуdigo:
Код:
public VerificarPosicao(playerid) 
{
	new j,
	aPID,
	I;
	for (I = 1; I < MAX_PLAYERS; I++) // Loop todos jogadores comeзando pelo ID 1
	{
	    if(!IsPlayerConnected(I)) continue;
	    
		Colocados[I] = I; 
 		aPID = Colocados[I];  
		j = I-1; 
  		Colocados[I-1] = j; 
		while (j > -1 && AddCP[Colocados[j+1]] < AddCP[Colocados[j]])
		{
  			Colocados[j+1] = Colocados[j]; 
			AddCP[Colocados[j+1]] = AddCP[Colocados[j]]; 
			j--; 
		}
		Colocados[j+1] = aPID; 
		AddCP[Colocados[j+1]] = AddCP[aPID]; 
	}
	return 1;
}
 Eu atй tentei resolver adicionando isso:
Код:
if(AddCP[Colocados[I]] == AddCP[Colocados[I-1]])
{
 // sorting
}
 Porйm, nгo tive sucesso, porque a funзгo nem funcionou.
Re: Loop Sorting - 
AuhMaru -  06.03.2017
Seu sistema de corrida й em checkpoints?
Re: Loop Sorting - 
Tuznn -  06.03.2017
Quote:
| 
					Originally Posted by AuhMaru  Seu sistema de corrida й em checkpoints? | 
 Sim mano
Re: Loop Sorting - 
AuhMaru -  06.03.2017
Caso seu sistema seja de criar checkpoints in game, vocк pode fazer uma verficaзгo assim:
Obs№: Salve o nъmero de checkpoints criados na variбvel ChecksCriados.
ObsІ: Sempre que vocк iniciar uma nova corrida defina o valor de PositionRace(ex: PositionRace = 0).
PHP код:
new
    PositionRace,
    ChecksCriados,
    CheckpointsPlayer[MAX_PLAYERS],
    bool: PlayerInRace[MAX_PLAYERS]
;
public OnPlayerEnterRaceCheckpoint(playerid)
{
    if(PlayerInRace[playerid]) // Caso nгo tenha crie uma variбvel para verificar se o player estar na corrida.
    {
        CheckpointsPlayer[playerid] ++; // Irб aumentar +1 a cada checkpoint passado.
        
        if(CheckpointsPlayer[playerid] == ChecksCriados+1) // Use uma vбriavel para salvar os checkpoints criados [ChecksCriados].
        {
            PositionRace ++;
            
            static str[70], _nick[MAX_PLAYER_NAME];
            
            GetPlayerName(playerid, _nick, sizeof _nick);
            
            format(str, sizeof str, "O player %s foi o %dє colocado da corrida", _nick, PositionRace);
            
            SendFormattedMessageToAll(-1, str);
        }
    }
    return 1;
} 
 Se vocк nгo entendeu comente sua dъvida.
Re: Loop Sorting - 
Tuznn -  06.03.2017
Cara, eu jб tenho a variбvel que define a quantidade de CPS da corrida.
Meu sistema de colocaзгo funciona com textdraw, ou seja, eu preciso usar sorting pra ordenar quem pegou mais CPS e quem pegou menos. Assim eu coloco o que pegou mais CPS em 1є, como estб no cуdigo que postei no tуpico. Sу preciso de uma soluзгo para aquele erro.
Re: Loop Sorting - 
Tuznn -  08.03.2017
up... alguйm me ajuda pls :/