Advertisement
Guest User

13th

a guest
Dec 3rd, 2008
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.53 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define MAX_PICKUPS 10000
  4.  
  5. forward CreateStreamPickup(model,type,Float:x,Float:y,Float:z,range);
  6. forward StreamPickups();
  7. forward Pickup_AnyPlayerToPoint(Float:radi, Float:x, Float:y, Float:z);
  8. forward DestroyStreamPickup(ID);
  9.  
  10. enum pickupINFO
  11. {
  12.     pickupCreated,
  13.     pickupVisible,
  14.     pickupID,
  15.     pickupRange,
  16.     Float:pickupX,
  17.     Float:pickupY,
  18.     Float:pickupZ,
  19.     pickupType,
  20.     pickupModel
  21. }
  22. new Pickup[MAX_PICKUPS+1][pickupINFO];
  23.  
  24. public CreateStreamPickup(model,type,Float:x,Float:y,Float:z,range)
  25. {
  26.     new FoundID = 0;
  27.     new ID;
  28.  
  29.     for ( new i = 0; FoundID <= 0 ; i++)
  30.     {
  31.         if( Pickup[i][pickupCreated] == 0 )
  32.         {
  33.             if( FoundID == 0 )
  34.             {
  35.                ID = i;
  36.                FoundID = 1;
  37.             }
  38.         }
  39.         if( i > MAX_PICKUPS )
  40.         {
  41.             FoundID = 2;
  42.         }
  43.     }
  44.     if( FoundID == 2 )
  45.     {
  46.         print("Pickup limit reached! Pickup not created!");
  47.         return -1;
  48.     }
  49.     Pickup[ID][pickupCreated] = 1;
  50.     Pickup[ID][pickupVisible] = 0;
  51.     Pickup[ID][pickupModel] = model;
  52.     Pickup[ID][pickupType] = type;
  53.     Pickup[ID][pickupX] = x;
  54.     Pickup[ID][pickupY] = y;
  55.     Pickup[ID][pickupZ] = z;
  56.     Pickup[ID][pickupRange] = range;
  57.     return ID;
  58.  
  59. }
  60. public DestroyStreamPickup(ID)
  61. {
  62.     Pickup[ID][pickupCreated] = 0;
  63.     DestroyPickup(Pickup[ID][pickupID]);
  64. }
  65. public StreamPickups()
  66. {
  67.     for(new i = 0; i < MAX_PICKUPS; i++)
  68.     {
  69.         if( Pickup[i][pickupCreated] == 1 )
  70.         {
  71.             if( Pickup_AnyPlayerToPoint(Pickup[i][pickupRange],Pickup[i][pickupX],Pickup[i][pickupY],Pickup[i][pickupZ]) )
  72.             {
  73.                 if( Pickup[i][pickupVisible] == 0 )
  74.                 {
  75.                     Pickup[i][pickupID] = CreatePickup(Pickup[i][pickupModel],Pickup[i][pickupType],Pickup[i][pickupX],Pickup[i][pickupY],Pickup[i][pickupZ]);
  76.                     Pickup[i][pickupVisible] = 1;
  77.                 }
  78.             }
  79.             else
  80.             {
  81.                 if( Pickup[i][pickupVisible] == 1 )
  82.                 {
  83.                     DestroyPickup(Pickup[i][pickupID]);
  84.                     Pickup[i][pickupVisible] = 0;
  85.                 }
  86.             }
  87.         }
  88.     }
  89. }
  90. public Pickup_AnyPlayerToPoint(Float:radi, Float:x, Float:y, Float:z)
  91. {
  92.     for ( new i = 0; i < MAX_PLAYERS; i++ )
  93.     {
  94.         if(IsPlayerConnected(i))
  95.         {
  96.             new Float:oldposx, Float:oldposy, Float:oldposz;
  97.             new Float:tempposx, Float:tempposy, Float:tempposz;
  98.             GetPlayerPos(i, oldposx, oldposy, oldposz);
  99.             tempposx = (oldposx -x);
  100.             tempposy = (oldposy -y);
  101.             tempposz = (oldposz -z);
  102.             if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  103.             {
  104.                 return 1;
  105.             }
  106.         }
  107.     }
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement