SA-MP Forums Archive
[Ajuda] Como Detectar Colisгo (Batida) entre Veiculos? - 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] Como Detectar Colisгo (Batida) entre Veiculos? (/showthread.php?tid=615165)



Como Detectar Colisгo (Batida) entre Veiculos? - MarllonGTA - 18.08.2016

Olб, gostaria de perguntar, como faзo para detectar colisгo de veiculos

Exemplo:
O Motorista do Carro A, bate no carro B (Ou vice e versa)

Ai aparece a mensagem
"Vocк Bateu no carro de Fulano"
ou
"Veiculos Infernus de Fulano, bateu no Veiculo Bullet de Beltrano"
---

Eu procurei algo a respeito, mas nao achei.
Ou nгo sei se pesquisei de forma errada, enfim.
Podem me ajudar?


Re: Como Detectar Colisгo (Batida) entre Veiculos? - arakuta - 18.08.2016

Nativamente, eu acho que isto nгo й possнvel. Mas usando alguns algoritmos de velocidade, anomalia entre 2 veнculos perdendo HP e proximidade entre eles, vocк pode pelo menos tentar presumir que uma colisгo entre eles aconteceu, atй mesmo verificando se vinham de vetores de direзхes diferentes antes da colisгo. Daria um trabalhinho interessante, mas acho que o resultado final nгo seria muito preciso e nem valeria a pena.


Re: Como Detectar Colisгo (Batida) entre Veiculos? - Andinho - 18.08.2016

eui acho que й em OnPlayerUpdateDamageVehicle, algo assim, me corrigam se tiver errado rsrs


Re: Como Detectar Colisгo (Batida) entre Veiculos? - F1N4L - 19.08.2016

Quote:
Originally Posted by Andinho
Посмотреть сообщение
eui acho que й em OnPlayerUpdateDamageVehicle, algo assim, me corrigam se tiver errado rsrs
Essa callback й chamada em qualquer dano, nгo somente por colisгo.


Re: Como Detectar Colisгo (Batida) entre Veiculos? - Dayvison_ - 19.08.2016

Em teoria seria algo como
PHP код:
const vehDelay 1000;
const 
vehDistance 3.0;
new 
    
vehTick[MAX_VEHICLES],
    
Float:vehX[MAX_VEHICLES],
    
Float:vehY[MAX_VEHICLES],
    
Float:vehZ[MAX_VEHICLES]
;
public 
OnVehicleDamageStatusUpdate(vehicleidplayerid)
{
    
veTick[vehicleid] = GetTickCount();
    
GetVehiclePos(vehicleidvehXvehYvehZ);
}

for(new 
iMAX_VEHICLES; ++i)
{
    if(
vehDesejado == i) continue;
    if(
check(vehTick[vehDesejado], vehTick[i], vehDelay))
    {
        if(
check2(vehX[i], vehY[i], vehZ[i], vehX[vehDesejado], vehY[vehDesejado], vehZ[vehDesejado], vehDistance))
        {
            
// Bateram EM TEORIA, nгo sei a real condiзгo em testes com pings altos, etc..
        
}
    }
}

check(tick1tick2range)
{
    
assert(range >= 0);
    if(
tick1 tick2)
        
tick1 tick2;
    else
        
tick2 tick1;
    return (-
range <= range);
}
check2(Float:x1Float:y1Float:z1Float:x2Float:y2Float:z2Float:distance)
{
    return (
GetDistanceBetweenPoints3D(x1,y1,z1,x2,y2,z2) < distance);
}
// AbyssMorgan
stock Float:GetDistanceBetweenPoints3D(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2){
    return 
VectorSize(x1-x2,y1-y2,z1-z2);




Re: Como Detectar Colisгo (Batida) entre Veiculos? - iLordGG - 21.08.2016

Tava vendo uns tуpicos gringos e acabei achando isso e lembrei da postagem.. ve se й isso que vc procura..

https://sampforum.blast.hk/showthread.php?tid=586068