randysaputra1

AntiCarSurf

Dec 30th, 2012
1,239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.70 KB | None | 0 0
  1. //AntiCarSurf by Randy_Saputra a.k.a Sratter
  2. #define FILTERSCRIPT
  3.  
  4. #include <a_samp>
  5. #define MAX_SPEED_ANTICS 45
  6. new PlayerSurfing[MAX_PLAYERS];
  7.  
  8. public OnFilterScriptInit()
  9. {
  10.     SetTimer("AntiCarSurf", 3000, 1);
  11.     return 1;
  12. }
  13. stock IsABoat(carid)
  14. {
  15.     new Boats[] = { 472, 473, 493, 484, 430, 454, 453, 452, 446 };
  16.     for(new i = 0; i < sizeof(Boats); i++)
  17.     {
  18.         if(GetVehicleModel(carid) == Boats[i]) return 1;
  19.     }
  20.     return 0;
  21. }
  22. forward AntiCarSurf();
  23. public AntiCarSurf()
  24. {
  25.     for(new i = 0; i < MAX_PLAYERS; i++)
  26.     {
  27.         if(IsPlayerConnected(i)) //Maybe you can add a log in checker
  28.         {
  29.             if(GetPlayerSurfingVehicleID(i) != INVALID_VEHICLE_ID) //You can also add something like if player is not admin duty
  30.             {
  31.                 new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
  32.                 GetVehicleVelocity(GetPlayerSurfingVehicleID(i),Vx,Vy,Vz);
  33.                 rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  34.                 if(floatround(rtn*100*1.61,floatround_round) > MAX_SPEED_ANTICS && ! (IsABoat(GetPlayerSurfingVehicleID(i))) && GetVehicleModel(GetPlayerSurfingVehicleID(i)) != 406 && GetVehicleModel(GetPlayerSurfingVehicleID(i)) != 422 && GetVehicleModel(GetPlayerSurfingVehicleID(i)) != 433)
  35.                 {
  36.                         new string[128];
  37.                         if(PlayerSurfing[i] == 0)
  38.                         {
  39.                             new sz_playerName[MAX_PLAYER_NAME], i_pos;
  40.                             GetPlayerName(i, sz_playerName, MAX_PLAYER_NAME);
  41.                             while ((i_pos = strfind(sz_playerName, "_", false, i_pos)) != -1) sz_playerName[i_pos] = ' ';
  42.                             format(string, sizeof(string), "* %s falls down from the moving car.", sz_playerName);
  43.                             ProxDetector(30.0, i, string, 0xC2A2DAAA,0xC2A2DAAA,0xC2A2DAAA,0xC2A2DAAA,0xC2A2DAAA);
  44.                             new Float:slx, Float:sly, Float:slz;
  45.                             GetPlayerPos(i, slx, sly, slz);
  46.                             SetPlayerPos(i, slx, sly, slz+5);
  47.                             PlayerSurfing[i]++;
  48.                         }
  49.                         else if(PlayerSurfing[i] == 5)
  50.                         {
  51.                             new Float:slx, Float:sly, Float:slz;
  52.                             GetPlayerPos(i, slx, sly, slz);
  53.                             SetPlayerPos(i, slx, sly, slz+10);
  54.                             PlayerSurfing[i]++;
  55.                         }
  56.                         else if(PlayerSurfing[i] == 7)
  57.                         {
  58.                             new Float:slx, Float:sly, Float:slz;
  59.                             GetPlayerPos(i, slx, sly, slz);
  60.                             SetPlayerPos(i, slx, sly, slz+15);
  61.                             PlayerSurfing[i]++;
  62.                         }
  63.                         else if(PlayerSurfing[i] == 10)
  64.                         {
  65.                             SendClientMessage(i, 0xAA3333AA, "Sorry, we have to kick you for possible NOP SetPlayerPos/desync.");
  66.                             Kick(i);
  67.                         }
  68.                         PlayerSurfing[i]++;
  69.                     }
  70.                 }
  71.                 else {PlayerSurfing[i] = 0;}
  72.             }
  73.         }
  74.     }
  75. public OnPlayerConnect(playerid)
  76. {
  77.     PlayerSurfing[playerid] = 0;
  78.     return 1;
  79. }
  80. ProxDetector(Float: f_Radius, playerid, string[],col1,col2,col3,col4,col5)
  81. {
  82.         new Float: f_playerPos[3];
  83.         GetPlayerPos(playerid, f_playerPos[0], f_playerPos[1], f_playerPos[2]);
  84.         for(new i = 0; i < MAX_PLAYERS; i++)
  85.         {
  86.             if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid) && IsPlayerConnected(i))
  87.             {
  88.                     if(IsPlayerInRangeOfPoint(i, f_Radius / 16, f_playerPos[0], f_playerPos[1], f_playerPos[2])) {
  89.                         SendClientMessage(i, col1, string);
  90.                     }
  91.                     else if(IsPlayerInRangeOfPoint(i, f_Radius / 8, f_playerPos[0], f_playerPos[1], f_playerPos[2])) {
  92.                         SendClientMessage(i, col2, string);
  93.                     }
  94.                     else if(IsPlayerInRangeOfPoint(i, f_Radius / 4, f_playerPos[0], f_playerPos[1], f_playerPos[2])) {
  95.                         SendClientMessage(i, col3, string);
  96.                     }
  97.                     else if(IsPlayerInRangeOfPoint(i, f_Radius / 2, f_playerPos[0], f_playerPos[1], f_playerPos[2])) {
  98.                         SendClientMessage(i, col4, string);
  99.                     }
  100.                     else if(IsPlayerInRangeOfPoint(i, f_Radius, f_playerPos[0], f_playerPos[1], f_playerPos[2])) {
  101.                         SendClientMessage(i, col5, string);
  102.                     }
  103.             }
  104.             else SendClientMessage(i, col1, string);
  105.         }
  106.         return 1;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment