Guest User

Anti Car Surfing

a guest
Mar 23rd, 2015
714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.71 KB | None | 0 0
  1. #if defined _antisurf_included
  2.     #endinput
  3. #endif
  4. #define _antisurf_included
  5.  
  6. /*
  7.     native SetVehicleSurfable(modelid, bool: set);
  8.     native SetPlayerSurfImmunity(playerid, bool: immunity);
  9.     native GetPlayerSurfImmunity(playerid);
  10.     native OnPlayerCarSurf(playerid, vehicleid);
  11. */
  12.  
  13. #if !defined SURF_MIN_SPEED
  14.     #define SURF_MIN_SPEED (25.0)
  15. #endif
  16.  
  17. static
  18.     surf_LastChecked[MAX_PLAYERS] = {0, ...},
  19.     bool: surf_Immunity[MAX_PLAYERS] = {false, ...},
  20.     bool: AllowedModels[212] = {false, ...};
  21.    
  22. stock Float: surf_GetVehicleSpeed(vehicleid)
  23. {
  24.     // http://forum.sa-mp.com/showpost.php?p=2646780&postcount=22
  25.     new Float: vx, Float: vy, Float: vz, Float: vel;
  26.     vel = GetVehicleVelocity(vehicleid, vx, vy, vz);
  27.     vel = (floatsqroot(((vx*vx)+(vy*vy))+(vz*vz))* 181.5);
  28.     return vel;
  29. }
  30.  
  31. stock SetVehicleSurfable(modelid, bool: set)
  32. {
  33.     if(!(400 <= modelid <= 611)) return 0;
  34.     AllowedModels[modelid-400] = set;
  35.     return 1;
  36. }
  37.  
  38. stock SetPlayerSurfImmunity(playerid, bool: immunity)
  39. {
  40.     if(!IsPlayerConnected(playerid)) return 0;
  41.     surf_Immunity[playerid] = immunity;
  42.     return 1;
  43. }
  44.  
  45. stock GetPlayerSurfImmunity(playerid)
  46. {
  47.     if(!IsPlayerConnected(playerid)) return 0;
  48.     return surf_Immunity[playerid];
  49. }
  50.  
  51. public OnPlayerConnect(playerid)
  52. {
  53.     surf_Immunity[playerid] = false;
  54.    
  55.     #if defined AntiSurf_OnPlayerConnect
  56.         return AntiSurf_OnPlayerConnect(playerid);
  57.     #else
  58.         return 1;
  59.     #endif
  60. }
  61.  
  62. public OnPlayerUpdate(playerid)
  63. {
  64.     if(surf_LastChecked[playerid] < tickcount() && !surf_Immunity[playerid])
  65.     {
  66.         surf_LastChecked[playerid] = tickcount()+500;
  67.        
  68.         new vehID = GetPlayerSurfingVehicleID(playerid);
  69.         if(vehID != INVALID_VEHICLE_ID && surf_GetVehicleSpeed(vehID) >= SURF_MIN_SPEED && !AllowedModels[ GetVehicleModel(vehID)-400 ])
  70.         {
  71.             if(funcidx("OnPlayerCarSurf") == -1) {
  72.                 new Float: x, Float: y, Float: z;
  73.                 GetPlayerPos(playerid, x, y, z);
  74.                 SetPlayerPos(playerid, x, y, z+3.5);
  75.                 GameTextForPlayer(playerid, "~w~CarSurfing Is ~r~Not ~w~Allowed!", 3000, 4);
  76.             }else{
  77.                 CallLocalFunction("OnPlayerCarSurf", "dd", playerid, vehID);
  78.             }
  79.         }
  80.     }
  81.    
  82.     #if defined AntiSurf_OnPlayerUpdate
  83.         return AntiSurf_OnPlayerUpdate(playerid);
  84.     #else
  85.         return 1;
  86.     #endif
  87. }
  88.  
  89. #if defined _ALS_OnPlayerConnect
  90.     #undef OnPlayerConnect
  91. #else
  92.     #define _ALS_OnPlayerConnect
  93. #endif
  94.  
  95. #define OnPlayerConnect AntiSurf_OnPlayerConnect
  96. #if defined AntiSurf_OnPlayerConnect
  97.     forward AntiSurf_OnPlayerConnect(playerid);
  98. #endif
  99.  
  100. #if defined _ALS_OnPlayerUpdate
  101.     #undef OnPlayerUpdate
  102. #else
  103.     #define _ALS_OnPlayerUpdate
  104. #endif
  105.  
  106. #define OnPlayerUpdate AntiSurf_OnPlayerUpdate
  107. #if defined AntiSurf_OnPlayerUpdate
  108.     forward AntiSurf_OnPlayerUpdate(playerid);
  109. #endif
  110.  
  111. forward OnPlayerCarSurf(playerid, vehicleid);
Advertisement
Add Comment
Please, Sign In to add comment