Portal SAMP
[Ajuda] Combustivel - 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] Combustivel (/showthread.php?tid=2022)



Combustivel - rafaelrafa - 09/01/2022

Fala Galera, estou criando um sistema de combustivel, e nele eu chamo um timer para começar diminuir o combustivel, mais quando eu desligo o motor do veiculo e chamo o  Killtimer o mesmo n funciona e fica diminuindo o combustivel at 0, se alguem puder ajudar agradeço

Código:
                SetTimerEx("TimerCombustivel", 5000, true,"i", playerid);
               
                public TimerCombustivel(playerid)
                {
                    if(Combustivel[playerid][Diesel] > 0)
                    {
                        Combustivel[playerid][Diesel] = Combustivel[playerid][Diesel] -1;
                        DOF2_SetInt(GetArquivo(playerid), "Diesel", Combustivel[playerid][Diesel]);
                         printf("DEBUG: (Diesel:%d)", Combustivel[playerid][Diesel]);
                    }
                    return 1;
                }
                
                KillTimer( TimerCombustivel(playerid));



RE: [AJUDA] Combustivel - SrBlue - 09/01/2022

bota uma verificação se o motor está ligado ou desligado

exemplo

if(Combustivel[playerid][Diesel] > 0 && Motor[carid]){...}

e utilize return KillTimer(...) se o killtimer tiver dentro da mesma função...


RE: [AJUDA] Combustivel - ipsLuan - 09/01/2022

Você precisa declarar uma variável que estará recebendo o timer para depois parar.

Código PHP:
new _TimerCombustivel[MAX_PLAYERS];
_TimerCombustivel[playerid] = SetTimerEx("TimerCombustivel"5000true,"i"playerid);
KillTimer(_TimerCombustivel[playerid]); 



RE: [AJUDA] Combustivel - rafaelrafa - 09/01/2022

(09/01/2022 11:25)SrBlue Escreveu: bota uma verificação se o motor está ligado ou desligado

exemplo

if(Combustivel[playerid][Diesel] > 0 && Motor[carid]){...}

e utilize return KillTimer(...) se o killtimer tiver dentro da mesma função...

(09/01/2022 11:30)ipsLuan Escreveu: Você precisa declarar uma variável que estará recebendo o timer para depois parar.

Código PHP:
new _TimerCombustivel[MAX_PLAYERS];
_TimerCombustivel[playerid] = SetTimerEx("TimerCombustivel"5000true,"i"playerid);
KillTimer(_TimerCombustivel[playerid]); 

Muito obrigado, me ajudaram muito ++ REP <3


RE: [AJUDA] Combustivel - Luiz - 11/01/2022

Apenas para complementar, ao invés de utilizar KillTimer, é mais prático fazer em forma de loops utilizando verificações.
Código PHP:
SetTimerEx("Reset"300000"i"playerid);

public 
Reset(playerid)
{
    if(
GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        
pData[vehicleid][Combustivel]--;
        
SetTimerEx("Reset"300000"i"playerid);
    }