19.08.2016, 12:15
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);
}

