Advertisement
Guest User

Ravedutti

a guest
Dec 15th, 2009
1,131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.24 KB | None | 0 0
  1. /*********************************************************************************
  2. * Tuning Filterscript
  3. * This filterscript allow to you tune any car model in one modshop.
  4. *
  5. * This code is a part of the Virtual Life RPG source
  6. * You have permission to use it and change it
  7. *
  8. * Author: Rafael Ravedutti L. M. <rafael_msn_7@hotmail.com>
  9. *********************************************************************************/
  10.  
  11. #include <a_samp>
  12.  
  13. //Slots
  14. #define SPOILERS 0
  15. #define ROOFSCOOPS 1
  16. #define HOODS 2
  17. #define SIDESKIRTS 3
  18. #define NITROS 4
  19. #define LAMPS 5
  20. #define EXHAUSTS 6
  21. #define WHEELS 7
  22. #define STEREO 8
  23. #define HYDRAULICS 9
  24. #define BULLBARS 10
  25. #define REARBULLBARS 11
  26. #define FRONTBULLBARS 12
  27. #define FRONTBUMPERS 13
  28. #define REARBUMPERS 14
  29. #define VENTS 15
  30. #define FRONTSIGN 16
  31. #define PAINTJOBS 17
  32.  
  33. forward TuningHandler();
  34. forward UpdateTuneCamera();
  35.  
  36. new TunnerID;
  37. new TuneVehicle;
  38. new TuneComponent = 0;
  39. new TuneEntry = 0;
  40. new TuneTimer;
  41. new TuneHTimer;
  42. new Tunes[17];
  43. new RowComponents[20];
  44. new Menu:mCost;
  45. new Menu:mTuning;
  46. new Menu:mCurrentTune;
  47. new bool:IsPaintJob = false;
  48.  
  49. new Float:TuningLocations[][3] = {
  50. {1653.8280, -1837.3652, 14.0000},
  51. {-2037.2894, 178.4451, 28.8359}
  52. };
  53.  
  54. enum vTuning
  55. {
  56. tun[17],
  57. pjobid
  58. }
  59.  
  60. new VehicleTuning[MAX_VEHICLES][vTuning];
  61.  
  62. enum TuneInfo
  63. {
  64. tuneName[64],
  65. tuneValue,
  66. tuneSlot
  67. }
  68.  
  69. new SimilarComponents[][2] = {
  70. {1007, 1017},
  71. {1026, 1027},
  72. {1030, 1031},
  73. {1036, 1040},
  74. {1039, 1041},
  75. {1042, 1099},
  76. {1047, 1051},
  77. {1048, 1052},
  78. {1056, 1062},
  79. {1057, 1063},
  80. {1069, 1071},
  81. {1070, 1072},
  82. {1090, 1094},
  83. {1093, 1095},
  84. {1106, 1124},
  85. {1107, 1108},
  86. {1118, 1120},
  87. {1119, 1121},
  88. {1122, 1101},
  89. {1133, 1102},
  90. {1143, 1142},
  91. {1145, 1144}
  92. };
  93.  
  94. new Components[][TuneInfo] = {
  95. {"Pro", 900, SPOILERS},
  96. {"Win", 750, SPOILERS},
  97. {"Drag", 800, SPOILERS},
  98. {"Alpha", 600, SPOILERS},
  99. {"Champ Scoop", 600, HOODS},
  100. {"Fury Scoop", 800, HOODS},
  101. {"Roof Scoop", 180, ROOFSCOOPS},
  102. {"Sideskirt", 400, SIDESKIRTS},
  103. {"Nitro 2x", 500, NITROS},
  104. {"Nitro 5x", 1000, NITROS},
  105. {"Nitro 10x", 2000, NITROS},
  106. {"Race Scoop", 1300, HOODS},
  107. {"Worx Scoop", 1250, HOODS},
  108. {"Round Fog", 650, LAMPS},
  109. {"Champ", 1600, SPOILERS},
  110. {"Race", 1580, SPOILERS},
  111. {"Worx", 1400, SPOILERS},
  112. {"Sideskirt", 400, SIDESKIRTS},
  113. {"Upswept", 800, EXHAUSTS},
  114. {"Twin", 600, EXHAUSTS},
  115. {"Large", 500, EXHAUSTS},
  116. {"Medium", 300, EXHAUSTS},
  117. {"Small", 350, EXHAUSTS},
  118. {"Fury", 500, SPOILERS},
  119. {"Square Fog", 500, LAMPS},
  120. {"Off Road", 1200, WHEELS},
  121. {"Alien", 900, SIDESKIRTS},
  122. {"Alien", 900, SIDESKIRTS},
  123. {"Alien", 1700, EXHAUSTS},
  124. {"X-Flow", 1300, EXHAUSTS},
  125. {"X-Flow", 750, SIDESKIRTS},
  126. {"X-Flow", 750, SIDESKIRTS},
  127. {"Alien Roof", 800, ROOFSCOOPS},
  128. {"X-Flow Roof", 600, ROOFSCOOPS},
  129. {"Alien", 1700, EXHAUSTS},
  130. {"X-Flow Roof", 600, ROOFSCOOPS},
  131. {"Alien", 900, SIDESKIRTS},
  132. {"X-Flow", 1300, EXHAUSTS},
  133. {"Alien Roof", 800, ROOFSCOOPS},
  134. {"X-Flow", 750, SIDESKIRTS},
  135. {"Alien", 900, SIDESKIRTS},
  136. {"X-Flow", 750, SIDESKIRTS},
  137. {"Chrome", 900, SIDESKIRTS},
  138. {"Slamin", 1300, EXHAUSTS},
  139. {"Chrome", 1700, EXHAUSTS},
  140. {"X-Flow", 1300, EXHAUSTS},
  141. {"Alien", 1700, EXHAUSTS},
  142. {"Alien", 900, SIDESKIRTS},
  143. {"X-Flow", 750, SIDESKIRTS},
  144. {"Alien", 1400, SPOILERS},
  145. {"X-Flow", 1000, SPOILERS},
  146. {"Alien", 900, SIDESKIRTS},
  147. {"X-Flow", 750, SIDESKIRTS},
  148. {"X-Flow", 600, ROOFSCOOPS},
  149. {"Alien", 800, ROOFSCOOPS},
  150. {"Alien", 800, ROOFSCOOPS},
  151. {"Alien", 900, SIDESKIRTS},
  152. {"X-Flow", 750, SIDESKIRTS},
  153. {"Alien", 1400, SPOILERS},
  154. {"X-Flow", 1300, EXHAUSTS},
  155. {"X-Flow", 1000, SPOILERS},
  156. {"X-Flow", 600, ROOFSCOOPS},
  157. {"Alien", 900, SIDESKIRTS},
  158. {"X-Flow", 750, SIDESKIRTS},
  159. {"Alien", 1700, EXHAUSTS},
  160. {"Alien", 1700, EXHAUSTS},
  161. {"X-Flow", 1300, EXHAUSTS},
  162. {"Alien", 800, ROOFSCOOPS},
  163. {"X-Flow", 600, ROOFSCOOPS},
  164. {"Alien", 900, SIDESKIRTS},
  165. {"X-Flow", 750, SIDESKIRTS},
  166. {"Alien", 900, SIDESKIRTS},
  167. {"X-Flow", 750, SIDESKIRTS},
  168. {"Shadow", 700, WHEELS},
  169. {"Mega", 1030, WHEELS},
  170. {"Rimshine", 1800, WHEELS},
  171. {"Wires", 1560, WHEELS},
  172. {"Classic", 1650, WHEELS},
  173. {"Twist", 1900, WHEELS},
  174. {"Cutter", 1100, WHEELS},
  175. {"Switch", 2100, WHEELS},
  176. {"Grove", 1230, WHEELS},
  177. {"Import", 1050, WHEELS},
  178. {"Dollar", 1760, WHEELS},
  179. {"Trancer", 1350, WHEELS},
  180. {"Atomic", 1550, WHEELS},
  181. {"Estereo", 350, STEREO},
  182. {"Hidraulica", 1600, HYDRAULICS},
  183. {"Alien", 800, ROOFSCOOPS},
  184. {"X-Flow", 1300, EXHAUSTS},
  185. {"Alien", 900, SIDESKIRTS},
  186. {"X-Flow", 600, ROOFSCOOPS},
  187. {"Alien", 1300, EXHAUSTS},
  188. {"X-Flow", 750, SIDESKIRTS},
  189. {"Alien", 900, SIDESKIRTS},
  190. {"X-Flow", 750, SIDESKIRTS},
  191. {"Ahab", 1700, WHEELS},
  192. {"Virtual", 850, WHEELS},
  193. {"Access", 1200, WHEELS},
  194. {"Chrome", 900, SIDESKIRTS},
  195. {"Chrome Grill", 1200, BULLBARS},
  196. {"Chrome Flames", 1700, SIDESKIRTS},
  197. {"Chrome Strip", 1400, SIDESKIRTS},
  198. {"Convertible", 1300, ROOFSCOOPS},
  199. {"Chrome", 1700, EXHAUSTS},
  200. {"Slamin", 1300, EXHAUSTS},
  201. {"Chrome Arches", 1500, SIDESKIRTS},
  202. {"Chrome Strip", 1300, SIDESKIRTS},
  203. {"Chrome Strip", 1300, SIDESKIRTS},
  204. {"Chrome", 2180, REARBULLBARS},
  205. {"Slamin", 2100, REARBULLBARS},
  206. {"Little Sign 1", 1000, FRONTSIGN},
  207. {"Little Sign 2", 1200, FRONTSIGN},
  208. {"Chrome", 1700, EXHAUSTS},
  209. {"Slamin", 1300, EXHAUSTS},
  210. {"Chrome", 2200, FRONTBULLBARS},
  211. {"Slamin", 2100, FRONTBULLBARS},
  212. {"Chrome", 1800, FRONTBUMPERS},
  213. {"Chrome Trim", 590, SIDESKIRTS},
  214. {"Wheelcovers", 750, SIDESKIRTS},
  215. {"Chrome Trim", 590, SIDESKIRTS},
  216. {"Wheelcovers", 750, SIDESKIRTS},
  217. {"Chrome Flames", 1700, SIDESKIRTS},
  218. {"Bullbar Chrome Bars", 1300, BULLBARS},
  219. {"Chrome Arches", 1500, SIDESKIRTS},
  220. {"Bullbar Chrome Lights", 1000, BULLBARS},
  221. {"Chrome", 1700, EXHAUSTS},
  222. {"Slamin", 1300, EXHAUSTS},
  223. {"Vinyl Hardtop", 3400, ROOFSCOOPS},
  224. {"Chrome", 1700, EXHAUSTS},
  225. {"Hardtop", 3000, ROOFSCOOPS},
  226. {"Softtop", 3300, ROOFSCOOPS},
  227. {"Slamin", 1300, EXHAUSTS},
  228. {"Chrome Strip", 1300, SIDESKIRTS},
  229. {"Chrome Strip", 1300, SIDESKIRTS},
  230. {"Slamin", 1300, EXHAUSTS},
  231. {"Chrome", 1700, EXHAUSTS},
  232. {"Chrome Strip", 1300, SIDESKIRTS},
  233. {"Alien", 1400, SPOILERS},
  234. {"X-Flow", 1000, SPOILERS},
  235. {"X-Flow", 1800, REARBUMPERS},
  236. {"Alien", 2200, REARBUMPERS},
  237. {"Oval", 900, VENTS},
  238. {"Oval", 900, VENTS},
  239. {"Square", 600, VENTS},
  240. {"Square", 600, VENTS},
  241. {"X-Flow", 1400, SPOILERS},
  242. {"Alien", 1000, SPOILERS},
  243. {"X-Flow", 1800, REARBUMPERS},
  244. {"Alien", 2200, REARBUMPERS},
  245. {"Alien", 2200, REARBUMPERS},
  246. {"X-Flow", 1800, REARBUMPERS},
  247. {"X-Flow", 1800, FRONTBUMPERS},
  248. {"Alien", 1800, FRONTBUMPERS},
  249. {"Alien", 2200, REARBUMPERS},
  250. {"Alien", 2200, FRONTBUMPERS},
  251. {"X-Flow", 1800, REARBUMPERS},
  252. {"X-Flow", 1800, FRONTBUMPERS},
  253. {"X-Flow", 1000, SPOILERS},
  254. {"Alien", 2200, REARBUMPERS},
  255. {"Alien", 2200, FRONTBUMPERS},
  256. {"X-Flow", 1800, REARBUMPERS},
  257. {"Alien", 1400, SPOILERS},
  258. {"X-Flow", 1000, SPOILERS},
  259. {"Alien", 1400, SPOILERS},
  260. {"X-Flow", 1800, FRONTBUMPERS},
  261. {"Alien", 2200, FRONTBUMPERS},
  262. {"X-Flow", 1800, REARBUMPERS},
  263. {"Alien", 1800, REARBUMPERS},
  264. {"Alien", 1800, FRONTBUMPERS},
  265. {"X-Flow", 1800, FRONTBUMPERS},
  266. {"Alien", 2200, FRONTBUMPERS},
  267. {"X-Flow", 1800, FRONTBUMPERS},
  268. {"X-Flow", 1800, FRONTBUMPERS},
  269. {"Chrome", 2200, FRONTBUMPERS},
  270. {"Slamin", 1800, REARBUMPERS},
  271. {"Chrome", 2200, FRONTBUMPERS},
  272. {"Slamin", 1800, REARBUMPERS},
  273. {"Slamin", 1800, REARBUMPERS},
  274. {"Chrome", 2200, FRONTBUMPERS},
  275. {"Chrome", 2200, REARBUMPERS},
  276. {"Slamin", 1800, FRONTBUMPERS},
  277. {"Chrome", 2200, FRONTBUMPERS},
  278. {"Slamin", 1800, REARBUMPERS},
  279. {"Chrome", 2200, REARBUMPERS},
  280. {"Slamin", 1800, FRONTBUMPERS},
  281. {"Slamin", 1800, REARBUMPERS},
  282. {"Chrome", 2200, REARBUMPERS},
  283. {"Slamin", 1300, FRONTBUMPERS},
  284. {"Chrome", 1200, FRONTBUMPERS},
  285. {"Slamin", 1300, FRONTBUMPERS},
  286. {"Chrome", 2200, FRONTBUMPERS},
  287. {"Chrome", 2200, REARBUMPERS},
  288. {"Slamin", 1300, REARBUMPERS}
  289. };
  290.  
  291. new CarMods[][15] = {
  292. {400, 1018, 1019, 1020, 1021, 1013, 1024, 0, 0, 0, 0, 0, 0, 0, 0}, //Landstalker
  293. {401, 1001, 1003, 1004, 1005, 1006, 1013, 1019, 1020, 1007, 1017, 1142, 1143, 1144, 1145}, //Bravura
  294. {404, 1019, 1020, 1021, 1013, 1007, 1017, 1000, 1002, 1016, 0, 0, 0, 0, 0}, //Perenial
  295. {405, 1018, 1019, 1020, 1021, 1000, 1001, 1014, 1023, 0, 0, 0, 0, 0, 0}, //Sentinel
  296. {410, 1019, 1020, 1021, 1013, 1024, 1001, 1003, 1023, 1007, 1017, 0, 0, 0, 0}, //Manana
  297. {415, 1018, 1019, 1001, 1003, 1023, 1007, 1017, 0, 0, 0, 0, 0, 0, 0}, //Cheetah
  298. {418, 1020, 1021, 1006, 1002, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0}, //Moonbeam
  299. {420, 1004, 1005, 1019, 1021, 1001, 1003, 0, 0, 0, 0, 0, 0, 0, 0}, //Taxi
  300. {421, 1018, 1019, 1020, 1021, 1000, 1014, 1016, 1023, 0, 0, 0, 0, 0, 0}, //Washington
  301. {422, 1013, 1019, 1020, 1021, 1007, 1017, 0, 0, 0, 0, 0, 0, 0, 0}, //Bobcat
  302. {426, 1004, 1005, 1019, 1021, 1001, 1003, 1006, 0, 0, 0, 0, 0, 0, 0}, //Premier
  303. {436, 1019, 1020, 1021, 1022, 1006, 1013, 1001, 1003, 1007, 1017, 0, 0, 0, 0}, //Previon
  304. {439, 1142, 1143, 1144, 1145, 1013, 1001, 1003, 1023, 1007, 1017, 0, 0, 0, 0}, //Stallion
  305. {477, 1018, 1019, 1020, 1021, 1006, 1007, 1017, 0, 0, 0, 0, 0, 0, 0}, //ZR-350
  306. {478, 1004, 1005, 1012, 1020, 1021, 1022, 1013, 1024, 0, 0, 0, 0, 0, 0}, //Walton
  307. {489, 1004, 1005, 1018, 1019, 1020, 1013, 1024, 1006, 1000, 1002, 1016, 0, 0, 0}, //Rancher
  308. {491, 1142, 1143, 1144, 1145, 1018, 1019, 1020, 1021, 1003, 1014, 1023, 1007, 1017, 0}, //Virgo
  309. {492, 1004, 1005, 1000, 1006, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0}, //Greenwood
  310. {496, 1001, 1002, 1003, 1006, 1011, 1019, 1020, 1023, 1007, 1017, 1142, 1143, 0, 0}, //Blista Compact
  311. {500, 1019, 1020, 1021, 1013, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0}, //Mesa
  312. {516, 1004, 1018, 1019, 1020, 1021, 1000, 1002, 1015, 1016, 1007, 1017, 0, 0, 0}, //Nebula
  313. {517, 1007, 1017, 1142, 1143, 1144, 1145, 1018, 1019, 1020, 1002, 1003, 1016, 1023, 0}, //Majestic
  314. {518, 1001, 1005, 1006, 1013, 1018, 1020, 1023, 1142, 1143, 1144, 1145, 0, 0, 0}, //Buccaneer
  315. {527, 1018, 1020, 1021, 1001, 1014, 1015, 1007, 1017, 0, 0, 0, 0, 0, 0}, //Cadrona
  316. {529, 1011, 1012, 1018, 1019, 1020, 1006, 1001, 1003, 1023, 1007, 1017, 0, 0, 0}, //Willard
  317. {534, 1100, 1101, 1106, 1122, 1123, 1124, 1125, 1126, 1127, 1178, 1179, 1180, 1185, 0}, //Remington
  318. {535, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 0}, //Slamvan
  319. {536, 1103, 1104, 1105, 1107, 1108, 1128, 1181, 1182, 1183, 1184, 0, 0, 0, 0}, //Blade
  320. {540, 1004, 1142, 1143, 1144, 1145, 1018, 1019, 1020, 1006, 1024, 1001, 1023, 1007, 1017}, //Vincent
  321. {542, 1018, 1019, 1020, 1021, 1014, 1015, 1144, 1145, 0, 0, 0, 0, 0, 0}, //Clover
  322. {546, 1004, 1142, 1143, 1144, 1145, 1018, 1019, 1006, 1024, 1001, 1002, 1023, 1007, 1017}, //Intruder
  323. {547, 1142, 1143, 1018, 1019, 1020, 1021, 1000, 1003, 1016, 0, 0, 0, 0, 0}, //Primo
  324. {549, 1011, 1012, 1142, 1143, 1144, 1145, 1018, 1019, 1020, 1001, 1003, 1023, 1007, 1017}, //Tampa
  325. {550, 1004, 1005, 1142, 1143, 1144, 1145, 1018, 1019, 1020, 1001, 1003, 1023, 1007, 1017}, //Sunrise
  326. {551, 1005, 1006, 1018, 1019, 1020, 1021, 1002, 1003, 1016, 1023, 0, 0, 0, 0}, //Merit
  327. {558, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1163, 1164, 1165, 1168, 0, 0}, //Uranus
  328. {559, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1158, 1159, 1160, 1161, 1162, 1173}, //Jester
  329. {560, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1138, 1139, 1140, 1141, 1169, 1170}, //Sultan
  330. {561, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1154, 1155, 1156, 1157}, //Stratum
  331. {562, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1146, 1147, 1148, 1149, 1171, 1172}, //Elegy
  332. {565, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1150, 1151, 1152, 1153}, //Flash
  333. {567, 1102, 1129, 1130, 1131, 1132, 1133, 1186, 1187, 1188, 1189, 0, 0, 0, 0}, //Savanna
  334. {575, 1042, 1043, 1044, 1099, 1074, 1075, 1076, 1077, 0, 0, 0, 0, 0, 0}, //Broadway
  335. {576, 1134, 1135, 1136, 1137, 1190, 1191, 1192, 1193, 0, 0, 0, 0, 0, 0}, //Tornado
  336. {580, 1018, 1020, 1001, 1006, 1023, 1007, 1017, 0, 0, 0, 0, 0, 0, 0}, //Stafford
  337. {585, 1142, 1143, 1144, 1145, 1018, 1019, 1020, 1013, 1006, 1001, 1003, 1023, 1007, 1017}, //Emperor
  338. {589, 1004, 1005, 1144, 1145, 1018, 1020, 1013, 1024, 1006, 1000, 1016, 1007, 1017, 0}, //Club
  339. {600, 1004, 1005, 1018, 1020, 1022, 1006, 1013, 1007, 1017, 0, 0, 0, 0, 0}, //Picador
  340. {603, 1142, 1143, 1144, 1145, 1018, 1019, 1020, 1013, 1001, 1006, 1023, 1007, 1017, 0} //Phoenix
  341. };
  342.  
  343. public OnFilterScriptInit()
  344. {
  345. TunnerID = -1;
  346. TuneVehicle = -1;
  347.  
  348. TuneHTimer = SetTimer("TuningHandler", 1000, false);
  349.  
  350. print("* Tuning filterscript loaded.");
  351. return 1;
  352. }
  353.  
  354. public OnPlayerDisconnect(playerid)
  355. {
  356. if(TunnerID == playerid)
  357. {
  358. StopPlayerTune(playerid);
  359. }
  360. }
  361.  
  362. public TuningHandler()
  363. {
  364. if(TunnerID == -1)
  365. {
  366. for(new i = 0; i < MAX_PLAYERS; i++)
  367. {
  368. if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
  369. {
  370. new Float:X, Float:Y, Float:Z;
  371. GetVehiclePos(GetPlayerVehicleID(i), X, Y, Z);
  372. for(new t = 0; t < sizeof TuningLocations; t++)
  373. {
  374. if( floatsqroot(
  375. floatpower(X - TuningLocations[t][0], 2) +
  376. floatpower(Y - TuningLocations[t][1], 2) +
  377. floatpower(Z - TuningLocations[t][2], 2))
  378. < 10.0)
  379. {
  380. TuneEntry = t;
  381. ShowTuningMainMenu(i);
  382. break;
  383. }
  384. }
  385. }
  386. }
  387. }
  388. TuneHTimer = SetTimer("TuningHandler", 1000, false);
  389. }
  390.  
  391. stock ShowTuningMainMenu(playerid)
  392. {
  393. if(TunnerID != playerid)
  394. {
  395. if(!IsPlayerInAnyVehicle(playerid))
  396. {
  397. SendClientMessage(playerid, 0xE1E2E7AA, "You're not in a vehicle.");
  398. return 1;
  399. }
  400. if(TunnerID != -1 && TunnerID != playerid)
  401. {
  402. SendClientMessage(playerid, 0xE1E2E7AA, "There is someone modifying a vehicle, wait...");
  403. return 1;
  404. }
  405. new modelid = GetVehicleModel(GetPlayerVehicleID(playerid));
  406. if(modelid == 509 || modelid == 581 || modelid == 481 || modelid == 462 || modelid == 521 || modelid == 463 || modelid == 510
  407. || modelid == 522 || modelid == 461 || modelid == 448 || modelid == 468 || modelid == 586 || modelid == 523 || modelid == 520
  408. || modelid == 435 || modelid == 450 || modelid == 591 || modelid == 606 || modelid == 607 || modelid == 610 || modelid == 584
  409. || modelid == 608 || modelid == 611 || modelid == 472 || modelid == 473 || modelid == 493 || modelid == 595 || modelid == 484
  410. || modelid == 453 || modelid == 452 || modelid == 446 || modelid == 454 || modelid == 539 || modelid == 538 || modelid == 537
  411. || modelid == 590 || modelid == 569 || modelid == 570 || modelid == 449 || modelid == 441 || modelid == 464 || modelid == 594
  412. || modelid == 501 || modelid == 465 || modelid == 564)
  413. {
  414. SendClientMessage(playerid, 0xE1E2E7AA, "This vehicle cannot be modified.");
  415. return 1;
  416. }
  417. TunnerID = playerid;
  418. TuneVehicle = GetPlayerVehicleID(playerid);
  419. InitPlayerTune(playerid);
  420. }
  421. new modelid = GetVehicleModel(TuneVehicle);
  422. new count = 0;
  423. DestroyMenu(mTuning);
  424. mTuning = CreateMenu("Components", 2, 2, 150, 100, 20);
  425. if(!IsValidMenu(mTuning)) return 0;
  426. if(modelid == 536 || modelid == 575 || modelid == 576 || modelid == 534 || modelid == 535 || modelid == 567 || modelid == 562
  427. || modelid == 565 || modelid == 558 || modelid == 559 || modelid == 560 || modelid == 561)
  428. {
  429. AddMenuItem(mTuning, 0, "Paintjob");
  430. Tunes[count++] = PAINTJOBS;
  431. }
  432. for(new m = 0; m < sizeof CarMods; m++)
  433. {
  434. if(CarMods[m][0] == modelid)
  435. {
  436. for(new t = 1; t < 15; t++)
  437. {
  438. new slot = GetComponentSlot(CarMods[m][t]);
  439. if(CarMods[m][t] > 999 && CarMods[m][t] < 1194 && slot != WHEELS && slot != NITROS && slot != STEREO && slot != HYDRAULICS)
  440. {
  441. new bool:add = false;
  442. for(new c = 0; c < count; c++)
  443. {
  444. if(slot == Tunes[c])
  445. {
  446. add = true;
  447. }
  448. }
  449. if(!add)
  450. {
  451. if(slot == SPOILERS)
  452. {
  453. AddMenuItem(mTuning, 0, "Spoiler");
  454. Tunes[count++] = SPOILERS;
  455. }
  456. else if(slot == ROOFSCOOPS)
  457. {
  458. AddMenuItem(mTuning, 0, "Roofscoop");
  459. Tunes[count++] = ROOFSCOOPS;
  460. }
  461. else if(slot == HOODS)
  462. {
  463. AddMenuItem(mTuning, 0, "Hood");
  464. Tunes[count++] = HOODS;
  465. }
  466. else if(slot == SIDESKIRTS)
  467. {
  468. AddMenuItem(mTuning, 0, "Sideskirt");
  469. Tunes[count++] = SIDESKIRTS;
  470. }
  471. else if(slot == LAMPS)
  472. {
  473. AddMenuItem(mTuning, 0, "Lamp");
  474. Tunes[count++] = LAMPS;
  475. }
  476. else if(slot == EXHAUSTS)
  477. {
  478. AddMenuItem(mTuning, 0, "Exhausts");
  479. Tunes[count++] = EXHAUSTS;
  480. }
  481. else if(slot == BULLBARS)
  482. {
  483. AddMenuItem(mTuning, 0, "Bullbars");
  484. Tunes[count++] = BULLBARS;
  485. }
  486. else if(slot == REARBULLBARS)
  487. {
  488. AddMenuItem(mTuning, 0, "Rear bullbars");
  489. Tunes[count++] = REARBULLBARS;
  490. }
  491. else if(slot == FRONTBULLBARS)
  492. {
  493. AddMenuItem(mTuning, 0, "Front bullbars");
  494. Tunes[count++] = FRONTBULLBARS;
  495. }
  496. else if(slot == FRONTBUMPERS)
  497. {
  498. AddMenuItem(mTuning, 0, "Front bumpers");
  499. Tunes[count++] = FRONTBUMPERS;
  500. }
  501. else if(slot == REARBUMPERS)
  502. {
  503. AddMenuItem(mTuning, 0, "Rear bumpers");
  504. Tunes[count++] = REARBUMPERS;
  505. }
  506. else if(slot == VENTS)
  507. {
  508. AddMenuItem(mTuning, 0, "Vents");
  509. Tunes[count++] = VENTS;
  510. }
  511. else if(slot == FRONTSIGN)
  512. {
  513. AddMenuItem(mTuning, 0, "Front sign");
  514. Tunes[count++] = FRONTSIGN;
  515. }
  516. }
  517. }
  518. }
  519. break;
  520. }
  521. }
  522. AddMenuItem(mTuning, 0, "Wheels");
  523. Tunes[count++] = WHEELS;
  524. AddMenuItem(mTuning, 0, "Nitro");
  525. Tunes[count++] = NITROS;
  526. AddMenuItem(mTuning, 0, "Stereo");
  527. Tunes[count++] = STEREO;
  528. AddMenuItem(mTuning, 0, "Hydraulic");
  529. Tunes[count++] = HYDRAULICS;
  530. AddMenuItem(mTuning, 0, "Cancel");
  531. for(new ct = count; ct < 17; ct++)
  532. {
  533. Tunes[ct] = -1;
  534. }
  535. ShowMenuForPlayer(mTuning, playerid);
  536. TogglePlayerControllable(playerid, false);
  537. return 1;
  538. }
  539.  
  540. stock InitPlayerTune(playerid)
  541. {
  542. PlayerPlaySound(playerid, 1183, 0, 0, 0);
  543. SetPlayerInterior(playerid, 1);
  544. LinkVehicleToInterior(TuneVehicle, 1);
  545. SetPlayerPos(playerid, 608.7222, -24.7236, 1000.9203);
  546. SetPlayerFacingAngle(playerid, 0.0);
  547. SetVehiclePos(TuneVehicle, 615.0339, -3.8868, 1001.0250);
  548. SetVehicleZAngle(TuneVehicle, 270.2918);
  549. TogglePlayerControllable(playerid, false);
  550. TuneTimer = SetTimer("UpdateTuneCamera", 100, false);
  551. }
  552.  
  553. stock StopPlayerTune(playerid)
  554. {
  555. PlayerPlaySound(playerid, 1184, 0, 0, 0);
  556. KillTimer(TuneTimer);
  557. KillTimer(TuneHTimer);
  558. SetPlayerInterior(playerid, 0);
  559. LinkVehicleToInterior(TuneVehicle, 0);
  560. PutPlayerInVehicle(playerid, TuneVehicle, 0);
  561. SetVehiclePos(TuneVehicle, TuningLocations[TuneEntry][0], TuningLocations[TuneEntry][1], TuningLocations[TuneEntry][2]);
  562. TunnerID = -1;
  563. TuneVehicle = -1;
  564. SetCameraBehindPlayer(playerid);
  565. TogglePlayerControllable(playerid, true);
  566. TuneHTimer = SetTimer("TuningHandler", 15000, false);
  567. }
  568.  
  569. public UpdateTuneCamera()
  570. {
  571. KillTimer(TuneTimer);
  572. if(TuneVehicle == -1 || TunnerID == -1) return ;
  573. new Float:vPos[3], Float:dis;
  574. GetVehiclePos(TuneVehicle, vPos[0], vPos[1], vPos[2]);
  575. new Float:X = 615.0339, Float:Y = -3.8868, Float:Z = 1001.0250, Float:fX, Float:fY, Float:ang;
  576. dis += floatpower(vPos[0] - X, 2);
  577. dis += floatpower(vPos[1] - Y, 2);
  578. dis += floatpower(vPos[2] - Z, 2);
  579. dis = floatsqroot(dis);
  580. if(GetPlayerInterior(TunnerID) != 1 || dis > 3)
  581. {
  582. SetPlayerInterior(TunnerID, 1);
  583. LinkVehicleToInterior(TuneVehicle, 1);
  584. SetPlayerPos(TunnerID, 608.7222, -24.7236, 1000.9203);
  585. SetVehiclePos(TuneVehicle, X, Y, Z);
  586. SetVehicleZAngle(TuneVehicle, 270.2918);
  587. TogglePlayerControllable(TunnerID, false);
  588. }
  589. GetPlayerFacingAngle(TunnerID, ang);
  590. fX = X + (7.5 * floatsin(-ang, degrees));
  591. fY = Y + (7.5 * floatcos(-ang, degrees));
  592. SetPlayerCameraPos(TunnerID, fX, fY, Z + 1.0);
  593. SetPlayerCameraLookAt(TunnerID, X, Y, Z);
  594. SetPlayerFacingAngle(TunnerID, ang + 0.3);
  595. TuneTimer = SetTimer("UpdateTuneCamera", 5, false);
  596. }
  597.  
  598. stock ShowPaintjobCostMenu(playerid, paintjobid)
  599. {
  600. ChangeVehiclePaintjob(TuneVehicle, paintjobid);
  601. DestroyMenu(mCost);
  602. mCost = CreateMenu(" ", 2, 2, 150, 100, 20);
  603. AddMenuItem(mCost, 0, "Paintjob");
  604. AddMenuItem(mCost, 1, "$1000");
  605. ShowMenuForPlayer(mCost, playerid);
  606. TogglePlayerControllable(playerid, false);
  607. TuneComponent = paintjobid;
  608. IsPaintJob = true;
  609. }
  610.  
  611. stock ShowTuningCostMenu(playerid, componentid)
  612. {
  613. AddVehicleComponent(TuneVehicle, componentid);
  614. DestroyMenu(mCost);
  615. mCost = CreateMenu(" ", 2, 2, 150, 100, 20);
  616. AddMenuItem(mCost, 0, Components[componentid - 1000][tuneName]);
  617. new s[32];
  618. format(s, 32, "$%d", GetComponentValue(componentid));
  619. AddMenuItem(mCost, 1, s);
  620. AddMenuItem(mCost, 0, "Cancel");
  621. ShowMenuForPlayer(mCost, playerid);
  622. TogglePlayerControllable(playerid, false);
  623. TuneComponent = componentid;
  624. IsPaintJob = false;
  625. }
  626.  
  627. stock LoadTuning(vehicleid)
  628. {
  629. for(new s = 0; s < 17; s++)
  630. {
  631. if(VehicleTuning[vehicleid][tun][s] != 0)
  632. {
  633. AddVehicleComponent(vehicleid, VehicleTuning[vehicleid][tun][s]);
  634. }
  635. }
  636. RemoveVehiclePaintjob(vehicleid);
  637. if(VehicleTuning[vehicleid][pjobid] == 0)
  638. {
  639. ChangeVehiclePaintjob(vehicleid, VehicleTuning[vehicleid][pjobid] - 1);
  640. }
  641. }
  642.  
  643. stock SaveComponent(vehicleid, componentid)
  644. {
  645. VehicleTuning[vehicleid][tun][GetComponentSlot(componentid)] = componentid;
  646. LoadTuning(vehicleid);
  647. }
  648.  
  649. stock SavePaintjob(vehicleid, paintjobid)
  650. {
  651. VehicleTuning[vehicleid][pjobid] = paintjobid + 1;
  652. }
  653.  
  654. stock GetComponent(vehicleid, slot)
  655. {
  656. return VehicleTuning[vehicleid][tun][slot];
  657. }
  658.  
  659. stock RemoveVehiclePaintjob(vehicleid)
  660. {
  661. ChangeVehiclePaintjob(vehicleid, -1);
  662. CallRemoteFunction("OnVehicleRemovePaintjob", "d", vehicleid);
  663. }
  664.  
  665. stock GetComponentValue(componentid)
  666. {
  667. if(componentid < 1000 || componentid > 1193) return 0;
  668. return Components[componentid - 1000][tuneValue];
  669. }
  670.  
  671. stock GetComponentSlot(componentid)
  672. {
  673. if(componentid < 1000 || componentid > 1193) return -1;
  674. return Components[componentid - 1000][tuneSlot];
  675. }
  676.  
  677. public OnPlayerSelectedMenuRow(playerid, row)
  678. {
  679. if(GetPlayerMenu(playerid) == mCurrentTune)
  680. {
  681. if(RowComponents[row] == 500)
  682. {
  683. DestroyMenu(mCurrentTune);
  684. mCurrentTune = CreateMenu("Components", 2, 2, 150, 100, 20);
  685. new w = 0, count = 0;
  686. for(new t = 0; t < sizeof Components; t++)
  687. {
  688. if(Components[t][tuneSlot] == WHEELS)
  689. {
  690. w++;
  691. if(w > 10)
  692. {
  693. AddMenuItem(mCurrentTune, 0, Components[t][tuneName]);
  694. AddMenuItem(mCurrentTune, 1, " ");
  695. RowComponents[count++] = t + 1000;
  696. }
  697. }
  698. }
  699. AddMenuItem(mCurrentTune, 0, "Previous");
  700. AddMenuItem(mCurrentTune, 1, "<-");
  701. RowComponents[count++] = 499;
  702. ShowMenuForPlayer(mCurrentTune, playerid);
  703. TogglePlayerControllable(playerid, false);
  704. }
  705. else if(RowComponents[row] == 499)
  706. {
  707. DestroyMenu(mCurrentTune);
  708. mCurrentTune = CreateMenu("Components", 2, 2, 150, 100, 20);
  709. new w = 0, count = 0;
  710. for(new t = 0; t < sizeof Components; t++)
  711. {
  712. if(Components[t][tuneSlot] == WHEELS)
  713. {
  714. AddMenuItem(mCurrentTune, 0, Components[t][tuneName]);
  715. AddMenuItem(mCurrentTune, 1, " ");
  716. RowComponents[count++] = t + 1000;
  717. w++;
  718. if(w >= 10)
  719. {
  720. AddMenuItem(mCurrentTune, 0, "Next");
  721. AddMenuItem(mCurrentTune, 1, "->");
  722. RowComponents[count++] = 500;
  723. break;
  724. }
  725. }
  726. }
  727. ShowMenuForPlayer(mCurrentTune, playerid);
  728. TogglePlayerControllable(playerid, false);
  729. }
  730. else
  731. {
  732. if(!IsPaintJob)
  733. {
  734. ShowTuningCostMenu(playerid, RowComponents[row]);
  735. }
  736. else
  737. {
  738. ShowPaintjobCostMenu(playerid, RowComponents[row]);
  739. }
  740. }
  741. return 1;
  742. }
  743. if(GetPlayerMenu(playerid) == mCost)
  744. {
  745. switch(row)
  746. {
  747. case 0:
  748. {
  749. if(!IsPaintJob)
  750. {
  751. if(GetComponent(TuneVehicle, Components[TuneComponent - 1000][tuneSlot]) == TuneComponent)
  752. {
  753. SendClientMessage(playerid, 0xE1E2E7AA, "This car already have this component.");
  754. ShowTuningMainMenu(playerid);
  755. return 1;
  756. }
  757. if(GetPlayerMoney(playerid) < Components[TuneComponent - 1000][tuneValue])
  758. {
  759. SendClientMessage(playerid, 0xE1E2E7AA, "You don't have money.");
  760. RemoveVehicleComponent(TuneVehicle, TuneComponent);
  761. LoadTuning(TuneVehicle);
  762. ShowTuningMainMenu(playerid);
  763. return 1;
  764. }
  765. AddVehicleComponent(TuneVehicle, TuneComponent);
  766. SaveComponent(TuneVehicle, TuneComponent);
  767. GivePlayerMoney(playerid, -Components[TuneComponent - 1000][tuneValue]);
  768. CallRemoteFunction("OnVehicleTuned", "ddd", TuneVehicle, TuneComponent, GetComponentSlot(TuneComponent));
  769. ShowTuningMainMenu(playerid);
  770. TogglePlayerControllable(playerid, false);
  771. return 1;
  772. }
  773. else
  774. {
  775. if(GetPlayerMoney(playerid) < 1000)
  776. {
  777. SendClientMessage(playerid, 0xE1E2E7AA, "You don't have money.");
  778. RemoveVehiclePaintjob(TuneVehicle);
  779. LoadTuning(TuneVehicle);
  780. ShowTuningMainMenu(playerid);
  781. return 1;
  782. }
  783. IsPaintJob = false;
  784. ChangeVehiclePaintjob(TuneVehicle, TuneComponent);
  785. SavePaintjob(TuneVehicle, TuneComponent);
  786. GivePlayerMoney(playerid, -1000);
  787. ShowTuningMainMenu(playerid);
  788. TogglePlayerControllable(playerid, false);
  789. return 1;
  790. }
  791. }
  792. case 1:
  793. {
  794. if(!IsPaintJob)
  795. {
  796. RemoveVehicleComponent(TuneVehicle, TuneComponent);
  797. ShowTuningMainMenu(playerid);
  798. TogglePlayerControllable(playerid, false);
  799. LoadTuning(TuneVehicle);
  800. return 1;
  801. }
  802. else
  803. {
  804. IsPaintJob = false;
  805. ShowTuningMainMenu(playerid);
  806. TogglePlayerControllable(playerid, false);
  807. LoadTuning(TuneVehicle);
  808. return 1;
  809. }
  810. }
  811. }
  812. }
  813. if(GetPlayerMenu(playerid) == mTuning)
  814. {
  815. if(Tunes[row] == -1 || TuneVehicle == -1)
  816. {
  817. StopPlayerTune(playerid);
  818. return 1;
  819. }
  820. DestroyMenu(mCurrentTune);
  821. mCurrentTune = CreateMenu("Componentes", 2, 2, 150, 100, 20);
  822. if(!IsValidMenu(mCurrentTune))
  823. {
  824. StopPlayerTune(playerid);
  825. return 1;
  826. }
  827. new count = 0;
  828. new slot = Tunes[row];
  829. if(slot == WHEELS)
  830. {
  831. new w = 0;
  832. for(new t = 0; t < sizeof Components; t++)
  833. {
  834. if(Components[t][tuneSlot] == slot)
  835. {
  836. AddMenuItem(mCurrentTune, 0, Components[t][tuneName]);
  837. AddMenuItem(mCurrentTune, 1, " ");
  838. RowComponents[count++] = t + 1000;
  839. w++;
  840. if(w >= 10)
  841. {
  842. AddMenuItem(mCurrentTune, 0, "Next");
  843. AddMenuItem(mCurrentTune, 1, "->");
  844. RowComponents[count++] = 500;
  845. break;
  846. }
  847. }
  848. }
  849. }
  850. else if(slot == NITROS || slot == STEREO || slot == HYDRAULICS)
  851. {
  852. for(new t = 0; t < sizeof Components; t++)
  853. {
  854. if(Components[t][tuneSlot] == slot)
  855. {
  856. AddMenuItem(mCurrentTune, 0, Components[t][tuneName]);
  857. RowComponents[count++] = t + 1000;
  858. }
  859. }
  860. IsPaintJob = false;
  861. }
  862. else if(slot == PAINTJOBS)
  863. {
  864. AddMenuItem(mCurrentTune, 0, "Paintjob 1");
  865. RowComponents[count++] = 0;
  866. AddMenuItem(mCurrentTune, 0, "Paintjob 2");
  867. RowComponents[count++] = 1;
  868. AddMenuItem(mCurrentTune, 0, "Paintjob 3");
  869. RowComponents[count++] = 2;
  870. IsPaintJob = true;
  871. }
  872. else
  873. {
  874. new modelid = GetVehicleModel(TuneVehicle);
  875. for(new m = 0; m < sizeof CarMods; m++)
  876. {
  877. if(CarMods[m][0] == modelid)
  878. {
  879. for(new t = 1; t < 15; t++)
  880. {
  881. new comp = CarMods[m][t];
  882. if(comp < 1000 || comp > 1193) break;
  883. if(Components[comp - 1000][tuneSlot] == slot)
  884. {
  885. new bool:issimilar = false;
  886. for(new c = 0; c < count; c++)
  887. {
  888. if(!issimilar)
  889. {
  890. if(RowComponents[c] == comp)
  891. {
  892. issimilar = true;
  893. }
  894. else
  895. {
  896. for(new s = 0; s < sizeof SimilarComponents; s++)
  897. {
  898. if((SimilarComponents[s][0] == comp || SimilarComponents[s][1] == comp) && (SimilarComponents[s][0] == RowComponents[c] || SimilarComponents[s][1] == RowComponents[c]))
  899. {
  900. issimilar = true;
  901. }
  902. }
  903. }
  904. }
  905. }
  906. if(!issimilar)
  907. {
  908. AddMenuItem(mCurrentTune, 0, Components[comp - 1000][tuneName]);
  909. RowComponents[count++] = comp;
  910. }
  911. }
  912. }
  913. break;
  914. }
  915. }
  916. IsPaintJob = false;
  917. }
  918. if(count < 1)
  919. {
  920. StopPlayerTune(playerid);
  921. return 1;
  922. }
  923. ShowMenuForPlayer(mCurrentTune, playerid);
  924. TogglePlayerControllable(playerid, false);
  925. }
  926. return 1;
  927. }
  928.  
  929. public OnPlayerExitedMenu(playerid)
  930. {
  931. if(GetPlayerMenu(playerid) == mCost || GetPlayerMenu(playerid) == mCurrentTune)
  932. {
  933. new Float:x, Float:y, Float:z;
  934. GetVehiclePos(TuneVehicle, x, y, z);
  935. if(!IsPaintJob)
  936. {
  937. RemoveVehicleComponent(TuneVehicle, TuneComponent);
  938. }
  939. IsPaintJob = false;
  940. TogglePlayerControllable(playerid, false);
  941. ShowTuningMainMenu(playerid);
  942. LoadTuning(TuneVehicle);
  943. return 1;
  944. }
  945. if(GetPlayerMenu(playerid) == mTuning)
  946. {
  947. StopPlayerTune(playerid);
  948. }
  949. return 1;
  950. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement