SA-MP Forums Archive
[Ajuda] Cбlculo de diferenзa preзo da Gasolina - 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] Cбlculo de diferenзa preзo da Gasolina (/showthread.php?tid=663771)



Cбlculo de diferenзa preзo da Gasolina - Japis - 10.02.2019

Estou criando um sistema de gasolina, e na dialog dela temos a funзгo de adicionar o nъmero de litros desejados, porйm nгo sei como irei adicionar a funзгo de contar a diferenзa de litros que jб tem no tanque, para o nъmero de litros adicionais, e descontar apenas a diferenзa desses valores.

Informaзхes: 70 й a quantidade mбxima de gasolina dos tanques

Exemplo: se eu for abastecer e no tanque jб tiver uma quantidade 10 listros de gasolina, para os 70 litros (Quantidade mбxima do tanque) temos uma diferenзa de 60 litros

gostaria de contabilizar estes 60 litros e descontar no preзo apenas os 60



Sistema atual:

Код:
if(!response)
            return SendClientMessage(playerid, 0xFFFFFFFF, "Vocк nгo colocou gasolina");

        new sGasolinaT = strval(inputtext),string[64],quantia = sGasolinaT*floatround(VALOR_LITRO);

        if(GetPlayerMoney(playerid) < quantia)
            return SendClientMessage(playerid, 0xFFFFFFFF, "Vocк nгo tem dinheiro para isto");

        if(sGasolinaT > 70 || sGasolinaT <= 0)
            return SendClientMessage(playerid, 0xFFFFFFFF, "Quantia Invбlida");
            
        format(string,60, "* Vocк abastaceu %d Litros por %d$",sGasolinaT,quantia);
        SendClientMessage(playerid,0xFFFF00AA, string);
        Dados[playerid][pGasosa] += sGasolinaT;
       	if(Dados[playerid][pGasosa] > 70)
		{

            Dados[playerid][pGasosa] = 70;
		   	return 0;
			}
        Retirada[playerid] = 0;
        Avisado[playerid] = false;
        Dados[playerid][pDinheiro] -= quantia;
        TogglePlayerControllable(playerid, true);
        return 1;
}
Do jeito que estб o player pode chegar com 10 litros no posto e abastecer 70, ele vai cobrar o valor de 70 litros e nгo a diferenзa que seria 60 litros, fazendo com que o player gaste mais atoa


Re: Cбlculo de diferenзa preзo da Gasolina - DanielMatrix - 10.02.2019

Cheque a gasolina atual do jogador, caso ela for maior que o desejado vocк cancela a compra do combustнvel.


Re: Cбlculo de diferenзa preзo da Gasolina - PedroH - 10.02.2019

Tem um calculo mas eu nгo me lembro agora, voce pode fazer isso amigo:
PHP код:
 new quantTemLitrosCarro 10quantLitrosAbastecer 30quantidadeAbasteceu 1;
    while(
quantTemLitrosCarro <= 70 && quantLitrosAbastecer--) quantidadeAbasteceu++, quantTemLitrosCarro++; 
quantidadeAbasteceu sera a variavel que armazenara a quantidade de litros abastecidos.

se eu me lembrar do calculo eu mando aqui.

@Edit voce pode fazer isso tabem:

PHP код:
    new quantTemLitrosCarro 60quantLitrosAbastecer 50quantidadeAbasteceu;
    
quantidadeAbasteceu quantLitrosAbastecer;
    if((
quantTemLitrosCarro quantLitrosAbastecer) > 70)
        
quantidadeAbasteceu = (quantTemLitrosCarro quantLitrosAbastecer) ? (quantTemLitrosCarro quantLitrosAbastecer) : (quantLitrosAbastecer quantTemLitrosCarro); 



Re: Cбlculo de diferenзa preзo da Gasolina - wearLy - 11.02.2019

PHP код:
#define         MAX_COMBUSTIVEL         70
#define         VALOR_COMBUSTIVEL       3
new quantCombustivel strval(inputtext), string[64],
    
completarTanque MAX_COMBUSTIVEL Dados[playerid][pGasosa]
;
    
if (
quantCombustivel >= completarTanquequantCombustivel completarTanque;
new 
quantia quantCombustivel VALOR_COMBUSTIVEL;
if (
GetPlayerMoney(playerid) < quantia) return SendClientMessage(playerid, -1"Vocк nгo tem dinheiro para colocar combustнvel.");
if (
quantCombustivel 70 || quantCombustivel 1) return SendClientMessage(playerid, -1"A quantidade de combustнvel deve ser de 1 б 70 litros.");
format(string64"Vocк abasteceu %d litros de combustнvel por $%d"quantCombustivelquantia);
SendClientMessage(playerid, -1string);
        
Dados[playerid][pGasosa] += quantCombustivel;
      
if (
Dados[playerid][pGasosa] > 70) return Dados[playerid][pGasosa] = 70false;
Retirada[playerid] = 0Avisado[playerid] = false;
Dados[playerid][pDinheiro] -= quantia;
TogglePlayerControllable(playeridtrue);
        
return 
true



Re: Cбlculo de diferenзa preзo da Gasolina - Japis - 11.02.2019

Obrigado pelo apoio pessoal, acredito que com estas bases ficarб mais fбcil para adicionar no sistema da gm obrigado a todos os envolvidos.


Re: Cбlculo de diferenзa preзo da Gasolina - AutoMatic2 - 11.02.2019

Uso esse mesmo sistema que o seu porйm eu mudei os nomes das variбvel, e tbm coloquei uns anti bug e sei oq quer dizer o meu vai ate 100 litros eu mudei pra 70.

PHP код:
if(dialogid == DIALOG_ABASTECER)
{
    if(
response)
    {
        new 
Litros strval(inputtext), string[120], Quantia Litros*floatround(5.0);
        if(!
strval(inputtext))
        {
            
ShowPlayerDialog(playeridDIALOG_ABASTECERDIALOG_STYLE_INPUT"Abastecer""{FFFFFF}Insira uma quantidade de litros para abastecer.\n{FFFFFF}O Preзo atual da Gasolina й {008000}$5.00 {FFFFFF}por litro""Abastecer""Fechar");
            
SendClientMessage(playeridVermelho"| ERRO | Quantidade Invбlida!");
            return 
1;
        }
        if(
strfind(inputtext"-"true) != -1)
        {
            
ShowPlayerDialog(playeridDIALOG_ABASTECERDIALOG_STYLE_INPUT"Abastecer""{FFFFFF}Insira uma quantidade de litros para abastecer.\n{FFFFFF}O Preзo atual da Gasolina й {008000}$5.00 {FFFFFF}por litro""Abastecer""Fechar");
            
SendClientMessage(playeridVermelho"| ERRO | Quantidade Invбlida!");
            return 
1;
        }
        if(
GetPlayerMoney(playerid) < Quantia)
           {
            
SendClientMessage(playeridVermelho"| ERRO | Vocк nгo tem todo esse dinheiro para pagar o frentista!");
            return 
1;
        }
        if(
Litros Gasolina[GetPlayerVehicleID(playerid)] <= 70)
        {
            
format(stringsizeof(string), "| INFO | Vocк completou seu tanque com %d litros por {008000}$%d"LitrosQuantia);
            
SendClientMessage(playeridAzulstring);
            
Gasolina[GetPlayerVehicleID(playerid)] += Litros;
            
GivePlayerMoney(playerid, - Quantia);
            
TogglePlayerControllable(playeridtrue);
            
Retirada[playerid] = 0;
        }
    }
    return 
1;

Ou use apenas essa parte:

PHP код:
if(Litros Gasolina[GetPlayerVehicleID(playerid)] <= 70