[Ajuda] Porcentagem.
#1

Olб..

Alguйm teria uma ideia de como fazer/pegar a porcentagem de um player na corrida?

Mais ou menos assim, quando iniciar logo no comeзo estaria 10% e no meio 60% jб finalizando 95% quando acabar 100%.
Reply
#2

Checkpoints totais/checkpoints pegos * 100 = porcentagem
Reply
#3

Alйm da fуrmula atual acima estб incorreta, onde o certo seria 100 * checkpoints pego / checkpoints total, essa fуrmula apenas vai ser atualizada conforme o usuбrio passa pelos checkpoints.

Para um mйtodo muito mais interativo e realista, segue a fуrmula abaixo:

Quote:
DF = Distвncia final (Distвncia entre inнcio e a posiзгo final, posiзгo do ъltimo checkpoint)
DA = Posiзгo atual (Distвncia entre inнcio, primeiro checkpoint, e posiзгo atual, posiзгo atual do jogador)

Primeiro defina os valores acima. Para calcular distвncia use GetPlayerDistanceFromPoint e posiзхes pode usar GetPlayerPos.

Apуs isso, ao longo da corrida, pode aplicar a fуrmula:

Quote:

(DA * 100) / DF

Pequeno exemplo:

Код:
new posInicial[3] = { // Posiзгo do primeiro checkpoint da corrida
	{1122.3344, 1122.3344, 1122.3344}
};

new posFinal[3] = { // Posiзгo do ъltimo checkpoint da corrida
	{4455.6677, 4455.6677, 4455.6677}
};

new Float:DF; // Armazenamento da distвncia final

/**
*	Calcula a distвncia total da corrida, ou seja,
*	o primeiro checkpoint ao ъltimo. Deve ser chamada
*	apenas no inнcio da corrida, quando o jogador estiver
*	no primeiro checkpoint
*/
calcularDistanciaFinalInicioCorrida() {
	DF = GetPlayerDistanceFromPoint(playerid, posFinal[0], posFinal[1], posFinal[2]);
}

/**
*	Retorna a porcentagem atual de uma corrida
*	que inicia em posInicial e termina em posFinal
*/
Float:calcularPorcentagemCorrida(playerid) {
	new Float:posAtual[3];
	new Float:DA;
	new Float:porcentagem;

	GetPlayerPos(playerid, posAtual[0], posAtual[1], posAtual[2]);

	// Calculando distвncia atual
	DA = GetPlayerDistanceFromPoint(playerid, posInicial[0], posInicial[1], posInicial[2]);

	// Calculando porcentagem da corrida
	porcentagem = (DA * 100) / DF;

	// Retornando resultado
	return porcentagem
}
O resultado dessa pequena equaзгo serб a porcentagem atual do usuбrio. Ou seja, se ele estiver na metade do caminho, serб 50%. Pode aplicar essa lуgica no OnPlayerUpdate ou se preferir um timer de x em x segundos para ir atualizando.

-- x --

ATENЗГO: O cуdigo de exemplo nгo foi compilado, por este motivo o mesmo pode conter erros. Caso tiver, nгo irei repara-los. O cуdigo foi feito apenas como um exemplo de aplicaзгo da lуgica, essa sim estб correta.
Reply
#4

Quote:
Originally Posted by n0minal
Посмотреть сообщение
Checkpoints totais/checkpoints pegos * 100 = porcentagem
Usa o do n0minal.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)