Oblivion_UFF

AVS NEW Textdraw

Sep 15th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 147.09 KB | None | 0 0
  1. //==========================================================
  2. // Advanced Vehicle System version 1.0 by MadeMan
  3. //==========================================================
  4.  
  5. #define FILTERSCRIPT
  6.  
  7. #include <a_samp>
  8. #include <eDistance>
  9. //=========================SETTINGS=========================
  10.  
  11. #undef MAX_PLAYERS
  12. #define MAX_PLAYERS 100
  13. #define MAXZN 28
  14. #define MAX_DVEHICLES 200
  15. #define MAX_DEALERSHIPS 10
  16. #define MAX_FUEL_STATIONS 10
  17.  
  18. #define VEHICLE_FILE_PATH "AVS/Vehicles/"
  19. #define DEALERSHIP_FILE_PATH "AVS/Dealerships/"
  20. #define FUEL_STATION_FILE_PATH "AVS/FuelStations/"
  21.  
  22. #define MAX_PLAYER_VEHICLES 3
  23. #define FUEL_PRICE 5
  24. #define GAS_CAN_PRICE 500
  25. #define ALARM_TIME 10000 // alarm duration in milliseconds (1 second = 1000 milliseconds)
  26. #define DEFAULT_NUMBER_PLATE "123 ABC"
  27.  
  28. //==========================================================
  29.  
  30. #define COLOR_BLACK 0x000000FF
  31. #define COLOR_RED 0xEE0000FF
  32. #define COLOR_GREEN 0x00CC00FF
  33. #define COLOR_BLUE 0x0000FFFF
  34. #define COLOR_ORANGE 0xFF6600FF
  35. #define COLOR_YELLOW 0xFFFF00FF
  36. #define COLOR_LIGHTBLUE 0x00FFFFFF
  37. #define COLOR_PURPLE 0xC2A2DAFF
  38. #define COLOR_GREY 0xC0C0C0FF
  39. #define COLOR_WHITE 0xFFFFFFFF
  40.  
  41. #define VEHICLE_DEALERSHIP 1
  42. #define VEHICLE_PLAYER 2
  43.  
  44. #define CMD:%1(%2) \
  45. forward cmd_%1(%2); \
  46. public cmd_%1(%2)
  47.  
  48. #define ShowErrorDialog(%1,%2) ShowPlayerDialog(%1, DIALOG_ERROR, DIALOG_STYLE_MSGBOX, "ERROR", %2, "OK", "")
  49.  
  50. enum
  51. {
  52. DIALOG_NONE=12345,
  53. DIALOG_ERROR=12346,
  54. DIALOG_VEHICLE=500,
  55. DIALOG_VEHICLE_BUY,
  56. DIALOG_VEHICLE_SELL,
  57. DIALOG_FINDVEHICLE,
  58. DIALOG_TRUNK,
  59. DIALOG_TRUNK_ACTION,
  60. DIALOG_VEHICLE_PLATE,
  61. DIALOG_FUEL,
  62. DIALOG_EDITVEHICLE
  63. };
  64.  
  65. new maintimer;
  66. new speedotimer;
  67. new savetimer;
  68.  
  69. new SaveVehicleIndex;
  70.  
  71. new RefuelTime[MAX_PLAYERS];
  72. new TrackCar[MAX_PLAYERS];
  73. new DialogReturn[MAX_PLAYERS];
  74.  
  75. //Textdraws ---
  76. new PlayerText: speedo[MAX_PLAYERS];
  77. new PlayerText: kmh[MAX_PLAYERS];
  78. new Text: veh[MAX_PLAYERS];
  79. new Text: vehname[MAX_PLAYERS];
  80. new Text: hp[MAX_PLAYERS];
  81. new Text: hpcol[MAX_PLAYERS];
  82. new Text: box[MAX_PLAYERS];
  83. new PlayerText: box2[MAX_PLAYERS];
  84. new PlayerText: box3[MAX_PLAYERS];
  85. new Text: Textdraw12[MAX_PLAYERS];
  86. new Text: Textdraw13[MAX_PLAYERS];
  87. new Text: Textdraw14[MAX_PLAYERS];
  88. new Text: Textdraw15[MAX_PLAYERS];
  89. new Text: Textdraw6[MAX_PLAYERS];
  90. new Text: Textdraw7[MAX_PLAYERS];
  91. new PlayerText:box11[MAX_PLAYERS];
  92.  
  93. enum
  94. SAZonas
  95. {
  96. Zona_Nomes[28],
  97. Float:Zona_Coords[6]
  98. };
  99. new ZoneSA[MAXZN];
  100.  
  101. static const ZonaLS[][SAZonas] =
  102. {
  103. {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
  104. {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
  105. {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
  106. {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
  107. {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
  108. {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
  109. {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
  110. {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
  111. {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
  112. {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
  113. {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
  114. {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
  115. {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
  116. {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
  117. {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
  118. {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
  119. {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
  120. {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
  121. {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
  122. {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
  123. {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
  124. {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
  125. {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
  126. {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
  127. {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
  128. {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
  129. {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
  130. {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
  131. {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
  132. {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
  133. {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
  134. {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
  135. {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
  136. {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
  137. {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
  138. {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
  139. {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
  140. {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
  141. {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
  142. {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
  143. {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
  144. {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
  145. {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
  146. {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
  147. {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
  148. {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
  149. {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
  150. {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
  151. {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
  152. {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
  153. {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
  154. {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
  155. {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
  156. {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
  157. {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
  158. {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
  159. {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
  160. {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
  161. {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
  162. {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
  163. {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
  164. {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
  165. {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
  166. {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
  167. {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
  168. {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
  169. {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
  170. {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
  171. {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
  172. {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
  173. {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
  174. {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
  175. {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
  176. {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
  177. {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
  178. {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
  179. {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
  180. {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
  181. {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
  182. {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
  183. {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
  184. {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
  185. {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
  186. {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
  187. {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
  188. {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
  189. {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
  190. {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
  191. {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
  192. {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
  193. {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
  194. {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
  195. {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
  196. {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
  197. {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
  198. {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
  199. {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
  200. {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
  201. {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
  202. {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
  203. {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
  204. {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
  205. {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
  206. {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
  207. {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
  208. {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
  209. {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
  210. {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
  211. {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
  212. {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
  213. {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
  214. {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
  215. {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
  216. {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
  217. {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
  218. {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
  219. {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
  220. {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
  221. {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
  222. {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
  223. {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
  224. {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
  225. {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
  226. {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
  227. {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
  228. {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
  229. {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
  230. {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
  231. {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
  232. {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
  233. {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
  234. {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
  235. {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
  236. {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
  237. {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
  238. {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
  239. {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
  240. {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
  241. {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
  242. {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
  243. {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
  244. {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
  245. {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
  246. {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
  247. {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
  248. {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
  249. {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
  250. {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
  251. {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
  252. {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
  253. {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
  254. {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
  255. {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
  256. {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
  257. {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
  258. {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
  259. {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
  260. {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
  261. {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
  262. {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
  263. {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
  264. {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
  265. {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
  266. {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
  267. {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
  268. {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
  269. {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
  270. {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
  271. {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
  272. {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
  273. {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
  274. {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
  275. {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
  276. {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
  277. {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
  278. {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
  279. {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
  280. {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
  281. {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
  282. {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
  283. {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
  284. {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
  285. {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
  286. {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
  287. {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
  288. {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
  289. {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
  290. {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
  291. {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
  292. {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
  293. {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
  294. {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
  295. {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
  296. {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
  297. {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
  298. {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
  299. {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
  300. {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
  301. {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
  302. {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
  303. {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
  304. {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
  305. {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
  306. {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
  307. {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
  308. {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
  309. {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
  310. {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
  311. {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
  312. {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
  313. {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
  314. {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
  315. {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
  316. {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
  317. {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
  318. {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
  319. {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
  320. {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
  321. {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
  322. {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
  323. {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
  324. {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
  325. {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
  326. {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
  327. {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
  328. {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
  329. {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
  330. {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
  331. {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
  332. {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
  333. {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
  334. {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
  335. {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
  336. {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
  337. {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
  338. {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
  339. {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
  340. {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
  341. {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
  342. {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
  343. {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
  344. {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
  345. {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
  346. {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
  347. {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
  348. {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
  349. {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
  350. {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
  351. {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
  352. {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
  353. {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
  354. {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
  355. {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
  356. {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
  357. {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
  358. {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
  359. {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
  360. {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
  361. {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
  362. {"Randolph Industrial Estate", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
  363. {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
  364. {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
  365. {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
  366. {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
  367. {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
  368. {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
  369. {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
  370. {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
  371. {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
  372. {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
  373. {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
  374. {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
  375. {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
  376. {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
  377. {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
  378. {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
  379. {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
  380. {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
  381. {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
  382. {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
  383. {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
  384. {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
  385. {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
  386. {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
  387. {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
  388. {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
  389. {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
  390. {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
  391. {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
  392. {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
  393. {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
  394. {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
  395. {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
  396. {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
  397. {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
  398. {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
  399. {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
  400. {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
  401. {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
  402. {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
  403. {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
  404. {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
  405. {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
  406. {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
  407. {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
  408. {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
  409. {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
  410. {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
  411. {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
  412. {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
  413. {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
  414. {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
  415. {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
  416. {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
  417. {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
  418. {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
  419. {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
  420. {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
  421. {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
  422. {"The Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
  423. {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
  424. {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
  425. {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
  426. {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
  427. {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
  428. {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
  429. {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
  430. {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
  431. {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
  432. {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
  433. {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
  434. {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
  435. {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
  436. {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
  437. {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
  438. {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
  439. {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
  440. {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
  441. {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
  442. {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
  443. {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
  444. {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
  445. {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
  446. {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
  447. {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
  448. {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
  449. {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
  450. {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
  451. {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
  452. {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
  453. {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
  454. {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
  455. {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
  456. {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
  457. {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
  458. {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
  459. {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
  460. {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
  461. {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
  462. {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
  463. {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
  464. {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
  465. {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
  466. {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
  467. {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
  468. };
  469.  
  470. new Float:Fuel[MAX_VEHICLES] = {100.0, ...};
  471. new VehicleSecurity[MAX_VEHICLES];
  472.  
  473. new VehicleCreated[MAX_DVEHICLES];
  474. new VehicleID[MAX_DVEHICLES];
  475. new VehicleModel[MAX_DVEHICLES];
  476. new Float:VehiclePos[MAX_DVEHICLES][4];
  477. new VehicleColor[MAX_DVEHICLES][2];
  478. new VehicleInterior[MAX_DVEHICLES];
  479. new VehicleWorld[MAX_DVEHICLES];
  480. new VehicleOwner[MAX_DVEHICLES][MAX_PLAYER_NAME];
  481. new VehicleNumberPlate[MAX_DVEHICLES][16];
  482. new VehicleValue[MAX_DVEHICLES];
  483. new VehicleLock[MAX_DVEHICLES];
  484. new VehicleAlarm[MAX_DVEHICLES];
  485. new VehicleTrunk[MAX_DVEHICLES][5][2];
  486. new VehicleMods[MAX_DVEHICLES][14];
  487. new VehiclePaintjob[MAX_DVEHICLES] = {255, ...};
  488. new Text3D:VehicleLabel[MAX_DVEHICLES];
  489.  
  490. new DealershipCreated[MAX_DEALERSHIPS];
  491. new Float:DealershipPos[MAX_DEALERSHIPS][3];
  492. new Text3D:DealershipLabel[MAX_DEALERSHIPS];
  493.  
  494. new FuelStationCreated[MAX_FUEL_STATIONS];
  495. new Float:FuelStationPos[MAX_FUEL_STATIONS][3];
  496. new Text3D:FuelStationLabel[MAX_FUEL_STATIONS];
  497.  
  498. new VehicleNames[][] = {
  499. "Landstalker","Bravura","Buffalo","Linerunner","Perennial","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
  500. "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
  501. "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
  502. "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
  503. "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
  504. "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
  505. "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
  506. "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
  507. "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
  508. "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
  509. "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
  510. "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
  511. "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
  512. "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
  513. "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
  514. "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
  515. "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
  516. };
  517.  
  518. enum MainZone
  519. {
  520. Zone_Name[28],
  521. Float:Zone_Area[6]
  522. }
  523.  
  524. static const SanAndreasZones[][MainZone] = {
  525.  
  526. {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
  527. {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
  528. {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
  529. {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
  530. {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
  531. {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
  532. {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
  533. {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
  534. {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
  535. {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
  536. {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
  537. {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
  538. {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
  539. {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
  540. {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
  541. {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
  542. {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
  543. {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
  544. {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
  545. {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
  546. {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
  547. {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
  548. {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
  549. {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
  550. {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
  551. {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
  552. {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
  553. {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
  554. {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
  555. {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
  556. {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
  557. {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
  558. {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
  559. {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
  560. {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
  561. {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
  562. {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
  563. {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
  564. {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
  565. {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
  566. {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
  567. {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
  568. {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
  569. {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
  570. {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
  571. {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
  572. {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
  573. {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
  574. {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
  575. {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
  576. {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
  577. {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
  578. {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
  579. {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
  580. {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
  581. {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
  582. {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
  583. {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
  584. {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
  585. {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
  586. {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
  587. {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
  588. {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
  589. {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
  590. {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
  591. {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
  592. {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
  593. {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
  594. {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
  595. {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
  596. {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
  597. {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
  598. {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
  599. {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
  600. {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
  601. {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
  602. {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
  603. {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
  604. {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
  605. {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
  606. {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
  607. {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
  608. {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
  609. {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
  610. {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
  611. {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
  612. {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
  613. {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
  614. {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
  615. {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
  616. {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
  617. {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
  618. {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
  619. {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
  620. {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
  621. {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
  622. {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
  623. {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
  624. {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
  625. {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
  626. {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
  627. {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
  628. {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
  629. {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
  630. {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
  631. {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
  632. {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
  633. {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
  634. {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
  635. {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
  636. {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
  637. {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
  638. {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
  639. {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
  640. {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
  641. {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
  642. {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
  643. {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
  644. {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
  645. {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
  646. {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
  647. {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
  648. {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
  649. {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
  650. {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
  651. {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
  652. {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
  653. {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
  654. {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
  655. {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
  656. {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
  657. {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
  658. {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
  659. {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
  660. {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
  661. {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
  662. {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
  663. {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
  664. {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
  665. {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
  666. {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
  667. {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
  668. {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
  669. {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
  670. {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
  671. {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
  672. {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
  673. {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
  674. {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
  675. {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
  676. {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
  677. {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
  678. {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
  679. {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
  680. {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
  681. {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
  682. {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
  683. {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
  684. {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
  685. {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
  686. {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
  687. {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
  688. {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
  689. {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
  690. {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
  691. {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
  692. {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
  693. {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
  694. {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
  695. {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
  696. {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
  697. {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
  698. {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
  699. {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
  700. {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
  701. {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
  702. {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
  703. {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
  704. {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
  705. {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
  706. {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
  707. {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
  708. {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
  709. {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
  710. {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
  711. {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
  712. {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
  713. {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
  714. {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
  715. {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
  716. {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
  717. {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
  718. {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
  719. {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
  720. {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
  721. {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
  722. {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
  723. {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
  724. {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
  725. {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
  726. {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
  727. {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
  728. {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
  729. {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
  730. {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
  731. {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
  732. {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
  733. {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
  734. {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
  735. {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
  736. {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
  737. {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
  738. {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
  739. {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
  740. {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
  741. {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
  742. {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
  743. {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
  744. {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
  745. {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
  746. {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
  747. {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
  748. {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
  749. {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
  750. {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
  751. {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
  752. {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
  753. {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
  754. {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
  755. {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
  756. {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
  757. {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
  758. {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
  759. {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
  760. {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
  761. {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
  762. {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
  763. {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
  764. {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
  765. {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
  766. {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
  767. {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
  768. {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
  769. {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
  770. {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
  771. {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
  772. {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
  773. {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
  774. {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
  775. {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
  776. {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
  777. {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
  778. {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
  779. {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
  780. {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
  781. {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
  782. {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
  783. {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
  784. {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
  785. {"Randolph Industrial", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
  786. {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
  787. {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
  788. {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
  789. {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
  790. {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
  791. {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
  792. {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
  793. {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
  794. {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
  795. {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
  796. {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
  797. {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
  798. {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
  799. {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
  800. {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
  801. {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
  802. {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
  803. {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
  804. {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
  805. {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
  806. {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
  807. {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
  808. {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
  809. {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
  810. {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
  811. {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
  812. {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
  813. {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
  814. {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
  815. {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
  816. {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
  817. {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
  818. {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
  819. {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
  820. {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
  821. {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
  822. {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
  823. {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
  824. {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
  825. {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
  826. {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
  827. {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
  828. {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
  829. {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
  830. {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
  831. {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
  832. {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
  833. {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
  834. {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
  835. {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
  836. {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
  837. {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
  838. {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
  839. {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
  840. {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
  841. {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
  842. {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
  843. {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
  844. {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
  845. {"Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
  846. {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
  847. {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
  848. {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
  849. {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
  850. {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
  851. {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
  852. {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
  853. {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
  854. {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
  855. {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
  856. {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
  857. {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
  858. {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
  859. {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
  860. {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
  861. {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
  862. {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
  863. {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
  864. {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
  865. {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
  866. {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
  867. {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
  868. {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
  869. {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
  870. {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
  871. {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
  872. {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
  873. {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
  874. {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
  875. {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
  876. {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
  877. {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
  878. {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
  879. {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
  880. {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
  881. {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
  882. // Citys Zones
  883. {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
  884. {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
  885. {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
  886. {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
  887. {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
  888. {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
  889. {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
  890. {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
  891. {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
  892. };
  893.  
  894. forward MainTimer();
  895. forward Speedometer();
  896. forward SaveTimer();
  897. forward StopAlarm(vehicleid);
  898.  
  899. stock PlayerName(playerid)
  900. {
  901. new pName[MAX_PLAYER_NAME];
  902. GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  903. return pName;
  904. }
  905.  
  906. stock IsPlayerSpawned(playerid)
  907. {
  908. switch(GetPlayerState(playerid))
  909. {
  910. case 1,2,3: return 1;
  911. }
  912. return 0;
  913. }
  914.  
  915. stock IsMeleeWeapon(weaponid)
  916. {
  917. switch(weaponid)
  918. {
  919. case 2 .. 15, 40, 44 .. 46: return 1;
  920. }
  921. return 0;
  922. }
  923.  
  924. stock RemovePlayerWeapon(playerid, weaponid)
  925. {
  926. new WeaponData[12][2];
  927. for(new i=1; i < sizeof(WeaponData); i++)
  928. {
  929. GetPlayerWeaponData(playerid, i, WeaponData[i][0], WeaponData[i][1]);
  930. }
  931. ResetPlayerWeapons(playerid);
  932. for(new i=1; i < sizeof(WeaponData); i++)
  933. {
  934. if(WeaponData[i][0] != weaponid)
  935. {
  936. GivePlayerWeapon(playerid, WeaponData[i][0], WeaponData[i][1]);
  937. }
  938. }
  939. }
  940.  
  941. stock IsBicycle(vehicleid)
  942. {
  943. switch(GetVehicleModel(vehicleid))
  944. {
  945. case 481,509,510: return 1;
  946. }
  947. return 0;
  948. }
  949.  
  950. stock PlayerToPlayer(playerid, targetid, Float:dist)
  951. {
  952. new Float:pos[3];
  953. GetPlayerPos(targetid, pos[0], pos[1], pos[2]);
  954. return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  955. }
  956.  
  957. stock PlayerToVehicle(playerid, vehicleid, Float:dist)
  958. {
  959. new Float:pos[3];
  960. GetVehiclePos(vehicleid, pos[0], pos[1], pos[2]);
  961. return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  962. }
  963.  
  964. stock GetClosestVehicle(playerid)
  965. {
  966. new Float:x, Float:y, Float:z;
  967. new Float:dist, Float:closedist=9999, closeveh;
  968. for(new i=1; i < MAX_VEHICLES; i++)
  969. {
  970. if(GetVehiclePos(i, x, y, z))
  971. {
  972. dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
  973. if(dist < closedist)
  974. {
  975. closedist = dist;
  976. closeveh = i;
  977. }
  978. }
  979. }
  980. return closeveh;
  981. }
  982.  
  983. stock ToggleEngine(vehicleid, toggle)
  984. {
  985. new engine, lights, alarm, doors, bonnet, boot, objective;
  986. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  987. SetVehicleParamsEx(vehicleid, toggle, lights, alarm, doors, bonnet, boot, objective);
  988. }
  989.  
  990. stock ToggleAlarm(vehicleid, toggle)
  991. {
  992. new engine, lights, alarm, doors, bonnet, boot, objective;
  993. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  994. SetVehicleParamsEx(vehicleid, engine, lights, toggle, doors, bonnet, boot, objective);
  995. }
  996.  
  997. stock ToggleDoors(vehicleid, toggle)
  998. {
  999. new engine, lights, alarm, doors, bonnet, boot, objective;
  1000. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1001. SetVehicleParamsEx(vehicleid, engine, lights, alarm, toggle, bonnet, boot, objective);
  1002. }
  1003.  
  1004. stock ToggleBoot(vehicleid, toggle)
  1005. {
  1006. new engine, lights, alarm, doors, bonnet, boot, objective;
  1007. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1008. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, toggle, objective);
  1009. }
  1010.  
  1011. stock StripNL(str[]) // credits to Y_Less for y_utils.inc
  1012. {
  1013. new
  1014. i = strlen(str);
  1015. while (i-- && str[i] <= ' ') str[i] = '\0';
  1016. }
  1017.  
  1018. stock IsNumeric(const string[])
  1019. {
  1020. for(new i=0; string[i]; i++)
  1021. {
  1022. if(string[i] < '0' || string[i] > '9') return 0;
  1023. }
  1024. return 1;
  1025. }
  1026.  
  1027. stock GetVehicleModelIDFromName(const vname[])
  1028. {
  1029. for(new i=0; i < sizeof(VehicleNames); i++)
  1030. {
  1031. if(strfind(VehicleNames[i], vname, true) != -1) return i + 400;
  1032. }
  1033. return -1;
  1034. }
  1035.  
  1036. stock GetPlayer2DZone(playerid)
  1037. {
  1038. new zone[32] = "San Andreas";
  1039. new Float:x, Float:y, Float:z;
  1040. GetPlayerPos(playerid, x, y, z);
  1041. for(new i = 0; i < sizeof(SanAndreasZones); i++)
  1042. {
  1043. if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  1044. && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4])
  1045. {
  1046. strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  1047. return zone;
  1048. }
  1049. }
  1050. return zone;
  1051. }
  1052.  
  1053. stock GetPlayer3DZone(playerid)
  1054. {
  1055. new zone[32] = "San Andreas";
  1056. new Float:x, Float:y, Float:z;
  1057. GetPlayerPos(playerid, x, y, z);
  1058. for(new i = 0; i < sizeof(SanAndreasZones); i++)
  1059. {
  1060. if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  1061. && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4]
  1062. && z >= SanAndreasZones[i][Zone_Area][2] && z <= SanAndreasZones[i][Zone_Area][5])
  1063. {
  1064. strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  1065. return zone;
  1066. }
  1067. }
  1068. return zone;
  1069. }
  1070.  
  1071. stock GetPlayerSpeed(playerid, bool:kmh2 = true)
  1072. {
  1073. new
  1074. Float:xx,
  1075. Float:yy,
  1076. Float:zz,
  1077. Float:pSpeed;
  1078.  
  1079. if(IsPlayerInAnyVehicle(playerid))
  1080. {
  1081. GetVehicleVelocity(GetPlayerVehicleID(playerid),xx,yy,zz);
  1082. }
  1083. else
  1084. {
  1085. GetPlayerVelocity(playerid,xx,yy,zz);
  1086. }
  1087.  
  1088. pSpeed = floatsqroot((xx * xx) + (yy * yy) + (zz * zz));
  1089. return kmh2 ? floatround((pSpeed * 165.12)) : floatround((pSpeed * 103.9));
  1090. }
  1091.  
  1092. /*SafeGivePlayerMoney(playerid, money)
  1093. {
  1094. return CallRemoteFunction("SafeGivePlayerMoney","dd",playerid, money);
  1095. }
  1096. #define GivePlayerMoney SafeGivePlayerMoney
  1097.  
  1098. SafeGetPlayerMoney(playerid)
  1099. {
  1100. return CallRemoteFunction("SafeGetPlayerMoney","d",playerid);
  1101. }
  1102. #define GetPlayerMoney SafeGetPlayerMoney*/
  1103.  
  1104. IsAdmin(playerid, level)
  1105. {
  1106. if(IsPlayerAdmin(playerid)) return 1;
  1107. if(CallRemoteFunction("GetPlayerAVSAdmin", "d", playerid) >= level) return 1;
  1108. return 0;
  1109. }
  1110.  
  1111. LoadVehicles()
  1112. {
  1113. new string[64];
  1114. new File:handle, count;
  1115. new filename[64], line[256], s, key[64];
  1116. for(new i=1; i < MAX_DVEHICLES; i++)
  1117. {
  1118. format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", i);
  1119. if(!fexist(filename)) continue;
  1120. handle = fopen(filename, io_read);
  1121. while(fread(handle, line))
  1122. {
  1123. StripNL(line);
  1124. s = strfind(line, "=");
  1125. if(!line[0] || s < 1) continue;
  1126. strmid(key, line, 0, s++);
  1127. if(strcmp(key, "Created") == 0) VehicleCreated[i] = strval(line[s]);
  1128. else if(strcmp(key, "Model") == 0) VehicleModel[i] = strval(line[s]);
  1129. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,ffff", VehiclePos[i][0], VehiclePos[i][1],
  1130. VehiclePos[i][2], VehiclePos[i][3]);
  1131. else if(strcmp(key, "Colors") == 0) sscanf(line[s], "p,dd", VehicleColor[i][0], VehicleColor[i][1]);
  1132. else if(strcmp(key, "Interior") == 0) VehicleInterior[i] = strval(line[s]);
  1133. else if(strcmp(key, "VirtualWorld") == 0) VehicleWorld[i] = strval(line[s]);
  1134. else if(strcmp(key, "Owner") == 0) strmid(VehicleOwner[i], line, s, sizeof(line));
  1135. else if(strcmp(key, "NumberPlate") == 0) strmid(VehicleNumberPlate[i], line, s, sizeof(line));
  1136. else if(strcmp(key, "Value") == 0) VehicleValue[i] = strval(line[s]);
  1137. else if(strcmp(key, "Lock") == 0) VehicleLock[i] = strval(line[s]);
  1138. else if(strcmp(key, "Alarm") == 0) VehicleAlarm[i] = strval(line[s]);
  1139. else if(strcmp(key, "Paintjob") == 0) VehiclePaintjob[i] = strval(line[s]);
  1140. else
  1141. {
  1142. for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  1143. {
  1144. format(string, sizeof(string), "Trunk%d", t+1);
  1145. if(strcmp(key, string) == 0) sscanf(line[s], "p,dd", VehicleTrunk[i][t][0], VehicleTrunk[i][t][1]);
  1146. }
  1147. for(new m=0; m < sizeof(VehicleMods[]); m++)
  1148. {
  1149. format(string, sizeof(string), "Mod%d", m);
  1150. if(strcmp(key, string) == 0) VehicleMods[i][m] = strval(line[s]);
  1151. }
  1152. }
  1153. }
  1154. fclose(handle);
  1155. if(VehicleCreated[i]) count++;
  1156. }
  1157. printf(" Loaded %d vehicles", count);
  1158. }
  1159. stock GetPlayerZone(playerid, Zona[], String)
  1160. {
  1161. new Float:x,Float:y,Float:z;
  1162. GetPlayerPos(playerid, x, y, z);
  1163. for(new i = 0; i != sizeof(ZonaLS); i++ )
  1164. {
  1165. if(x >= ZonaLS[i][Zona_Coords][0] && x <= ZonaLS[i][Zona_Coords][3] && y >= ZonaLS[i][Zona_Coords][1] && y <= ZonaLS[i][Zona_Coords][4])
  1166. {
  1167. return format(Zona, String, ZonaLS[i][Zona_Nomes], 0);
  1168. }
  1169. }
  1170. return 0;
  1171. }
  1172. SaveVehicle(vehicleid)
  1173. {
  1174. new filename[64], line[256];
  1175. format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", vehicleid);
  1176. new File:handle = fopen(filename, io_write);
  1177. format(line, sizeof(line), "Created=%d\r\n", VehicleCreated[vehicleid]); fwrite(handle, line);
  1178. format(line, sizeof(line), "Model=%d\r\n", VehicleModel[vehicleid]); fwrite(handle, line);
  1179. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f,%.3f\r\n", VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  1180. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3]);
  1181. fwrite(handle, line);
  1182. format(line, sizeof(line), "Colors=%d,%d\r\n", VehicleColor[vehicleid][0], VehicleColor[vehicleid][1]); fwrite(handle, line);
  1183. format(line, sizeof(line), "Interior=%d\r\n", VehicleInterior[vehicleid]); fwrite(handle, line);
  1184. format(line, sizeof(line), "VirtualWorld=%d\r\n", VehicleWorld[vehicleid]); fwrite(handle, line);
  1185. format(line, sizeof(line), "Owner=%s\r\n", VehicleOwner[vehicleid]); fwrite(handle, line);
  1186. format(line, sizeof(line), "NumberPlate=%s\r\n", VehicleNumberPlate[vehicleid]); fwrite(handle, line);
  1187. format(line, sizeof(line), "Value=%d\r\n", VehicleValue[vehicleid]); fwrite(handle, line);
  1188. format(line, sizeof(line), "Lock=%d\r\n", VehicleLock[vehicleid]); fwrite(handle, line);
  1189. format(line, sizeof(line), "Alarm=%d\r\n", VehicleAlarm[vehicleid]); fwrite(handle, line);
  1190. format(line, sizeof(line), "Paintjob=%d\r\n", VehiclePaintjob[vehicleid]); fwrite(handle, line);
  1191. for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  1192. {
  1193. format(line, sizeof(line), "Trunk%d=%d,%d\r\n", t+1, VehicleTrunk[vehicleid][t][0], VehicleTrunk[vehicleid][t][1]);
  1194. fwrite(handle, line);
  1195. }
  1196. for(new m=0; m < sizeof(VehicleMods[]); m++)
  1197. {
  1198. format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
  1199. fwrite(handle, line);
  1200. }
  1201. fclose(handle);
  1202. }
  1203.  
  1204. UpdateVehicle(vehicleid, removeold)
  1205. {
  1206. if(VehicleCreated[vehicleid])
  1207. {
  1208. if(removeold)
  1209. {
  1210. new Float:health;
  1211. GetVehicleHealth(VehicleID[vehicleid], health);
  1212. new engine, lights, alarm, doors, bonnet, boot, objective;
  1213. GetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  1214. //new panels, doorsd, lightsd, tires;
  1215. //GetVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
  1216. DestroyVehicle(VehicleID[vehicleid]);
  1217. VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  1218. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  1219. SetVehicleHealth(VehicleID[vehicleid], health);
  1220. SetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  1221. //UpdateVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
  1222. }
  1223. else
  1224. {
  1225. VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  1226. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  1227. }
  1228. LinkVehicleToInterior(VehicleID[vehicleid], VehicleInterior[vehicleid]);
  1229. SetVehicleVirtualWorld(VehicleID[vehicleid], VehicleWorld[vehicleid]);
  1230. SetVehicleNumberPlate(VehicleID[vehicleid], VehicleNumberPlate[vehicleid]);
  1231. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1232. {
  1233. AddVehicleComponent(VehicleID[vehicleid], VehicleMods[vehicleid][i]);
  1234. }
  1235. ChangeVehiclePaintjob(VehicleID[vehicleid], VehiclePaintjob[vehicleid]);
  1236. if(VehicleLock[vehicleid]) ToggleDoors(VehicleID[vehicleid], VEHICLE_PARAMS_ON);
  1237. if(VehicleAlarm[vehicleid]) VehicleSecurity[VehicleID[vehicleid]] = 1;
  1238. UpdateVehicleLabel(vehicleid, removeold);
  1239. }
  1240. }
  1241.  
  1242. UpdateVehicleLabel(vehicleid, removeold)
  1243. {
  1244. if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  1245. {
  1246. if(removeold)
  1247. {
  1248. Delete3DTextLabel(VehicleLabel[vehicleid]);
  1249. }
  1250. new labeltext[128];
  1251. format(labeltext, sizeof(labeltext), "%s\nID: %d\nDealership: %s\nPrice: $%d", VehicleNames[VehicleModel[vehicleid]-400],
  1252. vehicleid, VehicleOwner[vehicleid], VehicleValue[vehicleid]);
  1253. VehicleLabel[vehicleid] = Create3DTextLabel(labeltext, 0xBB7700DD, 0, 0, 0, 10.0, 0);
  1254. Attach3DTextLabelToVehicle(VehicleLabel[vehicleid], VehicleID[vehicleid], 0, 0, 0);
  1255. }
  1256. }
  1257.  
  1258. IsValidVehicle(vehicleid)
  1259. {
  1260. if(vehicleid < 1 || vehicleid >= MAX_DVEHICLES) return 0;
  1261. if(VehicleCreated[vehicleid]) return 1;
  1262. return 0;
  1263. }
  1264.  
  1265. GetFreeVehicleID()
  1266. {
  1267. for(new i=1; i < MAX_DVEHICLES; i++)
  1268. {
  1269. if(!VehicleCreated[i]) return i;
  1270. }
  1271. return 0;
  1272. }
  1273.  
  1274. GetVehicleID(vehicleid)
  1275. {
  1276. for(new i=1; i < MAX_DVEHICLES; i++)
  1277. {
  1278. if(VehicleCreated[i] && VehicleID[i] == vehicleid) return i;
  1279. }
  1280. return 0;
  1281. }
  1282.  
  1283. GetPlayerVehicles(playerid)
  1284. {
  1285. new playername[24];
  1286. GetPlayerName(playerid, playername, sizeof(playername));
  1287. new count;
  1288. for(new i=1; i < MAX_DVEHICLES; i++)
  1289. {
  1290. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  1291. {
  1292. count++;
  1293. }
  1294. }
  1295. return count;
  1296. }
  1297.  
  1298. GetPlayerVehicleAccess(playerid, vehicleid)
  1299. {
  1300. if(IsValidVehicle(vehicleid))
  1301. {
  1302. if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  1303. {
  1304. if(IsAdmin(playerid, 1))
  1305. {
  1306. return 1;
  1307. }
  1308. }
  1309. else if(VehicleCreated[vehicleid] == VEHICLE_PLAYER)
  1310. {
  1311. if(strcmp(VehicleOwner[vehicleid], PlayerName(playerid)) == 0)
  1312. {
  1313. return 2;
  1314. }
  1315. else if(GetPVarInt(playerid, "CarKeys") == vehicleid)
  1316. {
  1317. return 1;
  1318. }
  1319. }
  1320. }
  1321. else
  1322. {
  1323. return 1;
  1324. }
  1325. return 0;
  1326. }
  1327.  
  1328. LoadDealerships()
  1329. {
  1330. new File:handle, count;
  1331. new filename[64], line[256], s, key[64];
  1332. for(new i=1; i < MAX_DEALERSHIPS; i++)
  1333. {
  1334. format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", i);
  1335. if(!fexist(filename)) continue;
  1336. handle = fopen(filename, io_read);
  1337. while(fread(handle, line))
  1338. {
  1339. StripNL(line);
  1340. s = strfind(line, "=");
  1341. if(!line[0] || s < 1) continue;
  1342. strmid(key, line, 0, s++);
  1343. if(strcmp(key, "Created") == 0) DealershipCreated[i] = strval(line[s]);
  1344. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", DealershipPos[i][0],
  1345. DealershipPos[i][1], DealershipPos[i][2]);
  1346. }
  1347. fclose(handle);
  1348. if(DealershipCreated[i]) count++;
  1349. }
  1350. printf(" Loaded %d dealerships", count);
  1351. }
  1352.  
  1353. SaveDealership(dealerid)
  1354. {
  1355. new filename[64], line[256];
  1356. format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", dealerid);
  1357. new File:handle = fopen(filename, io_write);
  1358. format(line, sizeof(line), "Created=%d\r\n", DealershipCreated[dealerid]); fwrite(handle, line);
  1359. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", DealershipPos[dealerid][0],
  1360. DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  1361. fwrite(handle, line);
  1362. fclose(handle);
  1363. }
  1364.  
  1365. UpdateDealership(dealerid, removeold)
  1366. {
  1367. if(DealershipCreated[dealerid])
  1368. {
  1369. if(removeold)
  1370. {
  1371. Delete3DTextLabel(DealershipLabel[dealerid]);
  1372. }
  1373. new labeltext[32];
  1374. format(labeltext, sizeof(labeltext), "Vehicle Dealership\nID: %d", dealerid);
  1375. DealershipLabel[dealerid] = Create3DTextLabel(labeltext, 0x00BB00DD, DealershipPos[dealerid][0],
  1376. DealershipPos[dealerid][1], DealershipPos[dealerid][2]+0.5, 20.0, 0);
  1377. }
  1378. }
  1379.  
  1380. IsValidDealership(dealerid)
  1381. {
  1382. if(dealerid < 1 || dealerid >= MAX_DEALERSHIPS) return 0;
  1383. if(DealershipCreated[dealerid]) return 1;
  1384. return 0;
  1385. }
  1386.  
  1387. LoadFuelStations()
  1388. {
  1389. new File:handle, count;
  1390. new filename[64], line[256], s, key[64];
  1391. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1392. {
  1393. format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", i);
  1394. if(!fexist(filename)) continue;
  1395. handle = fopen(filename, io_read);
  1396. while(fread(handle, line))
  1397. {
  1398. StripNL(line);
  1399. s = strfind(line, "=");
  1400. if(!line[0] || s < 1) continue;
  1401. strmid(key, line, 0, s++);
  1402. if(strcmp(key, "Created") == 0) FuelStationCreated[i] = strval(line[s]);
  1403. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", FuelStationPos[i][0],
  1404. FuelStationPos[i][1], FuelStationPos[i][2]);
  1405. }
  1406. fclose(handle);
  1407. if(FuelStationCreated[i]) count++;
  1408. }
  1409. printf(" Loaded %d fuel stations", count);
  1410. }
  1411.  
  1412. SaveFuelStation(stationid)
  1413. {
  1414. new filename[64], line[256];
  1415. format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", stationid);
  1416. new File:handle = fopen(filename, io_write);
  1417. format(line, sizeof(line), "Created=%d\r\n", FuelStationCreated[stationid]); fwrite(handle, line);
  1418. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", FuelStationPos[stationid][0],
  1419. FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  1420. fwrite(handle, line);
  1421. fclose(handle);
  1422. }
  1423.  
  1424. UpdateFuelStation(stationid, removeold)
  1425. {
  1426. if(FuelStationCreated[stationid])
  1427. {
  1428. if(removeold)
  1429. {
  1430. Delete3DTextLabel(FuelStationLabel[stationid]);
  1431. }
  1432. new labeltext[32];
  1433. format(labeltext, sizeof(labeltext), "Fuel Station\nID: %d\n/fuel", stationid);
  1434. FuelStationLabel[stationid] = Create3DTextLabel(labeltext, 0x00BBFFDD, FuelStationPos[stationid][0],
  1435. FuelStationPos[stationid][1], FuelStationPos[stationid][2]+0.5, 20.0, 0);
  1436. }
  1437. }
  1438.  
  1439. IsValidFuelStation(stationid)
  1440. {
  1441. if(stationid < 1 || stationid >= MAX_FUEL_STATIONS) return 0;
  1442. if(FuelStationCreated[stationid]) return 1;
  1443. return 0;
  1444. }
  1445.  
  1446. public MainTimer()
  1447. {
  1448. new string[128];
  1449. new Float:x, Float:y, Float:z;
  1450.  
  1451. for(new i=0; i < MAX_PLAYERS; i++)
  1452. {
  1453. if(IsPlayerConnected(i))
  1454. {
  1455. if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
  1456. {
  1457. new vehicleid = GetPlayerVehicleID(i);
  1458. if(!IsBicycle(vehicleid) && Fuel[vehicleid] > 0)
  1459. {
  1460. Fuel[vehicleid] -= GetPlayerSpeed(i)/1000.0;
  1461. if(Fuel[vehicleid] <= 0)
  1462. {
  1463. ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
  1464. GameTextForPlayer(i, "~r~out of fuel", 3000, 3);
  1465. SendClientMessage(i, COLOR_RED, "This vehicle is out of fuel!");
  1466. }
  1467. }
  1468. }
  1469. if(RefuelTime[i] > 0 && GetPVarInt(i, "FuelStation"))
  1470. {
  1471. new vehicleid = GetPlayerVehicleID(i);
  1472. Fuel[vehicleid] += 2.0;
  1473. RefuelTime[i]--;
  1474. if(RefuelTime[i] == 0)
  1475. {
  1476. if(Fuel[vehicleid] >= 100.0) Fuel[vehicleid] = 100.0;
  1477. new stationid = GetPVarInt(i, "FuelStation");
  1478. new cost = floatround(Fuel[vehicleid]-GetPVarFloat(i, "Fuel"))*FUEL_PRICE;
  1479. if(GetPlayerState(i) != PLAYER_STATE_DRIVER || Fuel[vehicleid] >= 100.0 || GetPlayerMoney(i) < cost
  1480. || !IsPlayerInRangeOfPoint(i, 10.0, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]))
  1481. {
  1482. if(GetPlayerMoney(i) < cost) cost = GetPlayerMoney(i);
  1483. GivePlayerMoney(i, -cost);
  1484. format(string, sizeof(string), "~r~-$%d", cost);
  1485. GameTextForPlayer(i, string, 2000, 3);
  1486. format(string, sizeof(string), "You pay $%d for fuel", cost);
  1487. SendClientMessage(i, COLOR_WHITE, string);
  1488. SetPVarInt(i, "FuelStation", 0);
  1489. SetPVarFloat(i, "Fuel", 0.0);
  1490. }
  1491. else
  1492. {
  1493. RefuelTime[i] = 5;
  1494. format(string, sizeof(string), "~w~refueling...~n~~r~-$%d", cost);
  1495. GameTextForPlayer(i, string, 2000, 3);
  1496. }
  1497. }
  1498. }
  1499. if(TrackCar[i])
  1500. {
  1501. GetVehiclePos(TrackCar[i], x, y, z);
  1502. SetPlayerCheckpoint(i, x, y, z, 3);
  1503. }
  1504. }
  1505. }
  1506. }
  1507.  
  1508. public Speedometer()
  1509. {
  1510. new vehicleid;
  1511. new engine, lights, alarm, doors, bonnet, boot, objective;
  1512.  
  1513. for(new i=0; i < MAX_PLAYERS; i++)
  1514. {
  1515. if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
  1516. {
  1517. vehicleid = GetPlayerVehicleID(i);
  1518.  
  1519. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1520.  
  1521. new estr[100], estr2[100], estr3[100], estr4[100], estr5[300], estr6[100];
  1522.  
  1523. // Kmh
  1524. format(estr,100,"%d", GetSpeed(i));
  1525. PlayerTextDrawSetString(i, kmh[i], estr);
  1526.  
  1527. // vehicle health
  1528. new Float:health;
  1529. GetVehicleHealth(GetPlayerVehicleID(i), health);
  1530. format(estr2,100,"%.2f", health);
  1531. TextDrawSetString(hpcol[i], estr2);
  1532.  
  1533. // Vehicle location
  1534. GetPlayerZone(i, ZoneSA, MAXZN);
  1535. format(estr3,100,"%s", ZoneSA);
  1536. TextDrawSetString(Textdraw15[i], estr3);
  1537.  
  1538. // Vehicle Name
  1539. format(estr4,16,"%s", VehicleNames[GetVehicleModel(vehicleid)-400]);
  1540. TextDrawSetString(vehname[i], estr4);
  1541.  
  1542. //Vehicle KM travelled
  1543. new vid = GetPlayerVehicleID(i);
  1544. format(estr5,300,"%0.3f", GetKilometers(vid));
  1545. TextDrawSetString(Textdraw13[i], estr5);
  1546.  
  1547. // fuel
  1548. new Float:fv = Fuel[vehicleid]/10.0;
  1549. format(estr6,100,"%.2f", fv);
  1550. TextDrawSetString(Textdraw12[i], estr6);
  1551.  
  1552. }
  1553. }
  1554. }
  1555.  
  1556. stock GetSpeed(playerid)
  1557. {
  1558. new Float:ST[3];
  1559. GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
  1560. return floatround(1.61*floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3);
  1561. }
  1562.  
  1563. public SaveTimer()
  1564. {
  1565. SaveVehicleIndex++;
  1566. if(SaveVehicleIndex >= MAX_DVEHICLES) SaveVehicleIndex = 1;
  1567. if(IsValidVehicle(SaveVehicleIndex)) SaveVehicle(SaveVehicleIndex);
  1568. }
  1569.  
  1570. public StopAlarm(vehicleid)
  1571. {
  1572. ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
  1573. }
  1574.  
  1575. /*forward GetVehicleIDFromPlate(Plate[]);
  1576. public GetVehicleIDFromPlate(Plate[])
  1577. {
  1578. for(new i=1; i < MAX_DVEHICLES; i++)
  1579. {
  1580. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleNumberPlate[i], Plate) == 0)
  1581. {
  1582. return i;
  1583. }
  1584. }
  1585. return 0;
  1586. }*/
  1587.  
  1588. public OnFilterScriptInit()
  1589. {
  1590. print("\n------------------------------------------------");
  1591. print(" Advanced Vehicle System 1.0 by MadeMan");
  1592. print("------------------------------------------------");
  1593.  
  1594. LoadVehicles();
  1595. LoadDealerships();
  1596. LoadFuelStations();
  1597.  
  1598. /*SpeedoBox = TextDrawCreate(345.000, 363.000, "~n~~n~~n~~n~");
  1599. TextDrawAlignment(SpeedoBox, 2);
  1600. TextDrawLetterSize(SpeedoBox, 0.500, 1.400);
  1601. TextDrawUseBox(SpeedoBox, 1);
  1602. TextDrawBoxColor(SpeedoBox, 153);
  1603. TextDrawTextSize(SpeedoBox, 0.000, 340.000);*/
  1604.  
  1605. for(new i=0; i < MAX_PLAYERS; i++)
  1606. {
  1607. if(IsPlayerConnected(i))
  1608. {
  1609. OnPlayerConnect(i);
  1610. }
  1611. }
  1612. for(new i=1; i < MAX_DVEHICLES; i++)
  1613. {
  1614. UpdateVehicle(i, 0);
  1615. }
  1616. for(new i=1; i < MAX_DEALERSHIPS; i++)
  1617. {
  1618. UpdateDealership(i, 0);
  1619. }
  1620. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1621. {
  1622. UpdateFuelStation(i, 0);
  1623. }
  1624.  
  1625. maintimer = SetTimer("MainTimer", 1000, true);
  1626. speedotimer = SetTimer("Speedometer", 555, true);
  1627. savetimer = SetTimer("SaveTimer", 2222, true);
  1628.  
  1629. print("------------------------------------------------\n");
  1630. return 1;
  1631. }
  1632.  
  1633. public OnFilterScriptExit()
  1634. {
  1635. KillTimer(maintimer);
  1636. KillTimer(speedotimer);
  1637. KillTimer(savetimer);
  1638. //TextDrawDestroy(SpeedoBox);
  1639. for(new i=0; i < MAX_PLAYERS; i++)
  1640. {
  1641. if(IsPlayerConnected(i))
  1642. {
  1643. OnPlayerDisconnect(i, 1);
  1644. }
  1645. }
  1646. for(new i=1; i < MAX_DVEHICLES; i++)
  1647. {
  1648. if(VehicleCreated[i])
  1649. {
  1650. DestroyVehicle(VehicleID[i]);
  1651. if(VehicleCreated[i] == VEHICLE_DEALERSHIP)
  1652. {
  1653. Delete3DTextLabel(VehicleLabel[i]);
  1654. }
  1655. }
  1656. }
  1657. for(new i=1; i < MAX_DEALERSHIPS; i++)
  1658. {
  1659. if(DealershipCreated[i])
  1660. {
  1661. Delete3DTextLabel(DealershipLabel[i]);
  1662. }
  1663. }
  1664. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1665. {
  1666. if(FuelStationCreated[i])
  1667. {
  1668. Delete3DTextLabel(FuelStationLabel[i]);
  1669. }
  1670. }
  1671. print("\n------------------------------------------------");
  1672. print(" Advanced Vehicle System 1.0 Unloaded");
  1673. print("------------------------------------------------\n");
  1674. return 1;
  1675. }
  1676.  
  1677. public OnPlayerConnect(playerid)
  1678. {
  1679. RefuelTime[playerid] = 0;
  1680. TrackCar[playerid] = 0;
  1681.  
  1682.  
  1683. Textdraw12[playerid] = TextDrawCreate(577.666625, 360.474090, "100");
  1684. TextDrawLetterSize(Textdraw12[playerid], 0.332666, 1.322074);
  1685. TextDrawAlignment(Textdraw12[playerid], 1);
  1686. TextDrawColor(Textdraw12[playerid], -65281);
  1687. TextDrawSetShadow(Textdraw12[playerid], 0);
  1688. TextDrawSetOutline(Textdraw12[playerid], 1);
  1689. TextDrawBackgroundColor(Textdraw12[playerid], 51);
  1690. TextDrawFont(Textdraw12[playerid], 1);
  1691. TextDrawSetProportional(Textdraw12[playerid], 1);
  1692.  
  1693. Textdraw13[playerid] = TextDrawCreate(580.000122, 372.088806, "1080");
  1694. TextDrawLetterSize(Textdraw13[playerid], 0.335333, 1.512889);
  1695. TextDrawAlignment(Textdraw13[playerid], 1);
  1696. TextDrawColor(Textdraw13[playerid], -65281);
  1697. TextDrawSetShadow(Textdraw13[playerid], 0);
  1698. TextDrawSetOutline(Textdraw13[playerid], 1);
  1699. TextDrawBackgroundColor(Textdraw13[playerid], 51);
  1700. TextDrawFont(Textdraw13[playerid], 1);
  1701. TextDrawSetProportional(Textdraw13[playerid], 1);
  1702.  
  1703. Textdraw14[playerid] = TextDrawCreate(540.333312, 383.703704, "Lokacija:");
  1704. TextDrawLetterSize(Textdraw14[playerid], 0.243333, 1.591703);
  1705. TextDrawAlignment(Textdraw14[playerid], 1);
  1706. TextDrawColor(Textdraw14[playerid], -1);
  1707. TextDrawSetShadow(Textdraw14[playerid], 0);
  1708. TextDrawSetOutline(Textdraw14[playerid], 1);
  1709. TextDrawBackgroundColor(Textdraw14[playerid], 51);
  1710. TextDrawFont(Textdraw14[playerid], 1);
  1711. TextDrawSetProportional(Textdraw14[playerid], 1);
  1712.  
  1713. Textdraw15[playerid] = TextDrawCreate(577.000000, 385.363098, "Los Santos");
  1714. TextDrawLetterSize(Textdraw15[playerid], 0.273999, 1.342814);
  1715. TextDrawAlignment(Textdraw15[playerid], 1);
  1716. TextDrawColor(Textdraw15[playerid], -65281);
  1717. TextDrawSetShadow(Textdraw15[playerid], 0);
  1718. TextDrawSetOutline(Textdraw15[playerid], 1);
  1719. TextDrawBackgroundColor(Textdraw15[playerid], 51);
  1720. TextDrawFont(Textdraw15[playerid], 1);
  1721. TextDrawSetProportional(Textdraw15[playerid], 1);
  1722.  
  1723. Textdraw6[playerid] = TextDrawCreate(539.666870, 359.644561, "Gorivo:");
  1724. TextDrawLetterSize(Textdraw6[playerid], 0.294999, 1.380148);
  1725. TextDrawAlignment(Textdraw6[playerid], 1);
  1726. TextDrawColor(Textdraw6[playerid], -1);
  1727. TextDrawSetShadow(Textdraw6[playerid], 0);
  1728. TextDrawSetOutline(Textdraw6[playerid], 1);
  1729. TextDrawBackgroundColor(Textdraw6[playerid], 51);
  1730. TextDrawFont(Textdraw6[playerid], 1);
  1731. TextDrawSetProportional(Textdraw6[playerid], 1);
  1732.  
  1733. Textdraw7[playerid] = TextDrawCreate(559.999633, 370.844360, "Kilometri:");
  1734. TextDrawLetterSize(Textdraw7[playerid], 0.234000, 1.662221);
  1735. TextDrawAlignment(Textdraw7[playerid], 2);
  1736. TextDrawColor(Textdraw7[playerid], -1);
  1737. TextDrawSetShadow(Textdraw7[playerid], 0);
  1738. TextDrawSetOutline(Textdraw7[playerid], 1);
  1739. TextDrawBackgroundColor(Textdraw7[playerid], 51);
  1740. TextDrawFont(Textdraw7[playerid], 1);
  1741. TextDrawSetProportional(Textdraw7[playerid], 1);
  1742.  
  1743.  
  1744. box11[playerid] = CreatePlayerTextDraw(playerid, 480.000183, 333.511413, "ld_pool:ball");
  1745. PlayerTextDrawLetterSize(playerid,box11[playerid], 0.000000, 0.000000);
  1746. PlayerTextDrawTextSize(playerid,box11[playerid], 57.333358, 68.859214);
  1747. PlayerTextDrawAlignment(playerid,box11[playerid], 2);
  1748. PlayerTextDrawColor(playerid,box11[playerid], -1);
  1749. PlayerTextDrawSetShadow(playerid,box11[playerid], 0);
  1750. PlayerTextDrawSetOutline(playerid,box11[playerid], 0);
  1751. PlayerTextDrawFont(playerid,box11[playerid], 4);
  1752.  
  1753.  
  1754. //box
  1755. box[playerid] = TextDrawCreate(638.000244, 335.011169, "usebox");
  1756. TextDrawLetterSize(box[playerid], 0.000000, 7.006787);
  1757. TextDrawTextSize(box[playerid], 510.666656, 0.000000);
  1758. TextDrawAlignment(box[playerid], 1);
  1759. TextDrawColor(box[playerid], 0);
  1760. TextDrawUseBox(box[playerid], true);
  1761. TextDrawBoxColor(box[playerid], 102);
  1762. TextDrawSetShadow(box[playerid], 0);
  1763. TextDrawSetOutline(box[playerid], 0);
  1764. TextDrawFont(box[playerid], 0);
  1765.  
  1766.  
  1767. box2[playerid] = CreatePlayerTextDraw(playerid,508.333343, 395.318664, "-");
  1768. PlayerTextDrawLetterSize(playerid,box2[playerid], 9.936673, 0.840888);
  1769. PlayerTextDrawAlignment(playerid,box2[playerid], 1);
  1770. PlayerTextDrawColor(playerid,box2[playerid], -1);
  1771. PlayerTextDrawSetShadow(playerid,box2[playerid], 0);
  1772. PlayerTextDrawSetOutline(playerid,box2[playerid], 1);
  1773. PlayerTextDrawBackgroundColor(playerid,box2[playerid], 51);
  1774. PlayerTextDrawFont(playerid,box2[playerid], 1);
  1775. PlayerTextDrawSetProportional(playerid,box2[playerid], 1);
  1776.  
  1777. box3[playerid] = CreatePlayerTextDraw(playerid,504.333465, 328.948242, "-");
  1778. PlayerTextDrawLetterSize(playerid,box3[playerid], 10.192343, 0.712295);
  1779. PlayerTextDrawAlignment(playerid,box3[playerid], 1);
  1780. PlayerTextDrawColor(playerid,box3[playerid], -1);
  1781. PlayerTextDrawSetShadow(playerid,box3[playerid], 0);
  1782. PlayerTextDrawSetOutline(playerid,box3[playerid], 1);
  1783. PlayerTextDrawBackgroundColor(playerid,box3[playerid], 51);
  1784. PlayerTextDrawFont(playerid,box3[playerid], 1);
  1785. PlayerTextDrawSetProportional(playerid,box3[playerid], 1);
  1786.  
  1787. //
  1788. speedo[playerid] = CreatePlayerTextDraw(playerid,489.999908, 368.355590, "km/h");
  1789. PlayerTextDrawLetterSize(playerid,speedo[playerid], 0.449999, 1.600000);
  1790. PlayerTextDrawAlignment(playerid,speedo[playerid], 1);
  1791. PlayerTextDrawColor(playerid,speedo[playerid], 3670271);
  1792. PlayerTextDrawSetShadow(playerid,speedo[playerid], 0);
  1793. PlayerTextDrawSetOutline(playerid,speedo[playerid], 1);
  1794. PlayerTextDrawBackgroundColor(playerid,speedo[playerid], 51);
  1795. PlayerTextDrawFont(playerid,speedo[playerid], 1);
  1796. PlayerTextDrawSetProportional(playerid,speedo[playerid], 1);
  1797.  
  1798. kmh[playerid] = CreatePlayerTextDraw(playerid, 490.000061, 350.103790, "_");
  1799. PlayerTextDrawLetterSize(playerid,kmh[playerid], 0.546333, 2.180740);
  1800. PlayerTextDrawAlignment(playerid,kmh[playerid], 1);
  1801. PlayerTextDrawColor(playerid,kmh[playerid], -16776961);
  1802. PlayerTextDrawSetShadow(playerid,kmh[playerid], 0);
  1803. PlayerTextDrawSetOutline(playerid,kmh[playerid], 1);
  1804. PlayerTextDrawBackgroundColor(playerid,kmh[playerid], 51);
  1805. PlayerTextDrawFont(playerid,kmh[playerid], 1);
  1806. PlayerTextDrawSetProportional(playerid,kmh[playerid], 1);
  1807.  
  1808. hp[playerid] = TextDrawCreate(557.333862, 346.785308, "Jacina:");
  1809. TextDrawLetterSize(hp[playerid], 0.317333, 1.309629);
  1810. TextDrawAlignment(hp[playerid], 2);
  1811. TextDrawColor(hp[playerid], -1);
  1812. TextDrawSetShadow(hp[playerid], 0);
  1813. TextDrawSetOutline(hp[playerid], 1);
  1814. TextDrawBackgroundColor(hp[playerid], 51);
  1815. TextDrawFont(hp[playerid], 1);
  1816. TextDrawSetProportional(hp[playerid], 1);
  1817.  
  1818. hpcol[playerid] = TextDrawCreate(576.666625, 347.614807, "_");
  1819. TextDrawLetterSize(hpcol[playerid], 0.291333, 1.272296);
  1820. TextDrawAlignment(hpcol[playerid], 1);
  1821. TextDrawColor(hpcol[playerid], -65281);
  1822. TextDrawSetShadow(hpcol[playerid], 0);
  1823. TextDrawSetOutline(hpcol[playerid], 1);
  1824. TextDrawBackgroundColor(hpcol[playerid], 51);
  1825. TextDrawFont(hpcol[playerid], 1);
  1826. TextDrawSetProportional(hpcol[playerid], 1);
  1827.  
  1828. veh[playerid] = TextDrawCreate(539.666687, 335.585083, "Vozilo:");
  1829. TextDrawLetterSize(veh[playerid], 0.297000, 1.143703);
  1830. TextDrawAlignment(veh[playerid], 1);
  1831. TextDrawColor(veh[playerid], -1);
  1832. TextDrawSetShadow(veh[playerid], 0);
  1833. TextDrawSetOutline(veh[playerid], 1);
  1834. TextDrawBackgroundColor(veh[playerid], 51);
  1835. TextDrawFont(veh[playerid], 1);
  1836. TextDrawSetProportional(veh[playerid], 1);
  1837.  
  1838. vehname[playerid] = TextDrawCreate(576.333374, 333.925872, "Infernus");
  1839. TextDrawLetterSize(vehname[playerid], 0.236000, 1.492148);
  1840. TextDrawAlignment(vehname[playerid], 1);
  1841. TextDrawColor(vehname[playerid], -65281);
  1842. TextDrawSetShadow(vehname[playerid], 0);
  1843. TextDrawSetOutline(vehname[playerid], 1);
  1844. TextDrawBackgroundColor(vehname[playerid], 51);
  1845. TextDrawFont(vehname[playerid], 1);
  1846. TextDrawSetProportional(vehname[playerid], 1);
  1847.  
  1848.  
  1849. return 1;
  1850. }
  1851.  
  1852. public OnPlayerDisconnect(playerid, reason)
  1853. {
  1854. return 1;
  1855. }
  1856.  
  1857. public OnVehicleSpawn(vehicleid)
  1858. {
  1859. VehicleSecurity[vehicleid] = 0;
  1860. new id = GetVehicleID(vehicleid);
  1861. if(IsValidVehicle(id))
  1862. {
  1863. if(VehicleColor[id][0] >= 0 && VehicleColor[id][1] >= 0)
  1864. ChangeVehicleColor(vehicleid, VehicleColor[id][0], VehicleColor[id][1]);
  1865. LinkVehicleToInterior(vehicleid, VehicleInterior[id]);
  1866. SetVehicleVirtualWorld(vehicleid, VehicleWorld[id]);
  1867. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1868. {
  1869. AddVehicleComponent(vehicleid, VehicleMods[id][i]);
  1870. }
  1871. ChangeVehiclePaintjob(vehicleid, VehiclePaintjob[id]);
  1872. if(VehicleLock[id]) ToggleDoors(vehicleid, VEHICLE_PARAMS_ON);
  1873. if(VehicleAlarm[id]) VehicleSecurity[vehicleid] = 1;
  1874. }
  1875. return 1;
  1876. }
  1877.  
  1878. CMD:avshelp(playerid, params[])
  1879. {
  1880. new info[512];
  1881. strcat(info, "/v /fix /flip /tow /eject /ejectall\n", sizeof(info));
  1882. strcat(info, "/vlock /valarm /fuel /trunk /kph /mph /clearmods /sellv /givecarkeys /trackcar\n", sizeof(info));
  1883. if(IsAdmin(playerid, 1))
  1884. {
  1885. strcat(info, "/addv /editv /setfuel /rac (respawnallcars) /rtc (respawnthiscar)\n", sizeof(info));
  1886. strcat(info, "/adddealership /deletedealership /movedealership /gotodealership\n", sizeof(info));
  1887. strcat(info, "/addfuelstation /deletefuelstation /movefuelstation /gotofuelstation", sizeof(info));
  1888. }
  1889. ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "Advanced Vehicle System Help", info, "OK", "");
  1890. return 1;
  1891. }
  1892.  
  1893. CMD:fix(playerid, params[])
  1894. {
  1895. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1896. new vehicleid = GetPlayerVehicleID(playerid);
  1897. RepairVehicle(vehicleid);
  1898. SendClientMessage(playerid, COLOR_WHITE, "Vehicle fixed");
  1899. return 1;
  1900. }
  1901.  
  1902. CMD:flip(playerid, params[])
  1903. {
  1904. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1905. new vehicleid = GetPlayerVehicleID(playerid);
  1906. new Float:angle;
  1907. GetVehicleZAngle(vehicleid, angle);
  1908. SetVehicleZAngle(vehicleid, angle);
  1909. SendClientMessage(playerid, COLOR_WHITE, "Vehicle flipped");
  1910. return 1;
  1911. }
  1912.  
  1913. CMD:tow(playerid, params[])
  1914. {
  1915. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1916. new vehicleid = GetPlayerVehicleID(playerid);
  1917. if(IsTrailerAttachedToVehicle(vehicleid))
  1918. {
  1919. DetachTrailerFromVehicle(vehicleid);
  1920. SendClientMessage(playerid, COLOR_WHITE, "You are not towing anymore");
  1921. return 1;
  1922. }
  1923. new Float:x, Float:y, Float:z;
  1924. new Float:dist, Float:closedist=8, closeveh;
  1925. for(new i=1; i < MAX_VEHICLES; i++)
  1926. {
  1927. if(i != vehicleid && GetVehiclePos(i, x, y, z))
  1928. {
  1929. dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
  1930. if(dist < closedist)
  1931. {
  1932. closedist = dist;
  1933. closeveh = i;
  1934. }
  1935. }
  1936. }
  1937. if(!closeveh) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  1938. AttachTrailerToVehicle(closeveh, vehicleid);
  1939. SendClientMessage(playerid, COLOR_WHITE, "You are now towing a vehicle");
  1940. return 1;
  1941. }
  1942.  
  1943. CMD:kph(playerid, params[])
  1944. {
  1945. SetPVarInt(playerid, "Speedo", 0);
  1946. SendClientMessage(playerid, COLOR_WHITE, "Speedometer units set to KPH");
  1947. return 1;
  1948. }
  1949.  
  1950. CMD:mph(playerid, params[])
  1951. {
  1952. SetPVarInt(playerid, "Speedo", 1);
  1953. SendClientMessage(playerid, COLOR_WHITE, "Speedometer units set to MPH");
  1954. return 1;
  1955. }
  1956.  
  1957. CMD:eject(playerid, params[])
  1958. {
  1959. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1960. new pid, msg[128];
  1961. if(sscanf(params, "u", pid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /eject [player]");
  1962. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
  1963. new vehicleid = GetPlayerVehicleID(playerid);
  1964. if(!IsPlayerInVehicle(pid, vehicleid)) return SendClientMessage(playerid, COLOR_RED, "Player is not in your vehicle!");
  1965. RemovePlayerFromVehicle(pid);
  1966. format(msg, sizeof(msg), "Vehicle driver %s (%d) has ejected you", PlayerName(playerid), playerid);
  1967. SendClientMessage(pid, COLOR_WHITE, msg);
  1968. format(msg, sizeof(msg), "You have ejected %s (%d) from your vehicle", PlayerName(pid), pid);
  1969. SendClientMessage(playerid, COLOR_WHITE, msg);
  1970. return 1;
  1971. }
  1972.  
  1973. CMD:ejectall(playerid, params[])
  1974. {
  1975. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1976. new vehicleid = GetPlayerVehicleID(playerid);
  1977. new msg[128];
  1978. format(msg, sizeof(msg), "Vehicle driver %s (%d) has ejected you", PlayerName(playerid), playerid);
  1979. for(new i=0; i < MAX_PLAYERS; i++)
  1980. {
  1981. if(IsPlayerConnected(i) && i != playerid && IsPlayerInVehicle(i, vehicleid))
  1982. {
  1983. RemovePlayerFromVehicle(i);
  1984. SendClientMessage(i, COLOR_WHITE, msg);
  1985. }
  1986. }
  1987. SendClientMessage(playerid, COLOR_WHITE, "You have ejected all passengers");
  1988. return 1;
  1989. }
  1990.  
  1991. CMD:clearmods(playerid, params[])
  1992. {
  1993. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1994. new vehicleid = GetPlayerVehicleID(playerid);
  1995. new id = GetVehicleID(vehicleid);
  1996. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1997. return SendClientMessage(playerid, COLOR_RED, "This is not your vehicle!");
  1998. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1999. {
  2000. RemoveVehicleComponent(VehicleID[id], GetVehicleComponentInSlot(VehicleID[id], i));
  2001. VehicleMods[id][i] = 0;
  2002. }
  2003. VehiclePaintjob[id] = 255;
  2004. ChangeVehiclePaintjob(VehicleID[id], 255);
  2005. SaveVehicle(id);
  2006. SendClientMessage(playerid, COLOR_WHITE, "You have removed all modifications from your vehicle");
  2007. return 1;
  2008. }
  2009.  
  2010. CMD:trackcar(playerid, params[])
  2011. {
  2012. if(TrackCar[playerid])
  2013. {
  2014. TrackCar[playerid] = 0;
  2015. DisablePlayerCheckpoint(playerid);
  2016. SendClientMessage(playerid, COLOR_WHITE, "You are not tracking your vehicle anymore");
  2017. return 1;
  2018. }
  2019. new playername[24];
  2020. GetPlayerName(playerid, playername, sizeof(playername));
  2021. new info[256], bool:found;
  2022. for(new i=1; i < MAX_DVEHICLES; i++)
  2023. {
  2024. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  2025. {
  2026. found = true;
  2027. format(info, sizeof(info), "%sID: %d Name: %s\n", info, i, VehicleNames[VehicleModel[i]-400]);
  2028. }
  2029. }
  2030. if(!found) return SendClientMessage(playerid, COLOR_RED, "You don't have any vehicles!");
  2031. ShowPlayerDialog(playerid, DIALOG_FINDVEHICLE, DIALOG_STYLE_LIST, "Find Your Vehicle", info, "Find", "Cancel");
  2032. return 1;
  2033. }
  2034.  
  2035. CMD:v(playerid, params[])
  2036. {
  2037. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  2038. new vehicleid = GetPlayerVehicleID(playerid);
  2039. if(IsBicycle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  2040. new id = GetVehicleID(vehicleid);
  2041. if(GetPlayerVehicleAccess(playerid, id) < 1)
  2042. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2043. SetPVarInt(playerid, "DialogValue1", id);
  2044. ShowDialog(playerid, DIALOG_VEHICLE);
  2045. return 1;
  2046. }
  2047.  
  2048. CMD:sellv(playerid, params[])
  2049. {
  2050. new pid, id, price, msg[128];
  2051. if(sscanf(params, "udd", pid, id, price)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /sellv [player] [vehicleid] [price]");
  2052. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
  2053. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2054. return SendClientMessage(playerid, COLOR_RED, "You are not the owner of this vehicle!");
  2055. if(price < 1) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
  2056. if(!PlayerToPlayer(playerid, pid, 10.0)) return SendClientMessage(playerid, COLOR_RED, "Player is too far!");
  2057. SetPVarInt(pid, "DialogValue1", playerid);
  2058. SetPVarInt(pid, "DialogValue2", id);
  2059. SetPVarInt(pid, "DialogValue3", price);
  2060. ShowDialog(pid, DIALOG_VEHICLE_SELL);
  2061. format(msg, sizeof(msg), "You have offered %s (%d) to buy your vehicle for $%d", PlayerName(pid), pid, price);
  2062. SendClientMessage(playerid, COLOR_WHITE, msg);
  2063. return 1;
  2064. }
  2065.  
  2066. CMD:givecarkeys(playerid, params[])
  2067. {
  2068. new pid, id, msg[128];
  2069. if(sscanf(params, "ud", pid, id)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /givecarkeys [player] [vehicleid]");
  2070. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
  2071. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "Invalid vehicleid!");
  2072. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2073. return SendClientMessage(playerid, COLOR_RED, "You are not the owner of this vehicle!");
  2074. if(!PlayerToPlayer(playerid, pid, 10.0)) return SendClientMessage(playerid, COLOR_RED, "Player is too far!");
  2075. SetPVarInt(pid, "CarKeys", id);
  2076. format(msg, sizeof(msg), "You have given your car keys to %s (%d)", PlayerName(pid), pid);
  2077. SendClientMessage(playerid, COLOR_WHITE, msg);
  2078. format(msg, sizeof(msg), "%s (%d) has given you car keys", PlayerName(playerid), playerid);
  2079. SendClientMessage(pid, COLOR_WHITE, msg);
  2080. return 1;
  2081. }
  2082.  
  2083. CMD:vlock(playerid, params[])
  2084. {
  2085. new vehicleid;
  2086. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2087. {
  2088. vehicleid = GetPlayerVehicleID(playerid);
  2089. }
  2090. else
  2091. {
  2092. vehicleid = GetClosestVehicle(playerid);
  2093. if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  2094. }
  2095. if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  2096. new id = GetVehicleID(vehicleid);
  2097. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2098. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2099. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2100. new engine, lights, alarm, doors, bonnet, boot, objective;
  2101. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2102. if(doors == 1)
  2103. {
  2104. doors = 0;
  2105. VehicleLock[id] = 0;
  2106. GameTextForPlayer(playerid, "~g~doors unlocked", 3000, 6);
  2107. }
  2108. else
  2109. {
  2110. doors = 1;
  2111. VehicleLock[id] = 1;
  2112. GameTextForPlayer(playerid, "~r~doors locked", 3000, 6);
  2113. }
  2114. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2115. SaveVehicle(id);
  2116. return 1;
  2117. }
  2118.  
  2119. CMD:valarm(playerid, params[])
  2120. {
  2121. new vehicleid;
  2122. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2123. {
  2124. vehicleid = GetPlayerVehicleID(playerid);
  2125. }
  2126. else
  2127. {
  2128. vehicleid = GetClosestVehicle(playerid);
  2129. if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  2130. }
  2131. if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  2132. new id = GetVehicleID(vehicleid);
  2133. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2134. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2135. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2136. if(VehicleSecurity[vehicleid] == 0)
  2137. {
  2138. VehicleSecurity[vehicleid] = 1;
  2139. VehicleAlarm[id] = 1;
  2140. GameTextForPlayer(playerid, "~g~alarm on", 3000, 6);
  2141. }
  2142. else
  2143. {
  2144. ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
  2145. VehicleSecurity[vehicleid] = 0;
  2146. VehicleAlarm[id] = 0;
  2147. GameTextForPlayer(playerid, "~r~alarm off", 3000, 6);
  2148. }
  2149. SaveVehicle(id);
  2150. return 1;
  2151. }
  2152.  
  2153. CMD:trunk(playerid, params[])
  2154. {
  2155. new vehicleid = GetClosestVehicle(playerid);
  2156. if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  2157. if(!vehicleid || IsBicycle(vehicleid) || IsPlayerInAnyVehicle(playerid))
  2158. return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  2159. new id = GetVehicleID(vehicleid);
  2160. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2161. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2162. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2163. ToggleBoot(vehicleid, VEHICLE_PARAMS_ON);
  2164. SetPVarInt(playerid, "DialogValue1", id);
  2165. ShowDialog(playerid, DIALOG_TRUNK);
  2166. return 1;
  2167. }
  2168.  
  2169. CMD:fuel(playerid, params[])
  2170. {
  2171. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  2172. {
  2173. if(FuelStationCreated[i])
  2174. {
  2175. if(IsPlayerInRangeOfPoint(playerid, 15.0, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]))
  2176. {
  2177. SetPVarInt(playerid, "FuelStation", i);
  2178. ShowDialog(playerid, DIALOG_FUEL);
  2179. return 1;
  2180. }
  2181. }
  2182. }
  2183. SendClientMessage(playerid, COLOR_RED, "You are not in a fuel station!");
  2184. return 1;
  2185. }
  2186.  
  2187. CMD:rtc(playerid, params[])
  2188. {
  2189. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2190. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
  2191. SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  2192. SendClientMessage(playerid, COLOR_WHITE, "Vehicle respawned");
  2193. return 1;
  2194. }
  2195.  
  2196. CMD:rac(playerid, params[])
  2197. {
  2198. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2199. new bool:vehicleused[MAX_VEHICLES];
  2200. for(new i=0; i < MAX_PLAYERS; i++)
  2201. {
  2202. if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
  2203. {
  2204. vehicleused[GetPlayerVehicleID(i)] = true;
  2205. }
  2206. }
  2207. for(new i=1; i < MAX_VEHICLES; i++)
  2208. {
  2209. if(!vehicleused[i])
  2210. {
  2211. SetVehicleToRespawn(i);
  2212. }
  2213. }
  2214. new msg[128];
  2215. format(msg, sizeof(msg), "Admin %s (%d) has respawned all unused vehicles", PlayerName(playerid), playerid);
  2216. SendClientMessageToAll(COLOR_YELLOW, msg);
  2217. return 1;
  2218. }
  2219.  
  2220. CMD:setfuel(playerid, params[])
  2221. {
  2222. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2223. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
  2224. new amount, msg[128];
  2225. if(sscanf(params, "d", amount)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /setfuel [amount]");
  2226. if(amount < 0 || amount > 100) return SendClientMessage(playerid, COLOR_RED, "Invalid amount! (0-100)");
  2227. Fuel[GetPlayerVehicleID(playerid)] = amount;
  2228. format(msg, sizeof(msg), "You have set your vehicle fuel to %d", amount);
  2229. SendClientMessage(playerid, COLOR_WHITE, msg);
  2230. return 1;
  2231. }
  2232.  
  2233. CMD:addv(playerid, params[])
  2234. {
  2235. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2236. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  2237. new model[32], modelid, dealerid, color1, color2, price;
  2238. if(sscanf(params, "dsddd", dealerid, model, color1, color2, price))
  2239. return SendClientMessage(playerid, COLOR_GREY, "USAGE: /addv [dealerid] [model] [color1] [color2] [price]");
  2240. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2241. if(IsNumeric(model)) modelid = strval(model);
  2242. else modelid = GetVehicleModelIDFromName(model);
  2243. if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid model ID!");
  2244. if(color1 < 0 || color2 < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid color!");
  2245. if(price < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
  2246. new Float:X, Float:Y, Float:Z, Float:angle;
  2247. GetPlayerPos(playerid, X, Y, Z);
  2248. GetPlayerFacingAngle(playerid, angle);
  2249. X += floatmul(floatsin(-angle, degrees), 4.0);
  2250. Y += floatmul(floatcos(-angle, degrees), 4.0);
  2251. for(new i=1; i < MAX_DVEHICLES; i++)
  2252. {
  2253. if(!VehicleCreated[i])
  2254. {
  2255. new msg[128];
  2256. VehicleCreated[i] = VEHICLE_DEALERSHIP;
  2257. VehicleModel[i] = modelid;
  2258. VehiclePos[i][0] = X;
  2259. VehiclePos[i][1] = Y;
  2260. VehiclePos[i][2] = Z;
  2261. VehiclePos[i][3] = angle+90.0;
  2262. VehicleColor[i][0] = color1;
  2263. VehicleColor[i][1] = color2;
  2264. VehicleInterior[i] = GetPlayerInterior(playerid);
  2265. VehicleWorld[i] = GetPlayerVirtualWorld(playerid);
  2266. VehicleValue[i] = price;
  2267. valstr(VehicleOwner[i], dealerid);
  2268. VehicleNumberPlate[i] = DEFAULT_NUMBER_PLATE;
  2269. for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  2270. {
  2271. VehicleTrunk[i][d][0] = 0;
  2272. VehicleTrunk[i][d][1] = 0;
  2273. }
  2274. for(new d=0; d < sizeof(VehicleMods[]); d++)
  2275. {
  2276. VehicleMods[i][d] = 0;
  2277. }
  2278. VehiclePaintjob[i] = 255;
  2279. VehicleLock[i] = 0;
  2280. VehicleAlarm[i] = 0;
  2281. UpdateVehicle(i, 0);
  2282. SaveVehicle(i);
  2283. format(msg, sizeof(msg), "Added vehicle id %d to dealerid %d", i, dealerid);
  2284. SendClientMessage(playerid, COLOR_WHITE, msg);
  2285. return 1;
  2286. }
  2287. }
  2288. SendClientMessage(playerid, COLOR_RED, "Can't add any more vehicles!");
  2289. return 1;
  2290. }
  2291.  
  2292. CMD:editv(playerid, params[])
  2293. {
  2294. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2295. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2296. {
  2297. new id = GetVehicleID(GetPlayerVehicleID(playerid));
  2298. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "This is not a dynamic vehicle!");
  2299. SetPVarInt(playerid, "DialogValue1", id);
  2300. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2301. return 1;
  2302. }
  2303. new vehicleid;
  2304. if(sscanf(params, "d", vehicleid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /editv [vehicleid]");
  2305. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "Invalid vehicleid!");
  2306. SetPVarInt(playerid, "DialogValue1", vehicleid);
  2307. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2308. return 1;
  2309. }/*
  2310. CMD:spawncar(playerid)
  2311. {
  2312. new Float:POS1, Float:POS2,Float:POS3, Float:A;
  2313. GetPlayerPos(playerid, POS1, POS2,POS3);
  2314. GetPlayerFacingAngle(playerid, A);
  2315. new Car2;
  2316. Car2 = CreateVehicle(422, POS1, POS2,POS3, A, -1, -1, -1);
  2317. PutPlayerInVehicle(playerid,Car2, 0);
  2318. return 1;
  2319. }*/
  2320. CMD:adddealership(playerid, params[])
  2321. {
  2322. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2323. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  2324. for(new i=1; i < MAX_DEALERSHIPS; i++)
  2325. {
  2326. if(!DealershipCreated[i])
  2327. {
  2328. new msg[128];
  2329. DealershipCreated[i] = 1;
  2330. GetPlayerPos(playerid, DealershipPos[i][0], DealershipPos[i][1], DealershipPos[i][2]);
  2331. UpdateDealership(i, 0);
  2332. SaveDealership(i);
  2333. format(msg, sizeof(msg), "Added dealership id %d", i);
  2334. SendClientMessage(playerid, COLOR_WHITE, msg);
  2335. return 1;
  2336. }
  2337. }
  2338. SendClientMessage(playerid, COLOR_RED, "Can't add any more dealerships!");
  2339. return 1;
  2340. }
  2341.  
  2342. CMD:deletedealership(playerid, params[])
  2343. {
  2344. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2345. new dealerid, msg[128];
  2346. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletedealership [dealerid]");
  2347. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2348. for(new i=1; i < MAX_DVEHICLES; i++)
  2349. {
  2350. if(VehicleCreated[i] == VEHICLE_DEALERSHIP && strval(VehicleOwner[i]) == dealerid)
  2351. {
  2352. DestroyVehicle(VehicleID[i]);
  2353. Delete3DTextLabel(VehicleLabel[i]);
  2354. VehicleCreated[i] = 0;
  2355. }
  2356. }
  2357. DealershipCreated[dealerid] = 0;
  2358. Delete3DTextLabel(DealershipLabel[dealerid]);
  2359. SaveDealership(dealerid);
  2360. format(msg, sizeof(msg), "Deleted dealership id %d", dealerid);
  2361. SendClientMessage(playerid, COLOR_WHITE, msg);
  2362. return 1;
  2363. }
  2364.  
  2365. CMD:movedealership(playerid, params[])
  2366. {
  2367. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2368. new dealerid, msg[128];
  2369. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movedealership [dealerid]");
  2370. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2371. GetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  2372. UpdateDealership(dealerid, 1);
  2373. SaveDealership(dealerid);
  2374. format(msg, sizeof(msg), "Moved dealership id %d here", dealerid);
  2375. SendClientMessage(playerid, COLOR_WHITE, msg);
  2376. return 1;
  2377. }
  2378.  
  2379. CMD:gotodealership(playerid, params[])
  2380. {
  2381. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2382. new dealerid, msg[128];
  2383. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotodealership [dealerid]");
  2384. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2385. SetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  2386. format(msg, sizeof(msg), "Teleported to dealership id %d", dealerid);
  2387. SendClientMessage(playerid, COLOR_WHITE, msg);
  2388. return 1;
  2389. }
  2390.  
  2391. CMD:addfuelstation(playerid, params[])
  2392. {
  2393. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2394. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  2395. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  2396. {
  2397. if(!FuelStationCreated[i])
  2398. {
  2399. new msg[128];
  2400. FuelStationCreated[i] = 1;
  2401. GetPlayerPos(playerid, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]);
  2402. UpdateFuelStation(i, 0);
  2403. SaveFuelStation(i);
  2404. format(msg, sizeof(msg), "Added fuel station id %d", i);
  2405. SendClientMessage(playerid, COLOR_WHITE, msg);
  2406. return 1;
  2407. }
  2408. }
  2409. SendClientMessage(playerid, COLOR_RED, "Can't add any more fuel stations!");
  2410. return 1;
  2411. }
  2412.  
  2413. CMD:deletefuelstation(playerid, params[])
  2414. {
  2415. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2416. new stationid, msg[128];
  2417. if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletefuelstation [stationid]");
  2418. if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  2419. FuelStationCreated[stationid] = 0;
  2420. Delete3DTextLabel(FuelStationLabel[stationid]);
  2421. SaveFuelStation(stationid);
  2422. format(msg, sizeof(msg), "Deleted fuel station id %d", stationid);
  2423. SendClientMessage(playerid, COLOR_WHITE, msg);
  2424. return 1;
  2425. }
  2426.  
  2427. CMD:movefuelstation(playerid, params[])
  2428. {
  2429. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2430. new stationid, msg[128];
  2431. if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movefuelstation [stationid]");
  2432. if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  2433. GetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  2434. UpdateFuelStation(stationid, 1);
  2435. SaveFuelStation(stationid);
  2436. format(msg, sizeof(msg), "Moved fuel station id %d here", stationid);
  2437. SendClientMessage(playerid, COLOR_WHITE, msg);
  2438. return 1;
  2439. }
  2440.  
  2441. CMD:gotofuelstation(playerid, params[])
  2442. {
  2443. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2444. new stationid, msg[128];
  2445. if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotofuelstation [stationid]");
  2446. if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  2447. SetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  2448. format(msg, sizeof(msg), "Teleported to fuel station id %d", stationid);
  2449. SendClientMessage(playerid, COLOR_WHITE, msg);
  2450. return 1;
  2451. }
  2452.  
  2453. public OnPlayerCommandText(playerid, cmdtext[])
  2454. {
  2455. new pos, funcname[32];
  2456. while(cmdtext[++pos] > ' ')
  2457. {
  2458. funcname[pos-1] = tolower(cmdtext[pos]);
  2459. }
  2460. strins(funcname, "cmd_", 0, sizeof(funcname));
  2461. while (cmdtext[pos] == ' ') pos++;
  2462. if(!cmdtext[pos])
  2463. {
  2464. return CallLocalFunction(funcname, "is", playerid, "\1");
  2465. }
  2466. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  2467. }
  2468.  
  2469. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  2470. {
  2471. if(!ispassenger)
  2472. {
  2473. new id = GetVehicleID(vehicleid);
  2474. if(IsValidVehicle(id) && VehicleCreated[id] == VEHICLE_PLAYER)
  2475. {
  2476. new msg[128];
  2477. format(msg, sizeof(msg), "This vehicle belongs to %s", VehicleOwner[id]);
  2478. SendClientMessage(playerid, COLOR_GREY, msg);
  2479. }
  2480. }
  2481. return 1;
  2482. }
  2483.  
  2484. public OnPlayerStateChange(playerid, newstate, oldstate)
  2485. {
  2486. if(IsPlayerInAnyVehicle(playerid) && !IsBicycle(GetPlayerVehicleID(playerid)))
  2487. {
  2488.  
  2489. TextDrawShowForPlayer(playerid, box[playerid]);
  2490. PlayerTextDrawShow(playerid, box2[playerid]);
  2491. PlayerTextDrawShow(playerid, box3[playerid]);
  2492. PlayerTextDrawShow(playerid, speedo[playerid]);
  2493. PlayerTextDrawShow(playerid, kmh[playerid]);
  2494. TextDrawShowForPlayer(playerid, veh[playerid]);
  2495. TextDrawShowForPlayer(playerid, vehname[playerid]);
  2496. TextDrawShowForPlayer(playerid, hp[playerid]);
  2497. TextDrawShowForPlayer(playerid, hpcol[playerid]);
  2498.  
  2499. TextDrawShowForPlayer(playerid, Textdraw12[playerid]);
  2500. TextDrawShowForPlayer(playerid, Textdraw13[playerid]);
  2501. TextDrawShowForPlayer(playerid, Textdraw14[playerid]);
  2502. TextDrawShowForPlayer(playerid, Textdraw15[playerid]);
  2503. TextDrawShowForPlayer(playerid, Textdraw6[playerid]);
  2504. TextDrawShowForPlayer(playerid, Textdraw7[playerid]);
  2505. PlayerTextDrawShow(playerid, box11[playerid]);
  2506.  
  2507. new vehicleid = GetPlayerVehicleID(playerid);
  2508. if(VehicleSecurity[vehicleid] == 1)
  2509. {
  2510. ToggleAlarm(vehicleid, VEHICLE_PARAMS_ON);
  2511. SetTimerEx("StopAlarm", ALARM_TIME, false, "d", vehicleid);
  2512. }
  2513. }
  2514. else
  2515. {
  2516. TextDrawHideForPlayer(playerid, box[playerid]);
  2517. PlayerTextDrawHide(playerid, box2[playerid]);
  2518. PlayerTextDrawHide(playerid, box3[playerid]);
  2519. PlayerTextDrawHide(playerid, speedo[playerid]);
  2520. PlayerTextDrawHide(playerid, kmh[playerid]);
  2521. TextDrawHideForPlayer(playerid, veh[playerid]);
  2522. TextDrawHideForPlayer(playerid, vehname[playerid]);
  2523. TextDrawHideForPlayer(playerid, hp[playerid]);
  2524. TextDrawHideForPlayer(playerid, hpcol[playerid]);
  2525.  
  2526. TextDrawHideForPlayer(playerid, Textdraw12[playerid]);
  2527. TextDrawHideForPlayer(playerid, Textdraw13[playerid]);
  2528. TextDrawHideForPlayer(playerid,Textdraw14[playerid]);
  2529. TextDrawHideForPlayer(playerid, Textdraw15[playerid]);
  2530. TextDrawHideForPlayer(playerid, Textdraw6[playerid]);
  2531. TextDrawHideForPlayer(playerid, Textdraw7[playerid]);
  2532. PlayerTextDrawHide(playerid, box11[playerid]);
  2533.  
  2534. }
  2535. if(newstate == PLAYER_STATE_DRIVER)
  2536. {
  2537. new vehicleid = GetPlayerVehicleID(playerid);
  2538. new id = GetVehicleID(vehicleid);
  2539. if(IsValidVehicle(id))
  2540. {
  2541. if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  2542. {
  2543. SetPVarInt(playerid, "DialogValue1", id);
  2544. ShowDialog(playerid, DIALOG_VEHICLE_BUY);
  2545. return 1;
  2546. }
  2547. }
  2548. if(IsBicycle(vehicleid))
  2549. {
  2550. ToggleEngine(vehicleid, VEHICLE_PARAMS_ON);
  2551. }
  2552. if(Fuel[vehicleid] <= 0)
  2553. {
  2554. ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
  2555. }
  2556. }
  2557. return 1;
  2558. }
  2559.  
  2560. public OnVehicleMod(playerid, vehicleid, componentid)
  2561. {
  2562. new id = GetVehicleID(vehicleid);
  2563. if(IsValidVehicle(id))
  2564. {
  2565. VehicleMods[id][GetVehicleComponentType(componentid)] = componentid;
  2566. SaveVehicle(id);
  2567. }
  2568. return 1;
  2569. }
  2570.  
  2571. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  2572. {
  2573. new id = GetVehicleID(vehicleid);
  2574. if(IsValidVehicle(id))
  2575. {
  2576. VehiclePaintjob[id] = paintjobid;
  2577. SaveVehicle(id);
  2578. }
  2579. return 1;
  2580. }
  2581.  
  2582. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  2583. {
  2584. new id = GetVehicleID(vehicleid);
  2585. if(IsValidVehicle(id))
  2586. {
  2587. VehicleColor[id][0] = color1;
  2588. VehicleColor[id][1] = color2;
  2589. SaveVehicle(id);
  2590. }
  2591. return 1;
  2592. }
  2593.  
  2594. ShowDialog(playerid, dialogid)
  2595. {
  2596. switch(dialogid)
  2597. {
  2598. case DIALOG_VEHICLE:
  2599. {
  2600. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2601. new caption[32], info[256];
  2602. format(caption, sizeof(caption), "Vehicle ID %d", vehicleid);
  2603. strcat(info, "Engine\nLights\nHood\nTrunk", sizeof(info));
  2604. strcat(info, "\nFill Tank", sizeof(info));
  2605. if(GetPlayerVehicleAccess(playerid, vehicleid) >= 2)
  2606. {
  2607. new value = VehicleValue[vehicleid]/2;
  2608. format(info, sizeof(info), "%s\nSell Vehicle ($%d)\nPark Vehicle\nEdit License Plate", info, value);
  2609. }
  2610. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, info, "Select", "Cancel");
  2611. }
  2612. case DIALOG_VEHICLE_BUY:
  2613. {
  2614. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2615. new caption[32], info[256];
  2616. format(caption, sizeof(caption), "Vehicle ID %d", vehicleid);
  2617. format(info, sizeof(info), "This vehicle is for sale ($%d)\nWould you like to buy it?", VehicleValue[vehicleid]);
  2618. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, info, "Yes", "No");
  2619. }
  2620. case DIALOG_VEHICLE_SELL:
  2621. {
  2622. new targetid = GetPVarInt(playerid, "DialogValue1");
  2623. new id = GetPVarInt(playerid, "DialogValue2");
  2624. new price = GetPVarInt(playerid, "DialogValue3");
  2625. new info[256];
  2626. format(info, sizeof(info), "%s (%d) wants to sell you a %s for $%d.", PlayerName(targetid), targetid,
  2627. VehicleNames[VehicleModel[id]-400], price);
  2628. strcat(info, "\n\nWould you like to buy?", sizeof(info));
  2629. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Buy Vehicle", info, "Yes", "No");
  2630. }
  2631. case DIALOG_TRUNK:
  2632. {
  2633. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2634. new name[32], info[256];
  2635. for(new i=0; i < sizeof(VehicleTrunk[]); i++)
  2636. {
  2637. if(VehicleTrunk[vehicleid][i][1] > 0)
  2638. {
  2639. GetWeaponName(VehicleTrunk[vehicleid][i][0], name, sizeof(name));
  2640. format(info, sizeof(info), "%s%d. %s (%d)\n", info, i+1, name, VehicleTrunk[vehicleid][i][1]);
  2641. }
  2642. else
  2643. {
  2644. format(info, sizeof(info), "%s%d. Empty\n", info, i+1);
  2645. }
  2646. }
  2647. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Trunk", info, "Select", "Cancel");
  2648. }
  2649. case DIALOG_TRUNK_ACTION:
  2650. {
  2651. new info[128];
  2652. strcat(info, "Put Into Trunk\nTake From Trunk", sizeof(info));
  2653. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Trunk", info, "Select", "Cancel");
  2654. }
  2655. case DIALOG_VEHICLE_PLATE:
  2656. {
  2657. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Edit License Plate", "Enter new license plate:", "Change", "Back");
  2658. }
  2659. case DIALOG_FUEL:
  2660. {
  2661. new info[128];
  2662. strcat(info, "Refuel Vehicle ($" #FUEL_PRICE ")\nBuy Gas Can ($" #GAS_CAN_PRICE ")", sizeof(info));
  2663. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Fuel Station", info, "OK", "Cancel");
  2664. }
  2665. case DIALOG_EDITVEHICLE:
  2666. {
  2667. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2668. new caption[32], info[256];
  2669. format(caption, sizeof(caption), "Edit Vehicle ID %d", vehicleid);
  2670. format(info, sizeof(info), "1. Value: [$%d]\n2. Model: [%d (%s)]\n3. Colors: [%d] [%d]\n4. License Plate: [%s]",
  2671. VehicleValue[vehicleid], VehicleModel[vehicleid], VehicleNames[VehicleModel[vehicleid]-400],
  2672. VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], VehicleNumberPlate[vehicleid]);
  2673. strcat(info, "\n5. Delete Vehicle\n6. Park Vehicle\n7. Go To Vehicle", sizeof(info));
  2674. strcat(info, "\n\nEnter: [nr] [value1] [value2]", sizeof(info));
  2675. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, info, "OK", "Cancel");
  2676. }
  2677. }
  2678. }
  2679.  
  2680. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  2681. {
  2682. if(dialogid == DIALOG_ERROR)
  2683. {
  2684. ShowDialog(playerid, DialogReturn[playerid]);
  2685. return 1;
  2686. }
  2687. DialogReturn[playerid] = dialogid;
  2688. if(dialogid == DIALOG_VEHICLE)
  2689. {
  2690. if(response)
  2691. {
  2692. switch(listitem)
  2693. {
  2694. case 0:
  2695. {
  2696. new vehicleid = GetPlayerVehicleID(playerid);
  2697. new engine, lights, alarm, doors, bonnet, boot, objective;
  2698. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2699. if(engine == 0 && Fuel[vehicleid] <= 0)
  2700. {
  2701. ShowErrorDialog(playerid, "This vehicle is out of fuel!");
  2702. return 1;
  2703. }
  2704. if(engine == 1) { engine = 0; lights = 0; }
  2705. else { engine = 1; lights = 1; }
  2706. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2707. }
  2708. case 1:
  2709. {
  2710. new vehicleid = GetPlayerVehicleID(playerid);
  2711. new engine, lights, alarm, doors, bonnet, boot, objective;
  2712. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2713. if(lights == 1) lights = 0; else lights = 1;
  2714. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2715. }
  2716. case 2:
  2717. {
  2718. new vehicleid = GetPlayerVehicleID(playerid);
  2719. new engine, lights, alarm, doors, bonnet, boot, objective;
  2720. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2721. if(bonnet == 1) bonnet = 0; else bonnet = 1;
  2722. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2723. }
  2724. case 3:
  2725. {
  2726. new vehicleid = GetPlayerVehicleID(playerid);
  2727. new engine, lights, alarm, doors, bonnet, boot, objective;
  2728. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2729. if(boot == 1) boot = 0; else boot = 1;
  2730. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2731. }
  2732. case 4:
  2733. {
  2734. if(!GetPVarInt(playerid, "GasCan"))
  2735. {
  2736. ShowErrorDialog(playerid, "You don't have a gas can!");
  2737. return 1;
  2738. }
  2739. new vehicleid = GetPlayerVehicleID(playerid);
  2740. if(Fuel[vehicleid] < 80.0) Fuel[vehicleid] += 20.0;
  2741. else Fuel[vehicleid] = 100.0;
  2742. SetPVarInt(playerid, "GasCan", 0);
  2743. SendClientMessage(playerid, COLOR_WHITE, "You have filled the fuel tank with 20 fuel");
  2744. }
  2745. case 5:
  2746. {
  2747. new id = GetPVarInt(playerid, "DialogValue1");
  2748. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2749. {
  2750. ShowErrorDialog(playerid, "You are not the owner of this vehicle!");
  2751. return 1;
  2752. }
  2753. new msg[128];
  2754. VehicleCreated[id] = 0;
  2755. new money = VehicleValue[id]/2;
  2756. GivePlayerMoney(playerid, money);
  2757. format(msg, sizeof(msg), "You have sold your vehicle for $%d", money);
  2758. SendClientMessage(playerid, COLOR_WHITE, msg);
  2759. RemovePlayerFromVehicle(playerid);
  2760. DestroyVehicle(VehicleID[id]);
  2761. SaveVehicle(id);
  2762. }
  2763. case 6:
  2764. {
  2765. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2766. if(GetPlayerVehicleAccess(playerid, vehicleid) < 2)
  2767. {
  2768. ShowErrorDialog(playerid, "You are not the owner of this vehicle!");
  2769. return 1;
  2770. }
  2771. GetVehiclePos(VehicleID[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1], VehiclePos[vehicleid][2]);
  2772. GetVehicleZAngle(VehicleID[vehicleid], VehiclePos[vehicleid][3]);
  2773. VehicleInterior[vehicleid] = GetPlayerInterior(playerid);
  2774. VehicleWorld[vehicleid] = GetPlayerVirtualWorld(playerid);
  2775. SendClientMessage(playerid, COLOR_WHITE, "You have parked this vehicle here");
  2776. UpdateVehicle(vehicleid, 1);
  2777. PutPlayerInVehicle(playerid, VehicleID[vehicleid], 0);
  2778. SaveVehicle(vehicleid);
  2779. }
  2780. case 7:
  2781. {
  2782. ShowDialog(playerid, DIALOG_VEHICLE_PLATE);
  2783. }
  2784. }
  2785. }
  2786. return 1;
  2787. }
  2788. if(dialogid == DIALOG_VEHICLE_BUY)
  2789. {
  2790. if(response)
  2791. {
  2792. if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
  2793. {
  2794. ShowErrorDialog(playerid, "You can't buy any more vehicles! Max: " #MAX_PLAYER_VEHICLES );
  2795. return 1;
  2796. }
  2797. new id = GetPVarInt(playerid, "DialogValue1");
  2798. if(GetPlayerMoney(playerid) < VehicleValue[id])
  2799. {
  2800. ShowErrorDialog(playerid, "You don't have enough money to buy this vehicle!");
  2801. return 1;
  2802. }
  2803. new freeid = GetFreeVehicleID();
  2804. if(!freeid)
  2805. {
  2806. ShowErrorDialog(playerid, "Vehicle dealership is out of stock!");
  2807. return 1;
  2808. }
  2809. GivePlayerMoney(playerid, -VehicleValue[id]);
  2810. new dealerid = strval(VehicleOwner[id]);
  2811. VehicleCreated[freeid] = VEHICLE_PLAYER;
  2812. VehicleModel[freeid] = VehicleModel[id];
  2813. VehiclePos[freeid] = DealershipPos[dealerid];
  2814. VehicleColor[freeid] = VehicleColor[id];
  2815. VehicleInterior[freeid] = VehicleInterior[id];
  2816. VehicleWorld[freeid] = VehicleWorld[id];
  2817. VehicleValue[freeid] = VehicleValue[id];
  2818. GetPlayerName(playerid, VehicleOwner[freeid], sizeof(VehicleOwner[]));
  2819. VehicleNumberPlate[freeid] = DEFAULT_NUMBER_PLATE;
  2820. for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  2821. {
  2822. VehicleTrunk[freeid][d][0] = 0;
  2823. VehicleTrunk[freeid][d][1] = 0;
  2824. }
  2825. for(new d=0; d < sizeof(VehicleMods[]); d++)
  2826. {
  2827. VehicleMods[freeid][d] = 0;
  2828. }
  2829. VehiclePaintjob[freeid] = 255;
  2830. VehicleLock[freeid] = 0;
  2831. VehicleAlarm[freeid] = 0;
  2832. UpdateVehicle(freeid, 0);
  2833. SaveVehicle(freeid);
  2834. new msg[128];
  2835. format(msg, sizeof(msg), "You have bought this vehicle for $%d", VehicleValue[id]);
  2836. SendClientMessage(playerid, COLOR_WHITE, msg);
  2837. }
  2838. else
  2839. {
  2840. new id = GetPVarInt(playerid, "DialogValue1");
  2841. if(GetPlayerVehicleAccess(playerid, id) < 1)
  2842. {
  2843. RemovePlayerFromVehicle(playerid);
  2844. }
  2845. }
  2846. return 1;
  2847. }
  2848. if(dialogid == DIALOG_VEHICLE_SELL)
  2849. {
  2850. if(response)
  2851. {
  2852. if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
  2853. {
  2854. ShowErrorDialog(playerid, "You can't buy any more vehicles! Max: " #MAX_PLAYER_VEHICLES );
  2855. return 1;
  2856. }
  2857. new targetid = GetPVarInt(playerid, "DialogValue1");
  2858. new id = GetPVarInt(playerid, "DialogValue2");
  2859. new price = GetPVarInt(playerid, "DialogValue3");
  2860. if(GetPlayerMoney(playerid) < price)
  2861. {
  2862. ShowErrorDialog(playerid, "You don't have enough money to buy this vehicle!");
  2863. return 1;
  2864. }
  2865. new msg[128];
  2866. GetPlayerName(playerid, VehicleOwner[id], sizeof(VehicleOwner[]));
  2867. GivePlayerMoney(playerid, -price);
  2868. GivePlayerMoney(targetid, price);
  2869. SaveVehicle(id);
  2870. format(msg, sizeof(msg), "You have bought this vehicle for $%d", price);
  2871. SendClientMessage(playerid, COLOR_WHITE, msg);
  2872. format(msg, sizeof(msg), "%s (%d) has accepted your offer and bought the vehicle", PlayerName(playerid), playerid);
  2873. SendClientMessage(targetid, COLOR_WHITE, msg);
  2874. }
  2875. else
  2876. {
  2877. new targetid = GetPVarInt(playerid, "DialogValue1");
  2878. new msg[128];
  2879. format(msg, sizeof(msg), "%s (%d) refused your offer", PlayerName(playerid), playerid);
  2880. SendClientMessage(targetid, COLOR_WHITE, msg);
  2881. }
  2882. return 1;
  2883. }
  2884. if(dialogid == DIALOG_FINDVEHICLE)
  2885. {
  2886. if(response)
  2887. {
  2888. new id;
  2889. sscanf(inputtext[4], "d", id);
  2890. if(IsValidVehicle(id))
  2891. {
  2892. TrackCar[playerid] = VehicleID[id];
  2893. SendClientMessage(playerid, COLOR_WHITE, "Your vehicle's location is shown on your minimap");
  2894. }
  2895. }
  2896. return 1;
  2897. }
  2898. if(dialogid == DIALOG_TRUNK)
  2899. {
  2900. if(response)
  2901. {
  2902. SetPVarInt(playerid, "DialogValue2", listitem);
  2903. ShowDialog(playerid, DIALOG_TRUNK_ACTION);
  2904. }
  2905. else
  2906. {
  2907. new id = GetPVarInt(playerid, "DialogValue1");
  2908. ToggleBoot(VehicleID[id], VEHICLE_PARAMS_OFF);
  2909. }
  2910. return 1;
  2911. }
  2912. if(dialogid == DIALOG_TRUNK_ACTION)
  2913. {
  2914. if(response)
  2915. {
  2916. new id = GetPVarInt(playerid, "DialogValue1");
  2917. new slot = GetPVarInt(playerid, "DialogValue2");
  2918. switch(listitem)
  2919. {
  2920. case 0:
  2921. {
  2922. new weaponid = GetPlayerWeapon(playerid);
  2923. if(weaponid == 0)
  2924. {
  2925. ShowErrorDialog(playerid, "You don't have a weapon in your hands!");
  2926. return 1;
  2927. }
  2928. VehicleTrunk[id][slot][0] = weaponid;
  2929. if(IsMeleeWeapon(weaponid)) VehicleTrunk[id][slot][1] = 1;
  2930. else VehicleTrunk[id][slot][1] = GetPlayerAmmo(playerid);
  2931. RemovePlayerWeapon(playerid, weaponid);
  2932. SaveVehicle(id);
  2933. }
  2934. case 1:
  2935. {
  2936. if(VehicleTrunk[id][slot][1] <= 0)
  2937. {
  2938. ShowErrorDialog(playerid, "This slot is empty!");
  2939. return 1;
  2940. }
  2941. GivePlayerWeapon(playerid, VehicleTrunk[id][slot][0], VehicleTrunk[id][slot][1]);
  2942. VehicleTrunk[id][slot][0] = 0;
  2943. VehicleTrunk[id][slot][1] = 0;
  2944. SaveVehicle(id);
  2945. }
  2946. }
  2947. }
  2948. ShowDialog(playerid, DIALOG_TRUNK);
  2949. return 1;
  2950. }
  2951. if(dialogid == DIALOG_VEHICLE_PLATE)
  2952. {
  2953. if(response)
  2954. {
  2955. if(strlen(inputtext) < 1 || strlen(inputtext) >= sizeof(VehicleNumberPlate[]))
  2956. {
  2957. ShowErrorDialog(playerid, "Invalid length!");
  2958. return 1;
  2959. }
  2960. new id = GetPVarInt(playerid, "DialogValue1");
  2961. new vehicleid = VehicleID[id];
  2962. strmid(VehicleNumberPlate[id], inputtext, 0, sizeof(VehicleNumberPlate[]));
  2963. SaveVehicle(id);
  2964. SetVehicleNumberPlate(vehicleid, inputtext);
  2965. SetVehicleToRespawn(vehicleid);
  2966. new msg[128];
  2967. format(msg, sizeof(msg), "You have changed vehicle number plate to %s", inputtext);
  2968. SendClientMessage(playerid, COLOR_WHITE, msg);
  2969. }
  2970. else ShowDialog(playerid, DIALOG_VEHICLE);
  2971. return 1;
  2972. }
  2973. if(dialogid == DIALOG_FUEL)
  2974. {
  2975. if(response)
  2976. {
  2977. switch(listitem)
  2978. {
  2979. case 0:
  2980. {
  2981. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  2982. {
  2983. ShowErrorDialog(playerid, "You are not driving a vehicle!");
  2984. return 1;
  2985. }
  2986. new vehicleid = GetPlayerVehicleID(playerid);
  2987. if(IsBicycle(vehicleid))
  2988. {
  2989. ShowErrorDialog(playerid, "Your vehicle doesn't have a fuel tank!");
  2990. return 1;
  2991. }
  2992. if(Fuel[vehicleid] >= 100.0)
  2993. {
  2994. ShowErrorDialog(playerid, "Your vehicle fuel tank is full!");
  2995. return 1;
  2996. }
  2997. if(GetPlayerMoney(playerid) < FUEL_PRICE)
  2998. {
  2999. ShowErrorDialog(playerid, "You don't have enough money!");
  3000. return 1;
  3001. }
  3002. RefuelTime[playerid] = 5;
  3003. SetPVarFloat(playerid, "Fuel", Fuel[vehicleid]);
  3004. GameTextForPlayer(playerid, "~w~refueling...", 2000, 3);
  3005. }
  3006. case 1:
  3007. {
  3008. if(GetPVarInt(playerid, "GasCan"))
  3009. {
  3010. ShowErrorDialog(playerid, "You already have a gas can!");
  3011. return 1;
  3012. }
  3013. if(GetPlayerMoney(playerid) < GAS_CAN_PRICE)
  3014. {
  3015. ShowErrorDialog(playerid, "You don't have enough money!");
  3016. return 1;
  3017. }
  3018. GivePlayerMoney(playerid, -GAS_CAN_PRICE);
  3019. SetPVarInt(playerid, "GasCan", 1);
  3020. SendClientMessage(playerid, COLOR_WHITE, "You have bought a gas can for $" #GAS_CAN_PRICE );
  3021. }
  3022. }
  3023. }
  3024. return 1;
  3025. }
  3026. if(dialogid == DIALOG_EDITVEHICLE)
  3027. {
  3028. if(response)
  3029. {
  3030. new id = GetPVarInt(playerid, "DialogValue1");
  3031. new nr, params[128];
  3032. sscanf(inputtext, "ds", nr, params);
  3033. switch(nr)
  3034. {
  3035. case 1:
  3036. {
  3037. new value = strval(params);
  3038. if(value < 0) value = 0;
  3039. VehicleValue[id] = value;
  3040. UpdateVehicleLabel(id, 1);
  3041. SaveVehicle(id);
  3042. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  3043. }
  3044. case 2:
  3045. {
  3046. new value;
  3047. if(IsNumeric(params)) value = strval(params);
  3048. else value = GetVehicleModelIDFromName(params);
  3049. if(value < 400 || value > 611)
  3050. {
  3051. ShowErrorDialog(playerid, "Invalid vehicle model!");
  3052. return 1;
  3053. }
  3054. VehicleModel[id] = value;
  3055. for(new i=0; i < sizeof(VehicleMods[]); i++)
  3056. {
  3057. VehicleMods[id][i] = 0;
  3058. }
  3059. VehiclePaintjob[id] = 255;
  3060. UpdateVehicle(id, 1);
  3061. SaveVehicle(id);
  3062. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  3063. }
  3064. case 3:
  3065. {
  3066. new color1, color2;
  3067. sscanf(params, "dd", color1, color2);
  3068. VehicleColor[id][0] = color1;
  3069. VehicleColor[id][1] = color2;
  3070. SaveVehicle(id);
  3071. ChangeVehicleColor(VehicleID[id], color1, color2);
  3072. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  3073. }
  3074. case 4:
  3075. {
  3076. if(strlen(params) < 1 || strlen(params) > 8)
  3077. {
  3078. ShowErrorDialog(playerid, "Invalid length!");
  3079. return 1;
  3080. }
  3081. strmid(VehicleNumberPlate[id], params, 0, sizeof(params));
  3082. SaveVehicle(id);
  3083. SetVehicleNumberPlate(VehicleID[id], params);
  3084. SetVehicleToRespawn(VehicleID[id]);
  3085. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  3086. }
  3087. case 5:
  3088. {
  3089. DestroyVehicle(VehicleID[id]);
  3090. if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  3091. {
  3092. Delete3DTextLabel(VehicleLabel[id]);
  3093. }
  3094. VehicleCreated[id] = 0;
  3095. SaveVehicle(id);
  3096. new msg[128];
  3097. format(msg, sizeof(msg), "You have deleted vehicle id %d", id);
  3098. SendClientMessage(playerid, COLOR_WHITE, msg);
  3099. }
  3100. case 6:
  3101. {
  3102. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  3103. {
  3104. ShowErrorDialog(playerid, "You are not driving the vehicle!");
  3105. return 1;
  3106. }
  3107. GetVehiclePos(VehicleID[id], VehiclePos[id][0], VehiclePos[id][1], VehiclePos[id][2]);
  3108. GetVehicleZAngle(VehicleID[id], VehiclePos[id][3]);
  3109. VehicleInterior[id] = GetPlayerInterior(playerid);
  3110. VehicleWorld[id] = GetPlayerVirtualWorld(playerid);
  3111. SendClientMessage(playerid, COLOR_WHITE, "You have parked this vehicle here");
  3112. UpdateVehicle(id, 1);
  3113. PutPlayerInVehicle(playerid, VehicleID[id], 0);
  3114. SaveVehicle(id);
  3115. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  3116. }
  3117. case 7:
  3118. {
  3119. new Float:x, Float:y, Float:z;
  3120. GetVehiclePos(VehicleID[id], x, y, z);
  3121. SetPlayerPos(playerid, x, y, z+1);
  3122. new msg[128];
  3123. format(msg, sizeof(msg), "You have teleported to vehicle id %d", id);
  3124. SendClientMessage(playerid, COLOR_WHITE, msg);
  3125. }
  3126. }
  3127. }
  3128. return 1;
  3129. }
  3130. return 0;
  3131. }
  3132.  
  3133. stock sscanf(string[], format[], {Float,_}:...)
  3134. {
  3135. #if defined isnull
  3136. if (isnull(string))
  3137. #else
  3138. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  3139. #endif
  3140. {
  3141. return format[0];
  3142. }
  3143. new
  3144. formatPos = 0,
  3145. stringPos = 0,
  3146. paramPos = 2,
  3147. paramCount = numargs(),
  3148. delim = ' ';
  3149. while (string[stringPos] && string[stringPos] <= ' ')
  3150. {
  3151. stringPos++;
  3152. }
  3153. while (paramPos < paramCount && string[stringPos])
  3154. {
  3155. switch (format[formatPos++])
  3156. {
  3157. case '\0':
  3158. {
  3159. return 0;
  3160. }
  3161. case 'i', 'd':
  3162. {
  3163. new
  3164. neg = 1,
  3165. num = 0,
  3166. ch = string[stringPos];
  3167. if (ch == '-')
  3168. {
  3169. neg = -1;
  3170. ch = string[++stringPos];
  3171. }
  3172. do
  3173. {
  3174. stringPos++;
  3175. if ('0' <= ch <= '9')
  3176. {
  3177. num = (num * 10) + (ch - '0');
  3178. }
  3179. else
  3180. {
  3181. return -1;
  3182. }
  3183. }
  3184. while ((ch = string[stringPos]) > ' ' && ch != delim);
  3185. setarg(paramPos, 0, num * neg);
  3186. }
  3187. case 'h', 'x':
  3188. {
  3189. new
  3190. num = 0,
  3191. ch = string[stringPos];
  3192. do
  3193. {
  3194. stringPos++;
  3195. switch (ch)
  3196. {
  3197. case 'x', 'X':
  3198. {
  3199. num = 0;
  3200. continue;
  3201. }
  3202. case '0' .. '9':
  3203. {
  3204. num = (num << 4) | (ch - '0');
  3205. }
  3206. case 'a' .. 'f':
  3207. {
  3208. num = (num << 4) | (ch - ('a' - 10));
  3209. }
  3210. case 'A' .. 'F':
  3211. {
  3212. num = (num << 4) | (ch - ('A' - 10));
  3213. }
  3214. default:
  3215. {
  3216. return -1;
  3217. }
  3218. }
  3219. }
  3220. while ((ch = string[stringPos]) > ' ' && ch != delim);
  3221. setarg(paramPos, 0, num);
  3222. }
  3223. case 'c':
  3224. {
  3225. setarg(paramPos, 0, string[stringPos++]);
  3226. }
  3227. case 'f':
  3228. {
  3229. new
  3230. end = stringPos - 1,
  3231. ch;
  3232. while ((ch = string[++end]) && ch != delim) {}
  3233. string[end] = '\0';
  3234. setarg(paramPos,0,_:floatstr(string[stringPos]));
  3235. string[end] = ch;
  3236. stringPos = end;
  3237. }
  3238. case 'p':
  3239. {
  3240. delim = format[formatPos++];
  3241. continue;
  3242. }
  3243. case '\'':
  3244. {
  3245. new
  3246. end = formatPos - 1,
  3247. ch;
  3248. while ((ch = format[++end]) && ch != '\'') {}
  3249. if (!ch)
  3250. {
  3251. return -1;
  3252. }
  3253. format[end] = '\0';
  3254. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  3255. {
  3256. if (format[end + 1])
  3257. {
  3258. return -1;
  3259. }
  3260. return 0;
  3261. }
  3262. format[end] = '\'';
  3263. stringPos = ch + (end - formatPos);
  3264. formatPos = end + 1;
  3265. }
  3266. case 'u':
  3267. {
  3268. new
  3269. end = stringPos - 1,
  3270. id = 0,
  3271. bool:num = true,
  3272. ch;
  3273. while ((ch = string[++end]) && ch != delim)
  3274. {
  3275. if (num)
  3276. {
  3277. if ('0' <= ch <= '9')
  3278. {
  3279. id = (id * 10) + (ch - '0');
  3280. }
  3281. else
  3282. {
  3283. num = false;
  3284. }
  3285. }
  3286. }
  3287. if (num && IsPlayerConnected(id))
  3288. {
  3289. setarg(paramPos, 0, id);
  3290. }
  3291. else
  3292. {
  3293. #if !defined foreach
  3294. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  3295. #define __SSCANF_FOREACH__
  3296. #endif
  3297. string[end] = '\0';
  3298. num = false;
  3299. new
  3300. name[MAX_PLAYER_NAME];
  3301. id = end - stringPos;
  3302. foreach (Player, playerid)
  3303. {
  3304. GetPlayerName(playerid, name, sizeof (name));
  3305. if (!strcmp(name, string[stringPos], true, id))
  3306. {
  3307. setarg(paramPos, 0, playerid);
  3308. num = true;
  3309. break;
  3310. }
  3311. }
  3312. if (!num)
  3313. {
  3314. setarg(paramPos, 0, INVALID_PLAYER_ID);
  3315. }
  3316. string[end] = ch;
  3317. #if defined __SSCANF_FOREACH__
  3318. #undef foreach
  3319. #undef __SSCANF_FOREACH__
  3320. #endif
  3321. }
  3322. stringPos = end;
  3323. }
  3324. case 's', 'z':
  3325. {
  3326. new
  3327. i = 0,
  3328. ch;
  3329. if (format[formatPos])
  3330. {
  3331. while ((ch = string[stringPos++]) && ch != delim)
  3332. {
  3333. setarg(paramPos, i++, ch);
  3334. }
  3335. if (!i)
  3336. {
  3337. return -1;
  3338. }
  3339. }
  3340. else
  3341. {
  3342. while ((ch = string[stringPos++]))
  3343. {
  3344. setarg(paramPos, i++, ch);
  3345. }
  3346. }
  3347. stringPos--;
  3348. setarg(paramPos, i, '\0');
  3349. }
  3350. default:
  3351. {
  3352. continue;
  3353. }
  3354. }
  3355. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  3356. {
  3357. stringPos++;
  3358. }
  3359. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  3360. {
  3361. stringPos++;
  3362. }
  3363. paramPos++;
  3364. }
  3365. do
  3366. {
  3367. if ((delim = format[formatPos++]) > ' ')
  3368. {
  3369. if (delim == '\'')
  3370. {
  3371. while ((delim = format[formatPos++]) && delim != '\'') {}
  3372. }
  3373. else if (delim != 'z')
  3374. {
  3375. return delim;
  3376. }
  3377. }
  3378. }
  3379. while (delim > ' ');
  3380. return 0;
  3381. }
Add Comment
Please, Sign In to add comment