Advertisement
Maddin

Trigger Include

Jul 4th, 2011
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.85 KB | None | 0 0
  1. /********************************
  2.  *   Trigger Include            *
  3.  *                              *
  4.  *   @Author:      Maddin       *
  5.  *   @Version:     1.0          *
  6.  *   @Released:    04/07/2011   *
  7.  *                              *
  8.  ********************************/
  9. #if defined _ET_included
  10.     #endinput
  11. #endif
  12. #define _ET_included
  13. #pragma library ET
  14. #if !defined MAX_TRIGGER
  15.     #define MAX_TRIGGER (20)
  16. #endif
  17. #if !defined TRIGGER_CHECK
  18.     #define TRIGGER_CHECK (500)
  19. #endif
  20. #define ET::    ET_
  21. //||=========================================================================================================================================================================||
  22. enum
  23.     ET::TriggerData
  24.     {
  25.         ET::ID,    
  26.         Float:ET::Pos[3],
  27.         Float:ET::Range,
  28.         ET::playerid,
  29.         ET::vehicleid,
  30.         ET::VirtualWorld,
  31.         ET::Interior,
  32.         bool:ET::Active
  33.     };
  34. new ET::Trigger[MAX_TRIGGER][ET::TriggerData];
  35. #if defined _foreach_included
  36.     new Iterator:Trigger<MAX_TRIGGER>;
  37. #endif
  38. //||=========================================================================================================================================================================||
  39. forward OnPlayerHandleTrigger(playerid, triggerID);
  40. //||=========================================================================================================================================================================||
  41. public OnGameModeInit()
  42. {
  43.     SetTimer("ET_CheckTrigger", TRIGGER_CHECK, true);
  44.     if (funcidx("ET_OnGameModeInit") != -1)
  45.     {
  46.         return CallLocalFunction("ET_OnGameModeInit", "");
  47.     }
  48.     return true;
  49. }
  50. #if defined _ALS_OnGameModeInit
  51.     #undef OnGameModeInit
  52. #else
  53.     #define _ALS_OnGameModeInit
  54. #endif
  55. #define OnGameModeInit ET::OnGameModeInit
  56. forward ET::OnGameModeInit();
  57.  
  58. stock CreateTrigger(Float:PositionX, Float:PositionY, Float:PositionZ, Float:Range, playerid = INVALID_PLAYER_ID, vehicleid = INVALID_VEHICLE_ID, VirtualWorld = -1, Interior = -1)
  59. {
  60.     new triggerID = GetFreeTriggerID();
  61.    
  62.     ET::Trigger[triggerID][ET::ID]              = triggerID;
  63.     ET::Trigger[triggerID][ET::Pos][0]          = PositionX;
  64.     ET::Trigger[triggerID][ET::Pos][1]          = PositionY;
  65.     ET::Trigger[triggerID][ET::Pos][2]          = PositionZ;
  66.     ET::Trigger[triggerID][ET::Range]           = Range;
  67.     ET::Trigger[triggerID][ET::playerid]        = playerid;
  68.     ET::Trigger[triggerID][ET::vehicleid]       = vehicleid;
  69.     ET::Trigger[triggerID][ET::VirtualWorld]    = VirtualWorld;
  70.     ET::Trigger[triggerID][ET::Interior]        = Interior;
  71.     ET::Trigger[triggerID][ET::Active]          = true;
  72.     #if defined _foreach_included
  73.         Iter_Add(Trigger, triggerID);
  74.     #endif
  75.     return triggerID;
  76. }
  77.  
  78. stock GetFreeTriggerID()
  79. {
  80.     #if defined _foreach_included
  81.     foreach(Trigger, triggerID)
  82.     #else
  83.     for(new triggerID = 0; triggerID < MAX_TRIGGER, triggerID++;)
  84.     #endif
  85.     {
  86.         if(!ET::Trigger[triggerID][ET::Active]) return triggerID;
  87.     }
  88.     return -1;
  89. }
  90.  
  91. stock ToggleTrigger(triggerID, bool:toggle)
  92. {
  93.     if(ET::Trigger[triggerID][ET::ID]==-1) return false;
  94.     ET::Trigger[triggerID][ET::Active] = toggle;
  95.     return true;
  96. }
  97.  
  98. stock DestroyTrigger(triggerID)
  99. {
  100.     ET::Trigger[triggerID][ET::ID]              = -1;
  101.     ET::Trigger[triggerID][ET::Pos][0]          = 0.0;
  102.     ET::Trigger[triggerID][ET::Pos][1]          = 0.0;
  103.     ET::Trigger[triggerID][ET::Pos][2]          = 0.0;
  104.     ET::Trigger[triggerID][ET::Range]           = 0.0;
  105.     ET::Trigger[triggerID][ET::playerid]        = INVALID_PLAYER_ID;
  106.     ET::Trigger[triggerID][ET::vehicleid]       = INVALID_VEHICLE_ID;
  107.     ET::Trigger[triggerID][ET::VirtualWorld]    = -1;
  108.     ET::Trigger[triggerID][ET::Interior]        = -1;
  109.     ET::Trigger[triggerID][ET::Active]          = false;
  110.     #if defined _foreach_included
  111.         Iter_Remove(Trigger, triggerID);
  112.     #endif
  113.     return true;
  114. }
  115.  
  116. forward ET::CheckTrigger();
  117. public ET::CheckTrigger()
  118. {
  119. #if defined _foreach_included
  120.     foreach(Player, i)
  121.     {
  122.         foreach(Trigger, triggerID)
  123. #else
  124.     for ( new slots = GetMaxPlayers( ), i; i < slots; i++ )
  125.     {
  126.         for(new triggerID = 0; triggerID < MAX_TRIGGER, triggerID++;)
  127. #endif
  128.         {
  129.             if(!ET::Trigger[triggerID][ET::Active]) continue;
  130.             if(ET::Trigger[triggerID][ET::ID]==-1) continue;
  131.             if(ET::Trigger[triggerID][ET::playerid] != i && ET::Trigger[triggerID][ET::playerid] != INVALID_PLAYER_ID) continue;
  132.             if(ET::Trigger[triggerID][ET::vehicleid] != GetPlayerVehicleID(i) && ET::Trigger[triggerID][ET::vehicleid] != INVALID_VEHICLE_ID) continue;
  133.             if(ET::Trigger[triggerID][ET::VirtualWorld] != GetPlayerVirtualWorld(i) && ET::Trigger[triggerID][ET::VirtualWorld] != -1) continue;
  134.             if(ET::Trigger[triggerID][ET::Interior] != GetPlayerInterior(i) && ET::Trigger[triggerID][ET::Interior] != -1) continue;
  135.             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]))
  136.             {
  137.                 if (funcidx("OnPlayerHandleTrigger") != -1)
  138.                 {
  139.                     return CallLocalFunction("OnPlayerHandleTrigger", "ii", i, triggerID);
  140.                 }
  141.             }
  142.         }
  143.     }
  144.     return true;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement