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(vehicleid, playerid)
{
veTick[vehicleid] = GetTickCount();
GetVehiclePos(vehicleid, vehX, vehY, vehZ);
}
for(new i; i < MAX_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(tick1, tick2, range)
{
assert(range >= 0);
if(tick1 > tick2)
r = tick1 - tick2;
else
r = tick2 - tick1;
return (-range <= r < range);
}
check2(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float: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