25.09.2009, 10:47
is there someone got that function? or something similar.... i know that there was something similar about the player but i need one with vehicles.
public IsPlayerInRangeOfVehicle(playerid, vehicleid, radius)
{
new Float: CarX, Float: CarY, Float: CarZ;
GetVehiclePos(playerid, CarX, CarY, CarZ);
if(IsPlayerInRangeOfPoint(playerid, radius, CarX, CarY, CarZ))
{
return 1;
}
else
{
return 0;
}
}
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z); forward IsVehicleNearToPos(vehicleid, playerid);
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}
public IsVehicleNearToPos(vehicleid, playerid)
{
new Float:x, Float:y, Float:z;
GetVehiclePos(vehicleid, x, y, z);
if(PlayerToPoint(20, playerid, x, y, z); //Change the 20 into the radius beetween player and vehicle
{
return 1;
}
else
{
return 0;
}
}
IsVehicleNearToPos(<vehicleid>, <playerid>);
OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp("/isplanenearpos", cmdtext, true))
{
if(IsVehicleNearToPos(2, playerid)) //Let's just say the "PLANE" id is 2
{
SendClientMessage(playerid, COLOR_SYSTEM, "Yes, it is");
}
else
{
SendClientMessage(playerid, COLOR_SYSTEM, "No, it is not");
}
}
}

|
Originally Posted by virspector
First, put this forward:
Код:
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z); forward IsVehicleNearToPos(vehicleid, playerid); Код:
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}
Код:
public IsVehicleNearToPos(vehicleid, playerid)
{
new Float:x, Float:y, Float:z;
GetVehiclePos(vehicleid, x, y, z);
if(PlayerToPoint(20, playerid, x, y, z); //Change the 20 into the radius beetween player and vehicle
{
return 1;
}
else
{
return 0;
}
}
Код:
IsVehicleNearToPos(<vehicleid>, <playerid>); Код:
OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp("/isplanenearpos", cmdtext, true))
{
if(IsVehicleNearToPos(2, playerid)) //Let's just say the "PLANE" id is 2
{
SendClientMessage(playerid, COLOR_SYSTEM, "Yes, it is");
}
else
{
SendClientMessage(playerid, COLOR_SYSTEM, "No, it is not");
}
}
}
![]() |
forward VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z); forward IsVehicleNearToPos(vehicleid, x, y, z);
public VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetVehiclePos(vehicleid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
public IsVehicleNearToPos(vehicleid, x, y, z)
{
if(VehicleToPoint(10, vehicleid, x, y, z); //Change the 10 into the radius between the coordinate and vehicle
{
return 1;
}
else
{
return 0;
}
}
IsVehicleNearToPos(vehicleid, x, y, z);

and thanks to Calgon too for trying to help me
//...
return VehicleToPoint(10, vehicleid, x, y, z);
#define IsToPoint(%0,%1,%2,%3,%4,%5,%6) \
((((%0) - (%3)) * ((%0) - (%3))) + (((%1) - (%4)) * ((%1) - (%4))) + (((%2) - (%5)) * ((%2) - (%5))) <= ((%6) * (%6))) // ******'s macro for distance checking
stock IsVehicleNearPos(weed, Float: x, Float: y, Float: z, Float: dist)
{
new
Float: vX,
Float: vY,
Float: vZ;
GetVehiclePos(weed, vX, vY, vZ);
return IsToPoint(x,y,z,vX,vY,vZ,dist);
}