All pastes #1618735 Raw Edit

PStream - FS

public cpp v1 · immutable
#1618735 ·published 2009-10-14 05:59 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 	gStreamedPickups[PSTREAM_MAX_PICKUPS][e_PICKUP];Itter_Create(Pickup, PSTREAM_MAX_PICKUPS);forward PStream_Create(model, type, Float:x, Float:y, Float:z, world, Float:viewdist);forward PStream_Destroy(pickupid);forward PStream_GetID(pickupid);forward PStream_Update();public OnFilterScriptInit(){	Itter_Add(Pickup, 0); // fake pickup	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 (Pickup, pickup)	{		PStream_Destroy(pickup);	}	return 1;}public PStream_Create(model, type, Float:x, Float:y, Float:z, world, Float:viewdist){	if (Itter_Count(Pickup) < PSTREAM_MAX_PICKUPS)	{		new			pickupid = Itter_Free(Pickup);		Itter_Add(Pickup, pickupid);		gStreamedPickups[pickupid][e_PICKUP_ID] = -1;		gStreamedPickups[pickupid][e_PICKUP_XPOS] = x;		gStreamedPickups[pickupid][e_PICKUP_YPOS] = y;		gStreamedPickups[pickupid][e_PICKUP_ZPOS] = z;			gStreamedPickups[pickupid][e_PICKUP_TYPE] = type;		gStreamedPickups[pickupid][e_PICKUP_MODEL] = model;		gStreamedPickups[pickupid][e_PICKUP_WORLD] = world;		gStreamedPickups[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 -1;	}	public PStream_Destroy(pickupid){	if (pickupid > 0 && Itter_Remove(Pickup, pickupid))	{		DestroyPickup(gStreamedPickups[pickupid][e_PICKUP_ID]);		gStreamedPickups[pickupid][e_PICKUP_ID] = -1;		//printf("pickup deleted: %d", pickupid);			return pickupid;	}	return -1;	}public PStream_GetID(pickupid){	foreach (Pickup, pickup)	{		if (!pickup) continue;		if (gStreamedPickups[pickup][e_PICKUP_ID] == pickupid)		{			return pickup;		}	}			return -1;}public PStream_Update(){	new		somebody_see_it,		pickup_count;	foreach (Pickup, pickup)	{			if (!pickup) continue; // fake pickup		foreach (Player, player)		{		    if (IsPlayerInRangeOfPoint(player, gStreamedPickups[pickup][e_PICKUP_VIEWDIST], gStreamedPickups[pickup][e_PICKUP_XPOS], gStreamedPickups[pickup][e_PICKUP_YPOS], gStreamedPickups[pickup][e_PICKUP_ZPOS]))		    {				somebody_see_it = true;				break;			}		}		if (somebody_see_it)		{			if (gStreamedPickups[pickup][e_PICKUP_ID] == -1)			{						gStreamedPickups[pickup][e_PICKUP_ID] = CreatePickup(gStreamedPickups[pickup][e_PICKUP_MODEL], gStreamedPickups[pickup][e_PICKUP_TYPE], gStreamedPickups[pickup][e_PICKUP_XPOS], gStreamedPickups[pickup][e_PICKUP_YPOS], gStreamedPickups[pickup][e_PICKUP_ZPOS], gStreamedPickups[pickup][e_PICKUP_WORLD]);				}				pickup_count++;		}		else		{			DestroyPickup(gStreamedPickups[pickup][e_PICKUP_ID]);			gStreamedPickups[pickup][e_PICKUP_ID] = -1;		}		somebody_see_it = false;		if (pickup_count == MAX_PICKUPS) break;			}	return 1;}