Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********************************
- * Trigger Include *
- * *
- * @Author: Maddin *
- * @Version: 1.0 *
- * @Released: 04/07/2011 *
- * *
- ********************************/
- #if defined _ET_included
- #endinput
- #endif
- #define _ET_included
- #pragma library ET
- #if !defined MAX_TRIGGER
- #define MAX_TRIGGER (20)
- #endif
- #if !defined TRIGGER_CHECK
- #define TRIGGER_CHECK (500)
- #endif
- #define ET:: ET_
- //||=========================================================================================================================================================================||
- enum
- ET::TriggerData
- {
- ET::ID,
- Float:ET::Pos[3],
- Float:ET::Range,
- ET::playerid,
- ET::vehicleid,
- ET::VirtualWorld,
- ET::Interior,
- bool:ET::Active
- };
- new ET::Trigger[MAX_TRIGGER][ET::TriggerData];
- #if defined _foreach_included
- new Iterator:Trigger<MAX_TRIGGER>;
- #endif
- //||=========================================================================================================================================================================||
- forward OnPlayerHandleTrigger(playerid, triggerID);
- //||=========================================================================================================================================================================||
- public OnGameModeInit()
- {
- SetTimer("ET_CheckTrigger", TRIGGER_CHECK, true);
- if (funcidx("ET_OnGameModeInit") != -1)
- {
- return CallLocalFunction("ET_OnGameModeInit", "");
- }
- return true;
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit ET::OnGameModeInit
- forward ET::OnGameModeInit();
- stock CreateTrigger(Float:PositionX, Float:PositionY, Float:PositionZ, Float:Range, playerid = INVALID_PLAYER_ID, vehicleid = INVALID_VEHICLE_ID, VirtualWorld = -1, Interior = -1)
- {
- new triggerID = GetFreeTriggerID();
- ET::Trigger[triggerID][ET::ID] = triggerID;
- ET::Trigger[triggerID][ET::Pos][0] = PositionX;
- ET::Trigger[triggerID][ET::Pos][1] = PositionY;
- ET::Trigger[triggerID][ET::Pos][2] = PositionZ;
- ET::Trigger[triggerID][ET::Range] = Range;
- ET::Trigger[triggerID][ET::playerid] = playerid;
- ET::Trigger[triggerID][ET::vehicleid] = vehicleid;
- ET::Trigger[triggerID][ET::VirtualWorld] = VirtualWorld;
- ET::Trigger[triggerID][ET::Interior] = Interior;
- ET::Trigger[triggerID][ET::Active] = true;
- #if defined _foreach_included
- Iter_Add(Trigger, triggerID);
- #endif
- return triggerID;
- }
- stock GetFreeTriggerID()
- {
- #if defined _foreach_included
- foreach(Trigger, triggerID)
- #else
- for(new triggerID = 0; triggerID < MAX_TRIGGER, triggerID++;)
- #endif
- {
- if(!ET::Trigger[triggerID][ET::Active]) return triggerID;
- }
- return -1;
- }
- stock ToggleTrigger(triggerID, bool:toggle)
- {
- if(ET::Trigger[triggerID][ET::ID]==-1) return false;
- ET::Trigger[triggerID][ET::Active] = toggle;
- return true;
- }
- stock DestroyTrigger(triggerID)
- {
- ET::Trigger[triggerID][ET::ID] = -1;
- ET::Trigger[triggerID][ET::Pos][0] = 0.0;
- ET::Trigger[triggerID][ET::Pos][1] = 0.0;
- ET::Trigger[triggerID][ET::Pos][2] = 0.0;
- ET::Trigger[triggerID][ET::Range] = 0.0;
- ET::Trigger[triggerID][ET::playerid] = INVALID_PLAYER_ID;
- ET::Trigger[triggerID][ET::vehicleid] = INVALID_VEHICLE_ID;
- ET::Trigger[triggerID][ET::VirtualWorld] = -1;
- ET::Trigger[triggerID][ET::Interior] = -1;
- ET::Trigger[triggerID][ET::Active] = false;
- #if defined _foreach_included
- Iter_Remove(Trigger, triggerID);
- #endif
- return true;
- }
- forward ET::CheckTrigger();
- public ET::CheckTrigger()
- {
- #if defined _foreach_included
- foreach(Player, i)
- {
- foreach(Trigger, triggerID)
- #else
- for ( new slots = GetMaxPlayers( ), i; i < slots; i++ )
- {
- for(new triggerID = 0; triggerID < MAX_TRIGGER, triggerID++;)
- #endif
- {
- if(!ET::Trigger[triggerID][ET::Active]) continue;
- if(ET::Trigger[triggerID][ET::ID]==-1) continue;
- if(ET::Trigger[triggerID][ET::playerid] != i && ET::Trigger[triggerID][ET::playerid] != INVALID_PLAYER_ID) continue;
- if(ET::Trigger[triggerID][ET::vehicleid] != GetPlayerVehicleID(i) && ET::Trigger[triggerID][ET::vehicleid] != INVALID_VEHICLE_ID) continue;
- if(ET::Trigger[triggerID][ET::VirtualWorld] != GetPlayerVirtualWorld(i) && ET::Trigger[triggerID][ET::VirtualWorld] != -1) continue;
- if(ET::Trigger[triggerID][ET::Interior] != GetPlayerInterior(i) && ET::Trigger[triggerID][ET::Interior] != -1) continue;
- if(IsPlayerInRangeOfPoint(i, ET::Trigger[triggerID][ET::Range], ET::Trigger[triggerID][ET::Pos][0], ET::Trigger[triggerID][ET::Pos][1], ET::Trigger[triggerID][ET::Pos][2]))
- {
- if (funcidx("OnPlayerHandleTrigger") != -1)
- {
- return CallLocalFunction("OnPlayerHandleTrigger", "ii", i, triggerID);
- }
- }
- }
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement