/*----------------------------------------------------------------------------*- ================================== Y Sever Includes - Objects Include ==================================Description: Stand alone wrapper for YSI_objects.own. Provides wrappers for required functions.Legal: Copyright (C) 2007 Alex "Y_Less" Cole This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.Version: 0.1Changelog: 20/11/07: First version - adapted from my earlier e_objects.inc include.Functions: Public: - Core: - Stock: Bit_Set - Sets a specified bit to a given value. Bit_SetAll - Sets all of a bit array to a single value. Static: - Inline: Timer_Add - Wrapper for SetTimer. ceildiv - Divides an interger and rounds up. foreach - Wrapper for for() and IsPlayerConnected(). Bit_Bits - Number of cells required for the given number of bits. Bit_GetBit - Gets a specified bit. Bit_Get - Wrapper for Bit_GetBit. Bit_Let - Sets a specified bit to 1. Bit_Vet - Sets a specified bit to 0. API: -Callbacks: -Definitions: MAX_WORLDS - Maximum number of worlds objects can be in.Enums: -Macros: PLAYER_BIT_ARRAY - Number of cells required for MAX_PLAYER bits.Tags: -Variables: Global: - Static: -Commands: -Compile options: -Operators: --*----------------------------------------------------------------------------*//*native Object_Object();native Object_AddToPlayer(objectid, playerid);native Object_AddToWorld(objectid, virtualworld);native Object_AddToAllPlayers(objectid);native Object_AddToAllWorlds(objectid);native Object_RemoveFromPlayer(objectid, playerid);native Object_RemoveFromWorld(objectid, virtualworld);native Object_RemoveFromAllPlayers(objectid);native Object_RemoveFromAllWorlds(objectid);native Object_OnPlayerDisconnect(playerid, reason);native Object_IsGlobal(objectid);native Object_SetViewDistance(objectid, Float:view);native Object_IsDescendant(objectid, ancestor);native Object_GetGateArea(gate);native Object_SetAreaGate(objectid, areaid, Float:tx, Float:ty, Float:tz, Float:ts, time = 10000) nativenative MoveDynamicObject(objectid, Float:X, Float:Y, Float:Z, Float:S);native StopDynamicObject(objectid);native IsValidDynamicObject(objectid);native CreateDynamicObject(model, Float:X, Float:Y, Float:Z, Float:RX = 0.0, Float:RY = 0.0, Float:RZ = 0.0);native CreatePlayerDynamicObject(playerid, model, Float:X, Float:Y, Float:Z, Float:RX = 0.0, Float:RY = 0.0, Float:RZ = 0.0);native CreateVWDynamicObject(virtualworld, model, Float:X, Float:Y, Float:Z, Float:RX = 0.0, Float:RY = 0.0, Float:RZ = 0.0);native CreatePlayerVWDynamicObject(playerid, virtualworld, model, Float:X, Float:Y, Float:Z, Float:RX = 0.0, Float:RY = 0.0, Float:RZ = 0.0);native DestroyDynamicObject(objectid);native GetDynamicObjectPos(objectid, &Float:X, &Float:Y, &Float:Z);native GetDynamicObjectRot(objectid, &Float:RX, &Float:RY, &Float:RZ);native SetDynamicObjectPos(objectid, Float:X, Float:Y, Float:Z);native SetDynamicObjectRot(objectid, Float:RX, Float:RY, Float:RZ);native AttachDynamicObjectToPlayer(objectid, playerid, Float:offX, Float:offY, Float:offZ, Float:rX, Float:rY, Float:rZ);native DetachDynamicObjectFromPlayer(objectid);native IsValidModel(modelid);native RemoveObjectFromParent(objectid);native AttachObjectToObject(attachobject, toobject);native CreateGate(modelid, Float:x, Float:y, Float:z, Float:tx, Float:ty, Float:tz, Float:rx = 0.0, Float:ry = 0.0, Float:rz = 0.0, Float:speed = 2.0); native*/#define Timer_Add(%1,%2) \ SetTimer(%1, 1000 / (%2), 1)#if !defined ceildiv #define ceildiv(%1,%2) \ (((%1) + (%2) - 1) / (%2))#endif#define PLAYER_BIT_ARRAY Bit_Bits(MAX_PLAYERS)#define foreach(%1,%2) \ for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))#if !defined MAX_WORLDS #define MAX_WORLDS (256)#endif#define Bit_Bits(%1) \ ceildiv((%1), cellbits)#define Bit_GetBit(%1,%2) \ ((%1[(%2) / cellbits]) & Bit:(1 << ((%2) % cellbits)))#define Bit_Get(%1,%2) \ _:Bit_GetBit(Bit:%1, _:%2)#define Bit_Let(%1,%2) \ %1[(%2) / cellbits] |= Bit:(1 << ((%2) % cellbits))#define Bit_Vet(%1,%2) \ %1[(%2) / cellbits] &= Bit:~(1 << ((%2) % cellbits))stock Bit_Set(Bit:array[], slot, set, size){ if (slot / cellbits >= size) return; if (set) Bit_Let(array, slot); else Bit_Vet(array, slot);}stock Bit_SetAll(Bit:array[], set, size){ new Bit:val = (set) ? (Bit:0xFFFFFFFF) : (Bit:0); for (new i = 0; i < size; i++) array[i] = val;}#include "YSI/Visual/YSI_objects.own"