All pastes #1623684 Raw Edit

pstream.pwn

public cpp v1 · immutable
#1623684 ·published 2009-10-16 12:35 UTC
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;}