Advertisement
Guest User

SA-MP Veh / Seat Functions

a guest
Aug 3rd, 2014
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. /*****************************************************************************************************
  2. All by d3ll
  3. ******************************************************************************************************/
  4.  
  5. //native IsValidVehicle(vehicleid);
  6.  
  7. #undef MAX_VEHICLES
  8. #define MAX_VEHICLES 2000
  9.  
  10. new LastPlayerToEnter[MAX_VEHICLES] = -1;
  11.  
  12. #define INVALID_SEAT 128
  13. #define PlayerLoop(%1) for(new %1 = 0; %1 < MAX_PLAYERS; %1++) if(IsPlayerConnected(%1) && !IsPlayerNPC(%1))
  14.  
  15. stock GetVehicleDriver(vehicleid)
  16. {
  17. if(IsValidVehicle(vehicleid) == 0) return -1;
  18. for(new p = 0; p < MAX_PLAYERS; p++)
  19. {
  20. if(IsPlayerConnected(p) != 1 || IsPlayerInAnyVehicle(p) != 1) continue;
  21. if(GetPlayerVehicleID(p) != vehicleid) continue;
  22. if(GetPlayerState(p) != PLAYER_STATE_DRIVER) continue;
  23. return p;
  24. }
  25. return -1;
  26. }
  27.  
  28. stock GetVehiclePassenger(vehicleid)
  29. {
  30. if(IsValidVehicle(vehicleid) == 0) return -1;
  31. for(new p = 0; p < MAX_PLAYERS; p++)
  32. {
  33. if(IsPlayerConnected(p) != 1 || IsPlayerInAnyVehicle(p) != 1) continue;
  34. if(GetPlayerVehicleID(p) != vehicleid) continue;
  35. if(GetPlayerVehicleSeat(p) != 1) continue;
  36. return p;
  37. }
  38. return -1;
  39. }
  40.  
  41. stock GetVehiclePassengers(vehicleid, &seat0 = INVALID_SEAT, &seat1 = INVALID_SEAT, &seat2 = INVALID_SEAT, &seat3 = INVALID_SEAT, &seat4 = INVALID_SEAT)
  42. {
  43. PlayerLoop(p)
  44. {
  45. if(IsPlayerInAnyVehicle(p) != 1) continue;
  46. if(GetPlayerVehicleID(p) != cehicleid) continue;
  47. if(GetPlayerVehicleSeat(p) == 128 || GetPlayerVehicleSeat(p) == -1) continue;
  48. if(GetPlayerVehicleSeat(p) == 0) seat0 = p;
  49. if(GetPlayerVehicleSeat(p) == 2) seat1 = p;
  50. if(GetPlayerVehicleSeat(p) == 3) seat2 = p;
  51. if(GetPlayerVehicleSeat(p) == 4) seat3 = p;
  52. if(GetPlayerVehicleSeat(p) >= 5) seat4 = p;
  53. }
  54. }
  55.  
  56. stock GetUnusedSeat(vehicleid)
  57. {
  58. new UsedSeats[6] = -1;
  59. PlauyerLoop(p)
  60. {
  61. if(IsPlayerInAnyVehicle(p) != 1) continue;
  62. if(GetPlayerVehicleID(p) != vehicleid) continue;
  63. if(GetPlayerVehicleSeat(p) == 128 || GetPlayerVehicleSeat(p) == -1) continue;
  64. for(new c = 0; c < sizeof(UsedSeats); c++)
  65. {
  66. if(GetPlayerVehicleSeat(p) == c) UsedSeats[c] = 1;
  67. if(UsedSeats[c] != 1) return c;
  68. }
  69. }
  70. return -1;
  71. }
  72.  
  73. stock IsSeatUsed(vehicleid, seatid)
  74. {
  75. PlayerLoop(p)
  76. {
  77. if(IsPlayerInAnyVehicle(p) != 1) continue;
  78. if(GetPlayerVehicleSeat(p) == seatid && GetPlayerVehicleID(p) == vehicleid) return 1;
  79. }
  80. return 0;
  81. }
  82.  
  83. public OnPlayerStateChange(playerid, newstate, oldstate)
  84. {
  85. if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_PASSENGER || newstate == PLAYER_STATE_DRIVER)
  86. {
  87. new vehicleid = GetPlayerVehicleID(playerid);
  88. LastPlayerToEnter[vehicleid] = playerid;
  89. }
  90. #if defined DLL_OnPlayerStateChange
  91. DLL_OnPlayerStateChange(playerid, newstate, oldstate);
  92. #endif
  93.  
  94. return 1;
  95. }
  96.  
  97. stock GetLastPlayer(vehicleid) return LastPlayerToEnter[vehicleid];
  98.  
  99. stock Float:GetDriverHP(vehicleid)
  100. {
  101. if(IsValidVehicle(vehicleid) == 0) return -1;
  102. for(new p = 0; p < MAX_PLAYERS; p++)
  103. {
  104. if(IsPlayerConnected(p) != 1 || IsPlayerInAnyVehicle(p) != 1) continue;
  105. if(GetPlayerVehicleID(p) != vehicleid) continue;
  106. if(GetPlayerState(p) != PLAYER_STATE_DRIVER) continue;
  107. new Float:hP;
  108. GetPlayerHealth(p, hP);
  109. return hP;
  110. }
  111. return -1;
  112. }
  113.  
  114. stock Float:GetEveryoneHP(vehicle)
  115. {
  116. if(IsValidVehicle(vehicleid) == 0) return -1;
  117. new Float:hP = -1.0;
  118. for(new p = 0; p < MAX_PLAYERS; p++)
  119. {
  120. if(IsPlayerConnected(p) != 1 || IsPlayerInAnyVehicle(p) != 1) continue;
  121. if(GetPlayerVehicleID(p) != vehicleid) continue;
  122. if(GetPlayerState(p) != PLAYER_STATE_DRIVER) continue;
  123. new Float:pHP;
  124. GetPlayerHealth(p, pHP);
  125. hP = (hP + pHP);
  126. }
  127. return hP;
  128. }
  129.  
  130. #if defined _ALS_OnPlayerStateChange
  131. #undef OnPlayerStateChange
  132. #else
  133. #define _ALS_OnPlayerStateChange
  134. #endif
  135.  
  136. #define OnPlayerStateChange DLL_OnPlayerStateChange
  137.  
  138. #if defined DLL_OnPlayerStateChange
  139. forward DLL_OnPlayerStateChange(playerid, newstate, oldstate);
  140. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement