06.03.2017, 00:56
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:
Eu atй tentei resolver adicionando isso:
Porйm, nгo tive sucesso, porque a funзгo nem funcionou.
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; }
Код:
if(AddCP[Colocados[I]] == AddCP[Colocados[I-1]]) { // sorting }