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