Advertisement
Guest User

Gear System ( Second version )

a guest
Feb 18th, 2015
578
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.40 KB | None | 0 0
  1. // Credits : Golimad ( Wanna edit it, keep my name on it ;) )
  2. // Textdraws generated by Zamaroht's TextDraw Editor.
  3.  
  4. #include <a_samp>
  5. #include <zcmd>
  6.  
  7. //------------------------------------------------------------------------------
  8. #define SpeedCheck(%0,%1,%2,%3,%4) floatround(floatsqroot(%4?(%0*%0+%1*%1+%2*%2):(%0*%0+%1*%1) ) *%3*1.6)
  9. // ^^ Made by someone ( I don't know who ) Thanks to him btw :D ! --------------
  10.  
  11. // Variables: ------------------------------------------------------------------
  12. #define COLOR_RED 0xAA3333AA
  13. #define COLOR_INDIGO 0x4B00B0AA
  14. #define FILTERSCRIPT
  15. #define TCangear 5000 // 5000 ms ( 5 s ) that you need to wait before gearing up.
  16. #define TDCangear 2000 // 2000 ms ( 2 s ) that you need to wait before gearing down.
  17. #define GearOnBoats 1// 0 : enable gear on boats , 1 : disable it.
  18. #define GearOnPlanes 1// 0 : enable gear on planes , 1 : disable it.
  19. #define GearOnMotorbikes 1// 0 : enable gear on motorbikes , 1 : disable it.
  20. #define CanGearUp (PlayerGear[playerid] == 5 || IsVehicleDrivingBackwards(vehicleid) || PlayerCUGear[playerid] == false || IsVehiculeDiving(playerid) || IsVehiculeFlipped(playerid) || IsVehiculeTilted(playerid))
  21. #define CanGearDown (PlayerGear[playerid] == 0 || IsVehicleDrivingBackwards(vehicleid) || PlayerCDGear[playerid] == false || IsVehiculeDiving(playerid) || IsVehiculeFlipped(playerid) || IsVehiculeTilted(playerid))
  22. //HOLDING ----------------------------------------------------------------------
  23. #define HOLDING(%0) \
  24. ((newkeys & (%0)) == (%0))
  25. //------------------------------------------------------------------------------
  26. new Text:TextdrawGear0,Text:TextdrawGear1,Text:TextdrawGear2,Text:TextdrawGear3,Text:TextdrawGear_R,Text:TextdrawGear_1,
  27. Text:TextdrawGear_2,Text:TextdrawGear_3,Text:TextdrawGear_4,Text:TextdrawGear_5,Text:TextdrawCGear;
  28. new
  29. Debug_Diving[MAX_PLAYERS],
  30. Debug_Velocity[MAX_PLAYERS];
  31.  
  32. new
  33. PlayerGear[MAX_PLAYERS] = 1,
  34. bool:PlayerCUGear[MAX_PLAYERS] = true,
  35. bool:PlayerCDGear[MAX_PLAYERS] = true;
  36.  
  37. new
  38. bool:DebugGearSystem[MAX_PLAYERS] = false;
  39.  
  40.  
  41. // Functions : -----------------------------------------------------------------
  42. public OnFilterScriptInit()
  43. {
  44. print("|----------------------------------------|");
  45. print("| Gear filterscript successfully Loaded. |");
  46. print("|>>> Enjoy. (By Golimad) <<<|");
  47. print("|----------------------------------------|");
  48. LoadAllTextdraws();
  49. return 1;
  50. }
  51.  
  52. public OnFilterScriptExit()
  53. {
  54. UnloadAllTextdraws();
  55. return 1;
  56. }
  57.  
  58. public OnPlayerDeath(playerid, killerid, reason)
  59. {
  60. HideAllTextdraws(playerid);
  61. return 1;
  62. }
  63.  
  64. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  65. {
  66. if(HOLDING(KEY_NO))
  67. {
  68. if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !IsVehicleHasNOGear(GetPlayerVehicleID(playerid)))
  69. {
  70. SetTimerEx("KeyCheck", 1000, 0, "i", playerid);
  71. }
  72. }
  73. if (newkeys & KEY_YES)
  74. {
  75. if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !IsVehicleHasNOGear(GetPlayerVehicleID(playerid)))
  76. {
  77. new vehicleid;
  78. vehicleid = GetPlayerVehicleID(playerid);
  79. if(CanGearUp)
  80. {
  81. DebugGearUp(playerid);
  82. TextDrawSetString(TextdrawCGear, "Cant Gear UP");
  83. TextDrawColor(TextdrawCGear, COLOR_RED);
  84. TextDrawShowForPlayer(playerid, TextdrawCGear);
  85. SetTimerEx("TextdrawCantGear", 2000, false, "i", playerid);
  86. return 1;
  87. }
  88. else if (PlayerGear[playerid] == 0)
  89. {
  90. GearUp(playerid);
  91. SetVehicleVelocity(GetPlayerVehicleID(playerid), 0,0,0);
  92. TextDrawShowForPlayer(playerid, TextdrawGear_1); //Gear 1 ------
  93.  
  94. return 1;
  95. }
  96. else if (PlayerGear[playerid] == 1)
  97. {
  98. GearUp(playerid);
  99. TextDrawShowForPlayer(playerid, TextdrawGear_2); //Gear 2 ------
  100.  
  101. return 1;
  102. }
  103. else if (PlayerGear[playerid] == 2)
  104. {
  105. GearUp(playerid);
  106. TextDrawShowForPlayer(playerid, TextdrawGear_3); //Gear 3 ------
  107. return 1;
  108. }
  109. else if (PlayerGear[playerid] == 3)
  110. {
  111. GearUp(playerid);
  112. TextDrawShowForPlayer(playerid, TextdrawGear_4); //Gear 4 ------
  113. return 1;
  114. }
  115. else if (PlayerGear[playerid] == 4)
  116. {
  117. GearUp(playerid);
  118. TextDrawShowForPlayer(playerid, TextdrawGear_5); //Gear 5 ------
  119. return 1;
  120. }
  121. }
  122. }
  123. if (newkeys & KEY_NO)
  124. {
  125.  
  126. if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !IsVehicleHasNOGear(GetPlayerVehicleID(playerid)))
  127. {
  128. new vehicleid;
  129. vehicleid = GetPlayerVehicleID(playerid);
  130. if (CanGearDown)
  131. {
  132. DebugGearDown(playerid);
  133. TextDrawSetString(TextdrawCGear, "Cant Gear Down");
  134. TextDrawColor(TextdrawCGear, COLOR_INDIGO);
  135. TextDrawShowForPlayer(playerid, TextdrawCGear);
  136. SetTimerEx("TextdrawCantGear", 2000, false, "i", playerid);
  137. return 1;
  138. }
  139. else if (PlayerGear[playerid] == 1)
  140. {
  141. GearDown(playerid);
  142. SetVehicleVelocity(GetPlayerVehicleID(playerid), 0,0,0);
  143. TextDrawShowForPlayer(playerid, TextdrawGear_R); //Gear R ------
  144. return 1;
  145. }
  146. else if (PlayerGear[playerid] == 2)
  147. {
  148.  
  149. GearDown(playerid);
  150. TextDrawShowForPlayer(playerid, TextdrawGear_1); //Gear 1 ------
  151. return 1;
  152. }
  153. else if (PlayerGear[playerid] == 3)
  154. {
  155. GearDown(playerid);
  156. TextDrawShowForPlayer(playerid, TextdrawGear_2); //Gear 2 ------
  157. return 1;
  158. }
  159. else if (PlayerGear[playerid] == 4)
  160. {
  161. GearDown(playerid);
  162. TextDrawShowForPlayer(playerid, TextdrawGear_3); //Gear 3 ------
  163. return 1;
  164. }
  165. else if (PlayerGear[playerid] == 5)
  166. {
  167. GearDown(playerid);
  168. TextDrawShowForPlayer(playerid, TextdrawGear_4); //Gear 4 ------
  169. return 1;
  170. }
  171.  
  172. }
  173. }
  174. return 1;
  175. }
  176.  
  177.  
  178. public OnPlayerUpdate(playerid)
  179. {
  180. new iVehicule, Float:FloatAngle;
  181. iVehicule = GetPlayerVehicleID(playerid);
  182. GetVehicleZAngle(iVehicule, FloatAngle);
  183. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !IsVehicleHasNOGear(iVehicule))
  184. {
  185. if( (PlayerGear[playerid] == 5 && !IsVehicleDrivingBackwards(iVehicule)) ||
  186. (PlayerGear[playerid] == 0 && IsVehicleDrivingBackwards(iVehicule)) ||
  187. (IsVehiculeDiving(playerid)) ||
  188. (IsVehiculeTilted(playerid))) return 1;
  189. if(PlayerGear[playerid] > 0 && IsVehicleDrivingBackwards(iVehicule))
  190. {
  191. ModifyVehicleSpeed(iVehicule, - GetVehicleSpeed(iVehicule, 0));
  192. return 1;
  193. }
  194. if(GetVehicleSpeed(iVehicule, 0) > (PlayerGear[playerid] * 35))
  195. {
  196. new newspeed;
  197. newspeed = GetVehicleSpeed(iVehicule, 0) - (PlayerGear[playerid] * 35);
  198. ModifyVehicleSpeed(iVehicule, -newspeed);
  199. }
  200. }
  201. return 1;
  202. }
  203. public OnPlayerStateChange(playerid, newstate, oldstate)
  204. {
  205. if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER && !IsVehicleHasNOGear(GetPlayerVehicleID(playerid))) // Player entered a vehicle as a driver
  206. {
  207. PlayerCUGear[playerid] = true;
  208. PlayerCDGear[playerid] = true;
  209. PlayerGear[playerid] = 1;
  210. TextDrawShowForPlayer(playerid, TextdrawGear0);
  211. TextDrawShowForPlayer(playerid, TextdrawGear1);
  212. TextDrawShowForPlayer(playerid, TextdrawGear2);
  213. TextDrawShowForPlayer(playerid, TextdrawGear3);
  214. TextDrawShowForPlayer(playerid, TextdrawGear_1);
  215. }
  216. else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
  217. {
  218. PlayerCUGear[playerid] = true;
  219. PlayerCDGear[playerid] = true;
  220. PlayerGear[playerid] = 1;
  221. TextDrawHideForPlayer(playerid, TextdrawGear0);
  222. TextDrawHideForPlayer(playerid, TextdrawGear1);
  223. TextDrawHideForPlayer(playerid, TextdrawGear2);
  224. TextDrawHideForPlayer(playerid, TextdrawGear3);
  225. TextDrawHideForPlayer(playerid, TextdrawGear_R);
  226. TextDrawHideForPlayer(playerid, TextdrawGear_1);
  227. TextDrawHideForPlayer(playerid, TextdrawGear_2);
  228. TextDrawHideForPlayer(playerid, TextdrawGear_3);
  229. TextDrawHideForPlayer(playerid, TextdrawGear_4);
  230. TextDrawHideForPlayer(playerid, TextdrawGear_5);
  231. TextDrawHideForPlayer(playerid, TextdrawCGear);
  232. }
  233. return 1;
  234. }
  235.  
  236.  
  237. // Textdraws :------------------------------------------------------------------
  238. LoadAllTextdraws()
  239. {
  240.  
  241. TextdrawGear0 = TextDrawCreate(567.000000, 280.000000, "~r~R ~w~1");
  242. TextDrawBackgroundColor(TextdrawGear0, 255);
  243. TextDrawFont(TextdrawGear0, 3);
  244. TextDrawLetterSize(TextdrawGear0, 0.500000, 2.200000);
  245. TextDrawColor(TextdrawGear0, -1);
  246. TextDrawSetOutline(TextdrawGear0, 1);
  247. TextDrawSetProportional(TextdrawGear0, 0);
  248. TextDrawUseBox(TextdrawGear0, 1);
  249. TextDrawBoxColor(TextdrawGear0, 255);
  250. TextDrawTextSize(TextdrawGear0, 620.000000, 0.000000);
  251.  
  252. TextdrawGear1 = TextDrawCreate(567.000000, 300.000000, "2 3");
  253. TextDrawBackgroundColor(TextdrawGear1, 255);
  254. TextDrawFont(TextdrawGear1, 3);
  255. TextDrawLetterSize(TextdrawGear1, 0.500000, 2.000000);
  256. TextDrawColor(TextdrawGear1, -1);
  257. TextDrawSetOutline(TextdrawGear1, 1);
  258. TextDrawSetProportional(TextdrawGear1, 0);
  259. TextDrawUseBox(TextdrawGear1, 1);
  260. TextDrawBoxColor(TextdrawGear1, 255);
  261. TextDrawTextSize(TextdrawGear1, 620.000000, 0.000000);
  262.  
  263. TextdrawGear2 = TextDrawCreate(567.000000, 318.000000, "4 5");
  264. TextDrawBackgroundColor(TextdrawGear2, 255);
  265. TextDrawFont(TextdrawGear2, 3);
  266. TextDrawLetterSize(TextdrawGear2, 0.500000, 2.000000);
  267. TextDrawColor(TextdrawGear2, -1);
  268. TextDrawSetOutline(TextdrawGear2, 1);
  269. TextDrawSetProportional(TextdrawGear2, 0);
  270. TextDrawUseBox(TextdrawGear2, 1);
  271. TextDrawBoxColor(TextdrawGear2, 255);
  272. TextDrawTextSize(TextdrawGear2, 620.000000, 0.000000);
  273.  
  274. TextdrawGear3 = TextDrawCreate(571.000000, 265.000000, "GEAR");
  275. TextDrawBackgroundColor(TextdrawGear3, 255);
  276. TextDrawFont(TextdrawGear3, 1);
  277. TextDrawLetterSize(TextdrawGear3, 0.500000, 1.000000);
  278. TextDrawColor(TextdrawGear3, -1);
  279. TextDrawSetOutline(TextdrawGear3, 1);
  280. TextDrawSetProportional(TextdrawGear3, 1);
  281.  
  282. TextdrawCGear = TextDrawCreate(597.000000, 343.000000, "Cant Gear");
  283. TextDrawBackgroundColor(TextdrawCGear, 255);
  284. TextDrawFont(TextdrawCGear, 1);
  285. TextDrawLetterSize(TextdrawCGear, 0.4000, 0.8500);
  286. TextDrawColor(TextdrawCGear, 65535);
  287. TextDrawSetOutline(TextdrawCGear, 1);
  288. TextDrawSetProportional(TextdrawCGear, 1);
  289. TextDrawUseBox(TextdrawCGear, 1);
  290. TextDrawBoxColor(TextdrawCGear, 0xFFFFFF00);
  291. TextDrawTextSize(TextdrawCGear, 100.000000, 80.000000);
  292. TextDrawAlignment(TextdrawCGear, 2);
  293.  
  294. TextdrawGear_R = TextDrawCreate(571.000000, 286.000000, "°");
  295. TextDrawBackgroundColor(TextdrawGear_R, 255);
  296. TextDrawFont(TextdrawGear_R, 1);
  297. TextDrawLetterSize(TextdrawGear_R, 0.500000, 1.000000);
  298. TextDrawColor(TextdrawGear_R, 65535);
  299. TextDrawSetOutline(TextdrawGear_R, 0);
  300. TextDrawSetProportional(TextdrawGear_R, 1);
  301. TextDrawSetShadow(TextdrawGear_R, 1);
  302.  
  303. TextdrawGear_1 = TextDrawCreate(589.500000, 286.000000, "°");
  304. TextDrawBackgroundColor(TextdrawGear_1, 255);
  305. TextDrawFont(TextdrawGear_1, 1);
  306. TextDrawLetterSize(TextdrawGear_1, 0.500000, 1.000000);
  307. TextDrawColor(TextdrawGear_1, 65535);
  308. TextDrawSetOutline(TextdrawGear_1, 0);
  309. TextDrawSetProportional(TextdrawGear_1, 1);
  310. TextDrawSetShadow(TextdrawGear_1, 1);
  311.  
  312. TextdrawGear_2 = TextDrawCreate(571.000000, 305.000000, "°");
  313. TextDrawBackgroundColor(TextdrawGear_2, 255);
  314. TextDrawFont(TextdrawGear_2, 1);
  315. TextDrawLetterSize(TextdrawGear_2, 0.500000, 1.000000);
  316. TextDrawColor(TextdrawGear_2, 65535);
  317. TextDrawSetOutline(TextdrawGear_2, 0);
  318. TextDrawSetProportional(TextdrawGear_2, 1);
  319. TextDrawSetShadow(TextdrawGear_2, 1);
  320.  
  321. TextdrawGear_3 = TextDrawCreate(589.500000, 305.000000, "°");
  322. TextDrawBackgroundColor(TextdrawGear_3, 255);
  323. TextDrawFont(TextdrawGear_3, 1);
  324. TextDrawLetterSize(TextdrawGear_3, 0.500000, 1.000000);
  325. TextDrawColor(TextdrawGear_3, 65535);
  326. TextDrawSetOutline(TextdrawGear_3, 0);
  327. TextDrawSetProportional(TextdrawGear_3, 1);
  328. TextDrawSetShadow(TextdrawGear_3, 1);
  329.  
  330. TextdrawGear_4 = TextDrawCreate(571.000000, 323.000000, "°");
  331. TextDrawBackgroundColor(TextdrawGear_4, 255);
  332. TextDrawFont(TextdrawGear_4, 1);
  333. TextDrawLetterSize(TextdrawGear_4, 0.500000, 1.000000);
  334. TextDrawColor(TextdrawGear_4, 65535);
  335. TextDrawSetOutline(TextdrawGear_4, 0);
  336. TextDrawSetProportional(TextdrawGear_4, 1);
  337. TextDrawSetShadow(TextdrawGear_4, 1);
  338.  
  339. TextdrawGear_5 = TextDrawCreate(589.000000, 323.000000, "°");
  340. TextDrawBackgroundColor(TextdrawGear_5, 255);
  341. TextDrawFont(TextdrawGear_5, 1);
  342. TextDrawLetterSize(TextdrawGear_5, 0.500000, 1.000000);
  343. TextDrawColor(TextdrawGear_5, 65535);
  344. TextDrawSetOutline(TextdrawGear_5, 0);
  345. TextDrawSetProportional(TextdrawGear_5, 1);
  346. TextDrawSetShadow(TextdrawGear_5, 1);
  347.  
  348. }
  349. UnloadAllTextdraws()
  350. {
  351. TextDrawHideForAll(TextdrawGear0);
  352. TextDrawDestroy(TextdrawGear0);
  353. TextDrawHideForAll(TextdrawGear1);
  354. TextDrawDestroy(TextdrawGear1);
  355. TextDrawHideForAll(TextdrawGear2);
  356. TextDrawDestroy(TextdrawGear2);
  357. TextDrawHideForAll(TextdrawGear3);
  358. TextDrawDestroy(TextdrawGear3);
  359. TextDrawHideForAll(TextdrawGear_R);
  360. TextDrawDestroy(TextdrawGear_R);
  361. TextDrawHideForAll(TextdrawGear_1);
  362. TextDrawDestroy(TextdrawGear_1);
  363. TextDrawHideForAll(TextdrawGear_2);
  364. TextDrawDestroy(TextdrawGear_2);
  365. TextDrawHideForAll(TextdrawGear_3);
  366. TextDrawDestroy(TextdrawGear_3);
  367. TextDrawHideForAll(TextdrawGear_4);
  368. TextDrawDestroy(TextdrawGear_4);
  369. TextDrawHideForAll(TextdrawGear_5);
  370. TextDrawDestroy(TextdrawGear_5);
  371. TextDrawHideForAll(TextdrawCGear);
  372. TextDrawDestroy(TextdrawCGear);
  373.  
  374. }
  375. HideAllTextdraws(playerid)
  376. {
  377. TextDrawHideForPlayer(playerid, TextdrawCGear);
  378. TextDrawHideForPlayer(playerid, TextdrawGear0);
  379. TextDrawHideForPlayer(playerid, TextdrawGear1);
  380. TextDrawHideForPlayer(playerid, TextdrawGear2);
  381. TextDrawHideForPlayer(playerid, TextdrawGear3);
  382. TextDrawHideForPlayer(playerid, TextdrawGear_R);
  383. TextDrawHideForPlayer(playerid, TextdrawGear_1);
  384. TextDrawHideForPlayer(playerid, TextdrawGear_2);
  385. TextDrawHideForPlayer(playerid, TextdrawGear_3);
  386. TextDrawHideForPlayer(playerid, TextdrawGear_4);
  387. TextDrawHideForPlayer(playerid, TextdrawGear_5);
  388. }
  389. hideallgears(playerid)
  390. {
  391. TextDrawHideForPlayer(playerid, TextdrawCGear);
  392. TextDrawHideForPlayer(playerid, TextdrawGear_R);
  393. TextDrawHideForPlayer(playerid, TextdrawGear_1);
  394. TextDrawHideForPlayer(playerid, TextdrawGear_2);
  395. TextDrawHideForPlayer(playerid, TextdrawGear_3);
  396. TextDrawHideForPlayer(playerid, TextdrawGear_4);
  397. TextDrawHideForPlayer(playerid, TextdrawGear_5);
  398. }
  399. // GEAR UP / DOWN ) : ----------------------------------------------------------
  400. GearUp(playerid){
  401. PlayerCUGear[playerid] = false;
  402. SetTimerEx("PlayerCUTGear", TCangear, false, "i", playerid);
  403. PlayerGear[playerid]++;
  404. hideallgears(playerid);
  405. }
  406. GearDown(playerid){
  407. PlayerCDGear[playerid] = false;
  408. SetTimerEx("PlayerCDTGear", TDCangear, false, "i", playerid);
  409. PlayerGear[playerid]--;
  410. hideallgears(playerid);
  411. }
  412. // Checking vehicle type ( Plane, helicopter, boat, ... ) ----------------------
  413.  
  414. IsVehiculeFlipped(playerid)
  415. {
  416. new Float:Quat[2];
  417. GetVehicleRotationQuat(GetPlayerVehicleID(playerid), Quat[0], Quat[1], Quat[0], Quat[0]);
  418. return (Quat[1] >= 0.60 || Quat[1] <= -0.60);
  419. }
  420. IsVehiculeTilted(playerid)
  421. {
  422. new Float:Quat[2];
  423. GetVehicleRotationQuat(GetPlayerVehicleID(playerid), Quat[0], Quat[0], Quat[1], Quat[0]);
  424. return (Quat[1] >= 0.20 || Quat[1] <= -0.20);
  425. }
  426. IsVehicleHasNOGear(vehicleid)
  427. {
  428. switch(GetVehicleModel(vehicleid)) {
  429. //Planes:
  430. case 592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425,
  431. 417, 487, 488, 497, 563, 447, 469: return GearOnPlanes;
  432. //Motorbikes:
  433. case 581,421,462,463,522,461,448,586,468,521,471,523: return GearOnMotorbikes;
  434. //Bikes:
  435. case 509,481,510: return 1;
  436. //Boats:
  437. case 472,473,595,493,430,453,484,446,452,454: return GearOnBoats;
  438. }
  439. return 0;
  440. }
  441. IsVehiculeDiving(playerid)
  442. {
  443. new Float:Float[3];
  444. GetVehicleVelocity(GetPlayerVehicleID(playerid), Float[0], Float[1], Float[2]);
  445. if(Float[2]<0.2 && Float[2]>-0.2)
  446. {
  447. return false;
  448. }
  449. return true;
  450. }
  451. stock ModifyVehicleSpeed(vehicleid,mph)
  452. {
  453. new Float:Vx,Float:Vy,Float:Vz,Float:DV,Float:multiple;
  454. GetVehicleVelocity(vehicleid,Vx,Vy,Vz);
  455. DV = floatsqroot(Vx*Vx + Vy*Vy + Vz*Vz);
  456. if(DV > 0)
  457. {
  458. multiple = ((mph + DV * 100) / (DV * 100));
  459. return SetVehicleVelocity(vehicleid,Vx*multiple,Vy*multiple,Vz*multiple);
  460. }
  461. return 0;
  462. }
  463.  
  464. stock IsVehicleDrivingBackwards(vehicleid) // Thanks to Joker ( SAMP forums ) --
  465. { // for IsVehicleDrivingBackwards ----
  466. new Float:Float[3];
  467. if(GetVehicleVelocity(vehicleid, Float[1], Float[2], Float[0])) {
  468. GetVehicleZAngle(vehicleid, Float[0]);
  469. if(Float[0] < 90) {
  470. if(Float[1] > 0 && Float[2] < 0) return true;
  471. } else if(Float[0] < 180) {
  472. if(Float[1] > 0 && Float[2] > 0) return true;
  473. } else if(Float[0] < 270) {
  474. if(Float[1] < 0 && Float[2] > 0) return true;
  475. } else if(Float[1] < 0 && Float[2] < 0) return true;
  476. }
  477. return false;
  478. }
  479.  
  480. stock GetVehicleSpeed(vehicleid, get3d)
  481. {
  482. new Float:x, Float:y, Float:z;
  483. GetVehicleVelocity(vehicleid, x, y, z);
  484. return SpeedCheck(x, y, z, 100.0, get3d);
  485. }
  486. // Timers : --------------------------------------------------------------------
  487. forward PlayerCUTGear(playerid);
  488. public PlayerCUTGear(playerid)
  489. {
  490. PlayerCUGear[playerid] = true;
  491. }
  492. forward PlayerCDTGear(playerid);
  493. public PlayerCDTGear(playerid)
  494. {
  495. PlayerCDGear[playerid] = true;
  496. }
  497. forward TextdrawCantGear(playerid);
  498. public TextdrawCantGear(playerid)
  499. {
  500. TextDrawHideForPlayer(playerid, TextdrawCGear);
  501. }
  502.  
  503. // DEBUGGING : -----------------------------------------------------------------
  504. CMD:debuggear(playerid, params[])
  505. {
  506. if(IsPlayerAdmin(playerid))
  507. {
  508. if(DebugGearSystem[playerid]==true)
  509. {
  510. DebugGearSystem[playerid]=false;SendClientMessage(playerid, COLOR_RED, "DEBUG : Gear System Debug mode OFF.");
  511. KillTimer(Debug_Velocity[playerid]);
  512. KillTimer(Debug_Diving[playerid]);
  513. }
  514. else
  515. {
  516. DebugGearSystem[playerid]=true;SendClientMessage(playerid, COLOR_INDIGO, "DEBUG : Gear System Debug mode ON.");
  517. Debug_Velocity[playerid] = SetTimerEx("DebugVelosity", 1000, true, "i", playerid);
  518. Debug_Diving[playerid] = SetTimerEx("DebugVehicleDiving", 400, true, "i", playerid);
  519. }
  520. }
  521. return 1;
  522. }
  523. CMD:debugjump(playerid, params[])
  524. {
  525. if(DebugGearSystem[playerid]==true){
  526. new Float:x, Float:y, Float:z;
  527. GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
  528. SetVehicleVelocity(GetPlayerVehicleID(playerid) ,x ,y ,z+0.3);
  529. }
  530. else{SendClientMessage(playerid, COLOR_RED, "DEBUG : Gear System Debug mode is OFF.");}
  531. return 1;
  532. }
  533. DebugGearUp(playerid)
  534. {
  535. if(DebugGearSystem[playerid]==true)
  536. {
  537. SendClientMessage(playerid, COLOR_RED, "DEBUG : You can't gear up.");
  538. }
  539. }
  540. DebugGearDown(playerid)
  541. {
  542. if(DebugGearSystem[playerid]==true)
  543. {
  544. SendClientMessage(playerid, COLOR_INDIGO, "DEBUG : You can't gear down.");
  545. }
  546. }
  547. public OnPlayerConnect(playerid)
  548. {
  549. DebugGearSystem[playerid]=false;
  550. return 1;
  551. }
  552.  
  553. forward DebugVehicleDiving(playerid);
  554. public DebugVehicleDiving(playerid)
  555. {
  556. if(IsVehiculeDiving(playerid) && DebugGearSystem[playerid]==true)
  557. {
  558. SendClientMessage(playerid, COLOR_RED, "DEBUG : Car is diving!");
  559. }
  560. }
  561.  
  562. forward DebugVelosity(playerid);
  563. public DebugVelosity(playerid)
  564. {
  565. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && DebugGearSystem[playerid]==true)
  566. {
  567. new Float:Quat[4];
  568. new Float:Velocity[4];
  569. new str[256];
  570. new iVehicule, Float:FloatAngle;
  571. iVehicule = GetPlayerVehicleID(playerid);
  572. GetVehicleZAngle(iVehicule, FloatAngle);
  573. GetVehicleRotationQuat(GetPlayerVehicleID(playerid), Quat[0], Quat[1], Quat[2], Quat[3]);
  574. Quat[0]=Quat[0]*360;
  575. Quat[1]=Quat[1]*360;
  576. Quat[2]=Quat[2]*360;
  577. Quat[3]=Quat[3]*360;
  578. format(str,sizeof(str),"DEBUG : Anlge W : %f , X : %f , Y : %f, Z: %f, ANGLE : %f", Quat[0],Quat[1],Quat[2],Quat[3], FloatAngle);
  579. SendClientMessage(playerid, COLOR_RED, str);
  580. if(IsVehiculeTilted(playerid))
  581. {
  582. SendClientMessage(playerid, COLOR_RED, "DEBUG : Car is Tilted");
  583. }
  584. GetVehicleZAngle(GetPlayerVehicleID(playerid), Velocity[3]);
  585. GetVehicleVelocity(GetPlayerVehicleID(playerid),Velocity[0],Velocity[1],Velocity[2]);
  586. format(str,sizeof(str),"DEBUG : Vehicle Velocity X : %f , Y : %f , Z : %f, Angle: %f", Velocity[0],Velocity[1],Velocity[2],Velocity[3]);
  587. SendClientMessage(playerid, COLOR_RED, str);
  588. }
  589. }
  590.  
  591. forward KeyCheck(playerid);
  592. public KeyCheck(playerid)
  593. {
  594. if(IsPlayerConnected(playerid))
  595. {
  596. new
  597. keys, ud, lr;
  598. new
  599. Float:Velocity[3];
  600. GetPlayerKeys(playerid, keys, ud, lr);
  601. if(keys & KEY_NO)
  602. {
  603. if(PlayerGear[playerid] > 0)
  604. {
  605. new vehicleid;
  606. vehicleid = GetPlayerVehicleID(playerid);
  607. GetVehicleVelocity(GetPlayerVehicleID(playerid),Velocity[0],Velocity[1],Velocity[2]);
  608. if((Velocity[0]==0.0 && Velocity[1]==0.0 && Velocity[2]==0.0) && CanGearDown)
  609. {
  610. hideallgears(playerid);
  611. PlayerGear[playerid]=0;
  612. TextDrawShowForPlayer(playerid, TextdrawGear_R);
  613. SetVehicleVelocity(GetPlayerVehicleID(playerid), 0,0,0);
  614. }
  615. else{
  616. DebugGearDown(playerid);
  617. TextDrawSetString(TextdrawCGear, "Cant Gear Down");
  618. TextDrawColor(TextdrawCGear, COLOR_INDIGO);
  619. TextDrawShowForPlayer(playerid, TextdrawCGear);
  620. SetTimerEx("TextdrawCantGear", 2000, false, "i", playerid);
  621. }
  622. }
  623.  
  624. }
  625. }
  626. return 0;
  627. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement