15.06.2011, 14:03
You can't use IsPlayerInRangeOfPoint here, though I couldn't. Here's a nice stock which you can use. I don't know who made it originally, but I got it from Jakku.
I modified them for my use, I don't have original. Edit this to your version.
pawn Код:
stock Float:GetDistanceToHouseOutside(playerid,houseid)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x1,y1,z1);
x2 = HouseInfo[houseid][PickupOutsidePosX];
y2 = HouseInfo[houseid][PickupOutsidePosY];
z2 = HouseInfo[houseid][PickupOutsidePosZ];
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2) + floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
stock Float:GetDistanceToHouseInside(playerid,houseid)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x1,y1,z1);
x2 = HouseInfo[houseid][PickupInsidePosX];
y2 = HouseInfo[houseid][PickupInsidePosY];
z2 = HouseInfo[houseid][PickupInsidePosZ];
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2) + floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
stock IsNearHouseOutside(playerid)
{
new Float:Distance;
for(new house; house < MAX_HOUSES; house++)
{
Distance = GetDistanceToHouseOutside(playerid,house);
if(Distance < 5.0)
{
return house;
}
}
return -1;
}
stock IsNearHouseInside(playerid)
{
new Float:Distance;
for(new house; house < MAX_HOUSES; house++)
{
Distance = GetDistanceToHouseInside(playerid,house);
if(Distance < 5.0 && GetPlayerVirtualWorld(playerid) == HouseInfo[house][VirtualWorld])
{
return house;
}
}
return -1;
}