Quebrar veiculo - Davi.Xit5370 -  25/05/2022
 
 
Como faço para quando o veículo estiver fumaçando aparecer uma gametext falando veículo quebrado?
 
 
 
RE: Quebrar veiculo - Dr Editor -  26/05/2022
 
 
Pode usar a função VehicleDamageStatusUpdate e verificar a vida com GetVehicleHealth. 
Verifique o status da vida aqui: https://sampwiki.blast.hk/wiki/VehicleHealth
 
 
 
RE: Quebrar veiculo - Davi.Xit5370 -  26/05/2022
 
 
 (26/05/2022 07:58)Dr Editor Escreveu:  Pode usar a função VehicleDamageStatusUpdate e verificar a vida com GetVehicleHealth. 
Verifique o status da vida aqui: https://sampwiki.blast.hk/wiki/VehicleHealth  
Muito obrigado vou testar agora
 
 
 
RE: Quebrar veiculo - xbruno1000x -  26/05/2022
 
 
 (26/05/2022 07:58)Dr Editor Escreveu:  Pode usar a função VehicleDamageStatusUpdate e verificar a vida com GetVehicleHealth. 
Verifique o status da vida aqui: https://sampwiki.blast.hk/wiki/VehicleHealth  
Eu até cheguei a responder isso aqui no tópico mas acabei apagando. Havia lido na documentação que "Essa callback é executada quando elementos do veículo como portas, rodas, painéis, ou luzes mudam seu status de dano.". 
 
Logo se o veículo atingir valor de vida menor que 250, e nenhum dos elementos sofrerem danos/atualizarem o status, o veículo irá explodir. 
 
Ou a documentação está incorreta e a public é chamada pra qualquer dano? 
 
Documentação: 
https://open.mp/pt-br/docs/scripting/callbacks/OnVehicleDamageStatusUpdate
 
 
 
RE: Quebrar veiculo - Dr Editor -  27/05/2022
 
 
 (26/05/2022 16:12)xbruno1000x Escreveu:   (26/05/2022 07:58)Dr Editor Escreveu:  Pode usar a função VehicleDamageStatusUpdate e verificar a vida com GetVehicleHealth. 
Verifique o status da vida aqui: https://sampwiki.blast.hk/wiki/VehicleHealth  
Eu até cheguei a responder isso aqui no tópico mas acabei apagando. Havia lido na documentação que "Essa callback é executada quando elementos do veículo como portas, rodas, painéis, ou luzes mudam seu status de dano.". 
 
Logo se o veículo atingir valor de vida menor que 250, e nenhum dos elementos sofrerem danos/atualizarem o status, o veículo irá explodir. 
 
Ou a documentação está incorreta e a public é chamada pra qualquer dano? 
 
Documentação: 
https://open.mp/pt-br/docs/scripting/callbacks/OnVehicleDamageStatusUpdate  
Agora me pegou. Fiz um anti-cheat para verificar godmode no veículo mas só testei com batidas, não testei com tiros. 
E também nem toda a batida da dano no veículo. Varia conforme a velocidade. 
 
Em últimos casos da pra usar a alternativa abaixo. Fiz rápido e não testei, mas pode servir de base. 
Código: static Float:vehicleHealth[MAX_VEHICLES]; 
 
forward OnChangeVehicleHealth(vehicleid, Float:old_health, Float:new_health); 
public OnChangeVehicleHealth(vehicleid, Float:old_health, Float:new_health) 
{ 
    printf("[DEBUG] Vida do veículo %i mudou de %.1f para %.1f", vehicleid, old_health, new_health); 
    return true; 
} 
 
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) 
{ 
    if(!ispassenger) 
        GetVehicleHealth(vehicleid, vehicleHealth[vehicleid]); 
    return 1; 
} 
 
public OnPlayerUpdate(playerid) 
{ 
    new vehicleid; 
    if((vehicleid = GetPlayerVehicleID(playerid)) != INVALID_VEHICLE_ID) 
    { 
        new Float:health; 
        GetVehicleHealth(vehicleid, health); 
        if(vehicleHealth[vehicleid] != health) 
        { 
            OnChangeVehicleHealth(vehicleid, vehicleHealth[vehicleid], health); 
            vehicleHealth[vehicleid] = health; 
        } 
    } 
    return 1; 
}
  
 
 
 
RE: Quebrar veiculo - xbruno1000x -  27/05/2022
 
 
 (27/05/2022 08:41)Dr Editor Escreveu:   (26/05/2022 16:12)xbruno1000x Escreveu:   (26/05/2022 07:58)Dr Editor Escreveu:  Pode usar a função VehicleDamageStatusUpdate e verificar a vida com GetVehicleHealth. 
Verifique o status da vida aqui: https://sampwiki.blast.hk/wiki/VehicleHealth  
Eu até cheguei a responder isso aqui no tópico mas acabei apagando. Havia lido na documentação que "Essa callback é executada quando elementos do veículo como portas, rodas, painéis, ou luzes mudam seu status de dano.". 
 
Logo se o veículo atingir valor de vida menor que 250, e nenhum dos elementos sofrerem danos/atualizarem o status, o veículo irá explodir. 
 
Ou a documentação está incorreta e a public é chamada pra qualquer dano? 
 
Documentação: 
https://open.mp/pt-br/docs/scripting/callbacks/OnVehicleDamageStatusUpdate  
Agora me pegou. Fiz um anti-cheat para verificar godmode no veículo mas só testei com batidas, não testei com tiros. 
E também nem toda a batida da dano no veículo. Varia conforme a velocidade. 
 
Em últimos casos da pra usar a alternativa abaixo. Fiz rápido e não testei, mas pode servir de base. 
Código: static Float:vehicleHealth[MAX_VEHICLES]; 
 
forward OnChangeVehicleHealth(vehicleid, Float:old_health, Float:new_health); 
public OnChangeVehicleHealth(vehicleid, Float:old_health, Float:new_health) 
{ 
    printf("[DEBUG] Vida do veículo %i mudou de %.1f para %.1f", vehicleid, old_health, new_health); 
    return true; 
} 
 
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) 
{ 
    if(!ispassenger) 
        GetVehicleHealth(vehicleid, vehicleHealth[vehicleid]); 
    return 1; 
} 
 
public OnPlayerUpdate(playerid) 
{ 
    new vehicleid; 
    if((vehicleid = GetPlayerVehicleID(playerid)) != INVALID_VEHICLE_ID) 
    { 
        new Float:health; 
        GetVehicleHealth(vehicleid, health); 
        if(vehicleHealth[vehicleid] != health) 
        { 
            OnChangeVehicleHealth(vehicleid, vehicleHealth[vehicleid], health); 
            vehicleHealth[vehicleid] = health; 
        } 
    } 
    return 1; 
}
   
O ideal era utilizar um timer, e não a OnPlayerUpdate. A public OnPlayerUpdate é chamada mais de 200 vezes por segundo, o que torna o gamemode menos otimizado. Se você criar um timer de 1 segundo, a função seria executada por apenas 1 vez no mesmo tempo.
 
 
 
 |