Advertisement
Guest User

Untitled

a guest
Dec 26th, 2014
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.03 KB | None | 0 0
  1. /*
  2.     supervehicle.pwn, débuté le 20/12/2014
  3.     Crédits: TheArrow
  4. */
  5.  
  6. #include <a_samp>
  7. #include <zcmd>
  8. #include <sscanf2>
  9.  
  10. main(){ }
  11.  
  12. // VARIABLES GLOBALES
  13. new bool:vehicleMode[MAX_PLAYERS], bool:vehicleGravity[MAX_PLAYERS], bool:vehicleAccel[MAX_PLAYERS], Float:count[MAX_PLAYERS];
  14.  
  15. // DEFINES
  16. #define PRESSED(%0) \
  17.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  18. #define RELEASED(%0) \
  19.     (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  20.    
  21. #define pi 3.141592653589793238462643383279502884
  22. #define acceleration 0.01
  23.  
  24. // FORWARD
  25. forward Gravity(playerid, mode);
  26.    
  27. public OnPlayerConnect(playerid)
  28. {
  29.     vehicleMode[playerid] = false, vehicleGravity[playerid] = false;
  30.     return 1;
  31. }
  32.  
  33.  
  34.  
  35. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  36. {
  37.     if(newkeys == KEY_ACTION) {
  38.         if(vehicleMode[playerid] == false) { SendClientMessage(playerid, -1, "The supervehicle mode has been activated."), vehicleMode[playerid] = true; }
  39.         else { SendClientMessage(playerid, -1, "The supervehicle mode has been disabled."), vehicleMode[playerid] = false, vehicleGravity[playerid] = false; } }
  40.     else if(newkeys & KEY_YES && vehicleMode[playerid] == true) {
  41.         vehicleGravity[playerid] = false;
  42.         SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0, 0.0, 0.5);
  43.         SetTimerEx("Gravity", 100, false, "ii", playerid, 1); }
  44.     else if(newkeys & KEY_NO && vehicleMode[playerid] == true) {
  45.         vehicleGravity[playerid] = false;
  46.         SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0, 0.0, -0.5);
  47.         SetTimerEx("Gravity", 100, false, "ii", playerid, 1); }
  48.     else if(PRESSED(KEY_ANALOG_UP) && vehicleMode[playerid] == true) {
  49.         vehicleGravity[playerid] = false,
  50.         vehicleAccel[playerid] = true,
  51.         count[playerid] = 1; }
  52.     else if(RELEASED(KEY_ANALOG_UP) && vehicleMode[playerid] == true) SetTimerEx("Gravity", 100, false, "ii", playerid, 0);
  53.     return 1;
  54. }
  55.  
  56. public Gravity(playerid, mode)
  57. {
  58.     vehicleGravity[playerid] = true;
  59.     if(mode == 0) { vehicleAccel[playerid] = false, count[playerid] = 1; }
  60.     return 1;
  61. }
  62.  
  63. public OnPlayerUpdate(playerid)
  64. {
  65.     if(IsPlayerInAnyVehicle(playerid) && vehicleMode[playerid] == true && vehicleGravity[playerid] == true) SetVehicleVelocity(GetPlayerVehicleID(playerid), 0, 0, 0.03);
  66.     else if(vehicleAccel[playerid] == true) {
  67.         new Float:z_angle, Float:vx, Float:vy, Float:vz, Float:quad_X, Float:quad_Y, Float:quad_Z, Float:quad_W;
  68.         GetVehicleZAngle(GetPlayerVehicleID(playerid), z_angle);
  69.         z_angle = ((360 - z_angle) * 2*pi) / 360;
  70.         GetVehicleRotationQuat(GetPlayerVehicleID(playerid), quad_W, quad_X, quad_Y, quad_Z);
  71.         GetVehicleVelocity(GetPlayerVehicleID(playerid), vx, vy, vz);
  72.         if(quad_X < 0) SetVehicleVelocity(GetPlayerVehicleID(playerid), floatsin(z_angle)*count[playerid], floatcos(z_angle)*count[playerid], vz-(quad_X/3));
  73.         else if(quad_X >= 0) SetVehicleVelocity(GetPlayerVehicleID(playerid), floatsin(z_angle)*count[playerid], floatcos(z_angle)*count[playerid], vz-(quad_X/3));
  74.         count[playerid] += acceleration; }
  75.     return 1;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement