Guest User

M-GEAR system

a guest
Jan 25th, 2014
700
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.37 KB | None | 0 0
  1. // This is a comment
  2. // uncomment the line below if you want to write a filterscript
  3. #define FILTERSCRIPT
  4.  
  5. #include <a_samp> // thanks to samp team
  6.  
  7. #define PRESSED(%0) \
  8.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  9.    
  10. #define SpeedCheck(%0,%1,%2,%3,%4) floatround(floatsqroot(%4?(%0*%0+%1*%1+%2*%2):(%0*%0+%1*%1) ) *%3*1.6) // i dunno who made this
  11.  
  12. new GearLimit[MAX_PLAYERS];
  13. new Gear[MAX_VEHICLES];
  14. new Text:Geartxd[MAX_PLAYERS];
  15.  
  16. #define MAX_GEAR 4
  17. #define VEHICLE_GEAR_SPEED 30 //use this to set the gear max speed ( speed = Gear[vehicleid] * VEHICLE_GEAR_SPEED )
  18.  
  19. #if defined FILTERSCRIPT
  20.  
  21. public OnFilterScriptInit()
  22. {
  23.     print("\n--------------------------------------");
  24.     print(" MANUAL TRANSMISSION BY MAHAR!  LOADED  ");
  25.     print("--------------------------------------\n");
  26.     return 1;
  27. }
  28.  
  29. public OnFilterScriptExit()
  30. {
  31.     print("\n--------------------------------------");
  32.     print(" MANUAL TRANSMISSION BY MAHAR! UNLOADED ");
  33.     print("--------------------------------------\n");
  34.     return 1;
  35. }
  36.  
  37. #else
  38.  
  39. main()
  40. {
  41.    return 1;
  42. }
  43.  
  44. #endif
  45.  
  46. public OnGameModeInit()
  47. {
  48.     return 1;
  49. }
  50.  
  51. public OnGameModeExit()
  52. {
  53.     return 1;
  54. }
  55.  
  56. public OnPlayerRequestClass(playerid, classid)
  57. {
  58.     return 1;
  59. }
  60.  
  61. public OnPlayerConnect(playerid)
  62. {
  63.     Geartxd[playerid] = TextDrawCreate(478,413,"_"); // the gear textdraw
  64.     TextDrawLetterSize(Geartxd[playerid],0.37,1.099999);
  65.     TextDrawSetOutline(Geartxd[playerid],1);
  66.     GearLimit[playerid] = 0;
  67.     return 1;
  68. }
  69.  
  70. public OnPlayerDisconnect(playerid, reason)
  71. {
  72.     TextDrawDestroy(Geartxd[playerid]);
  73.     GearLimit[playerid] = 0;
  74.     return 1;
  75. }
  76.  
  77. public OnPlayerSpawn(playerid)
  78. {
  79.     GearLimit[playerid] = 0;
  80.     return 1;
  81. }
  82.  
  83. public OnPlayerDeath(playerid, killerid, reason)
  84. {
  85.     GearLimit[playerid] = 0;
  86.     return 1;
  87. }
  88.  
  89. public OnVehicleSpawn(vehicleid)
  90. {
  91.     Gear[vehicleid] = 0;
  92.     return 1;
  93. }
  94.  
  95. public OnVehicleDeath(vehicleid, killerid)
  96. {
  97.     Gear[vehicleid] = 0;
  98.     return 1;
  99. }
  100.  
  101. public OnPlayerText(playerid, text[])
  102. {
  103.     return 1;
  104. }
  105.  
  106. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  107. {
  108.     GearLimit[playerid] = Gear[vehicleid] * 20;
  109.     if(GetVehicleModel(vehicleid) == 481 || GetVehicleModel(vehicleid) == 509 || GetVehicleModel(vehicleid) == 510)
  110.     {
  111.         GearLimit[playerid] = 999;
  112.     }
  113.     return 1;
  114. }
  115.  
  116. public OnPlayerExitVehicle(playerid, vehicleid)
  117. {
  118.     GearLimit[playerid] = 0;
  119.     return 1;
  120. }
  121.  
  122. public OnPlayerStateChange(playerid, newstate, oldstate)
  123. {
  124.     return 1;
  125. }
  126.  
  127. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  128. {
  129.     if (PRESSED(KEY_YES)) // Gear UP
  130.     {
  131.         new string[128];
  132.         if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 481 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 509 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 510) return GameTextForPlayer(playerid, "~n~~r~ This Vhicle Doesnt Have Engine", 1000, 2);
  133.         if(Gear[GetPlayerVehicleID(playerid)] <= MAX_GEAR)
  134.         {
  135.            
  136.             Gear[GetPlayerVehicleID(playerid)] ++;
  137.             format(string, sizeof(string), "~n~~w~Vehicle Gear ~r~( ~g~%d ~r~)", Gear[GetPlayerVehicleID(playerid)]);
  138.             GameTextForPlayer(playerid, string, 3000, 3);
  139.         }
  140.         else
  141.         {
  142.             GameTextForPlayer(playerid, "~n~~r~ Max Vehicle Gear", 3000, 3);
  143.         }
  144.     }
  145.     if (PRESSED(KEY_NO)) // Gear Down
  146.     {
  147.         new string[128];
  148.         if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 481 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 509 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 510) return GameTextForPlayer(playerid, "~n~~r~ This Vhicle Doesnt Have Engine", 1000, 2);
  149.         if(Gear[GetPlayerVehicleID(playerid)] > -1)
  150.         {
  151.             Gear[GetPlayerVehicleID(playerid)] --;
  152.             format(string, sizeof(string), "~w~Vehicle Gear ~r~( ~g~%d ~r~)", Gear[GetPlayerVehicleID(playerid)]);
  153.             if(Gear[GetPlayerVehicleID(playerid)] == -1)
  154.             {
  155.                 format(string, sizeof(string), "~w~Vehicle Gear ~r~( ~g~R ~r~)");
  156.             }
  157.             GameTextForPlayer(playerid, string, 3000, 3);
  158.         }
  159.     }
  160.     return 1;
  161. }
  162. stock ModifyVehicleSpeed(vehicleid,mph) //Miles Per Hour
  163. {
  164.     new Float:Vx,Float:Vy,Float:Vz,Float:DV,Float:multiple;
  165.     GetVehicleVelocity(vehicleid,Vx,Vy,Vz);
  166.     DV = floatsqroot(Vx*Vx + Vy*Vy + Vz*Vz);
  167.     if(DV > 0) //Directional velocity must be greater than 0 (display strobes if 0)
  168.     {
  169.         multiple = ((mph + DV * 100) / (DV * 100)); //Multiplying DV by 100 calculates speed in MPH
  170.         return SetVehicleVelocity(vehicleid,Vx*multiple,Vy*multiple,Vz*multiple);
  171.     }
  172.     return 0;
  173. }
  174.  
  175. stock IsVehicleDrivingBackwards(vehicleid) // By Joker
  176. {
  177.     new
  178.         Float:Float[3]
  179.     ;
  180.     if(GetVehicleVelocity(vehicleid, Float[1], Float[2], Float[0]))
  181.     {
  182.         GetVehicleZAngle(vehicleid, Float[0]);
  183.         if(Float[0] < 90)
  184.         {
  185.             if(Float[1] > 0 && Float[2] < 0) return true;
  186.         }
  187.         else if(Float[0] < 180)
  188.         {
  189.             if(Float[1] > 0 && Float[2] > 0) return true;
  190.         }
  191.         else if(Float[0] < 270)
  192.         {
  193.             if(Float[1] < 0 && Float[2] > 0) return true;
  194.         }
  195.         else if(Float[1] < 0 && Float[2] < 0) return true;
  196.     }
  197.     return false;
  198. }
  199.  
  200. stock GetVehicleSpeed(vehicleid, get3d)
  201. {
  202.     new Float:x, Float:y, Float:z;
  203.     GetVehicleVelocity(vehicleid, x, y, z);
  204.     return SpeedCheck(x, y, z, 100.0, get3d);
  205. }
  206.  
  207. public OnPlayerUpdate(playerid)
  208. {
  209.     new string[128];
  210.     GearLimit[playerid] = Gear[GetPlayerVehicleID(playerid)] * VEHICLE_GEAR_SPEED;
  211.     if(Gear[GetPlayerVehicleID(playerid)] == -1)
  212.     {
  213.         GearLimit[playerid] = 0;
  214.     }
  215.     if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  216.     {
  217.         new a, b, c;
  218.         GetPlayerKeys(playerid, a, b ,c);
  219.         if(IsVehicleDrivingBackwards(GetPlayerVehicleID(playerid)))
  220.         {
  221.             if(Gear[GetPlayerVehicleID(playerid)] == -1)
  222.             {
  223.                 return 1;
  224.             }
  225.             else
  226.             {
  227.                 ModifyVehicleSpeed(GetPlayerVehicleID(playerid), - GetVehicleSpeed(GetPlayerVehicleID(playerid), 0));
  228.             }
  229.         }
  230.         if(a == 8 && GetVehicleSpeed(GetPlayerVehicleID(playerid), 0) > GearLimit[playerid])
  231.         {
  232.             if(IsVehicleDrivingBackwards(GetPlayerVehicleID(playerid)))
  233.             {
  234.                 if(Gear[GetPlayerVehicleID(playerid)] != -1) return ModifyVehicleSpeed(GetPlayerVehicleID(playerid), - GetVehicleSpeed(GetPlayerVehicleID(playerid), 0));
  235.             }
  236.             if(!IsVehicleDrivingBackwards(GetPlayerVehicleID(playerid)))
  237.             {
  238.                 if(Gear[GetPlayerVehicleID(playerid)] == -1) return ModifyVehicleSpeed(GetPlayerVehicleID(playerid), - GetVehicleSpeed(GetPlayerVehicleID(playerid), 0));
  239.             }
  240.             new newspeed = GetVehicleSpeed(GetPlayerVehicleID(playerid), 0) - GearLimit[playerid];
  241.             ModifyVehicleSpeed(GetPlayerVehicleID(playerid), -newspeed);
  242.         }
  243.         if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 481 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 509 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 510)
  244.         {
  245.             if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  246.             {
  247.                 TextDrawShowForPlayer(playerid,Geartxd[playerid]);
  248.                 format(string,sizeof(string),"Gear: %d",Gear[GetPlayerVehicleID(playerid)]);
  249.                 if(Gear[GetPlayerVehicleID(playerid)] == -1)
  250.                 {
  251.                     format(string,sizeof(string),"Gear: R");
  252.                 }
  253.                 TextDrawSetString(Geartxd[playerid],string);
  254.             }
  255.         }
  256.         else if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 481 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 509 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 510)
  257.         {
  258.             GearLimit[playerid] = 999;
  259.         }
  260.         return 1;
  261.     }
  262.     if(!IsPlayerInAnyVehicle(playerid))
  263.     {
  264.         TextDrawHideForPlayer(playerid,Geartxd[playerid]);
  265.     }
  266.     return 1;
  267. }
Advertisement
Add Comment
Please, Sign In to add comment