Portal SAMP
[Ajuda] furar o pneu do carro com um tiro - 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] furar o pneu do carro com um tiro (/showthread.php?tid=891)



furar o pneu do carro com um tiro - zBL4CK - 11/03/2021

eae pessoal blz bom eu não sei quais callbacks devo usar para saber se o tiro que o player deu pegou no pneu bom a parte de furar o pneu eu ja sei o que nn to conseguindo fazer é a parte de detectar qual roda o tiro pegou alguem poderia me ajudar?


RE: furar o pneu do carro com um tiro - k2bi_YT - 11/03/2021

Acho que esse tópico pode te ajudar.

https://open.mp/docs/scripting/callbacks/OnVehicleDamageStatusUpdate


RE: furar o pneu do carro com um tiro - zBL4CK - 11/03/2021

(11/03/2021 22:33)k2bi_YT Escreveu: Acho que esse tópico pode te ajudar.

https://open.mp/docs/scripting/callbacks/OnVehicleDamageStatusUpdate

obrigado irei conferir


RE: furar o pneu do carro com um tiro - zBL4CK - 15/07/2021

pessoal ainda nn consegui resolver alguem tem uma base pra me ajudar eu nn sei como detectar onde o tiro pegou no pneu ou seja em qual pneu pegou e sendo assim fura-lo


RE: furar o pneu do carro com um tiro - xbruno1000x - 15/07/2021

(15/07/2021 02:03)zBL4CK Escreveu: pessoal ainda nn consegui resolver alguem tem uma base pra me ajudar eu nn sei como detectar onde o tiro pegou no pneu ou seja em qual pneu pegou e sendo assim fura-lo

Eu dei uma olhada...
Sinto-lhe dizer que isso é extremamente complicado. Você teria que usar a função UpdateVehicleDamageStatus para setar o pneu como furado na public OnVehicleDamageStatusUpdate. O grande problema é que não há função nativa parecida com a bodypart(que detecta a parte do corpo que foi atingida) e você teria que criar isso de outra forma. Pelo que entendi, o pneu não fura para os players automático no SA-MP como no GTA SA Offline, se isso acontecesse seria possível dar GetVehicleDamageStatus e depois usar o UpdateVehicleDamageStatus.

Existem duas formas que imagino fazer isso:

Depois de x% de dano do veículo você estoura o pneu mesmo ele não sendo atingido.


Você pode tentar fazer isso com o ColAndreas(Não sei nem por onde começar, mas o plugin permite pegar a posição de onde o player atirou então é possível).


RE: furar o pneu do carro com um tiro - zBL4CK - 15/07/2021

eu descobri como fazer na vdd eu tava fazendo corretamente o problema era que eu estava testando errado.

Código:
public OnVehicleDamageStatusUpdate(vehicleid, playerid) {
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    return 1;
}


OnVehicleDamageStatusUpdate so é chamado quando há um player no veiculo(assim eu acho pois era isso que estava acusando em meus testes) e como eu to testando no localhost estava fzd testes sozinho.


ta beleza como eu quero que fure o pneu mesmo não tendo ninguem no veiculo e OnVehicleDamageStatusUpdate so é chamada quando tem um player no veiculo pelo que eu percebi em meus testes, então fui procurar uma callback que atenda o que eu estou precisando e achei: OnUnoccupiedVehicleUpdate e segundo a wiki o objetivo dela é:


Código:
Este retorno de chamada é chamado quando o cliente de um jogador atualiza / sincroniza a posição de um veículo que ele não está dirigindo. Isso pode acontecer fora do veículo ou quando o jogador é um passageiro de um veículo que não tem motorista.

então implementei na GM o seguinte:


Código PHP:
public OnUnoccupiedVehicleUpdate(vehicleidplayeridpassenger_seatFloat:new_xFloat:new_yFloat:new_zFloat:vel_xFloat:vel_yFloat:vel_z)
{
    new panels1doors2lights3tires4;
    GetVehicleDamageStatus(vehicleidpanels1doors2lights3tires4);
    
//então coloquei para mostrar no console o que esta acontecendo
    printf("Vehicle Status1: [Panels]: %d - [Doors]: %d - [Lights]: %d - [Tires]: %d"panels1doors2lights3tires4);
    UpdateVehicleDamageStatus(vehicleidpanels1doors2lights3tires4);
    return 1;


e quando eu atiro no pneu aparece isso no console:

Código:
Vehicle Status1: [Panels]: 0 - [Doors]: 0 - [Lights]: 0 - [Tires]: 0
Vehicle Status1: [Panels]: 0 - [Doors]: 0 - [Lights]: 0 - [Tires]: 0
Vehicle Status1: [Panels]: 0 - [Doors]: 0 - [Lights]: 0 - [Tires]: 0
Vehicle Status1: [Panels]: 0 - [Doors]: 0 - [Lights]: 0 - [Tires]: 0
Vehicle Status1: [Panels]: 0 - [Doors]: 0 - [Lights]: 0 - [Tires]: 0
Vehicle Status1: [Panels]: 0 - [Doors]: 0 - [Lights]: 0 - [Tires]: 0
ou seja não esta funcionando da maneira que eu quero ;-;


RE: furar o pneu do carro com um tiro - xbruno1000x - 16/07/2021

Que bom que o problema não é tão complicado quanto imaginei. Nesse caso é bem mais possível de ser feito. O grande problema com a OnUnoccupiedVehicleUpdate é que acredito que ela seja chamada apenas quando um veículo desocupado se move. Sempre que vi ela sendo utilizada, era para coibir cheaters de espalhar carros, pois com ela é possível comparar a antiga posição com a nova. Sendo assim, ela não é chamada para danos. Busque no google por Unnoccupied Vehicle Damage SA-MP, existem diversas includes que fazem essa função e possibilitam danos em veículos desocupados. Talvez com uma dessas includes você possa adaptar para furar os pneus de carros desocupados. Boa sorte!