[Ajuda] Sistema de colocaзгo Race
#1

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 
Reply
#2

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 (primeirosegundoterceiro, ... colocado);
    
2. Loop todos os jogadores na corrida e vai colocando na ordem (maior score em cimase o nъmero de cps for o mesmocoloca 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.
Reply
#3

Cara to tentando aqui e pensei no seguinte:

PHP код:
        for(new iMAX_PLAYERSi++){ // 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 XiX++){ // Loop todos os jogadores no evento, exceto o playerid.
                
if(== 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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)