SA-MP Forums Archive
[Ajuda] Porcentagem. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Porcentagem. (/showthread.php?tid=552535)



Porcentagem. - Ts3 - 25.12.2014

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%.


Re: Porcentagem. - n0minal - 25.12.2014

Checkpoints totais/checkpoints pegos * 100 = porcentagem


Re: Porcentagem. - JoaoPedro - 25.12.2014

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.


Re: Porcentagem. - [BOPE]Seu._.Madruga - 25.12.2014

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