Guest User

Get Nearest [LIB]

a guest
Feb 28th, 2012
1,264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.10 KB | None | 0 0
  1. //***** Made by TopAz in 15 minutes.
  2.  
  3.  
  4. //----- Header
  5. #if defined _getnearest_included
  6.     #endinput
  7. #endif
  8. #define _getnearest_included
  9. #pragma library samp
  10. //----------------
  11.  
  12. //----- External Library(ies)
  13. #include <a_samp>
  14. //------------------------
  15.  
  16. //----- Constants
  17. /*#if defined USE_STREAMER
  18.     #include "streamer"
  19. #endif*/
  20.  
  21. #define OBJECT              (0)
  22. #define PLAYER              (1)
  23. #define VEHICLE             (2)
  24. #define DYNAMIC_OBJECT      (3)        
  25. //----------------
  26.  
  27.  
  28. stock GetNearest(playerid, type, Float:distance)
  29. {
  30.     new ret;
  31.     switch(type)
  32.     {
  33.         case OBJECT:
  34.         {
  35.             ret = GetNearest_Object(playerid, distance);
  36.         }
  37.         case PLAYER:
  38.         {
  39.             ret = GetNearest_Player(playerid, distance);
  40.         }
  41.         case VEHICLE:
  42.         {
  43.             ret = GetNearest_Vehicle(playerid, distance);
  44.         }
  45.         case DYNAMIC_OBJECT:
  46.         {
  47.             ret = GetNearest_DynObject(playerid, distance);
  48.         }
  49.     }
  50.     return ret;
  51. }
  52.  
  53. stock GetNearest_Object(playerid, Float:distance)
  54. {
  55.     new
  56.         Float:xX,
  57.         Float:yY,
  58.         Float:zZ,
  59.         retElement = -1
  60.     ;
  61.     for(new i = 0; i < MAX_OBJECTS; i++)
  62.     {
  63.         if(!IsValidObject(i)) continue;
  64.         GetObjectPos(i, xX, yY, zZ);
  65.         new Float:odist = GetPlayerDistanceFromPoint(playerid, xX, yY, zZ);
  66.         if (retElement == -1)
  67.         {
  68.             retElement = i;
  69.             distance = odist;
  70.         }
  71.         else if (odist < distance)
  72.         {
  73.             retElement = i;
  74.             distance = odist;
  75.         }
  76.     }
  77.     return retElement;
  78. }
  79.  
  80. stock GetNearest_Player(playerid, Float:distance)
  81. {
  82.     new
  83.         Float:xX,
  84.         Float:yY,
  85.         Float:zZ,
  86.         retElement = -1
  87.     ;
  88.     for(new i = 0; i < MAX_PLAYERS; i++)
  89.     {
  90.         if((i == playerid) || (i == INVALID_PLAYER_ID)) continue;
  91.         GetPlayerPos(i, xX, yY, zZ);
  92.         new Float:odist = GetPlayerDistanceFromPoint(playerid, xX, yY, zZ);
  93.         if (retElement == -1)
  94.         {
  95.             retElement = i;
  96.             distance = odist;
  97.         }
  98.         else if (odist < distance)
  99.         {
  100.             retElement = i;
  101.             distance = odist;
  102.         }
  103.     }
  104.     return retElement;
  105. }
  106.  
  107. stock GetNearest_Vehicle(playerid, Float:distance)
  108. {
  109.     new
  110.         Float:xX,
  111.         Float:yY,
  112.         Float:zZ,
  113.         retElement = -1
  114.     ;
  115.     for(new i = 0; i < MAX_VEHICLES; i++)
  116.     {
  117.         GetVehiclePos(i, xX, yY, zZ);
  118.         new Float:odist = GetPlayerDistanceFromPoint(playerid, xX, yY, zZ);
  119.         if (retElement == -1)
  120.         {
  121.             retElement = i;
  122.             distance = odist;
  123.         }
  124.         else if (odist < distance)
  125.         {
  126.             retElement = i;
  127.             distance = odist;
  128.         }
  129.     }
  130.     return retElement;
  131. }
  132.  
  133. stock GetNearest_DynObject(playerid, Float:distance)
  134. {
  135.     new
  136.         Float:xX,
  137.         Float:yY,
  138.         Float:zZ,
  139.         retElement = -1
  140.     ;
  141.     for(new i = 0; i < CountDynamicObjects(); i++)
  142.     {
  143.         GetDynamicObjectPos(i, xX, yY, zZ);
  144.         new Float:odist = GetPlayerDistanceFromPoint(playerid, xX, yY, zZ);
  145.         if (retElement == -1)
  146.         {
  147.             retElement = i;
  148.             distance = odist;
  149.         }
  150.         else if (odist < distance)
  151.         {
  152.             retElement = i;
  153.             distance = odist;
  154.         }
  155.     }
  156.     return retElement;
  157. }
Advertisement
Add Comment
Please, Sign In to add comment