All pastes #581237 Raw Edit

Someone

public text v1 · immutable
·published 2007-06-21 12:48 UTC
rendered paste body
/*
 *            DCallbacks 1.0.1
 *       (c) Copyright 2006 by DracoBlue
 *
 * @author    : DracoBlue (http://dracoblue.com)
 * @date      : 26th July 2006
 * @update    : 25th August 2006
 *
 * This file is provided as is (no warranties).
 *
 * Feel free to use it, a little message in
 * about box is honouring thing, isn't it?
 *
 */

#if defined _dcallbacks_included
  #endinput
#endif

#define _dcallbacks_included
#pragma library dcallbacks

#include <dcallbacks>

// Update the following line to make more areachecks possible.
#define MAX_AREAS_TO_CHECK 100

new Float:AREACHECK_Coords[MAX_AREAS_TO_CHECK][6];
new AREACHECK_Player[MAX_PLAYERS];
new AREACHECK_Count=0;
/*
 *  Return the AreaId, starts with 1 not 0.
 */
stock AddAreaCheck(Float:x_min,Float:x_max,Float:y_min,Float:y_max,Float:z_min,Float:z_max) {
  AREACHECK_Coords[AREACHECK_Count][0]=x_min;
  AREACHECK_Coords[AREACHECK_Count][1]=x_max;
  AREACHECK_Coords[AREACHECK_Count][2]=y_min;
  AREACHECK_Coords[AREACHECK_Count][3]=y_max;
  AREACHECK_Coords[AREACHECK_Count][4]=z_min;
  AREACHECK_Coords[AREACHECK_Count][5]=z_max;  
  AREACHECK_Count++;
  return (AREACHECK_Count);
}

public TIMER_DCallbacks() 
{
	new i,z;
	new Float:x,Float:y,Float:zcoord;
	for (i=0;i<MAX_PLAYERS;i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerPos(i,x,y,zcoord);
			for (z=0;z<AREACHECK_Count;z++)
			{
				if(
				AREACHECK_Coords[z][0]<x && AREACHECK_Coords[z][1]>x &&
				AREACHECK_Coords[z][2]<y && AREACHECK_Coords[z][3]>y &&
				AREACHECK_Coords[z][4]<zcoord && AREACHECK_Coords[z][5]>zcoord
				)
				{
					if (z!=AREACHECK_Player[i]-1)
					{
			            // Is new in this area
			            AREACHECK_Player[i]=z+1;
			            OnPlayerEnterArea(i,z+1);
			            return 1;
					}
					else
					{
					}
				} 
				else
				{
					if (z==AREACHECK_Player[i]-1) 
					{
			            // Player was in this Area
			            OnPlayerLeaveArea(i,z+1);
			            AREACHECK_Player[i]=0;
						return 1;
					}
				}
			}
		}			
	}
	return 0;
}