Advertisement
Hanger

Anti-Vehicle Teleporter #AVT

Apr 30th, 2012
5,288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 12.59 KB | None | 0 0
  1.  /*
  2.  --*                                *
  3.  --*   @Author:      Hanger         *
  4.  --*   @Version:     3.2            *
  5.  --*                                *
  6.  */
  7.  
  8. #if defined _avt_included
  9.     #endinput
  10. #endif 
  11. #define _avt_included
  12.  
  13. new
  14.     Float:  VEHICLE_POSITIONS   [MAX_VEHICLES]  [4],
  15.     bool:   ALLOW_UPDATE        [MAX_VEHICLES]          =       { false, ... },
  16.     bool:   VEHICLE_SPAWNED     [MAX_VEHICLES]          =       { false, ... },
  17.             LAST_TRAILER        [MAX_VEHICLES],
  18.             LAST_TOWED          [MAX_VEHICLES],
  19.             UPDATE_COUNTER      [MAX_VEHICLES   char];
  20.    
  21. new
  22.             LAST_VEHICLE        [MAX_PLAYERS],
  23.             FORCED_VEHICLE      [MAX_PLAYERS];
  24.            
  25. forward OnAntiCheatVehicleWarp(playerid, vehicleid);
  26. forward OnAntiCheatVehicleWarpInto(playerid, vehicleid);
  27.  
  28. public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z)
  29. {
  30.     if(VEHICLE_SPAWNED[vehicleid])
  31.     {
  32.         if(!ALLOW_UPDATE[vehicleid])
  33.         {
  34.             if(GetVehicleDistanceFromPoint(
  35.                     vehicleid,
  36.                     VEHICLE_POSITIONS   [vehicleid] [0],
  37.                     VEHICLE_POSITIONS   [vehicleid] [1],
  38.                     VEHICLE_POSITIONS   [vehicleid] [2])
  39.                 > 10.5)
  40.             {
  41.                 UPDATE_COUNTER          {vehicleid}     =   0;
  42.                 ClearAnimations(playerid, 1);
  43.                
  44.                 SetVehicleOriginalPos(vehicleid);
  45.                 if (funcidx("OnAntiCheatVehicleWarp") != -1)
  46.                 {
  47.                     CallLocalFunction("OnAntiCheatVehicleWarp", "ii", playerid, vehicleid);
  48.                 }
  49.                
  50.             }
  51.             else
  52.             {
  53.                 if(UPDATE_COUNTER   {vehicleid}     >=      2)
  54.                 {
  55.                     UPDATE_COUNTER      {vehicleid}     =   0;
  56.                     VEHICLE_POSITIONS   [vehicleid] [0] =   new_x;
  57.                     VEHICLE_POSITIONS   [vehicleid] [1] =   new_y;
  58.                     VEHICLE_POSITIONS   [vehicleid] [2] =   new_z;
  59.                     GetVehicleZAngle(
  60.                         vehicleid,
  61.                         VEHICLE_POSITIONS   [vehicleid] [3]);
  62.                 }
  63.                 UPDATE_COUNTER  {vehicleid}     ++;
  64.             }
  65.         }
  66.         else
  67.         {  
  68.             if(LAST_TRAILER[vehicleid] > 0)
  69.             {
  70.                 if(!IsTrailerAttachedToVehicle(LAST_TRAILER[vehicleid]))
  71.                 {
  72.                     LAST_TOWED      [LAST_TRAILER[vehicleid]]   =   0;
  73.                     LAST_TRAILER    [vehicleid]     =   0;
  74.                     ALLOW_UPDATE    [vehicleid]     =   false;
  75.                     UPDATE_COUNTER  {vehicleid}     =   0;
  76.                 }
  77.             }
  78.             else
  79.             {  
  80.                 if(GetVehicleDistanceFromPoint(vehicleid, new_x, new_y, new_z) <= 1.5)
  81.                 {
  82.                     SaveVehiclePosition(vehicleid);
  83.                     SetVehicleOriginalPos(vehicleid);
  84.                     UPDATE_COUNTER  {vehicleid}     =   0;
  85.                     ALLOW_UPDATE    [vehicleid]     =   false;
  86.                 }
  87.             }
  88.         }
  89.     }
  90.     #if defined avt_OnUnoccupiedVehicleUpdate
  91.         return avt_OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, new_x, new_y, new_z);
  92.     #else
  93.         return 1;
  94.     #endif
  95. }
  96. #if defined _ALS_OnUnoccupiedVehicleUpdate
  97.     #undef OnUnoccupiedVehicleUpdate
  98. #else
  99.     #define _ALS_OnUnoccupiedVehicleUpdate
  100. #endif
  101. #define OnUnoccupiedVehicleUpdate avt_OnUnoccupiedVehicleUpdate
  102. #if defined avt_OnUnoccupiedVehicleUpdate
  103.     forward avt_OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z);
  104. #endif
  105.  
  106. public OnPlayerStateChange(playerid, newstate, oldstate)
  107. {
  108.     if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
  109.     {
  110.         SaveVehiclePosition(    LAST_VEHICLE[playerid]      );
  111.         ALLOW_UPDATE    [LAST_VEHICLE[playerid]]        =   true;
  112.     }
  113.     else if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
  114.     {
  115.         new vehicleid = GetPlayerVehicleID(playerid);
  116.        
  117.         if(FORCED_VEHICLE[playerid] == vehicleid)
  118.         {
  119.             FORCED_VEHICLE      [playerid]  =   0;
  120.             LAST_VEHICLE        [playerid]  =   vehicleid;
  121.         }
  122.         else
  123.         {
  124.             if(VEHICLE_SPAWNED[vehicleid])
  125.             {
  126.                 ClearAnimations(playerid, 1);
  127.                 SetVehicleToRespawn(vehicleid);
  128.                 if (funcidx("OnAntiCheatVehicleWarpInto") != -1)
  129.                 {
  130.                     return CallLocalFunction("OnAntiCheatVehicleWarpInto", "ii", playerid, vehicleid);
  131.                 }
  132.             }
  133.         }
  134.         if(!ALLOW_UPDATE[vehicleid])
  135.         {
  136.             if(GetVehicleDistanceFromPoint(
  137.                 vehicleid,
  138.                 VEHICLE_POSITIONS   [vehicleid] [0],
  139.                 VEHICLE_POSITIONS   [vehicleid] [1],
  140.                 VEHICLE_POSITIONS   [vehicleid] [2]) > 7.5)
  141.             {
  142.                 UPDATE_COUNTER          {vehicleid}     =   0;
  143.                 ClearAnimations(playerid, 1);
  144.                    
  145.                 SetVehicleOriginalPos(vehicleid);
  146.                 if (funcidx("OnAntiCheatVehicleWarp") != -1)
  147.                 {
  148.                     return CallLocalFunction("OnAntiCheatVehicleWarp", "ii", playerid, vehicleid);
  149.                 }
  150.             }
  151.         }
  152.     }
  153.  
  154.     #if defined avt_OnPlayerStateChange
  155.         return avt_OnPlayerStateChange(playerid, newstate, oldstate);
  156.     #else
  157.         return 0;
  158.     #endif
  159.  
  160. }
  161. #if defined _ALS_OnPlayerStateChange
  162.     #undef OnPlayerStateChange
  163. #else
  164.     #define _ALS_OnPlayerStateChange
  165. #endif
  166. #define OnPlayerStateChange avt_OnPlayerStateChange
  167. #if defined avt_OnPlayerStateChange
  168.     forward avt_OnPlayerStateChange(playerid, newstate, oldstate);
  169. #endif
  170.  
  171. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  172. {
  173.     FORCED_VEHICLE  [playerid]  =   vehicleid;
  174.  
  175.     #if defined avt_OnPlayerEnterVehicle
  176.         return avt_OnPlayerEnterVehicle(playerid, vehicleid, ispassenger);
  177.     #else
  178.         return 0;
  179.     #endif
  180. }
  181. #if defined _ALS_OnPlayerEnterVehicle
  182.     #undef OnPlayerEnterVehicle
  183. #else
  184.     #define _ALS_OnPlayerEnterVehicle
  185. #endif
  186. #define OnPlayerEnterVehicle avt_OnPlayerEnterVehicle
  187. #if defined avt_OnPlayerEnterVehicle
  188.     forward avt_OnPlayerEnterVehicle(playerid, vehicleid, ispassenger);
  189. #endif
  190.  
  191. public OnVehicleSpawn(vehicleid)
  192. {
  193.     SaveVehiclePosition(vehicleid);
  194.    
  195.     VEHICLE_SPAWNED     [vehicleid]         =   true;
  196.    
  197.     if(LAST_TRAILER [vehicleid] > 0)
  198.     {
  199.         if(VEHICLE_SPAWNED[LAST_TRAILER[vehicleid]])
  200.         {
  201.             AttachTrailerToVehicle(vehicleid, LAST_TRAILER[vehicleid]);
  202.         }
  203.     }
  204.     #if defined avt_OnVehicleSpawn
  205.         return avt_OnVehicleSpawn(vehicleid);
  206.     #else
  207.         return 0;
  208.     #endif
  209. }
  210. #if defined _ALS_OnVehicleSpawn
  211.     #undef OnVehicleSpawn
  212. #else
  213.     #define _ALS_OnVehicleSpawn
  214. #endif
  215. #define OnVehicleSpawn avt_OnVehicleSpawn
  216. #if defined avt_OnVehicleSpawn
  217.     forward avt_OnVehicleSpawn(vehicleid);
  218. #endif
  219.  
  220. public OnVehicleDeath(vehicleid, killerid)
  221. {
  222.     VEHICLE_SPAWNED     [vehicleid]     =   false;
  223.    
  224.     if(LAST_TOWED[vehicleid] > 0)
  225.     {
  226.         LAST_TRAILER        [LAST_TOWED[vehicleid]]     =   0;
  227.         UPDATE_COUNTER      {LAST_TOWED[vehicleid]}     =   0;
  228.         ALLOW_UPDATE        [LAST_TOWED[vehicleid]]     =   false;
  229.         LAST_TOWED          [vehicleid]                 =   0;
  230.     }
  231.     if(LAST_TRAILER[vehicleid] > 0)
  232.     {
  233.         LAST_TOWED          [LAST_TRAILER[vehicleid]]       =   0;
  234.         LAST_TRAILER        [vehicleid]                     =   0;
  235.         UPDATE_COUNTER      {vehicleid}                     =   0;
  236.         ALLOW_UPDATE        [vehicleid]                     =   false;
  237.     }
  238.     #if defined avt_OnVehicleDeath
  239.         return avt_OnVehicleDeath(vehicleid, killerid);
  240.     #else
  241.         return 0;
  242.     #endif
  243. }
  244. #if defined _ALS_OnVehicleDeath
  245.     #undef OnVehicleDeath
  246. #else
  247.     #define _ALS_OnVehicleDeath
  248. #endif
  249. #define OnVehicleDeath avt_OnVehicleDeath
  250. #if defined avt_OnVehicleDeath
  251.     forward avt_OnVehicleDeath(vehicleid, killerid);
  252. #endif
  253.  
  254. public OnVehicleStreamIn(vehicleid, forplayerid)
  255. {
  256.     if(!VEHICLE_SPAWNED[vehicleid])
  257.     {
  258.         VEHICLE_SPAWNED     [vehicleid]         =   true;
  259.         SetVehicleToRespawn(vehicleid);
  260.     }
  261.     #if defined avt_OnVehicleStreamIn
  262.         return avt_OnVehicleStreamIn(vehicleid, forplayerid);
  263.     #else
  264.         return 0;
  265.     #endif
  266. }
  267. #if defined _ALS_OnVehicleStreamIn
  268.     #undef OnVehicleStreamIn
  269. #else
  270.     #define _ALS_OnVehicleStreamIn
  271. #endif
  272. #define OnVehicleStreamIn avt_OnVehicleStreamIn
  273. #if defined avt_OnVehicleStreamIn
  274.     forward avt_OnVehicleStreamIn(vehicleid, forplayerid);
  275. #endif
  276.  
  277. stock avt_AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2)
  278. {
  279.     modelid =   AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, angle, color1, color2);
  280.    
  281.     VEHICLE_POSITIONS   [modelid]   [0]     =   spawn_x;
  282.     VEHICLE_POSITIONS   [modelid]   [1]     =   spawn_y;
  283.     VEHICLE_POSITIONS   [modelid]   [2]     =   spawn_z;
  284.     VEHICLE_POSITIONS   [modelid]   [3]     =   angle;
  285.    
  286.     SetVehicleToRespawn(modelid);
  287.     return modelid;
  288. }
  289. #if defined _ALS_AddStaticVehicle
  290.     #undef AddStaticVehicle
  291. #else
  292.     #define _ALS_AddStaticVehicle
  293. #endif
  294. #define AddStaticVehicle avt_AddStaticVehicle
  295.  
  296.  
  297. stock avt_AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2, respawn_delay)
  298. {
  299.     modelid =   AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, angle, color1, color2, respawn_delay);
  300.        
  301.     VEHICLE_POSITIONS   [modelid]   [0]     =   spawn_x;
  302.     VEHICLE_POSITIONS   [modelid]   [1]     =   spawn_y;
  303.     VEHICLE_POSITIONS   [modelid]   [2]     =   spawn_z;
  304.     VEHICLE_POSITIONS   [modelid]   [3]     =   angle;
  305.    
  306.     SetVehicleToRespawn(modelid);
  307.     return modelid;
  308. }
  309. #if defined _ALS_AddStaticVehicleEx
  310.     #undef AddStaticVehicleEx
  311. #else
  312.     #define _ALS_AddStaticVehicleEx
  313. #endif
  314. #define AddStaticVehicleEx avt_AddStaticVehicleEx
  315.  
  316.  
  317. stock avt_CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay)
  318. {
  319.     modelid =   CreateVehicle(modelid, x, y, z, angle, color1, color2, respawn_delay);
  320.                
  321.     VEHICLE_POSITIONS   [modelid]   [0]     =   x;
  322.     VEHICLE_POSITIONS   [modelid]   [1]     =   y;
  323.     VEHICLE_POSITIONS   [modelid]   [2]     =   z;
  324.     VEHICLE_POSITIONS   [modelid]   [3]     =   angle;
  325.    
  326.     SetVehicleToRespawn(modelid);
  327.     return modelid;
  328. }
  329. #if defined _ALS_CreateVehicle
  330.     #undef CreateVehicle
  331. #else
  332.     #define _ALS_CreateVehicle
  333. #endif
  334. #define CreateVehicle avt_CreateVehicle
  335.  
  336. stock avt_DestroyVehicle(vehicleid)
  337. {  
  338.     VEHICLE_POSITIONS   [vehicleid] [0]     =   0.0;
  339.     VEHICLE_POSITIONS   [vehicleid] [1]     =   0.0;
  340.     VEHICLE_POSITIONS   [vehicleid] [2]     =   0.0;
  341.     VEHICLE_POSITIONS   [vehicleid] [3]     =   0.0;
  342.     VEHICLE_SPAWNED     [vehicleid]         =   false;
  343.     return DestroyVehicle(vehicleid);
  344. }
  345. #if defined _ALS_DestroyVehicle
  346.     #undef DestroyVehicle
  347. #else
  348.     #define _ALS_DestroyVehicle
  349. #endif
  350. #define DestroyVehicle avt_DestroyVehicle
  351.  
  352. stock avt_SetVehiclePos(vehicleid, Float:x, Float:y, Float:z)
  353. {  
  354.     VEHICLE_POSITIONS   [vehicleid] [0]     =   x;
  355.     VEHICLE_POSITIONS   [vehicleid] [1]     =   y;
  356.     VEHICLE_POSITIONS   [vehicleid] [2]     =   z;
  357.    
  358.     return SetVehiclePos(vehicleid, x, y, z);
  359. }
  360. #if defined _ALS_SetVehiclePos
  361.     #undef SetVehiclePos
  362. #else
  363.     #define _ALS_SetVehiclePos
  364. #endif
  365. #define SetVehiclePos avt_SetVehiclePos
  366.  
  367. stock avt_SetVehicleZAngle(vehicleid, &Float:z_angle)
  368. {  
  369.     VEHICLE_POSITIONS   [vehicleid] [3]     =   z_angle;
  370.     return SetVehicleZAngle(vehicleid, z_angle);
  371. }
  372. #if defined _ALS_SetVehicleZAngle
  373.     #undef SetVehicleZAngle
  374. #else
  375.     #define _ALS_SetVehicleZAngle
  376. #endif
  377. #define SetVehicleZAngle avt_SetVehicleZAngle
  378.  
  379. stock avt_AttachTrailerToVehicle(trailerid, vehicleid)
  380. {  
  381.     ALLOW_UPDATE    [trailerid]     =   true;
  382.     LAST_TRAILER    [trailerid]     =   vehicleid;
  383.     LAST_TOWED      [vehicleid]     =   trailerid;
  384.     return AttachTrailerToVehicle(trailerid, vehicleid);
  385. }
  386. #if defined _ALS_AttachTrailerToVehicle
  387.     #undef AttachTrailerToVehicle
  388. #else
  389.     #define _ALS_AttachTrailerToVehicle
  390. #endif
  391. #define AttachTrailerToVehicle avt_AttachTrailerToVehicle
  392.  
  393. stock avt_DetachTrailerFromVehicle(vehicleid)
  394. {  
  395.     LAST_TOWED      [LAST_TRAILER[vehicleid]]   =   0;
  396.    
  397.     ALLOW_UPDATE    [vehicleid]     =   false;
  398.     LAST_TRAILER    [vehicleid]     =   0;
  399.    
  400.     SaveVehiclePosition(vehicleid);
  401.    
  402.     return DetachTrailerFromVehicle(vehicleid);
  403. }
  404. #if defined _ALS_DetachTrailerFromVehicle
  405.     #undef DetachTrailerFromVehicle
  406. #else
  407.     #define _ALS_DetachTrailerFromVehicle
  408. #endif
  409. #define DetachTrailerFromVehicle avt_DetachTrailerFromVehicle
  410.  
  411. stock avt_SetVehicleToRespawn(vehicleid)
  412. {  
  413.     SetVehicleToRespawn(vehicleid);
  414.    
  415.     ALLOW_UPDATE    [vehicleid]     =   false;
  416.     LAST_TRAILER    [vehicleid]     =   0;
  417.    
  418.     SaveVehiclePosition(vehicleid);
  419.     return 1;
  420. }
  421. #if defined _ALS_SetVehicleToRespawn
  422.     #undef SetVehicleToRespawn
  423. #else
  424.     #define _ALS_SetVehicleToRespawn
  425. #endif
  426. #define SetVehicleToRespawn avt_SetVehicleToRespawn
  427.  
  428. stock avt_PutPlayerInVehicle(playerid, vehicleid, seatid)
  429. {  
  430.     SaveVehiclePosition(vehicleid);
  431.                        
  432.     FORCED_VEHICLE      [playerid]  =   vehicleid;
  433.     LAST_VEHICLE        [playerid]  =   vehicleid;
  434.     return vehicleid;
  435. }
  436. #if defined _ALS_PutPlayerInVehicle
  437.     #undef PutPlayerInVehicle
  438. #else
  439.     #define _ALS_PutPlayerInVehicle
  440. #endif
  441. #define PutPlayerInVehicle avt_PutPlayerInVehicle
  442.  
  443. stock avt_RemovePlayerFromVehicle(playerid)
  444. {  
  445.     SaveVehiclePosition(    LAST_VEHICLE[playerid]      );
  446.                        
  447.     FORCED_VEHICLE      [playerid]  =   0;
  448.    
  449.     return LAST_VEHICLE[playerid];
  450. }
  451. #if defined _ALS_RemovePlayerFromVehicle
  452.     #undef RemovePlayerFromVehicle
  453. #else
  454.     #define _ALS_RemovePlayerFromVehicle
  455. #endif
  456. #define RemovePlayerFromVehicle avt_RemovePlayerFromVehicle
  457.  
  458. stock SaveVehiclePosition(vehicleid)
  459. {
  460.     GetVehiclePos       (
  461.                             vehicleid,
  462.                             VEHICLE_POSITIONS   [vehicleid] [0],
  463.                             VEHICLE_POSITIONS   [vehicleid] [1],
  464.                             VEHICLE_POSITIONS   [vehicleid] [2]
  465.                         );
  466.     GetVehicleZAngle    (
  467.                             vehicleid,
  468.                             VEHICLE_POSITIONS   [vehicleid] [3]
  469.                         );
  470.     return 1;
  471. }
  472.  
  473. stock SetVehicleOriginalPos(vehicleid)
  474. {
  475.     SetVehiclePos(
  476.         vehicleid,
  477.         VEHICLE_POSITIONS   [vehicleid] [0],
  478.         VEHICLE_POSITIONS   [vehicleid] [1],
  479.         VEHICLE_POSITIONS   [vehicleid] [2]);
  480.                
  481.     SetVehicleZAngle(
  482.         vehicleid,
  483.         VEHICLE_POSITIONS   [vehicleid] [3]);
  484.        
  485.     return 1;
  486. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement