[Ajuda] Receber dinheiro diferente para cada Checkpoint - Versão de Impressão +- Portal SAMP (https://portalsamp.com) +-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5) +--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6) +--- Tópico: [Ajuda] Receber dinheiro diferente para cada Checkpoint (/showthread.php?tid=3073) |
Receber dinheiro diferente para cada Checkpoint - MisteriumBr - 10/12/2022 Galera eu gostaria que quando o player chegar em determinado checkpoint ele recebesse uma quantia de dinheiro diferente, pois alguns CP são mais longes outros mais pertos. Código: new Float:Posicoesc[][]= RE: Receber dinheiro diferente para cada Checkpoint - xbruno1000x - 10/12/2022 Você pode dar um GetPlayerPos no momento em que começa a entrega e calcular a distância até o checkpoint marcado no mapa do jogador. A partir daí, você multiplica (algum valor * distancia). RE: Receber dinheiro diferente para cada Checkpoint - MisteriumBr - 13/12/2022 (10/12/2022 14:22)xbruno1000x Escreveu: Você pode dar um GetPlayerPos no momento em que começa a entrega e calcular a distância até o checkpoint marcado no mapa do jogador. A partir daí, você multiplica (algum valor * distancia). Eita esse tipo de código eu não mexi ainda, como faço pra medir a distância? RE: Receber dinheiro diferente para cada Checkpoint - Dr Editor - 13/12/2022 (13/12/2022 07:32)MisteriumBr Escreveu:(10/12/2022 14:22)xbruno1000x Escreveu: Você pode dar um GetPlayerPos no momento em que começa a entrega e calcular a distância até o checkpoint marcado no mapa do jogador. A partir daí, você multiplica (algum valor * distancia). GetPlayerDistanceFromPoint RE: Receber dinheiro diferente para cada Checkpoint - nilat - 15/12/2022 (13/12/2022 11:36)Dr Editor Escreveu:(13/12/2022 07:32)MisteriumBr Escreveu:(10/12/2022 14:22)xbruno1000x Escreveu: Você pode dar um GetPlayerPos no momento em que começa a entrega e calcular a distância até o checkpoint marcado no mapa do jogador. A partir daí, você multiplica (algum valor * distancia). Se for usar essa função para calcular o local que ele iniciou a rota e o local final, não irá ser preciso, pois o jogador pode partir do ponto A para o ponto C e voltar ao ponto B (Local final), sendo calculado somente a distância entre A e B. Um jeito mais viável de utilizar essa função, seria fazer cálculos recorrentes em curto período, do ponto anterior ao atual, adicionando o valor a uma variável. RE: Receber dinheiro diferente para cada Checkpoint - Carlos Victor - 19/12/2022 É necessário que utilize o floatround para deixar a distancia como algo inteiro e não fique 30.419238123, por que a função GetPlayerDistanceFromPoint retorna a distância em metros em float. Código: new RE: Receber dinheiro diferente para cada Checkpoint - Dr Editor - 19/12/2022 (15/12/2022 08:03)nilat Escreveu:(13/12/2022 11:36)Dr Editor Escreveu:(13/12/2022 07:32)MisteriumBr Escreveu:(10/12/2022 14:22)xbruno1000x Escreveu: Você pode dar um GetPlayerPos no momento em que começa a entrega e calcular a distância até o checkpoint marcado no mapa do jogador. A partir daí, você multiplica (algum valor * distancia). Se o jogador não vai receber o dinheiro POR CHECKPOINT, mas sim por rota traçada basta SOMAR A DISTÂNCIA com base nos checkpoints que ele pegou e no fim realizar o pagamento. CP1 - 500m CP2 - 200m CP3 (final) - 8000m dinheiro a receber = (CP1 + CP2 + CP3) * valor RE: Receber dinheiro diferente para cada Checkpoint - strelo - 21/12/2022 Aqui está o código revisado onde o índice de ponto de verificação é usado para suporte adicional do granacm: new Float: Posicoesc[][]= { { 2098.9116,2673.9832,10.8203 }, { 1941.637329,-1757.459716,13.382812 }, { 1682.216796,-2320.880859,13.476512 }, { -573.077697,-1055.687500,23.984531 }, { -1398.416748,-1472.172973,101.962890 }, { -2045.645629,-96.953994,36.423358 } }; new granacm[sizeof(Posicoesc)] = { 9000, 8000, 7000, 6000, 5000, 4000 }; public OnPlayerEnterCheckpoint(playerid) { if(PlayerInfo[playerid][caminhoneiro] == 1) { PlayerInfo[playerid][caminhoneiro] = 1; new checkpointIndex = -1; for(new i = 0; i < sizeof(Posicoesc); i++) { if(IsPlayerInRangeOfPoint(playerid, Posicoesc[i][0], Posicoesc[i][1], Posicoesc[i][2], 50.0)) { checkpointIndex = i; break; } } if(checkpointIndex != -1) { DisablePlayerCheckpoint(playerid); granacm = granacm[checkpointIndex]; SendClientMessage(playerid, 0xE60000FF, "Você recebeu $ %d pelas entregas", granacm); GivePlayerMoney(playerid, granacm); } } return 1; } Nesse, o jogador só recebe dinheiro quando está em um checkpoint (distância menor que 50 unidades). Se o jogador estiver a mais de 50 unidades do ponto de controle, nada acontece. Você pode alterar este valor. |