Get The Closest Dynamic Object?
#1

Hello, im using Incognito Streamer and I wanted to know of a way to get the closest dynamicobject to a player, is this possible? Thanks.
Reply
#2

pawn Code:
for(new i=0;i<MAX_DYNAMIC_OBJECTS;i++)
{
  new Float:oX, Float:oY, Float:oZ;
  GetDynamicObjectPos(oX, oY, oZ);
  if(IsPlayerInRangeOfPoint(playerid, oX, oY, oZ))
  {
    //Do the things
    break;
  }
  continue;
}
Reply
#3

maybe setting the...
Code:
native Streamer_VisibleItems(type, items);
.. to 1 and loop thourgh all objects if its visible? hm...
edit: nevermind >-<
Reply
#4

Sasino it didn't work anyone help me please?
Reply
#5

Bump? Anyone?
Reply
#6

Use one of all the GetClosest... algorithms posted all over the forum and use GetDynamicObjectPos in it
Reply
#7

Tried searching about getting closest object, seems my search isn't finding anything :/. Maybe im searching the wrong tag?
Reply
#8

Try this.
pawn Code:
stock GetClosestDynamicObject(playerid)
{
    new Float:px,Float:py,Float:pz,
    Float:ox,Float:oy,Float:oz,Float:dist,result = 12345;
    GetPlayerPos(playerid,px,py,pz);
    for(new o; o < CountDynamicObjects(); o++)
    {
        GetDynamicObjectPos(o,ox,oy,oz);
        dist = floatsqroot(floatpower(floatabs(floatsub(px,ox)),2)+floatpower(floatabs(floatsub(py,oy)),2)+floatpower(floatabs(floatsub(pz,oz)),2));
        if(dist < result)
        {
            result = dist;
            return o;
        }
    }
    return 1;
}
Untested.
Reply
#9

Is there a way to add the object id? So like GetClosestDynamicObject(playerid, objectid); or something? So that way I can find out which object is the closest.
Reply
#10

Quote:
Originally Posted by MyLife
View Post
Try this.
pawn Code:
stock GetClosestDynamicObject(playerid)
{
    new Float:px,Float:py,Float:pz,
    Float:ox,Float:oy,Float:oz,Float:dist,result = 12345;
    GetPlayerPos(playerid,px,py,pz);
    for(new o; o < CountDynamicObjects(); o++)
    {
        GetDynamicObjectPos(o,ox,oy,oz);
        dist = floatsqroot(floatpower(floatabs(floatsub(px,ox)),2)+floatpower(floatabs(floatsub(py,oy)),2)+floatpower(floatabs(floatsub(pz,oz)),2));
        if(dist < result)
        {
            result = dist;
            return o;
        }
    }
    return 1;
}
Untested.
Quote:
Originally Posted by Tommy_Mandaz
View Post
Is there a way to add the object id? So like GetClosestDynamicObject(playerid, objectid); or something? So that way I can find out which object is the closest.
-.-

pawn Code:
new objectid = GetClosestDynamicObject(playerid);
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)