Advertisement
Guest User

13th

a guest
Mar 11th, 2009
1,002
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.65 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. forward ChangeStreamPickupModel(ID,newmodel);
  10. forward ChangeStreamPickupType(ID,newtype);
  11. forward IsStreamPickup(ID);
  12. forward Pickup_PlayerToPoint(playerid, Float:radi, Float:x, Float:y, Float:z);
  13. forward ValidStreamPickupPickUp(playerid, pickupid);
  14.  
  15.  
  16. enum pickupINFO
  17. {
  18.     pickupCreated,
  19.     pickupVisible,
  20.     pickupID,
  21.     pickupRange,
  22.     Float:pickupX,
  23.     Float:pickupY,
  24.     Float:pickupZ,
  25.     pickupType,
  26.     pickupModel
  27. }
  28. new Pickup[MAX_PICKUPS+1][pickupINFO];
  29.  
  30. public CreateStreamPickup(model,type,Float:x,Float:y,Float:z,range)
  31. {
  32.     new FoundID = 0;
  33.     new ID;
  34.  
  35.     for ( new i = 0; FoundID <= 0 ; i++)
  36.     {
  37.         if( Pickup[i][pickupCreated] == 0 )
  38.         {
  39.             if( FoundID == 0 )
  40.             {
  41.                ID = i;
  42.                FoundID = 1;
  43.             }
  44.         }
  45.         if( i > MAX_PICKUPS )
  46.         {
  47.             FoundID = 2;
  48.         }
  49.     }
  50.     if( FoundID == 2 )
  51.     {
  52.         print("Pickup limit reached! Pickup not created!");
  53.         return -1;
  54.     }
  55.     Pickup[ID][pickupCreated] = 1;
  56.     Pickup[ID][pickupVisible] = 0;
  57.     Pickup[ID][pickupModel] = model;
  58.     Pickup[ID][pickupType] = type;
  59.     Pickup[ID][pickupX] = x;
  60.     Pickup[ID][pickupY] = y;
  61.     Pickup[ID][pickupZ] = z;
  62.     Pickup[ID][pickupRange] = range;
  63.     return ID;
  64.  
  65. }
  66. public DestroyStreamPickup(ID)
  67. {
  68.     Pickup[ID][pickupCreated] = 0;
  69.     DestroyPickup(Pickup[ID][pickupID]);
  70. }
  71. public StreamPickups()
  72. {
  73.     for(new i = 0; i < MAX_PICKUPS; i++)
  74.     {
  75.         if( Pickup[i][pickupCreated] == 1 )
  76.         {
  77.             if( Pickup_AnyPlayerToPoint(Pickup[i][pickupRange],Pickup[i][pickupX],Pickup[i][pickupY],Pickup[i][pickupZ]) )
  78.             {
  79.                 if( Pickup[i][pickupVisible] == 0 )
  80.                 {
  81.                     Pickup[i][pickupID] = CreatePickup(Pickup[i][pickupModel],Pickup[i][pickupType],Pickup[i][pickupX],Pickup[i][pickupY],Pickup[i][pickupZ]);
  82.                     Pickup[i][pickupVisible] = 1;
  83.                 }
  84.             }
  85.             else
  86.             {
  87.                 if( Pickup[i][pickupVisible] == 1 )
  88.                 {
  89.                     DestroyPickup(Pickup[i][pickupID]);
  90.                     Pickup[i][pickupVisible] = 0;
  91.                 }
  92.             }
  93.         }
  94.     }
  95. }
  96. public Pickup_AnyPlayerToPoint(Float:radi, Float:x, Float:y, Float:z)
  97. {
  98.     for ( new i = 0; i < MAX_PLAYERS; i++ )
  99.     {
  100.         if(IsPlayerConnected(i))
  101.         {
  102.             if( Pickup_PlayerToPoint(i, Float:radi, Float:x, Float:y, Float:z) ) return 1;
  103.         }
  104.     }
  105.     return 0;
  106. }
  107. public Pickup_PlayerToPoint(playerid, Float:radi, Float:x, Float:y, Float:z)
  108. {
  109.     new Float:oldposx, Float:oldposy, Float:oldposz;
  110.     new Float:tempposx, Float:tempposy, Float:tempposz;
  111.     GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  112.     tempposx = (oldposx -x);
  113.     tempposy = (oldposy -y);
  114.     tempposz = (oldposz -z);
  115.     if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  116.     {
  117.         return 1;
  118.     }
  119.     return 0;
  120. }
  121. public ChangeStreamPickupModel(ID,newmodel)
  122. {
  123.     DestroyPickup(Pickup[ID][pickupID]);
  124.     Pickup[ID][pickupVisible] = 0;
  125.     Pickup[ID][pickupModel] = newmodel;
  126. }
  127. public ChangeStreamPickupType(ID,newtype)
  128. {
  129.     DestroyPickup(Pickup[ID][pickupID]);
  130.     Pickup[ID][pickupVisible] = 0;
  131.     Pickup[ID][pickupType] = newtype;
  132. }
  133. public IsStreamPickup(ID)
  134. {
  135.     for( new i = 0; i < MAX_PICKUPS; i++ )
  136.     {
  137.         if( Pickup[i][pickupID] == ID && Pickup[i][pickupCreated] == 1 )
  138.         {
  139.             return i;
  140.         }
  141.     }
  142.     return -1;
  143. }
  144. public ValidStreamPickupPickUp(playerid, pickupid)
  145. {
  146.     if( Pickup_PlayerToPoint(playerid, 2.0, Pickup[pickupid][pickupX], Pickup[pickupid][pickupY], Pickup[pickupid][pickupZ]) ) return 1; return 0;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement