[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:
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.