rendered paste body#define FILTERSCRIPT#include <a_samp>#include <foreach>#include <pstream>enum e_PICKUP{ e_PICKUP_ID, e_PICKUP_TYPE, e_PICKUP_MODEL, e_PICKUP_WORLD, Float:e_PICKUP_XPOS, Float:e_PICKUP_YPOS, Float:e_PICKUP_ZPOS, Float:e_PICKUP_VIEWDIST,}new gRegularPickups[MAX_PICKUPS], gStreamPickups[MAX_STREAM_PICKUPS][e_PICKUP];Itter_Create(StreamPickup, MAX_STREAM_PICKUPS);forward PStream_Create(model, type, Float:x, Float:y, Float:z, world, Float:viewdist);forward PStream_Destroy(spickup);forward PStream_GetID(rpickup)forward PStream_Update();public OnFilterScriptInit(){ SetTimer("PStream_Update", PSTREAM_UPDATE_INTERVAL, true); for (new player; player < MAX_PLAYERS; player++) { if (IsPlayerConnected(player)) { Itter_Add(Player, player); } } return 1;}public OnFilterScriptExit(){ foreach (StreamPickup, spickup) { PStream_Destroy(spickup); } return 1;}public PStream_Create(model, type, Float:x, Float:y, Float:z, world, Float:viewdist){ if (Itter_Count(StreamPickup) < MAX_STREAM_PICKUPS) { new pickupid = Itter_Free(StreamPickup); Itter_Add(StreamPickup, pickupid); gStreamPickups[pickupid][e_PICKUP_ID] = -1; gStreamPickups[pickupid][e_PICKUP_XPOS] = x; gStreamPickups[pickupid][e_PICKUP_YPOS] = y; gStreamPickups[pickupid][e_PICKUP_ZPOS] = z; gStreamPickups[pickupid][e_PICKUP_TYPE] = type; gStreamPickups[pickupid][e_PICKUP_MODEL] = model; gStreamPickups[pickupid][e_PICKUP_WORLD] = world; gStreamPickups[pickupid][e_PICKUP_VIEWDIST] = viewdist; //printf("pickup added: id=%d, type=%d, x=%f, y=%f, z=%f, world=%d, dist=%f", pickupid, type, x, y, z, world, viewdist); return pickupid; } return INVALID_PICKUP_ID; } public PStream_Destroy(spickup){ if (0 <= spickup < MAX_STREAM_PICKUPS) { new rpickup = gStreamPickups[spickup][e_PICKUP_ID]; DestroyPickup(rpickup); gRegularPickups[rpickup] = -1; gStreamPickups[spickup][e_PICKUP_ID] = -1; Itter_Remove(StreamPickup, spickup); //printf("pickup deleted: %d", pickupid); return 1; } return 0; }public PStream_GetID(rpickup){ return gRegularPickups[rpickup];}public PStream_Update(){ new somebody_see_it, pickup_count, rpickup; foreach (StreamPickup, spickup) { foreach (Player, player) { if (IsPlayerInRangeOfPoint(player, gStreamPickups[spickup][e_PICKUP_VIEWDIST], gStreamPickups[spickup][e_PICKUP_XPOS], gStreamPickups[spickup][e_PICKUP_YPOS], gStreamPickups[spickup][e_PICKUP_ZPOS])) { somebody_see_it = true; break; } } if (somebody_see_it) { if (gStreamPickups[spickup][e_PICKUP_ID] == -1) { rpickup = CreatePickup(gStreamPickups[spickup][e_PICKUP_MODEL], gStreamPickups[spickup][e_PICKUP_TYPE], gStreamPickups[spickup][e_PICKUP_XPOS], gStreamPickups[spickup][e_PICKUP_YPOS], gStreamPickups[spickup][e_PICKUP_ZPOS], gStreamPickups[spickup][e_PICKUP_WORLD]); gStreamPickups[spickup][e_PICKUP_ID] = rpickup gRegularPickups[rpickup] = spickup; } pickup_count++; } else { rpickup = gStreamPickups[spickup][e_PICKUP_ID]; DestroyPickup(rpickup); gRegularPickups[rpickup] = -1; gStreamPickups[spickup][e_PICKUP_ID] = -1; } somebody_see_it = false; if (pickup_count == MAX_PICKUPS) break; } return 1;}