/*
PickupAdvanced by Steve_Stage
Made in 2020
VK: vk.com/steve_stage
*/
#if !defined MAX_PLAYERS
#error [PICKUP ADVANCED] <a_samp> must include before <pickup_advanced>!
#if !defined _streamer_included
#define __pu_adv_no_streamer
#endif
#if !defined MAX_DYNAMIC_PICKUPS
#define MAX_DYNAMIC_PICKUPS 150
#endif
enum __pu_adv_enum
{
Float:__pu_adv_x, Float:__pu_adv_y, Float:__pu_adv_z, __pu_adv_timer
}
new __pu_adv_arr[MAX_DYNAMIC_PICKUPS][__pu_adv_enum];
static bool:__pu_adv_check[MAX_PLAYERS char];
#if !defined __pu_adv_no_streamer
#define CreateDynamicPickup(%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%10) __pu_adv_CreateDynamicPickup(%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%10)
stock __pu_adv_CreateDynamicPickup(__pu_adv_cdp_modelid,__pu_adv_cdp_type,Float:__pu_adv_cdp_x,Float:__pu_adv_cdp_y,Float:__pu_adv_cdp_z,__pu_adv_cdp_worldid,__pu_adv_cdp_interiorid,__pu_adv_cdp_playerid,Float:__pu_adv_cdp_streamdistance,__pu_adv_cdp_areaid,__pu_adv_cdp_priority)
{
static i = CreateDynamicPickup(__pu_adv_cdp_modelid,__pu_adv_cdp_type,Float:__pu_adv_cdp_x,Float:__pu_adv_cdp_y,Float:__pu_adv_cdp_z,__pu_adv_cdp_worldid,__pu_adv_cdp_interiorid,__pu_adv_cdp_playerid,Float:__pu_adv_cdp_streamdistance,__pu_adv_cdp_areaid,__pu_adv_cdp_priority);
__pu_adv_arr[i][__pu_adv_x] = __pu_adv_cdp_x;
__pu_adv_arr[i][__pu_adv_y] = __pu_adv_cdp_y;
__pu_adv_arr[i][__pu_adv_z] = __pu_adv_cdp_z;
return i;
}
public OnPlayerPickUpDynamicPickup(__pu_adv_oppudp_playerid,__pu_adv_oppudp_pickupid)
{
if(IsPlayerInRangeOfPoint(__pu_adv_oppudp_playerid
,2.0,__pu_adv_arr
[__pu_adv_oppudp_pickupid
][__pu_adv_x
],__pu_adv_arr
[__pu_adv_oppudp_pickupid
][__pu_adv_y
],__pu_adv_arr
[__pu_adv_oppudp_pickupid
][__pu_adv_z
]) && __pu_adv_check
{__pu_adv_oppudp_playerid
} == true) return false; if(__pu_adv_check{__pu_adv_oppudp_playerid} == false) __pu_adv_check{__pu_adv_oppudp_playerid} = true;
__pu_adv_arr
[__pu_adv_oppudp_pickupid
][__pu_adv_timer
] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_oppudp_playerid
,__pu_adv_oppudp_pickupid
); return true;
}
#else
#define CreatePickup(%0,%1,%2,%3,%4,%5) __pu_adv_CreatePickup(%0,%1,%2,%3,%4,%5)
stock __pu_adv_CreatePickup(__pu_adv_cp_model,__pu_adv_cp_type,Float:__pu_adv_cp_x,Float:__pu_adv_cp_y,Float:__pu_adv_cp_z,__pu_adv_cp_virtualworld)
{
static i
= CreatePickup(__pu_adv_cp_model
,__pu_adv_cp_type
,Float:__pu_adv_cp_x
,Float:__pu_adv_cp_y
,Float:__pu_adv_cp_z
,__pu_adv_cp_virtualworld
); __pu_adv_arr[i][__pu_adv_x] = __pu_adv_cp_x;
__pu_adv_arr[i][__pu_adv_y] = __pu_adv_cp_y;
__pu_adv_arr[i][__pu_adv_z] = __pu_adv_cp_z;
return i;
}
{
if(IsPlayerInRangeOfPoint(__pu_adv_oppup_playerid
, 2.0, __pu_adv_arr
[__pu_adv_oppup_pickupid
][__pu_adv_x
],__pu_adv_arr
[__pu_adv_oppup_pickupid
][__pu_adv_y
],__pu_adv_arr
[__pu_adv_oppudp_pickupid
][__pu_adv_z
]) && __pu_adv_check
{__pu_adv_oppup_playerid
} == true) return false; if(__pu_adv_check{__pu_adv_oppup_playerid} == false) __pu_adv_check{__pu_adv_oppup_playerid} = true
__pu_adv_arr
[__pu_adv_oppup_pickupid
][__pu_adv_timer
] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_oppup_playerid
,__pu_adv_oppup_pickupid
); return true;
}
#endif
#endif
stock GetPickupPos(__pu_adv_gpp_pickupid,&Float:__pu_adv_gpp_x,&Float:__pu_adv_gpp_y,&Float:__pu_adv_gpp_z)
{
__pu_adv_gpp_x = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_x];
__pu_adv_gpp_y = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_y];
__pu_adv_gpp_z = __pu_adv_arr[__pu_adv_gpp_pickupid][__pu_adv_z];
return true;
}
@__pu_adv_update(__pu_adv_update_playerid,__pu_adv_update_pickupid);
@__pu_adv_update(__pu_adv_update_playerid,__pu_adv_update_pickupid)
{
if(!IsPlayerInRangeOfPoint(__pu_adv_update_playerid
,2.0,__pu_adv_arr
[__pu_adv_update_pickupid
][__pu_adv_x
],__pu_adv_arr
[__pu_adv_update_pickupid
][__pu_adv_y
],__pu_adv_arr
[__pu_adv_update_pickupid
][__pu_adv_z
])) {
__pu_adv_check{__pu_adv_update_playerid} = false;
KillTimer(__pu_adv_arr
[__pu_adv_update_pickupid
][__pu_adv_timer
]); return false;
}
__pu_adv_arr
[__pu_adv_update_pickupid
][__pu_adv_timer
] = SetTimerEx("@__pu_adv_update",300,false,"dd",__pu_adv_update_playerid
,__pu_adv_update_pickupid
); return true;
}