Sistema de colocaзгo Race -
Tuznn - 02.03.2017
Boa noite,
Estou criando um sistema de race, jб estб quase 100%, o que estб faltando й o maldito sistema de colocaзгo na corrida, que eu nгo faзo ideia de como comeзo criar isso.
Estou fazendo o sistema de colocaзгo em Textdraw, e quero criar para que nгo haja bugs. Quero que o player que adquiriu mais cps e que tem menor distвncia do prуximo CP fique em primeiro e assim sucessivamente.
O que venho pedir й que me ajudem com uma base para eu comeзar, porque acho que gastei todas minhas energias desde que comecei criar ele SUAHSUAHS. Enfim, aguardo respostas.
Segue abaixo a variбvel que conta os CPs conquistados:
PHP код:
AddCP[playerid]++ // Adiciona +1 checkpoint conquistado para o playerid
Re: Sistema de colocaзгo Race -
renatog - 02.03.2017
Olha, recomendo vocк fazer a colocaзгo pelo primeiro que pegar o checkpoint. Exemplo:
Player1 й o primeiro colocado e acabou de pegar o cp10
Player2 й o segundo colocado e acabou de pegar o cp10
Player3 й o terceiro colocado e acabou de pegar o cp10
...
Se o Player3 pegar o cp11 primeiro que os outros ele ficam em primeiro lugar, se o Player1 pegar o cp11 antes do Player2 ele ficam em segundo lugar e assim por diante.
Digo isso por termos de performance, pra vocк fazer um placar tгo preciso usando a distвncia entre os jogadores e o checkpoint, vocк vai ter que usar a OnPlayerUpdate ou um timer que se repete vбrias vezes por segundo. Vocк terб essa precisгo nos colocados durante a corrida, mas o placar final sempre serб decidido por quem pegar o checkpoint primeiro, saca?
Se ainda quiser usar a distвncia, segue a estrutura:
PHP код:
Timer
{
1. Crie uma array para conter a ordem das posiзхes (primeiro, segundo, terceiro, ... colocado);
2. Loop todos os jogadores na corrida e vai colocando na ordem (maior score em cima, se o nъmero de cps for o mesmo, coloca o que tiver mais prуximo do cp na frente);
3. Atualize os textdraws baseando-se nessa array;
}
Leia isso, se nгo souber fazer sorting.
Re: Sistema de colocaзгo Race -
Tuznn - 03.03.2017
Cara to tentando aqui e pensei no seguinte:
PHP код:
for(new i; i < MAX_PLAYERS; i++){ // Loop todos os jogadores no evento.
if(!IsPlayerConnected(i)) continue; // Se o ID nгo estiver conectado pula.
if(Evento[i] == false) continue; // Se o ID nгo estiver no evento pula.
for(new X; X < i; X++){ // Loop todos os jogadores no evento, exceto o playerid.
if(X == playerid) continue; // Se X for igual ao playerid, o loop pula 1.
if(AddCP[playerid] > AddCP[X]){ // Se os CP's conquistados pelo playerid for maior que de todos os jogadores:
Colocado[0] = playerid; // ID do jogador em 1є lugar = playerid.
}
}
}
Ta certo essa verificaзгo que fiz?
OBS: Nгo sei se estб certo, pois nunca fiz uma LOOP dentro de outra.