05.03.2017, 03:28
(
Последний раз редактировалось renatog; 05.03.2017 в 14:54.
)
Olha, eu nгo gosto de dar cуdigo porque eu perco tempo fazendo e testando. Eu fiz um aqui rapidгo, mas nгo testei, nгo sei se compila, nгo sei se funciona, nгo fiz otimizaзхes. Mas deixei uns comentбrios pra vocк se encontrar e tentar entender a lуgica por trбs (que por sinal nгo sei se estб certa).
Como eu disse, nгo sei se isso funciona, mas tб quase lб. Isso й o mбximo que posso te ajudar, daqui por diante й por sua conta.
PHP код:
new colocados[MAX_PLAYERS] = {-1, -1, -1, ...}; //array global
//dentro da funзгo que inicia o evento (depois que o evento fecha e antes de um jogador pegar checkpoint)
//Salvar todos os jogadores do evento na array colocados[], sem pular posiзхes
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (!IsPlayerConnected(i) continue;
if (!Evento[i]) continue;
for (new j=0; j < MAX_PLAYERS; j++)
{
if (colocados[j]) == -1) //Verifica se a posiзгo "j" estб disponнvel
colocados[j] = i; //Salva o id do jogador na posiзгo "j" de colocados
}
}
//Opзгo 1
VerificarPosicao() // Passa por todos os jogadores
{
new tmp, j;
for (new i = 1; i < MAX_PLAYERS; i++) //loop todos os jogadores comeзando pelo id 1
{
j = i-1; //j й a posiзгo anterior ao player que estamos (i)
while (j > -1 && AddCP[colocados[i]] > AddCP[colocados[j]] //enquando j for um id vбlido e AddCP do jogador atual (i) for maior que o anterior, ele faz a troca entre eles
{
tmp = colocados[i];
colocados[i] = colocados[j];
colocados[j] = tmp;
j--;
}
}
}
//Opзгo 2
VerificarPosicao(playerid) // Tem base no playerid
{
new tmp, j;
for (new i = 0; i < MAX_PLAYERS; i++) //loop todos os jogadores
{
if(colocados[i] == playerid) //encontra a posiзгo do playerid na array colocados
{
j = i-1; //salva a posiзгo de seu antecessor
break;
}
}
while (j > -1 && AddCP[playerid] > AddCP[colocados[j]] //enquando j for um id vбlido e AddCP do jogador atual (playerid || colocados[j+1]) for maior que o anterior (colocados[j]), ele faz a troca entre eles
{
tmp = colocados[j+1];
colocados[j+1] = colocados[j];
colocados[j] = tmp;
j--;
}
}