Advertisement
peinneon

NSAPA - Noobist Simple Anti Passenger Abuse

Sep 19th, 2011
1,174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.16 KB | None | 0 0
  1. // Noobist Simple Anti Passenger Abuse.
  2. // FS inspired by Indogamers Anti-Backseat
  3. // IsVehicleHasDriver function inspired by GetVehicleDriver from someone in SA-MP Forums.
  4.  
  5. #define FILTERSCRIPT
  6.  
  7. // Defines
  8. #define PassengerAfterDriverLeave // Activates Anti Passenger Abuse After Driver Leave (APAADL), when the driver left the vehicle, the passenger will automatically removed from the vehicle.
  9. //-------------------------------------
  10. // Includes
  11. #include <a_samp>
  12. //-------------------------------------
  13. // Functions
  14. stock IsVehicleHasDriver(vehicleid)
  15. {
  16.     for(new playerid; playerid < MAX_PLAYERS; playerid++)
  17.     {
  18.         if(IsPlayerConnected(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) == vehicleid) return 1;
  19.     }
  20.     return 0;
  21. }
  22. //------------------------------------
  23. // Forwards
  24. forward Fix(playerid, vehicleid);
  25. //------------------------------------
  26. // Self-made callbacks
  27. public Fix(playerid, vehicleid)
  28. {
  29.     PutPlayerInVehicle(playerid, vehicleid, 0);
  30.     return 1;
  31. }
  32. //------------------------------------
  33. // HERE WE GO!
  34. public OnFilterScriptInit()
  35. {
  36.     print("\n--------------------------------------------------");
  37.     print(" Noobist Simple Anti Passenger Abuse (NSAPA) LOADED!");
  38.     #if defined PassengerAfterDriverLeave
  39.     print("Anti Passenger Abuse After Driver Leave (APAADL) ACTIVATED!");
  40.     #endif
  41.     print("--------------------------------------------------\n");
  42.     return 1;
  43. }
  44.  
  45. public OnFilterScriptExit()
  46. {
  47.     print("\n----------------------------------------------------");
  48.     print(" Noobist Simple Anti Passenger Abuse (NSAPA) UNLOADED!");
  49.     #if defined PassengerAfterDriverLeave
  50.     print("Anti Passenger Abuse After Driver Leave (APAADL) DEACTIVATED!");
  51.     #endif
  52.     print("----------------------------------------------------\n");
  53.     return 1;
  54. }
  55.  
  56. #if defined PassengerAfterDriverLeave
  57.  
  58. public OnPlayerConnect(playerid)
  59. {
  60.     SetPVarInt(playerid, "vehicleid", 0);
  61.     return 1;
  62. }
  63.  
  64. public OnPlayerDisconnect(playerid, reason)
  65. {
  66.     if(GetPVarInt(playerid, "vehicleid") > 0)
  67.     {
  68.         printf("[NSAPA][APAADL]: Player %i has left the server while driving vehicle %i.", playerid, GetPVarInt(playerid, "vehicleid"));
  69.         for(new passengerid = 0; passengerid < MAX_PLAYERS; passengerid++)
  70.         {
  71.             if(IsPlayerConnected(passengerid) && GetPlayerVehicleID(passengerid) == GetPVarInt(playerid, "vehicleid"))
  72.             {
  73.                 RemovePlayerFromVehicle(passengerid);
  74.                 SendClientMessage(passengerid, 0xFF0000FF, "The driver is disconnected!");
  75.                 printf("[NSAPA][APAADL]: Player %i has been removed from vehicle %i (Driver %i disconnected).", passengerid, GetPVarInt(playerid, "vehicleid"), playerid);
  76.             }
  77.         }
  78.     }
  79.     return 1;
  80. }
  81.  
  82. #endif
  83.  
  84. public OnPlayerStateChange(playerid, newstate, oldstate)
  85. {
  86.     if(newstate == PLAYER_STATE_PASSENGER)
  87.     {
  88.         new vehicleid = GetPlayerVehicleID(playerid);
  89.         if(!IsVehicleHasDriver(vehicleid))
  90.         {
  91.             new Float:vx, Float:vy, Float:vz;
  92.             GetVehiclePos(vehicleid, vx, vy, vz);
  93.             SetPlayerPos(playerid, vx, vy, vz+5);
  94.             SetTimerEx("Fix", 500, false, "ii", playerid, vehicleid);
  95.             SendClientMessage(playerid, 0xFF0000FF, "Do not enter vehicle as passenger without a driver!");
  96.             printf("[NSAPA]: Player %i entered vehicle %i without a driver.", playerid, vehicleid);
  97.             return 1;
  98.         }
  99.     }
  100.     #if defined PassengerAfterDriverLeave
  101.     if(newstate == PLAYER_STATE_DRIVER) return SetPVarInt(playerid, "vehicleid", GetPlayerVehicleID(playerid));
  102.     if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
  103.     {
  104.         for(new passengerid = 0; passengerid < MAX_PLAYERS; passengerid++)
  105.         {
  106.             if(IsPlayerConnected(passengerid) && GetPlayerVehicleID(passengerid) == GetPVarInt(playerid, "vehicleid"))
  107.             {
  108.                 RemovePlayerFromVehicle(passengerid);
  109.                 SendClientMessage(passengerid, 0xFF0000FF, "The driver is leaving the vehicle!");
  110.                 printf("[NSAPA][APAADL]: Player %i has been removed from vehicle %i (Driver %i left the vehicle).", passengerid, GetPVarInt(playerid, "vehicleid"), playerid);
  111.             }
  112.         }
  113.         SetPVarInt(playerid, "vehicleid", 0);
  114.         return 1;
  115.     }
  116.     #endif
  117.     return 1;
  118. }
  119. // The End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement