Guest User

Untitled

a guest
Oct 21st, 2012
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 139.36 KB | None | 0 0
  1. // Welcome to the OrbzGaming SA:MP Server Lovely Script
  2. // Scripted by Jason Gray
  3. // Enjoy the server and we love you.
  4. #include <a_samp>
  5. #include <zcmd>
  6. #include <sscanf2>
  7. #include <streamer>
  8. //Y_INI SYSTEM!!!!
  9. #include <YSI\y_ini>
  10. #define DIALOG_REGISTER 1
  11. #define DIALOG_LOGIN 2
  12. #define DIALOG_SUCCESS_1 3
  13. #define DIALOG_SUCCESS_2 4
  14. #define PATH "/Users/%s.ini"
  15. #define COL_WHITE "{FFFFFF}"
  16. #define COL_RED "{F81414}"
  17. #define COL_GREEN "{00FF22}"
  18. #define COL_LIGHTBLUE "{00CED1}"
  19. #define GLAD2BEHERE 1
  20.  
  21. // In some command
  22. enum pInfo
  23. {
  24. pPass,
  25. pCash,
  26. pAdmin,
  27. pKills,
  28. pDeaths
  29. }
  30. new PlayerInfo[MAX_PLAYERS][pInfo];
  31. forward LoadUser_data(playerid,name[],value[]);
  32. public LoadUser_data(playerid,name[],value[])
  33. {
  34. INI_Int("Password",PlayerInfo[playerid][pPass]);
  35. INI_Int("Cash",PlayerInfo[playerid][pCash]);
  36. INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
  37. INI_Int("Kills",PlayerInfo[playerid][pKills]);
  38. INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
  39. return 1;
  40. }
  41. stock UserPath(playerid)
  42. {
  43. new string[128],playername[MAX_PLAYER_NAME];
  44. GetPlayerName(playerid,playername,sizeof(playername));
  45. format(string,sizeof(string),PATH,playername);
  46. return string;
  47. }
  48. /*Credits to Dracoblue*/
  49. stock udb_hash(buf[]) {
  50. new length=strlen(buf);
  51. new s1 = 1;
  52. new s2 = 0;
  53. new n;
  54. for (n=0; n<length; n++)
  55. {
  56. s1 = (s1 + buf[n]) % 65521;
  57. s2 = (s2 + s1) % 65521;
  58. }
  59. return (s2 << 16) + s1;
  60. }
  61. public OnPlayerConnect(playerid)
  62. {
  63. if(fexist(UserPath(playerid)))
  64. {
  65. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  66. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit");
  67. }
  68. else
  69. {
  70. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
  71. }
  72. return 1;
  73. }
  74. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  75. {
  76. switch( dialogid )
  77. {
  78. case DIALOG_REGISTER:
  79. {
  80. if (!response) return Kick(playerid);
  81. if(response)
  82. {
  83. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
  84. new INI:File = INI_Open(UserPath(playerid));
  85. INI_SetTag(File,"data");
  86. INI_WriteInt(File,"Password",udb_hash(inputtext));
  87. INI_WriteInt(File,"Cash",0);
  88. INI_WriteInt(File,"Admin",0);
  89. INI_WriteInt(File,"Kills",0);
  90. INI_WriteInt(File,"Deaths",0);
  91. INI_Close(File);
  92.  
  93. SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
  94. SpawnPlayer(playerid);
  95. ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
  96. }
  97. }
  98.  
  99. case DIALOG_LOGIN:
  100. {
  101. if ( !response ) return Kick ( playerid );
  102. if( response )
  103. {
  104. if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
  105. {
  106. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  107. GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
  108. ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
  109. }
  110. else
  111. {
  112. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
  113. }
  114. return 1;
  115. }
  116. }
  117. }
  118. return 1;
  119. }
  120. public OnPlayerDisconnect(playerid, reason)
  121. {
  122. new INI:File = INI_Open(UserPath(playerid));
  123. INI_SetTag(File,"data");
  124. INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
  125. INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
  126. INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
  127. INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
  128. INI_Close(File);
  129. return 1;
  130. }
  131. public OnPlayerDeath(playerid, killerid, reason)
  132. {
  133. PlayerInfo[killerid][pKills]++;
  134. PlayerInfo[playerid][pDeaths]++;
  135. return 1;
  136. }
  137. //
  138. //End
  139. #define red 0xFF0000AA
  140. #if defined FILTERSCRIPT
  141. #include <zcmd>
  142.  
  143. #pragma tabsize 0
  144.  
  145. new Text3D:label[MAX_PLAYERS];
  146. new PlayerInfo[MAX_PLAYERS][Player];
  147. // <------------------------------>
  148. // <---Some color that we will define--->
  149. #define COLOR_WHITE 0xFFFFFFAA
  150. #define COLOR_GREEN 0x00FF00AA
  151. #define COLOR_RED 0xFF0000AA
  152. #define COLOR_YELLOW 0xFFFF00AA
  153.  
  154. // ---> Function enum to get the %s player a.f.k stats ---<
  155.  
  156. enum Player
  157. {
  158. AFKstatus
  159. }
  160. // --->>> Commands <<<----
  161.  
  162. CMD:afk(playerid, params[])
  163. {
  164. SendClientMessage(playerid, COLOR_YELLOW, "You are now AFK, type /back when you are back!");
  165. TogglePlayerControllable(playerid,0); // function that will not allowed the player to move
  166. label[playerid] = Create3DTextLabel("AFK",yellow,30.0,40.0,50.0,40.0,0); // On player head AFK
  167. Attach3DTextLabelToPlayer(label[playerid], playerid, 0.0, 0.0, 0.7);
  168. new string3[164];
  169. new name[MAX_PLAYER_NAME];
  170. GetPlayerName(playerid, name, sizeof(name));
  171.  
  172. format(string3, sizeof(string3), "{FF0000}[AFK INFO]: {FFFFFF}%s is now Away from the keyboard.{FF0000}(/afk)", name);
  173. SendClientMessageToAll(COLOR_YELLOW, string3);
  174. return 1;
  175. }
  176.  
  177. CMD:brb(playerid, params[])
  178. {
  179. SendClientMessage(playerid, COLOR_YELLOW, "You are now BE RIGHT BACK, type /back to move again!");
  180. TogglePlayerControllable(playerid,0);
  181. label[playerid] = Create3DTextLabel("BRB",yellow,30.0,40.0,50.0,40.0,0);
  182. Attach3DTextLabelToPlayer(label[playerid], playerid, 0.0, 0.0, 0.7);
  183. new string3[164];
  184. new name[MAX_PLAYER_NAME];
  185. GetPlayerName(playerid, name, sizeof(name));
  186.  
  187. format(string3, sizeof(string3), "{FF0000}[BRB INFO]: {FFFFFF}%s will be right back.{FF0000}(/brb)", name);
  188. SendClientMessageToAll(COLOR_YELLOW, string3);
  189. return 1;
  190. }
  191.  
  192. if(strcmp("/back", cmdtext, true) == 0)
  193. {
  194. SendClientMessage(playerid, COLOR_YELLOW, "Welcome back!");
  195. TogglePlayerControllable(playerid,1);
  196. new string3[164];
  197. new name[MAX_PLAYER_NAME];
  198. GetPlayerName(playerid, name, sizeof(name));
  199.  
  200. format(string3, sizeof(string3), "{FF0000}[INFO]: {FFFFFF}%s is now back and Playing.{FF0000}(/back)", name);
  201. SendClientMessageToAll(COLOR_YELLOW, string3);
  202. Delete3DTextLabel(Text3D:label[playerid]); // remove text from player head :D
  203. return 1;
  204. }
  205.  
  206. CMD:_afklist(playerid, params[])
  207. {
  208. #pragma unused params
  209. new count = 0;
  210. new name[MAX_PLAYER_NAME];
  211. new string[128];
  212. //
  213. SendClientMessage(playerid, COLOR_WHITE, "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
  214. SendClientMessage(playerid, COLOR_LIGHTBLUE, "The Afk Player Are:");
  215. SendClientMessage(playerid, COLOR_WHITE, "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
  216. for(new i = 0; i < MAX_PLAYERS; i++)
  217. {
  218. if (IsPlayerConnected(i))
  219. {
  220.  
  221. if(PlayerInfo[i][AFKstatus] == 1)
  222. {
  223. GetPlayerName(i, name, sizeof(name));
  224. format(string, 256, "-: AFK :- %s{FFFFFF} (ID:%d)", name,i );
  225. SendClientMessage(playerid, COLOR_YELLOW, string);
  226. count++;
  227. }
  228. }
  229.  
  230. }
  231. if (count == 0)
  232. {
  233. SendClientMessage(playerid, COLOR_RED, "None player Is Afk or Brb");
  234. }
  235. SendClientMessage(playerid, COLOR_RED, " - ");
  236. return 1;
  237. }
  238.  
  239. public OnPlayerText(playerid, text[])
  240. {
  241. if (PlayerInfo[playerid][AFKstatus] == 1)
  242. {
  243. SendClientMessage(playerid, COLOR_RED, " You Cant talk while bieng Afk or Brb!!");
  244. return 0;
  245. }
  246.  
  247. else if (PlayerInfo[playerid][AFKstatus] == 0)
  248. {
  249. return 1;
  250. }
  251. return 1;
  252. }
  253. //=========================SETTINGS=========================
  254.  
  255. #undef MAX_PLAYERS
  256. #define MAX_PLAYERS 100
  257.  
  258. #define MAX_DVEHICLES 200
  259. #define MAX_DEALERSHIPS 10
  260. #define MAX_FUEL_STATIONS 10
  261.  
  262. #define VEHICLE_FILE_PATH "AVS/Vehicles/"
  263. #define DEALERSHIP_FILE_PATH "AVS/Dealerships/"
  264. #define FUEL_STATION_FILE_PATH "AVS/FuelStations/"
  265.  
  266. #define MAX_PLAYER_VEHICLES 3
  267. #define FUEL_PRICE 5
  268. #define GAS_CAN_PRICE 40
  269. #define ALARM_TIME 10000 // alarm duration in milliseconds (1 second = 1000 milliseconds)
  270. #define DEFAULT_NUMBER_PLATE "OrbzGaming"
  271.  
  272. //==========================================================
  273.  
  274. #define COLOR_BLACK 0x000000FF
  275. #define COLOR_RED 0xEE0000FF
  276. #define COLOR_GREEN 0x00CC00FF
  277. #define COLOR_BLUE 0x0000FFFF
  278. #define COLOR_ORANGE 0xFF6600FF
  279. #define COLOR_YELLOW 0xFFFF00FF
  280. #define COLOR_LIGHTBLUE 0x00FFFFFF
  281. #define COLOR_PURPLE 0xC2A2DAFF
  282. #define COLOR_GREY 0xC0C0C0FF
  283. #define COLOR_WHITE 0xFFFFFFFF
  284.  
  285. #define VEHICLE_DEALERSHIP 1
  286. #define VEHICLE_PLAYER 2
  287.  
  288. #define CMD:%1(%2) \
  289. forward cmd_%1(%2); \
  290. public cmd_%1(%2)
  291.  
  292. #define ShowErrorDialog(%1,%2) ShowPlayerDialog(%1, DIALOG_ERROR, DIALOG_STYLE_MSGBOX, "ERROR", %2, "OK", "")
  293.  
  294. enum
  295. {
  296. DIALOG_NONE=12345,
  297. DIALOG_ERROR=12346,
  298. DIALOG_VEHICLE=500,
  299. DIALOG_VEHICLE_BUY,
  300. DIALOG_VEHICLE_SELL,
  301. DIALOG_FINDVEHICLE,
  302. DIALOG_TRUNK,
  303. DIALOG_TRUNK_ACTION,
  304. DIALOG_VEHICLE_PLATE,
  305. DIALOG_FUEL,
  306. DIALOG_EDITVEHICLE
  307. };
  308.  
  309. new maintimer;
  310. new speedotimer;
  311. new savetimer;
  312.  
  313. new SaveVehicleIndex;
  314.  
  315. new RefuelTime[MAX_PLAYERS];
  316. new TrackCar[MAX_PLAYERS];
  317. new DialogReturn[MAX_PLAYERS];
  318.  
  319. //new Text:SpeedoBox;
  320. new Text:SpeedoText[MAX_PLAYERS];
  321.  
  322. new Float:Fuel[MAX_VEHICLES] = {100.0, ...};
  323. new VehicleSecurity[MAX_VEHICLES];
  324.  
  325. new VehicleCreated[MAX_DVEHICLES];
  326. new VehicleID[MAX_DVEHICLES];
  327. new VehicleModel[MAX_DVEHICLES];
  328. new Float:VehiclePos[MAX_DVEHICLES][4];
  329. new VehicleColor[MAX_DVEHICLES][2];
  330. new VehicleInterior[MAX_DVEHICLES];
  331. new VehicleWorld[MAX_DVEHICLES];
  332. new VehicleOwner[MAX_DVEHICLES][MAX_PLAYER_NAME];
  333. new VehicleNumberPlate[MAX_DVEHICLES][16];
  334. new VehicleValue[MAX_DVEHICLES];
  335. new VehicleLock[MAX_DVEHICLES];
  336. new VehicleAlarm[MAX_DVEHICLES];
  337. new VehicleTrunk[MAX_DVEHICLES][5][2];
  338. new VehicleMods[MAX_DVEHICLES][14];
  339. new VehiclePaintjob[MAX_DVEHICLES] = {255, ...};
  340. new Text3D:VehicleLabel[MAX_DVEHICLES];
  341.  
  342. new DealershipCreated[MAX_DEALERSHIPS];
  343. new Float:DealershipPos[MAX_DEALERSHIPS][3];
  344. new Text3D:DealershipLabel[MAX_DEALERSHIPS];
  345.  
  346. new FuelStationCreated[MAX_FUEL_STATIONS];
  347. new Float:FuelStationPos[MAX_FUEL_STATIONS][3];
  348. new Text3D:FuelStationLabel[MAX_FUEL_STATIONS];
  349.  
  350. new VehicleNames[][] = {
  351. "Landstalker","Bravura","Buffalo","Linerunner","Perennial","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
  352. "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
  353. "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
  354. "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
  355. "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
  356. "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
  357. "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
  358. "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
  359. "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
  360. "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
  361. "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
  362. "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
  363. "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
  364. "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
  365. "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
  366. "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
  367. "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
  368. };
  369.  
  370. enum MainZone
  371. {
  372. Zone_Name[28],
  373. Float:Zone_Area[6]
  374. }
  375.  
  376. static const SanAndreasZones[][MainZone] = {
  377.  
  378. {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
  379. {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
  380. {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
  381. {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
  382. {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
  383. {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
  384. {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
  385. {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
  386. {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
  387. {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
  388. {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
  389. {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
  390. {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
  391. {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
  392. {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
  393. {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
  394. {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
  395. {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
  396. {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
  397. {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
  398. {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
  399. {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
  400. {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
  401. {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
  402. {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
  403. {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
  404. {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
  405. {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
  406. {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
  407. {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
  408. {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
  409. {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
  410. {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
  411. {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
  412. {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
  413. {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
  414. {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
  415. {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
  416. {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
  417. {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
  418. {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
  419. {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
  420. {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
  421. {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
  422. {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
  423. {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
  424. {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
  425. {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
  426. {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
  427. {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
  428. {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
  429. {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
  430. {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
  431. {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
  432. {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
  433. {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
  434. {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
  435. {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
  436. {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
  437. {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
  438. {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
  439. {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
  440. {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
  441. {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
  442. {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
  443. {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
  444. {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
  445. {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
  446. {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
  447. {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
  448. {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
  449. {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
  450. {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
  451. {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
  452. {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
  453. {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
  454. {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
  455. {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
  456. {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
  457. {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
  458. {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
  459. {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
  460. {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
  461. {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
  462. {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
  463. {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
  464. {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
  465. {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
  466. {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
  467. {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
  468. {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
  469. {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
  470. {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
  471. {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
  472. {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
  473. {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
  474. {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
  475. {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
  476. {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
  477. {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
  478. {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
  479. {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
  480. {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
  481. {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
  482. {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
  483. {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
  484. {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
  485. {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
  486. {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
  487. {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
  488. {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
  489. {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
  490. {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
  491. {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
  492. {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
  493. {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
  494. {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
  495. {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
  496. {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
  497. {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
  498. {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
  499. {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
  500. {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
  501. {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
  502. {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
  503. {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
  504. {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
  505. {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
  506. {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
  507. {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
  508. {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
  509. {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
  510. {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
  511. {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
  512. {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
  513. {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
  514. {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
  515. {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
  516. {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
  517. {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
  518. {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
  519. {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
  520. {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
  521. {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
  522. {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
  523. {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
  524. {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
  525. {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
  526. {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
  527. {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
  528. {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
  529. {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
  530. {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
  531. {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
  532. {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
  533. {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
  534. {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
  535. {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
  536. {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
  537. {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
  538. {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
  539. {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
  540. {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
  541. {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
  542. {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
  543. {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
  544. {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
  545. {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
  546. {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
  547. {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
  548. {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
  549. {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
  550. {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
  551. {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
  552. {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
  553. {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
  554. {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
  555. {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
  556. {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
  557. {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
  558. {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
  559. {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
  560. {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
  561. {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
  562. {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
  563. {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
  564. {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
  565. {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
  566. {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
  567. {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
  568. {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
  569. {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
  570. {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
  571. {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
  572. {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
  573. {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
  574. {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
  575. {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
  576. {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
  577. {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
  578. {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
  579. {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
  580. {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
  581. {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
  582. {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
  583. {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
  584. {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
  585. {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
  586. {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
  587. {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
  588. {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
  589. {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
  590. {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
  591. {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
  592. {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
  593. {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
  594. {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
  595. {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
  596. {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
  597. {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
  598. {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
  599. {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
  600. {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
  601. {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
  602. {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
  603. {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
  604. {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
  605. {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
  606. {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
  607. {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
  608. {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
  609. {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
  610. {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
  611. {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
  612. {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
  613. {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
  614. {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
  615. {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
  616. {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
  617. {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
  618. {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
  619. {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
  620. {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
  621. {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
  622. {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
  623. {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
  624. {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
  625. {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
  626. {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
  627. {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
  628. {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
  629. {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
  630. {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
  631. {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
  632. {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
  633. {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
  634. {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
  635. {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
  636. {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
  637. {"Randolph Industrial", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
  638. {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
  639. {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
  640. {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
  641. {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
  642. {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
  643. {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
  644. {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
  645. {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
  646. {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
  647. {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
  648. {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
  649. {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
  650. {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
  651. {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
  652. {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
  653. {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
  654. {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
  655. {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
  656. {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
  657. {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
  658. {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
  659. {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
  660. {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
  661. {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
  662. {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
  663. {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
  664. {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
  665. {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
  666. {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
  667. {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
  668. {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
  669. {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
  670. {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
  671. {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
  672. {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
  673. {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
  674. {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
  675. {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
  676. {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
  677. {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
  678. {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
  679. {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
  680. {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
  681. {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
  682. {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
  683. {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
  684. {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
  685. {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
  686. {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
  687. {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
  688. {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
  689. {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
  690. {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
  691. {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
  692. {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
  693. {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
  694. {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
  695. {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
  696. {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
  697. {"Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
  698. {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
  699. {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
  700. {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
  701. {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
  702. {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
  703. {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
  704. {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
  705. {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
  706. {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
  707. {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
  708. {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
  709. {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
  710. {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
  711. {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
  712. {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
  713. {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
  714. {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
  715. {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
  716. {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
  717. {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
  718. {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
  719. {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
  720. {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
  721. {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
  722. {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
  723. {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
  724. {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
  725. {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
  726. {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
  727. {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
  728. {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
  729. {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
  730. {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
  731. {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
  732. {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
  733. {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
  734. // Citys Zones
  735. {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
  736. {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
  737. {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
  738. {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
  739. {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
  740. {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
  741. {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
  742. {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
  743. {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
  744. };
  745.  
  746. forward MainTimer();
  747. forward Speedometer();
  748. forward SaveTimer();
  749. forward StopAlarm(vehicleid);
  750.  
  751. stock PlayerName(playerid)
  752. {
  753. new pName[MAX_PLAYER_NAME];
  754. GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  755. return pName;
  756. }
  757.  
  758. stock IsPlayerSpawned(playerid)
  759. {
  760. switch(GetPlayerState(playerid))
  761. {
  762. case 1,2,3: return 1;
  763. }
  764. return 0;
  765. }
  766.  
  767. stock IsMeleeWeapon(weaponid)
  768. {
  769. switch(weaponid)
  770. {
  771. case 2 .. 15, 40, 44 .. 46: return 1;
  772. }
  773. return 0;
  774. }
  775.  
  776. stock RemovePlayerWeapon(playerid, weaponid)
  777. {
  778. new WeaponData[12][2];
  779. for(new i=1; i < sizeof(WeaponData); i++)
  780. {
  781. GetPlayerWeaponData(playerid, i, WeaponData[i][0], WeaponData[i][1]);
  782. }
  783. ResetPlayerWeapons(playerid);
  784. for(new i=1; i < sizeof(WeaponData); i++)
  785. {
  786. if(WeaponData[i][0] != weaponid)
  787. {
  788. GivePlayerWeapon(playerid, WeaponData[i][0], WeaponData[i][1]);
  789. }
  790. }
  791. }
  792.  
  793. stock IsBicycle(vehicleid)
  794. {
  795. switch(GetVehicleModel(vehicleid))
  796. {
  797. case 481,509,510: return 1;
  798. }
  799. return 0;
  800. }
  801.  
  802. stock PlayerToPlayer(playerid, targetid, Float:dist)
  803. {
  804. new Float:pos[3];
  805. GetPlayerPos(targetid, pos[0], pos[1], pos[2]);
  806. return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  807. }
  808.  
  809. stock PlayerToVehicle(playerid, vehicleid, Float:dist)
  810. {
  811. new Float:pos[3];
  812. GetVehiclePos(vehicleid, pos[0], pos[1], pos[2]);
  813. return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  814. }
  815.  
  816. stock GetClosestVehicle(playerid)
  817. {
  818. new Float:x, Float:y, Float:z;
  819. new Float:dist, Float:closedist=9999, closeveh;
  820. for(new i=1; i < MAX_VEHICLES; i++)
  821. {
  822. if(GetVehiclePos(i, x, y, z))
  823. {
  824. dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
  825. if(dist < closedist)
  826. {
  827. closedist = dist;
  828. closeveh = i;
  829. }
  830. }
  831. }
  832. return closeveh;
  833. }
  834.  
  835. stock ToggleEngine(vehicleid, toggle)
  836. {
  837. new engine, lights, alarm, doors, bonnet, boot, objective;
  838. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  839. SetVehicleParamsEx(vehicleid, toggle, lights, alarm, doors, bonnet, boot, objective);
  840. }
  841.  
  842. stock ToggleAlarm(vehicleid, toggle)
  843. {
  844. new engine, lights, alarm, doors, bonnet, boot, objective;
  845. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  846. SetVehicleParamsEx(vehicleid, engine, lights, toggle, doors, bonnet, boot, objective);
  847. }
  848.  
  849. stock ToggleDoors(vehicleid, toggle)
  850. {
  851. new engine, lights, alarm, doors, bonnet, boot, objective;
  852. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  853. SetVehicleParamsEx(vehicleid, engine, lights, alarm, toggle, bonnet, boot, objective);
  854. }
  855.  
  856. stock ToggleBoot(vehicleid, toggle)
  857. {
  858. new engine, lights, alarm, doors, bonnet, boot, objective;
  859. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  860. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, toggle, objective);
  861. }
  862.  
  863. stock StripNL(str[]) // credits to Y_Less for y_utils.inc
  864. {
  865. new
  866. i = strlen(str);
  867. while (i-- && str[i] <= ' ') str[i] = '\0';
  868. }
  869.  
  870. stock IsNumeric(const string[])
  871. {
  872. for(new i=0; string[i]; i++)
  873. {
  874. if(string[i] < '0' || string[i] > '9') return 0;
  875. }
  876. return 1;
  877. }
  878.  
  879. stock GetVehicleModelIDFromName(const vname[])
  880. {
  881. for(new i=0; i < sizeof(VehicleNames); i++)
  882. {
  883. if(strfind(VehicleNames[i], vname, true) != -1) return i + 400;
  884. }
  885. return -1;
  886. }
  887.  
  888. stock GetPlayer2DZone(playerid)
  889. {
  890. new zone[32] = "San Andreas";
  891. new Float:x, Float:y, Float:z;
  892. GetPlayerPos(playerid, x, y, z);
  893. for(new i = 0; i < sizeof(SanAndreasZones); i++)
  894. {
  895. if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  896. && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4])
  897. {
  898. strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  899. return zone;
  900. }
  901. }
  902. return zone;
  903. }
  904.  
  905. stock GetPlayer3DZone(playerid)
  906. {
  907. new zone[32] = "San Andreas";
  908. new Float:x, Float:y, Float:z;
  909. GetPlayerPos(playerid, x, y, z);
  910. for(new i = 0; i < sizeof(SanAndreasZones); i++)
  911. {
  912. if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  913. && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4]
  914. && z >= SanAndreasZones[i][Zone_Area][2] && z <= SanAndreasZones[i][Zone_Area][5])
  915. {
  916. strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  917. return zone;
  918. }
  919. }
  920. return zone;
  921. }
  922.  
  923. stock GetPlayerSpeed(playerid, bool:kmh = true)
  924. {
  925. new
  926. Float:xx,
  927. Float:yy,
  928. Float:zz,
  929. Float:pSpeed;
  930.  
  931. if(IsPlayerInAnyVehicle(playerid))
  932. {
  933. GetVehicleVelocity(GetPlayerVehicleID(playerid),xx,yy,zz);
  934. }
  935. else
  936. {
  937. GetPlayerVelocity(playerid,xx,yy,zz);
  938. }
  939.  
  940. pSpeed = floatsqroot((xx * xx) + (yy * yy) + (zz * zz));
  941. return kmh ? floatround((pSpeed * 165.12)) : floatround((pSpeed * 103.9));
  942. }
  943.  
  944. /*SafeGivePlayerMoney(playerid, money)
  945. {
  946. return CallRemoteFunction("SafeGivePlayerMoney","dd",playerid, money);
  947. }
  948. #define GivePlayerMoney SafeGivePlayerMoney
  949.  
  950. SafeGetPlayerMoney(playerid)
  951. {
  952. return CallRemoteFunction("SafeGetPlayerMoney","d",playerid);
  953. }
  954. #define GetPlayerMoney SafeGetPlayerMoney*/
  955.  
  956. IsAdmin(playerid, level)
  957. {
  958. if(IsPlayerAdmin(playerid)) return 1;
  959. if(CallRemoteFunction("GetPlayerAVSAdmin", "d", playerid) >= level) return 1;
  960. return 0;
  961. }
  962.  
  963. LoadVehicles()
  964. {
  965. new string[64];
  966. new File:handle, count;
  967. new filename[64], line[256], s, key[64];
  968. for(new i=1; i < MAX_DVEHICLES; i++)
  969. {
  970. format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", i);
  971. if(!fexist(filename)) continue;
  972. handle = fopen(filename, io_read);
  973. while(fread(handle, line))
  974. {
  975. StripNL(line);
  976. s = strfind(line, "=");
  977. if(!line[0] || s < 1) continue;
  978. strmid(key, line, 0, s++);
  979. if(strcmp(key, "Created") == 0) VehicleCreated[i] = strval(line[s]);
  980. else if(strcmp(key, "Model") == 0) VehicleModel[i] = strval(line[s]);
  981. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,ffff", VehiclePos[i][0], VehiclePos[i][1],
  982. VehiclePos[i][2], VehiclePos[i][3]);
  983. else if(strcmp(key, "Colors") == 0) sscanf(line[s], "p,dd", VehicleColor[i][0], VehicleColor[i][1]);
  984. else if(strcmp(key, "Interior") == 0) VehicleInterior[i] = strval(line[s]);
  985. else if(strcmp(key, "VirtualWorld") == 0) VehicleWorld[i] = strval(line[s]);
  986. else if(strcmp(key, "Owner") == 0) strmid(VehicleOwner[i], line, s, sizeof(line));
  987. else if(strcmp(key, "NumberPlate") == 0) strmid(VehicleNumberPlate[i], line, s, sizeof(line));
  988. else if(strcmp(key, "Value") == 0) VehicleValue[i] = strval(line[s]);
  989. else if(strcmp(key, "Lock") == 0) VehicleLock[i] = strval(line[s]);
  990. else if(strcmp(key, "Alarm") == 0) VehicleAlarm[i] = strval(line[s]);
  991. else if(strcmp(key, "Paintjob") == 0) VehiclePaintjob[i] = strval(line[s]);
  992. else
  993. {
  994. for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  995. {
  996. format(string, sizeof(string), "Trunk%d", t+1);
  997. if(strcmp(key, string) == 0) sscanf(line[s], "p,dd", VehicleTrunk[i][t][0], VehicleTrunk[i][t][1]);
  998. }
  999. for(new m=0; m < sizeof(VehicleMods[]); m++)
  1000. {
  1001. format(string, sizeof(string), "Mod%d", m);
  1002. if(strcmp(key, string) == 0) VehicleMods[i][m] = strval(line[s]);
  1003. }
  1004. }
  1005. }
  1006. fclose(handle);
  1007. if(VehicleCreated[i]) count++;
  1008. }
  1009. printf(" Loaded %d vehicles", count);
  1010. }
  1011.  
  1012. SaveVehicle(vehicleid)
  1013. {
  1014. new filename[64], line[256];
  1015. format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", vehicleid);
  1016. new File:handle = fopen(filename, io_write);
  1017. format(line, sizeof(line), "Created=%d\r\n", VehicleCreated[vehicleid]); fwrite(handle, line);
  1018. format(line, sizeof(line), "Model=%d\r\n", VehicleModel[vehicleid]); fwrite(handle, line);
  1019. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f,%.3f\r\n", VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  1020. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3]);
  1021. fwrite(handle, line);
  1022. format(line, sizeof(line), "Colors=%d,%d\r\n", VehicleColor[vehicleid][0], VehicleColor[vehicleid][1]); fwrite(handle, line);
  1023. format(line, sizeof(line), "Interior=%d\r\n", VehicleInterior[vehicleid]); fwrite(handle, line);
  1024. format(line, sizeof(line), "VirtualWorld=%d\r\n", VehicleWorld[vehicleid]); fwrite(handle, line);
  1025. format(line, sizeof(line), "Owner=%s\r\n", VehicleOwner[vehicleid]); fwrite(handle, line);
  1026. format(line, sizeof(line), "NumberPlate=%s\r\n", VehicleNumberPlate[vehicleid]); fwrite(handle, line);
  1027. format(line, sizeof(line), "Value=%d\r\n", VehicleValue[vehicleid]); fwrite(handle, line);
  1028. format(line, sizeof(line), "Lock=%d\r\n", VehicleLock[vehicleid]); fwrite(handle, line);
  1029. format(line, sizeof(line), "Alarm=%d\r\n", VehicleAlarm[vehicleid]); fwrite(handle, line);
  1030. format(line, sizeof(line), "Paintjob=%d\r\n", VehiclePaintjob[vehicleid]); fwrite(handle, line);
  1031. for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  1032. {
  1033. format(line, sizeof(line), "Trunk%d=%d,%d\r\n", t+1, VehicleTrunk[vehicleid][t][0], VehicleTrunk[vehicleid][t][1]);
  1034. fwrite(handle, line);
  1035. }
  1036. for(new m=0; m < sizeof(VehicleMods[]); m++)
  1037. {
  1038. format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
  1039. fwrite(handle, line);
  1040. }
  1041. fclose(handle);
  1042. }
  1043.  
  1044. UpdateVehicle(vehicleid, removeold)
  1045. {
  1046. if(VehicleCreated[vehicleid])
  1047. {
  1048. if(removeold)
  1049. {
  1050. new Float:health;
  1051. GetVehicleHealth(VehicleID[vehicleid], health);
  1052. new engine, lights, alarm, doors, bonnet, boot, objective;
  1053. GetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  1054. //new panels, doorsd, lightsd, tires;
  1055. //GetVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
  1056. DestroyVehicle(VehicleID[vehicleid]);
  1057. VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  1058. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  1059. SetVehicleHealth(VehicleID[vehicleid], health);
  1060. SetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  1061. //UpdateVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
  1062. }
  1063. else
  1064. {
  1065. VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  1066. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  1067. }
  1068. LinkVehicleToInterior(VehicleID[vehicleid], VehicleInterior[vehicleid]);
  1069. SetVehicleVirtualWorld(VehicleID[vehicleid], VehicleWorld[vehicleid]);
  1070. SetVehicleNumberPlate(VehicleID[vehicleid], VehicleNumberPlate[vehicleid]);
  1071. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1072. {
  1073. AddVehicleComponent(VehicleID[vehicleid], VehicleMods[vehicleid][i]);
  1074. }
  1075. ChangeVehiclePaintjob(VehicleID[vehicleid], VehiclePaintjob[vehicleid]);
  1076. if(VehicleLock[vehicleid]) ToggleDoors(VehicleID[vehicleid], VEHICLE_PARAMS_ON);
  1077. if(VehicleAlarm[vehicleid]) VehicleSecurity[VehicleID[vehicleid]] = 1;
  1078. UpdateVehicleLabel(vehicleid, removeold);
  1079. }
  1080. }
  1081.  
  1082. UpdateVehicleLabel(vehicleid, removeold)
  1083. {
  1084. if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  1085. {
  1086. if(removeold)
  1087. {
  1088. Delete3DTextLabel(VehicleLabel[vehicleid]);
  1089. }
  1090. new labeltext[128];
  1091. format(labeltext, sizeof(labeltext), "%s\nID: %d\nDealership: %s\nPrice: $%d", VehicleNames[VehicleModel[vehicleid]-400],
  1092. vehicleid, VehicleOwner[vehicleid], VehicleValue[vehicleid]);
  1093. VehicleLabel[vehicleid] = Create3DTextLabel(labeltext, 0xBB7700DD, 0, 0, 0, 10.0, 0);
  1094. Attach3DTextLabelToVehicle(VehicleLabel[vehicleid], VehicleID[vehicleid], 0, 0, 0);
  1095. }
  1096. }
  1097.  
  1098. IsValidVehicle(vehicleid)
  1099. {
  1100. if(vehicleid < 1 || vehicleid >= MAX_DVEHICLES) return 0;
  1101. if(VehicleCreated[vehicleid]) return 1;
  1102. return 0;
  1103. }
  1104.  
  1105. GetFreeVehicleID()
  1106. {
  1107. for(new i=1; i < MAX_DVEHICLES; i++)
  1108. {
  1109. if(!VehicleCreated[i]) return i;
  1110. }
  1111. return 0;
  1112. }
  1113.  
  1114. GetVehicleID(vehicleid)
  1115. {
  1116. for(new i=1; i < MAX_DVEHICLES; i++)
  1117. {
  1118. if(VehicleCreated[i] && VehicleID[i] == vehicleid) return i;
  1119. }
  1120. return 0;
  1121. }
  1122.  
  1123. GetPlayerVehicles(playerid)
  1124. {
  1125. new playername[24];
  1126. GetPlayerName(playerid, playername, sizeof(playername));
  1127. new count;
  1128. for(new i=1; i < MAX_DVEHICLES; i++)
  1129. {
  1130. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  1131. {
  1132. count++;
  1133. }
  1134. }
  1135. return count;
  1136. }
  1137.  
  1138. GetPlayerVehicleAccess(playerid, vehicleid)
  1139. {
  1140. if(IsValidVehicle(vehicleid))
  1141. {
  1142. if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  1143. {
  1144. if(IsAdmin(playerid, 1))
  1145. {
  1146. return 1;
  1147. }
  1148. }
  1149. else if(VehicleCreated[vehicleid] == VEHICLE_PLAYER)
  1150. {
  1151. if(strcmp(VehicleOwner[vehicleid], PlayerName(playerid)) == 0)
  1152. {
  1153. return 2;
  1154. }
  1155. else if(GetPVarInt(playerid, "CarKeys") == vehicleid)
  1156. {
  1157. return 1;
  1158. }
  1159. }
  1160. }
  1161. else
  1162. {
  1163. return 1;
  1164. }
  1165. return 0;
  1166. }
  1167.  
  1168. LoadDealerships()
  1169. {
  1170. new File:handle, count;
  1171. new filename[64], line[256], s, key[64];
  1172. for(new i=1; i < MAX_DEALERSHIPS; i++)
  1173. {
  1174. format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", i);
  1175. if(!fexist(filename)) continue;
  1176. handle = fopen(filename, io_read);
  1177. while(fread(handle, line))
  1178. {
  1179. StripNL(line);
  1180. s = strfind(line, "=");
  1181. if(!line[0] || s < 1) continue;
  1182. strmid(key, line, 0, s++);
  1183. if(strcmp(key, "Created") == 0) DealershipCreated[i] = strval(line[s]);
  1184. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", DealershipPos[i][0],
  1185. DealershipPos[i][1], DealershipPos[i][2]);
  1186. }
  1187. fclose(handle);
  1188. if(DealershipCreated[i]) count++;
  1189. }
  1190. printf(" Loaded %d dealerships", count);
  1191. }
  1192.  
  1193. SaveDealership(dealerid)
  1194. {
  1195. new filename[64], line[256];
  1196. format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", dealerid);
  1197. new File:handle = fopen(filename, io_write);
  1198. format(line, sizeof(line), "Created=%d\r\n", DealershipCreated[dealerid]); fwrite(handle, line);
  1199. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", DealershipPos[dealerid][0],
  1200. DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  1201. fwrite(handle, line);
  1202. fclose(handle);
  1203. }
  1204.  
  1205. UpdateDealership(dealerid, removeold)
  1206. {
  1207. if(DealershipCreated[dealerid])
  1208. {
  1209. if(removeold)
  1210. {
  1211. Delete3DTextLabel(DealershipLabel[dealerid]);
  1212. }
  1213. new labeltext[32];
  1214. format(labeltext, sizeof(labeltext), "Vehicle Dealership\nID: %d", dealerid);
  1215. DealershipLabel[dealerid] = Create3DTextLabel(labeltext, 0x00BB00DD, DealershipPos[dealerid][0],
  1216. DealershipPos[dealerid][1], DealershipPos[dealerid][2]+0.5, 20.0, 0);
  1217. }
  1218. }
  1219.  
  1220. IsValidDealership(dealerid)
  1221. {
  1222. if(dealerid < 1 || dealerid >= MAX_DEALERSHIPS) return 0;
  1223. if(DealershipCreated[dealerid]) return 1;
  1224. return 0;
  1225. }
  1226.  
  1227. LoadFuelStations()
  1228. {
  1229. new File:handle, count;
  1230. new filename[64], line[256], s, key[64];
  1231. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1232. {
  1233. format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", i);
  1234. if(!fexist(filename)) continue;
  1235. handle = fopen(filename, io_read);
  1236. while(fread(handle, line))
  1237. {
  1238. StripNL(line);
  1239. s = strfind(line, "=");
  1240. if(!line[0] || s < 1) continue;
  1241. strmid(key, line, 0, s++);
  1242. if(strcmp(key, "Created") == 0) FuelStationCreated[i] = strval(line[s]);
  1243. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", FuelStationPos[i][0],
  1244. FuelStationPos[i][1], FuelStationPos[i][2]);
  1245. }
  1246. fclose(handle);
  1247. if(FuelStationCreated[i]) count++;
  1248. }
  1249. printf(" Loaded %d fuel stations", count);
  1250. }
  1251.  
  1252. SaveFuelStation(stationid)
  1253. {
  1254. new filename[64], line[256];
  1255. format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", stationid);
  1256. new File:handle = fopen(filename, io_write);
  1257. format(line, sizeof(line), "Created=%d\r\n", FuelStationCreated[stationid]); fwrite(handle, line);
  1258. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", FuelStationPos[stationid][0],
  1259. FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  1260. fwrite(handle, line);
  1261. fclose(handle);
  1262. }
  1263.  
  1264. UpdateFuelStation(stationid, removeold)
  1265. {
  1266. if(FuelStationCreated[stationid])
  1267. {
  1268. if(removeold)
  1269. {
  1270. Delete3DTextLabel(FuelStationLabel[stationid]);
  1271. }
  1272. new labeltext[32];
  1273. format(labeltext, sizeof(labeltext), "Fuel Station\nID: %d\n/fuel", stationid);
  1274. FuelStationLabel[stationid] = Create3DTextLabel(labeltext, 0x00BBFFDD, FuelStationPos[stationid][0],
  1275. FuelStationPos[stationid][1], FuelStationPos[stationid][2]+0.5, 20.0, 0);
  1276. }
  1277. }
  1278.  
  1279. IsValidFuelStation(stationid)
  1280. {
  1281. if(stationid < 1 || stationid >= MAX_FUEL_STATIONS) return 0;
  1282. if(FuelStationCreated[stationid]) return 1;
  1283. return 0;
  1284. }
  1285.  
  1286. public MainTimer()
  1287. {
  1288. new string[128];
  1289. new Float:x, Float:y, Float:z;
  1290.  
  1291. for(new i=0; i < MAX_PLAYERS; i++)
  1292. {
  1293. if(IsPlayerConnected(i))
  1294. {
  1295. if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
  1296. {
  1297. new vehicleid = GetPlayerVehicleID(i);
  1298. if(!IsBicycle(vehicleid) && Fuel[vehicleid] > 0)
  1299. {
  1300. Fuel[vehicleid] -= GetPlayerSpeed(i)/1000.0;
  1301. if(Fuel[vehicleid] <= 0)
  1302. {
  1303. ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
  1304. GameTextForPlayer(i, "~r~out of fuel", 3000, 3);
  1305. SendClientMessage(i, COLOR_RED, "This vehicle is out of fuel!");
  1306. }
  1307. }
  1308. }
  1309. if(RefuelTime[i] > 0 && GetPVarInt(i, "FuelStation"))
  1310. {
  1311. new vehicleid = GetPlayerVehicleID(i);
  1312. Fuel[vehicleid] += 2.0;
  1313. RefuelTime[i]--;
  1314. if(RefuelTime[i] == 0)
  1315. {
  1316. if(Fuel[vehicleid] >= 100.0) Fuel[vehicleid] = 100.0;
  1317. new stationid = GetPVarInt(i, "FuelStation");
  1318. new cost = floatround(Fuel[vehicleid]-GetPVarFloat(i, "Fuel"))*FUEL_PRICE;
  1319. if(GetPlayerState(i) != PLAYER_STATE_DRIVER || Fuel[vehicleid] >= 100.0 || GetPlayerMoney(i) < cost
  1320. || !IsPlayerInRangeOfPoint(i, 10.0, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]))
  1321. {
  1322. if(GetPlayerMoney(i) < cost) cost = GetPlayerMoney(i);
  1323. GivePlayerMoney(i, -cost);
  1324. format(string, sizeof(string), "~r~-$%d", cost);
  1325. GameTextForPlayer(i, string, 2000, 3);
  1326. format(string, sizeof(string), "You pay $%d for fuel", cost);
  1327. SendClientMessage(i, COLOR_WHITE, string);
  1328. SetPVarInt(i, "FuelStation", 0);
  1329. SetPVarFloat(i, "Fuel", 0.0);
  1330. }
  1331. else
  1332. {
  1333. RefuelTime[i] = 5;
  1334. format(string, sizeof(string), "~w~refueling...~n~~r~-$%d", cost);
  1335. GameTextForPlayer(i, string, 2000, 3);
  1336. }
  1337. }
  1338. }
  1339. if(TrackCar[i])
  1340. {
  1341. GetVehiclePos(TrackCar[i], x, y, z);
  1342. SetPlayerCheckpoint(i, x, y, z, 3);
  1343. }
  1344. }
  1345. }
  1346. }
  1347.  
  1348. public Speedometer()
  1349. {
  1350. new vehicleid, Float:health;
  1351. new engine, lights, alarm, doors, bonnet, boot, objective;
  1352. new fstring[32], string[512];
  1353.  
  1354. for(new i=0; i < MAX_PLAYERS; i++)
  1355. {
  1356. if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
  1357. {
  1358. vehicleid = GetPlayerVehicleID(i);
  1359. GetVehicleHealth(vehicleid, health);
  1360. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1361.  
  1362. string = "~b~~h~vehicle: ~w~";
  1363. strcat(string, VehicleNames[GetVehicleModel(vehicleid)-400], sizeof(string));
  1364.  
  1365. strcat(string, "~n~~b~~h~gps: ~w~", sizeof(string));
  1366. strcat(string, GetPlayer3DZone(i), sizeof(string));
  1367.  
  1368. strcat(string, "~n~~b~~h~health: ~g~", sizeof(string));
  1369. fstring = "iiiiiiiiii";
  1370. if(health > 1000.0) strins(fstring, "~r~", 10, sizeof(fstring));
  1371. else if(health < 0.0) strins(fstring, "~r~", 0, sizeof(fstring));
  1372. else strins(fstring, "~r~", floatround(health/100.0), sizeof(fstring));
  1373. strcat(string, fstring, sizeof(string));
  1374.  
  1375. strcat(string, " ~b~~h~fuel: ~g~", sizeof(string));
  1376. fstring = "iiiiiiiiii";
  1377. if(Fuel[vehicleid] > 100.0) strins(fstring, "~r~", 10, sizeof(fstring));
  1378. else if(Fuel[vehicleid] < 0.0) strins(fstring, "~r~", 0, sizeof(fstring));
  1379. else strins(fstring, "~r~", floatround(Fuel[vehicleid]/10.0), sizeof(fstring));
  1380. strcat(string, fstring, sizeof(string));
  1381.  
  1382. strcat(string, " ~b~~h~", sizeof(string));
  1383. if(GetPVarInt(i, "Speedo")) format(fstring,sizeof(fstring),"mph: ~w~%d", GetPlayerSpeed(i, false));
  1384. else format(fstring,sizeof(fstring),"kph: ~w~%d", GetPlayerSpeed(i, true));
  1385. strcat(string, fstring, sizeof(string));
  1386.  
  1387. strcat(string, "~n~~b~~h~engine: ", sizeof(string));
  1388. if(engine == 1) strcat(string, "~g~on", sizeof(string));
  1389. else strcat(string, "~r~off", sizeof(string));
  1390.  
  1391. strcat(string, " ~b~~h~alarm: ", sizeof(string));
  1392. if(VehicleSecurity[vehicleid] == 1) strcat(string, "~g~on", sizeof(string));
  1393. else strcat(string, "~r~off", sizeof(string));
  1394.  
  1395. strcat(string, " ~b~~h~doors: ", sizeof(string));
  1396. if(doors == 1) strcat(string, "~r~locked", sizeof(string));
  1397. else strcat(string, "~g~unlocked", sizeof(string));
  1398.  
  1399. TextDrawSetString(SpeedoText[i], string);
  1400. }
  1401. }
  1402. }
  1403.  
  1404. public SaveTimer()
  1405. {
  1406. SaveVehicleIndex++;
  1407. if(SaveVehicleIndex >= MAX_DVEHICLES) SaveVehicleIndex = 1;
  1408. if(IsValidVehicle(SaveVehicleIndex)) SaveVehicle(SaveVehicleIndex);
  1409. }
  1410.  
  1411. public StopAlarm(vehicleid)
  1412. {
  1413. ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
  1414. }
  1415.  
  1416. /*forward GetVehicleIDFromPlate(Plate[]);
  1417. public GetVehicleIDFromPlate(Plate[])
  1418. {
  1419. for(new i=1; i < MAX_DVEHICLES; i++)
  1420. {
  1421. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleNumberPlate[i], Plate) == 0)
  1422. {
  1423. return i;
  1424. }
  1425. }
  1426. return 0;
  1427. }*/
  1428.  
  1429. public OnFilterScriptInit()
  1430. DisableInteriorEnterExits();
  1431. {
  1432. print("\n------------------------------------------------");
  1433. print(" Advanced Vehicle System 1.0 by MadeMan");
  1434. print("------------------------------------------------");
  1435.  
  1436. LoadVehicles();
  1437. LoadDealerships();
  1438. LoadFuelStations();
  1439.  
  1440. /*SpeedoBox = TextDrawCreate(345.000, 363.000, "~n~~n~~n~~n~");
  1441. TextDrawAlignment(SpeedoBox, 2);
  1442. TextDrawLetterSize(SpeedoBox, 0.500, 1.400);
  1443. TextDrawUseBox(SpeedoBox, 1);
  1444. TextDrawBoxColor(SpeedoBox, 153);
  1445. TextDrawTextSize(SpeedoBox, 0.000, 340.000);*/
  1446.  
  1447. for(new i=0; i < MAX_PLAYERS; i++)
  1448. {
  1449. if(IsPlayerConnected(i))
  1450. {
  1451. OnPlayerConnect(i);
  1452. RemovePlayerMapIcon( playerid, 0 );
  1453. RemovePlayerMapIcon( playerid, 1 );
  1454. RemovePlayerMapIcon( playerid, 2 );
  1455. RemovePlayerMapIcon( playerid, 3 );
  1456. RemovePlayerMapIcon( playerid, 4 );
  1457. RemovePlayerMapIcon( playerid, 5 );
  1458. RemovePlayerMapIcon( playerid, 6 );
  1459. RemovePlayerMapIcon( playerid, 7 );
  1460. RemovePlayerMapIcon( playerid, 10 );
  1461. RemovePlayerMapIcon( playerid, 11 );
  1462. RemovePlayerMapIcon( playerid, 12 );
  1463. RemovePlayerMapIcon( playerid, 13 );
  1464. RemovePlayerMapIcon( playerid, 14 );
  1465. RemovePlayerMapIcon( playerid, 15 );
  1466. RemovePlayerMapIcon( playerid, 16 );
  1467. RemovePlayerMapIcon( playerid, 17 );
  1468. RemovePlayerMapIcon( playerid, 18 );
  1469. RemovePlayerMapIcon( playerid, 19 );
  1470. RemovePlayerMapIcon( playerid, 20 );
  1471. RemovePlayerMapIcon( playerid, 21 );
  1472. RemovePlayerMapIcon( playerid, 22 );
  1473. RemovePlayerMapIcon( playerid, 23 );
  1474. RemovePlayerMapIcon( playerid, 24 );
  1475. RemovePlayerMapIcon( playerid, 25 );
  1476. RemovePlayerMapIcon( playerid, 26 );
  1477. RemovePlayerMapIcon( playerid, 27 );
  1478. RemovePlayerMapIcon( playerid, 28 );
  1479. RemovePlayerMapIcon( playerid, 29);
  1480. RemovePlayerMapIcon( playerid, 30);
  1481. RemovePlayerMapIcon( playerid, 31 );
  1482. RemovePlayerMapIcon( playerid, 32);
  1483. RemovePlayerMapIcon( playerid, 33);
  1484. RemovePlayerMapIcon( playerid, 34);
  1485. RemovePlayerMapIcon( playerid, 35);
  1486. RemovePlayerMapIcon( playerid, 36);
  1487. RemovePlayerMapIcon( playerid, 37);
  1488. RemovePlayerMapIcon( playerid, 38);
  1489. RemovePlayerMapIcon( playerid, 39);
  1490. RemovePlayerMapIcon( playerid, 40);
  1491. RemovePlayerMapIcon( playerid, 41);
  1492. RemovePlayerMapIcon( playerid, 42);
  1493. RemovePlayerMapIcon( playerid, 43);
  1494. RemovePlayerMapIcon( playerid, 44);
  1495. RemovePlayerMapIcon( playerid, 45);
  1496. RemovePlayerMapIcon( playerid, 46);
  1497. RemovePlayerMapIcon( playerid, 47);
  1498. RemovePlayerMapIcon( playerid, 48);
  1499. RemovePlayerMapIcon( playerid, 49);
  1500. RemovePlayerMapIcon( playerid, 50);
  1501. RemovePlayerMapIcon( playerid, 51 );
  1502. RemovePlayerMapIcon( playerid, 52);
  1503. RemovePlayerMapIcon( playerid, 53);
  1504. RemovePlayerMapIcon( playerid, 54);
  1505. RemovePlayerMapIcon( playerid, 55);
  1506. RemovePlayerMapIcon( playerid, 56);
  1507. RemovePlayerMapIcon( playerid, 57);
  1508. RemovePlayerMapIcon( playerid, 58);
  1509. RemovePlayerMapIcon( playerid, 59);
  1510. RemovePlayerMapIcon( playerid, 60);
  1511. RemovePlayerMapIcon( playerid, 61 );
  1512. RemovePlayerMapIcon( playerid, 62);
  1513. RemovePlayerMapIcon( playerid, 63);
  1514. }
  1515. }
  1516. for(new i=1; i < MAX_DVEHICLES; i++)
  1517. {
  1518. UpdateVehicle(i, 0);
  1519. }
  1520. for(new i=1; i < MAX_DEALERSHIPS; i++)
  1521. {
  1522. UpdateDealership(i, 0);
  1523. }
  1524. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1525. {
  1526. UpdateFuelStation(i, 0);
  1527. }
  1528.  
  1529. maintimer = SetTimer("MainTimer", 1000, true);
  1530. speedotimer = SetTimer("Speedometer", 555, true);
  1531. savetimer = SetTimer("SaveTimer", 2222, true);
  1532.  
  1533. print("------------------------------------------------\n");
  1534. return 1;
  1535. }
  1536.  
  1537. public OnFilterScriptExit()
  1538. {
  1539. KillTimer(maintimer);
  1540. KillTimer(speedotimer);
  1541. KillTimer(savetimer);
  1542. //TextDrawDestroy(SpeedoBox);
  1543. for(new i=0; i < MAX_PLAYERS; i++)
  1544. {
  1545. if(IsPlayerConnected(i))
  1546. {
  1547. OnPlayerDisconnect(i, 1);
  1548. }
  1549. }
  1550. for(new i=1; i < MAX_DVEHICLES; i++)
  1551. {
  1552. if(VehicleCreated[i])
  1553. {
  1554. DestroyVehicle(VehicleID[i]);
  1555. if(VehicleCreated[i] == VEHICLE_DEALERSHIP)
  1556. {
  1557. Delete3DTextLabel(VehicleLabel[i]);
  1558. }
  1559. }
  1560. }
  1561. for(new i=1; i < MAX_DEALERSHIPS; i++)
  1562. {
  1563. if(DealershipCreated[i])
  1564. {
  1565. Delete3DTextLabel(DealershipLabel[i]);
  1566. }
  1567. }
  1568. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1569. {
  1570. if(FuelStationCreated[i])
  1571. {
  1572. Delete3DTextLabel(FuelStationLabel[i]);
  1573. }
  1574. }
  1575. print("\n------------------------------------------------");
  1576. print(" Advanced Vehicle System 1.0 Unloaded");
  1577. print("------------------------------------------------\n");
  1578. return 1;
  1579. }
  1580.  
  1581. public OnPlayerConnect(playerid)
  1582. {
  1583. RemoveBuildingForPlayer(playerid, 10777, -1724.1953, 547.0859, 32.3203, 0.25);
  1584. RemoveBuildingForPlayer(playerid, 11326, -2041.9453, 121.1797, 30.1875, 0.25);
  1585. RemoveBuildingForPlayer(playerid, 11327, -2026.9141, 129.4063, 30.4531, 0.25);
  1586. RemoveBuildingForPlayer(playerid, 11328, -2041.9453, 121.1797, 30.1875, 0.25);
  1587. RemoveBuildingForPlayer(playerid, 3865, -2063.2422, 258.7500, 35.7422, 0.25);
  1588. RemoveBuildingForPlayer(playerid, 3869, -2123.2891, 269.5313, 41.8516, 0.25);
  1589. RemoveBuildingForPlayer(playerid, 3869, -2126.2109, 231.9766, 41.6875, 0.25);
  1590. RemoveBuildingForPlayer(playerid, 3869, -2116.6797, 131.0078, 42.1484, 0.25);
  1591. RemoveBuildingForPlayer(playerid, 3865, -2063.0156, 247.9453, 35.7422, 0.25);
  1592. RemoveBuildingForPlayer(playerid, 3865, -2057.7500, 249.9531, 35.5938, 0.25);
  1593. RemoveBuildingForPlayer(playerid, 3865, -2057.7031, 229.8047, 35.3516, 0.25);
  1594. RemoveBuildingForPlayer(playerid, 3865, -2059.5313, 256.5234, 37.0078, 0.25);
  1595. RemoveBuildingForPlayer(playerid, 11371, -2028.1328, -111.2734, 36.1328, 0.25);
  1596. RemoveBuildingForPlayer(playerid, 11372, -2076.4375, -107.9297, 36.9688, 0.25);
  1597. RemoveBuildingForPlayer(playerid, 11375, -1724.1953, 547.0859, 32.3203, 0.25);
  1598. RemoveBuildingForPlayer(playerid, 3888, -2128.1797, 171.4609, 42.4297, 0.25);
  1599. RemoveBuildingForPlayer(playerid, 3888, -2066.3594, 301.9141, 42.1719, 0.25);
  1600. RemoveBuildingForPlayer(playerid, 3887, -2066.3594, 301.9141, 42.1719, 0.25);
  1601. RemoveBuildingForPlayer(playerid, 1497, -2029.0156, -120.0625, 34.2578, 0.25);
  1602. RemoveBuildingForPlayer(playerid, 11015, -2028.1328, -111.2734, 36.1328, 0.25);
  1603. RemoveBuildingForPlayer(playerid, 11014, -2076.4375, -107.9297, 36.9688, 0.25);
  1604. RemoveBuildingForPlayer(playerid, 1532, -2025.8281, -102.4688, 34.2734, 0.25);
  1605. RemoveBuildingForPlayer(playerid, 3887, -2128.1797, 171.4609, 42.4297, 0.25);
  1606. RemoveBuildingForPlayer(playerid, 3866, -2116.6797, 131.0078, 42.1484, 0.25);
  1607. RemoveBuildingForPlayer(playerid, 3864, -2082.5391, 153.5469, 40.1016, 0.25);
  1608. RemoveBuildingForPlayer(playerid, 3872, -2079.8203, 159.6719, 40.8906, 0.25);
  1609. RemoveBuildingForPlayer(playerid, 3864, -2111.8828, 172.4688, 40.1953, 0.25);
  1610. RemoveBuildingForPlayer(playerid, 3872, -2116.7500, 177.0781, 40.9844, 0.25);
  1611. RemoveBuildingForPlayer(playerid, 3872, -2064.2109, 210.1406, 41.2578, 0.25);
  1612. RemoveBuildingForPlayer(playerid, 3872, -2107.0313, 226.0391, 40.8438, 0.25);
  1613. RemoveBuildingForPlayer(playerid, 10984, -2126.1563, 238.6172, 35.2656, 0.25);
  1614. RemoveBuildingForPlayer(playerid, 3864, -2102.2109, 230.7031, 40.0547, 0.25);
  1615. RemoveBuildingForPlayer(playerid, 3866, -2126.2109, 231.9766, 41.6875, 0.25);
  1616. RemoveBuildingForPlayer(playerid, 10986, -2130.0547, 275.5625, 35.3750, 0.25);
  1617. RemoveBuildingForPlayer(playerid, 10987, -2137.8203, 264.2813, 35.7813, 0.25);
  1618. RemoveBuildingForPlayer(playerid, 3866, -2123.2891, 269.5313, 41.8516, 0.25);
  1619. RemoveBuildingForPlayer(playerid, 3864, -2113.3125, 268.5078, 40.5703, 0.25);
  1620. RemoveBuildingForPlayer(playerid, 3872, -2118.1328, 263.8438, 41.3594, 0.25);
  1621. RemoveBuildingForPlayer(playerid, 10985, -2099.2734, 292.9141, 35.0703, 0.25);
  1622. RemoveBuildingForPlayer(playerid, 11360, -2038.8672, 170.3203, 29.9375, 0.25);
  1623. RemoveBuildingForPlayer(playerid, 3864, -2059.3438, 205.5313, 40.4688, 0.25);
  1624. RemoveBuildingForPlayer(playerid, 3872, -2048.4531, 265.0938, 41.6563, 0.25);
  1625. RemoveBuildingForPlayer(playerid, 3864, -2041.7500, 265.1016, 40.8672, 0.25);
  1626. RemoveBuildingForPlayer(playerid, 10248, -1680.9922, 683.2344, 19.0469, 0.25);
  1627. RemoveBuildingForPlayer(playerid, 966, -1572.2031, 658.8359, 6.0781, 0.25);
  1628. RemoveBuildingForPlayer(playerid, 967, -1572.7031, 657.6016, 6.0781, 0.25);
  1629. RemoveBuildingForPlayer(playerid, 7654, 1718.1719, 1943.7266, 15.1484, 0.25);
  1630. RemoveBuildingForPlayer(playerid, 4523, -1592.7813, 622.7813, 42.9688, 0.25);
  1631. CreateObject(7654, 1718.14, 1943.70, 15.15, 3.14, 0.00, 1.57);
  1632. CreateObject(1290, -2037.52, -87.52, 39.89, 356.86, 0.00, 3.14);
  1633. CreateObject(1290, -2058.01, -87.72, 39.89, 356.86, 0.00, 3.14);
  1634. CreateObject(1226, -1638.45, 652.50, 10.07, 3.14, 0.00, 0.00);
  1635. CreateObject(1226, -1637.86, 674.39, 10.07, 3.14, 0.00, 0.00);
  1636. CreateObject(1226, -1574.28, 656.17, 10.04, 356.86, 0.00, -3.14);
  1637. CreateObject(1226, -1574.14, 673.81, 10.04, 356.86, 0.00, -3.14);
  1638. CreateObject(1226, -1605.40, 648.46, 10.00, 356.86, 0.00, -1.57);
  1639. CreateObject(1411, -1836.94, 170.46, 15.70, 356.86, 0.00, -1.63);
  1640. RemovePlayerMapIcon( playerid, 0 );
  1641. RemovePlayerMapIcon( playerid, 1 );
  1642. RemovePlayerMapIcon( playerid, 2 );
  1643. RemovePlayerMapIcon( playerid, 3 );
  1644. RemovePlayerMapIcon( playerid, 4 );
  1645. RemovePlayerMapIcon( playerid, 5 );
  1646. RemovePlayerMapIcon( playerid, 6 );
  1647. RemovePlayerMapIcon( playerid, 7 );
  1648. RemovePlayerMapIcon( playerid, 10 );
  1649. RemovePlayerMapIcon( playerid, 11 );
  1650. RemovePlayerMapIcon( playerid, 12 );
  1651. RemovePlayerMapIcon( playerid, 13 );
  1652. RemovePlayerMapIcon( playerid, 14 );
  1653. RemovePlayerMapIcon( playerid, 15 );
  1654. RemovePlayerMapIcon( playerid, 16 );
  1655. RemovePlayerMapIcon( playerid, 17 );
  1656. RemovePlayerMapIcon( playerid, 18 );
  1657. RemovePlayerMapIcon( playerid, 19 );
  1658. RemovePlayerMapIcon( playerid, 20 );
  1659. RemovePlayerMapIcon( playerid, 21 );
  1660. RemovePlayerMapIcon( playerid, 22 );
  1661. RemovePlayerMapIcon( playerid, 23 );
  1662. RemovePlayerMapIcon( playerid, 24 );
  1663. RemovePlayerMapIcon( playerid, 25 );
  1664. RemovePlayerMapIcon( playerid, 26 );
  1665. RemovePlayerMapIcon( playerid, 27 );
  1666. RemovePlayerMapIcon( playerid, 28 );
  1667. RemovePlayerMapIcon( playerid, 29);
  1668. RemovePlayerMapIcon( playerid, 30);
  1669. RemovePlayerMapIcon( playerid, 31 );
  1670. RemovePlayerMapIcon( playerid, 32);
  1671. RemovePlayerMapIcon( playerid, 33);
  1672. RemovePlayerMapIcon( playerid, 34);
  1673. RemovePlayerMapIcon( playerid, 35);
  1674. RemovePlayerMapIcon( playerid, 36);
  1675. RemovePlayerMapIcon( playerid, 37);
  1676. RemovePlayerMapIcon( playerid, 38);
  1677. RemovePlayerMapIcon( playerid, 39);
  1678. RemovePlayerMapIcon( playerid, 40);
  1679. RemovePlayerMapIcon( playerid, 41);
  1680. RemovePlayerMapIcon( playerid, 42);
  1681. RemovePlayerMapIcon( playerid, 43);
  1682. RemovePlayerMapIcon( playerid, 44);
  1683. RemovePlayerMapIcon( playerid, 45);
  1684. RemovePlayerMapIcon( playerid, 46);
  1685. RemovePlayerMapIcon( playerid, 47);
  1686. RemovePlayerMapIcon( playerid, 48);
  1687. RemovePlayerMapIcon( playerid, 49);
  1688. RemovePlayerMapIcon( playerid, 50);
  1689. RemovePlayerMapIcon( playerid, 51 );
  1690. RemovePlayerMapIcon( playerid, 52);
  1691. RemovePlayerMapIcon( playerid, 53);
  1692. RemovePlayerMapIcon( playerid, 54);
  1693. RemovePlayerMapIcon( playerid, 55);
  1694. RemovePlayerMapIcon( playerid, 56);
  1695. RemovePlayerMapIcon( playerid, 57);
  1696. RemovePlayerMapIcon( playerid, 58);
  1697. RemovePlayerMapIcon( playerid, 59);
  1698. RemovePlayerMapIcon( playerid, 60);
  1699. RemovePlayerMapIcon( playerid, 61 );
  1700. RemovePlayerMapIcon( playerid, 62);
  1701. RemovePlayerMapIcon( playerid, 63);
  1702. RefuelTime[playerid] = 0;
  1703. TrackCar[playerid] = 0;
  1704.  
  1705. SpeedoText[playerid] = TextDrawCreate(180.000, 362.000," ");
  1706. TextDrawAlignment(SpeedoText[playerid], 1);
  1707. TextDrawFont(SpeedoText[playerid],2);
  1708. TextDrawLetterSize(SpeedoText[playerid], 0.310, 1.400);
  1709. TextDrawSetShadow(SpeedoText[playerid],0);
  1710. TextDrawUseBox(SpeedoText[playerid], 1);
  1711. TextDrawBoxColor(SpeedoText[playerid], 0x99);
  1712. TextDrawTextSize(SpeedoText[playerid], 520.000, 0.000);
  1713.  
  1714. return 1;
  1715. }
  1716.  
  1717. public OnPlayerDisconnect(playerid, reason)
  1718. {
  1719. TextDrawDestroy(SpeedoText[playerid]);
  1720. return 1;
  1721. }
  1722.  
  1723. public OnVehicleSpawn(vehicleid)
  1724. {
  1725. VehicleSecurity[vehicleid] = 0;
  1726. new id = GetVehicleID(vehicleid);
  1727. if(IsValidVehicle(id))
  1728. {
  1729. if(VehicleColor[id][0] >= 0 && VehicleColor[id][1] >= 0)
  1730. ChangeVehicleColor(vehicleid, VehicleColor[id][0], VehicleColor[id][1]);
  1731. LinkVehicleToInterior(vehicleid, VehicleInterior[id]);
  1732. SetVehicleVirtualWorld(vehicleid, VehicleWorld[id]);
  1733. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1734. {
  1735. AddVehicleComponent(vehicleid, VehicleMods[id][i]);
  1736. }
  1737. ChangeVehiclePaintjob(vehicleid, VehiclePaintjob[id]);
  1738. if(VehicleLock[id]) ToggleDoors(vehicleid, VEHICLE_PARAMS_ON);
  1739. if(VehicleAlarm[id]) VehicleSecurity[vehicleid] = 1;
  1740. }
  1741. return 1;
  1742. }
  1743. CMD:help
  1744. {
  1745. new info[512];
  1746. strcat(info, {DISPLAYCMDS})
  1747. ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "Server Help", info, "OK", "");
  1748. return 1;
  1749.  
  1750. CMD:vhelp(playerid, params[])
  1751. {
  1752. new info[512];
  1753. strcat(info, "/v /eject \n", sizeof(info));
  1754. strcat(info, "/vlock /valarm /fuel /trunk /kph /mph /clearmods /sellv /givecarkeys /trackcar\n", sizeof(info));
  1755. if(IsAdmin(playerid, 1))
  1756. {
  1757. strcat(info, "/addv /editv /setfuel /rac (respawnallcars) /rtc (respawnthiscar) /fix /flip\n", sizeof(info));
  1758. strcat(info, "/adddealership /deletedealership /movedealership /gotodealership\n", sizeof(info));
  1759. strcat(info, "/addfuelstation /deletefuelstation /movefuelstation /gotofuelstation", sizeof(info));
  1760. }
  1761. ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "How Vehicle Systems Work", info, "OK", "");
  1762. return 1;
  1763. }
  1764. CMD:tow(playerid, params[])
  1765. {
  1766. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1767. new vehicleid = GetPlayerVehicleID(playerid);
  1768. if(IsTrailerAttachedToVehicle(vehicleid))
  1769. {
  1770. DetachTrailerFromVehicle(vehicleid);
  1771. SendClientMessage(playerid, COLOR_WHITE, "You are not towing anymore");
  1772. return 1;
  1773. }
  1774. new Float:x, Float:y, Float:z;
  1775. new Float:dist, Float:closedist=8, closeveh;
  1776. for(new i=1; i < MAX_VEHICLES; i++)
  1777. {
  1778. if(i != vehicleid && GetVehiclePos(i, x, y, z))
  1779. {
  1780. dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
  1781. if(dist < closedist)
  1782. {
  1783. closedist = dist;
  1784. closeveh = i;
  1785. }
  1786. }
  1787. }
  1788. if(!closeveh) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  1789. AttachTrailerToVehicle(closeveh, vehicleid);
  1790. SendClientMessage(playerid, COLOR_WHITE, "You are now towing a vehicle");
  1791. return 1;
  1792. }
  1793.  
  1794. CMD:kph(playerid, params[])
  1795. {
  1796. SetPVarInt(playerid, "Speedo", 0);
  1797. SendClientMessage(playerid, COLOR_WHITE, "Speedometer units set to KPH");
  1798. return 1;
  1799. }
  1800.  
  1801. CMD:mph(playerid, params[])
  1802. {
  1803. SetPVarInt(playerid, "Speedo", 1);
  1804. SendClientMessage(playerid, COLOR_WHITE, "Speedometer units set to MPH");
  1805. return 1;
  1806. }
  1807.  
  1808. CMD:eject(playerid, params[])
  1809. {
  1810. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1811. new pid, msg[128];
  1812. if(sscanf(params, "u", pid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /eject [player]");
  1813. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
  1814. new vehicleid = GetPlayerVehicleID(playerid);
  1815. if(!IsPlayerInVehicle(pid, vehicleid)) return SendClientMessage(playerid, COLOR_RED, "Player is not in your vehicle!");
  1816. RemovePlayerFromVehicle(pid);
  1817. format(msg, sizeof(msg), "Vehicle driver %s (%d) has ejected you", PlayerName(playerid), playerid);
  1818. SendClientMessage(pid, COLOR_WHITE, msg);
  1819. format(msg, sizeof(msg), "You have ejected %s (%d) from your vehicle", PlayerName(pid), pid);
  1820. SendClientMessage(playerid, COLOR_WHITE, msg);
  1821. return 1;
  1822. }
  1823.  
  1824. CMD:clearmods(playerid, params[])
  1825. {
  1826. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1827. new vehicleid = GetPlayerVehicleID(playerid);
  1828. new id = GetVehicleID(vehicleid);
  1829. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1830. return SendClientMessage(playerid, COLOR_RED, "This is not your vehicle!");
  1831. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1832. {
  1833. RemoveVehicleComponent(VehicleID[id], GetVehicleComponentInSlot(VehicleID[id], i));
  1834. VehicleMods[id][i] = 0;
  1835. }
  1836. VehiclePaintjob[id] = 255;
  1837. ChangeVehiclePaintjob(VehicleID[id], 255);
  1838. SaveVehicle(id);
  1839. SendClientMessage(playerid, COLOR_WHITE, "You have removed all modifications from your vehicle");
  1840. return 1;
  1841. }
  1842.  
  1843. CMD:trackcar(playerid, params[])
  1844. {
  1845. if(TrackCar[playerid])
  1846. {
  1847. TrackCar[playerid] = 0;
  1848. DisablePlayerCheckpoint(playerid);
  1849. SendClientMessage(playerid, COLOR_WHITE, "You are not tracking your vehicle anymore");
  1850. return 1;
  1851. }
  1852. new playername[24];
  1853. GetPlayerName(playerid, playername, sizeof(playername));
  1854. new info[256], bool:found;
  1855. for(new i=1; i < MAX_DVEHICLES; i++)
  1856. {
  1857. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  1858. {
  1859. found = true;
  1860. format(info, sizeof(info), "%sID: %d Name: %s\n", info, i, VehicleNames[VehicleModel[i]-400]);
  1861. }
  1862. }
  1863. if(!found) return SendClientMessage(playerid, COLOR_RED, "You don't have any vehicles!");
  1864. ShowPlayerDialog(playerid, DIALOG_FINDVEHICLE, DIALOG_STYLE_LIST, "Find Your Vehicle", info, "Find", "Cancel");
  1865. return 1;
  1866. }
  1867.  
  1868. CMD:v(playerid, params[])
  1869. {
  1870. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1871. new vehicleid = GetPlayerVehicleID(playerid);
  1872. if(IsBicycle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  1873. new id = GetVehicleID(vehicleid);
  1874. if(GetPlayerVehicleAccess(playerid, id) < 1)
  1875. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  1876. SetPVarInt(playerid, "DialogValue1", id);
  1877. ShowDialog(playerid, DIALOG_VEHICLE);
  1878. return 1;
  1879. }
  1880.  
  1881. CMD:sellv(playerid, params[])
  1882. {
  1883. new pid, id, price, msg[128];
  1884. if(sscanf(params, "udd", pid, id, price)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /sellv [player] [vehicleid] [price]");
  1885. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
  1886. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1887. return SendClientMessage(playerid, COLOR_RED, "You are not the owner of this vehicle!");
  1888. if(price < 1) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
  1889. if(!PlayerToPlayer(playerid, pid, 10.0)) return SendClientMessage(playerid, COLOR_RED, "Player is too far!");
  1890. SetPVarInt(pid, "DialogValue1", playerid);
  1891. SetPVarInt(pid, "DialogValue2", id);
  1892. SetPVarInt(pid, "DialogValue3", price);
  1893. ShowDialog(pid, DIALOG_VEHICLE_SELL);
  1894. format(msg, sizeof(msg), "You have offered %s (%d) to buy your vehicle for $%d", PlayerName(pid), pid, price);
  1895. SendClientMessage(playerid, COLOR_WHITE, msg);
  1896. return 1;
  1897. }
  1898.  
  1899. CMD:givecarkeys(playerid, params[])
  1900. {
  1901. new pid, id, msg[128];
  1902. if(sscanf(params, "ud", pid, id)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /givecarkeys [player] [vehicleid]");
  1903. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
  1904. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "Invalid vehicleid!");
  1905. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1906. return SendClientMessage(playerid, COLOR_RED, "You are not the owner of this vehicle!");
  1907. if(!PlayerToPlayer(playerid, pid, 10.0)) return SendClientMessage(playerid, COLOR_RED, "Player is too far!");
  1908. SetPVarInt(pid, "CarKeys", id);
  1909. format(msg, sizeof(msg), "You have given your car keys to %s (%d)", PlayerName(pid), pid);
  1910. SendClientMessage(playerid, COLOR_WHITE, msg);
  1911. format(msg, sizeof(msg), "%s (%d) has given you car keys", PlayerName(playerid), playerid);
  1912. SendClientMessage(pid, COLOR_WHITE, msg);
  1913. return 1;
  1914. }
  1915. if(!strcmp(cmd, "/hotwire", true))
  1916. {
  1917. if(engineOn[GetPlayerVehicleID(playerid)]) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Engine already started!");
  1918. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Your key Please");
  1919. if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Only the driver can do this!");
  1920. if(IsAtDealership(playerid)) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Do you Think you can steal this car");
  1921. if(pveh == 510) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You don't need to start a bike!");
  1922. if(pveh == 462) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You don't need to start a bike!");
  1923. if(idcar == 59 || idcar == 60) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Access denied!");
  1924. if(IsAtCarrental(playerid)) return SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Do you Think you can steal this car");
  1925.  
  1926. new playerveh = GetPlayerVehicleID(playerid);
  1927. PutPlayerInVehicle(playerid, playerveh, 0);
  1928. GetPlayerName(playerid, sendername, sizeof(sendername));
  1929. format(string, sizeof(string), "* %s tries to hotwire the car", sendername);
  1930. ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  1931. SetTimerEx("StartingTheVehicle",7000,0,"i",playerid);
  1932. GameTextForPlayer(playerid, "~w~Hotwiring The Vehicle...",3500,3);
  1933. gEngine[playerid] = 1;
  1934. return 1;
  1935.  
  1936.  
  1937.  
  1938. }
  1939. CMD:vlock(playerid, params[])
  1940. {
  1941. new vehicleid;
  1942. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1943. {
  1944. vehicleid = GetPlayerVehicleID(playerid);
  1945. }
  1946. else
  1947. {
  1948. vehicleid = GetClosestVehicle(playerid);
  1949. if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  1950. }
  1951. if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  1952. new id = GetVehicleID(vehicleid);
  1953. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  1954. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1955. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  1956. new engine, lights, alarm, doors, bonnet, boot, objective;
  1957. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1958. if(doors == 1)
  1959. {
  1960. doors = 0;
  1961. VehicleLock[id] = 0;
  1962. GameTextForPlayer(playerid, "~g~doors unlocked", 3000, 6);
  1963. }
  1964. else
  1965. {
  1966. doors = 1;
  1967. VehicleLock[id] = 1;
  1968. GameTextForPlayer(playerid, "~r~doors locked", 3000, 6);
  1969. }
  1970. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1971. SaveVehicle(id);
  1972. return 1;
  1973. }
  1974.  
  1975. CMD:valarm(playerid, params[])
  1976. {
  1977. new vehicleid;
  1978. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1979. {
  1980. vehicleid = GetPlayerVehicleID(playerid);
  1981. }
  1982. else
  1983. {
  1984. vehicleid = GetClosestVehicle(playerid);
  1985. if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  1986. }
  1987. if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  1988. new id = GetVehicleID(vehicleid);
  1989. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  1990. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1991. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  1992. if(VehicleSecurity[vehicleid] == 0)
  1993. {
  1994. VehicleSecurity[vehicleid] = 1;
  1995. VehicleAlarm[id] = 1;
  1996. GameTextForPlayer(playerid, "~g~alarm on", 3000, 6);
  1997. }
  1998. else
  1999. {
  2000. ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
  2001. VehicleSecurity[vehicleid] = 0;
  2002. VehicleAlarm[id] = 0;
  2003. GameTextForPlayer(playerid, "~r~alarm off", 3000, 6);
  2004. }
  2005. SaveVehicle(id);
  2006. return 1;
  2007. }
  2008.  
  2009. CMD:trunk(playerid, params[])
  2010. {
  2011. new vehicleid = GetClosestVehicle(playerid);
  2012. if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  2013. if(!vehicleid || IsBicycle(vehicleid) || IsPlayerInAnyVehicle(playerid))
  2014. return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
  2015. new id = GetVehicleID(vehicleid);
  2016. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2017. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2018. return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
  2019. ToggleBoot(vehicleid, VEHICLE_PARAMS_ON);
  2020. SetPVarInt(playerid, "DialogValue1", id);
  2021. ShowDialog(playerid, DIALOG_TRUNK);
  2022. return 1;
  2023. }
  2024.  
  2025. CMD:fuel(playerid, params[])
  2026. {
  2027. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  2028. {
  2029. if(FuelStationCreated[i])
  2030. {
  2031. if(IsPlayerInRangeOfPoint(playerid, 15.0, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]))
  2032. {
  2033. SetPVarInt(playerid, "FuelStation", i);
  2034. ShowDialog(playerid, DIALOG_FUEL);
  2035. return 1;
  2036. }
  2037. }
  2038. }
  2039. SendClientMessage(playerid, COLOR_RED, "You are not in a fuel station!");
  2040. return 1;
  2041. }
  2042.  
  2043. CMD:rtc(playerid, params[])
  2044. {
  2045. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2046. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
  2047. SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  2048. SendClientMessage(playerid, COLOR_WHITE, "Vehicle respawned");
  2049. return 1;
  2050. }
  2051. CMD:fix(playerid, params[])
  2052. {
  2053. if(!IsAdmin(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
  2054. new vehicleid = GetPlayerVehicleID(playerid);
  2055. RepairVehicle(vehicleid);
  2056. SendClientMessage(playerid, COLOR_WHITE, "Vehicle fixed");
  2057. return 1;
  2058. }
  2059. CMD:rac(playerid, params[])
  2060. {
  2061. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2062. new bool:vehicleused[MAX_VEHICLES];
  2063. for(new i=0; i < MAX_PLAYERS; i++)
  2064. {
  2065. if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
  2066. {
  2067. vehicleused[GetPlayerVehicleID(i)] = true;
  2068. }
  2069. }
  2070. for(new i=1; i < MAX_VEHICLES; i++)
  2071. {
  2072. if(!vehicleused[i])
  2073. {
  2074. SetVehicleToRespawn(i);
  2075. }
  2076. }
  2077. new msg[128];
  2078. format(msg, sizeof(msg), "Admin %s (%d) has respawned all unused vehicles", PlayerName(playerid), playerid);
  2079. SendClientMessageToAll(COLOR_YELLOW, msg);
  2080. return 1;
  2081. }
  2082.  
  2083. CMD:setfuel(playerid, params[])
  2084. {
  2085. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2086. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
  2087. new amount, msg[128];
  2088. if(sscanf(params, "d", amount)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /setfuel [amount]");
  2089. if(amount < 0 || amount > 100) return SendClientMessage(playerid, COLOR_RED, "Invalid amount! (0-100)");
  2090. Fuel[GetPlayerVehicleID(playerid)] = amount;
  2091. format(msg, sizeof(msg), "You have set your vehicle fuel to %d", amount);
  2092. SendClientMessage(playerid, COLOR_WHITE, msg);
  2093. return 1;
  2094. }
  2095.  
  2096. CMD:addv(playerid, params[])
  2097. {
  2098. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2099. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  2100. new model[32], modelid, dealerid, color1, color2, price;
  2101. if(sscanf(params, "dsddd", dealerid, model, color1, color2, price))
  2102. return SendClientMessage(playerid, COLOR_GREY, "USAGE: /addv [dealerid] [model] [color1] [color2] [price]");
  2103. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2104. if(IsNumeric(model)) modelid = strval(model);
  2105. else modelid = GetVehicleModelIDFromName(model);
  2106. if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid model ID!");
  2107. if(color1 < 0 || color2 < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid color!");
  2108. if(price < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
  2109. new Float:X, Float:Y, Float:Z, Float:angle;
  2110. GetPlayerPos(playerid, X, Y, Z);
  2111. GetPlayerFacingAngle(playerid, angle);
  2112. X += floatmul(floatsin(-angle, degrees), 4.0);
  2113. Y += floatmul(floatcos(-angle, degrees), 4.0);
  2114. for(new i=1; i < MAX_DVEHICLES; i++)
  2115. {
  2116. if(!VehicleCreated[i])
  2117. {
  2118. new msg[128];
  2119. VehicleCreated[i] = VEHICLE_DEALERSHIP;
  2120. VehicleModel[i] = modelid;
  2121. VehiclePos[i][0] = X;
  2122. VehiclePos[i][1] = Y;
  2123. VehiclePos[i][2] = Z;
  2124. VehiclePos[i][3] = angle+90.0;
  2125. VehicleColor[i][0] = color1;
  2126. VehicleColor[i][1] = color2;
  2127. VehicleInterior[i] = GetPlayerInterior(playerid);
  2128. VehicleWorld[i] = GetPlayerVirtualWorld(playerid);
  2129. VehicleValue[i] = price;
  2130. valstr(VehicleOwner[i], dealerid);
  2131. VehicleNumberPlate[i] = DEFAULT_NUMBER_PLATE;
  2132. for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  2133. {
  2134. VehicleTrunk[i][d][0] = 0;
  2135. VehicleTrunk[i][d][1] = 0;
  2136. }
  2137. for(new d=0; d < sizeof(VehicleMods[]); d++)
  2138. {
  2139. VehicleMods[i][d] = 0;
  2140. }
  2141. VehiclePaintjob[i] = 255;
  2142. VehicleLock[i] = 0;
  2143. VehicleAlarm[i] = 0;
  2144. UpdateVehicle(i, 0);
  2145. SaveVehicle(i);
  2146. format(msg, sizeof(msg), "Added vehicle id %d to dealerid %d", i, dealerid);
  2147. SendClientMessage(playerid, COLOR_WHITE, msg);
  2148. return 1;
  2149. }
  2150. }
  2151. SendClientMessage(playerid, COLOR_RED, "Can't add any more vehicles!");
  2152. return 1;
  2153. }
  2154.  
  2155. CMD:editv(playerid, params[])
  2156. {
  2157. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2158. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  2159. {
  2160. new id = GetVehicleID(GetPlayerVehicleID(playerid));
  2161. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "This is not a dynamic vehicle!");
  2162. SetPVarInt(playerid, "DialogValue1", id);
  2163. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2164. return 1;
  2165. }
  2166. new vehicleid;
  2167. if(sscanf(params, "d", vehicleid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /editv [vehicleid]");
  2168. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "Invalid vehicleid!");
  2169. SetPVarInt(playerid, "DialogValue1", vehicleid);
  2170. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2171. return 1;
  2172. }
  2173.  
  2174. CMD:adddealership(playerid, params[])
  2175. {
  2176. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2177. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  2178. for(new i=1; i < MAX_DEALERSHIPS; i++)
  2179. {
  2180. if(!DealershipCreated[i])
  2181. {
  2182. new msg[128];
  2183. DealershipCreated[i] = 1;
  2184. GetPlayerPos(playerid, DealershipPos[i][0], DealershipPos[i][1], DealershipPos[i][2]);
  2185. UpdateDealership(i, 0);
  2186. SaveDealership(i);
  2187. format(msg, sizeof(msg), "Added dealership id %d", i);
  2188. SendClientMessage(playerid, COLOR_WHITE, msg);
  2189. return 1;
  2190. }
  2191. }
  2192. SendClientMessage(playerid, COLOR_RED, "Can't add any more dealerships!");
  2193. return 1;
  2194. }
  2195.  
  2196. CMD:deletedealership(playerid, params[])
  2197. {
  2198. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2199. new dealerid, msg[128];
  2200. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletedealership [dealerid]");
  2201. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2202. for(new i=1; i < MAX_DVEHICLES; i++)
  2203. {
  2204. if(VehicleCreated[i] == VEHICLE_DEALERSHIP && strval(VehicleOwner[i]) == dealerid)
  2205. {
  2206. DestroyVehicle(VehicleID[i]);
  2207. Delete3DTextLabel(VehicleLabel[i]);
  2208. VehicleCreated[i] = 0;
  2209. }
  2210. }
  2211. DealershipCreated[dealerid] = 0;
  2212. Delete3DTextLabel(DealershipLabel[dealerid]);
  2213. SaveDealership(dealerid);
  2214. format(msg, sizeof(msg), "Deleted dealership id %d", dealerid);
  2215. SendClientMessage(playerid, COLOR_WHITE, msg);
  2216. return 1;
  2217. }
  2218.  
  2219. CMD:movedealership(playerid, params[])
  2220. {
  2221. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2222. new dealerid, msg[128];
  2223. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movedealership [dealerid]");
  2224. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2225. GetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  2226. UpdateDealership(dealerid, 1);
  2227. SaveDealership(dealerid);
  2228. format(msg, sizeof(msg), "Moved dealership id %d here", dealerid);
  2229. SendClientMessage(playerid, COLOR_WHITE, msg);
  2230. return 1;
  2231. }
  2232.  
  2233. CMD:gotodealership(playerid, params[])
  2234. {
  2235. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2236. new dealerid, msg[128];
  2237. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotodealership [dealerid]");
  2238. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  2239. SetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  2240. format(msg, sizeof(msg), "Teleported to dealership id %d", dealerid);
  2241. SendClientMessage(playerid, COLOR_WHITE, msg);
  2242. return 1;
  2243. }
  2244.  
  2245. CMD:addfuelstation(playerid, params[])
  2246. {
  2247. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2248. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  2249. for(new i=1; i < MAX_FUEL_STATIONS; i++)
  2250. {
  2251. if(!FuelStationCreated[i])
  2252. {
  2253. new msg[128];
  2254. FuelStationCreated[i] = 1;
  2255. GetPlayerPos(playerid, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]);
  2256. UpdateFuelStation(i, 0);
  2257. SaveFuelStation(i);
  2258. format(msg, sizeof(msg), "Added fuel station id %d", i);
  2259. SendClientMessage(playerid, COLOR_WHITE, msg);
  2260. return 1;
  2261. }
  2262. }
  2263. SendClientMessage(playerid, COLOR_RED, "Can't add any more fuel stations!");
  2264. return 1;
  2265. }
  2266.  
  2267. CMD:deletefuelstation(playerid, params[])
  2268. {
  2269. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2270. new stationid, msg[128];
  2271. if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletefuelstation [stationid]");
  2272. if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  2273. FuelStationCreated[stationid] = 0;
  2274. Delete3DTextLabel(FuelStationLabel[stationid]);
  2275. SaveFuelStation(stationid);
  2276. format(msg, sizeof(msg), "Deleted fuel station id %d", stationid);
  2277. SendClientMessage(playerid, COLOR_WHITE, msg);
  2278. return 1;
  2279. }
  2280.  
  2281. CMD:movefuelstation(playerid, params[])
  2282. {
  2283. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2284. new stationid, msg[128];
  2285. if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movefuelstation [stationid]");
  2286. if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  2287. GetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  2288. UpdateFuelStation(stationid, 1);
  2289. SaveFuelStation(stationid);
  2290. format(msg, sizeof(msg), "Moved fuel station id %d here", stationid);
  2291. SendClientMessage(playerid, COLOR_WHITE, msg);
  2292. return 1;
  2293. }
  2294.  
  2295. CMD:gotofuelstation(playerid, params[])
  2296. {
  2297. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
  2298. new stationid, msg[128];
  2299. if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotofuelstation [stationid]");
  2300. if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  2301. SetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  2302. format(msg, sizeof(msg), "Teleported to fuel station id %d", stationid);
  2303. SendClientMessage(playerid, COLOR_WHITE, msg);
  2304. return 1;
  2305. }
  2306.  
  2307. public OnPlayerCommandText(playerid, cmdtext[])
  2308. public OnPlayerText(playerid,text[])
  2309. {
  2310. new name[MAX_PLAYER_NAME], string[128];
  2311. GetPlayerName(playerid, name, sizeof(name));
  2312. format(string, sizeof(string), "%s: %s", name, text);
  2313. SendLocalMessage(playerid, COLOR_WHITE, 7,string);// Send the message
  2314. return 0; // Makes sure the original message isn't send
  2315. }
  2316. {
  2317. if(!strcmp(cmdtext, "/help", true))
  2318. {
  2319. SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: This is the /help command!");
  2320. return 1;
  2321. // Returning 1 informs the server that the command has been processed.
  2322. // OnPlayerCommandText won't be called in other scripts.
  2323. }
  2324. return 0;
  2325. // Returning 0 informs the server that the command hasn't been processed by this script.
  2326. // OnPlayerCommandText will be called in other scripts until one returns 1.
  2327. // If no scripts return 1, the 'SERVER: Unknown Command' message will be shown.
  2328. }
  2329. {
  2330. if(strcmp(cmdtext, "/me", true, 3) == 0)
  2331. {
  2332. if(!cmdtext[3])return SendClientMessage(playerid, COLOR_RED, "USAGE: /me [text]");
  2333. new str[128];
  2334. GetPlayerName(playerid, str, sizeof(str));
  2335. format(str, sizeof(str), "*%s %s", str, cmdtext[4]);
  2336. SendLocalMessage(playerid, COLOR_PURPLE, 7, str);
  2337. return 1;
  2338. }
  2339. new pos, funcname[32];
  2340. while(cmdtext[++pos] > ' ')
  2341. {
  2342. funcname[pos-1] = tolower(cmdtext[pos]);
  2343. }
  2344. strins(funcname, "cmd_", 0, sizeof(funcname));
  2345. while (cmdtext[pos] == ' ') pos++;
  2346. if(!cmdtext[pos])
  2347. {
  2348. return CallLocalFunction(funcname, "is", playerid, "\1");
  2349. }
  2350. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  2351. }
  2352.  
  2353. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  2354. {
  2355. if(!ispassenger)
  2356. {
  2357. new id = GetVehicleID(vehicleid);
  2358. if(IsValidVehicle(id) && VehicleCreated[id] == VEHICLE_PLAYER)
  2359. {
  2360. new msg[128];
  2361. format(msg, sizeof(msg), "This vehicle belongs to %s", VehicleOwner[id]);
  2362. SendClientMessage(playerid, COLOR_GREY, msg);
  2363. }
  2364. }
  2365. return 1;
  2366. }
  2367.  
  2368. public OnPlayerStateChange(playerid, newstate, oldstate)
  2369. {
  2370. if(IsPlayerInAnyVehicle(playerid) && !IsBicycle(GetPlayerVehicleID(playerid)))
  2371. {
  2372. //TextDrawShowForPlayer(playerid, SpeedoBox);
  2373. TextDrawShowForPlayer(playerid, SpeedoText[playerid]);
  2374. new vehicleid = GetPlayerVehicleID(playerid);
  2375. if(VehicleSecurity[vehicleid] == 1)
  2376. {
  2377. ToggleAlarm(vehicleid, VEHICLE_PARAMS_ON);
  2378. SetTimerEx("StopAlarm", ALARM_TIME, false, "d", vehicleid);
  2379. }
  2380. }
  2381. else
  2382. {
  2383. //TextDrawHideForPlayer(playerid, SpeedoBox);
  2384. TextDrawHideForPlayer(playerid, SpeedoText[playerid]);
  2385. }
  2386. if(newstate == PLAYER_STATE_DRIVER)
  2387. {
  2388. new vehicleid = GetPlayerVehicleID(playerid);
  2389. new id = GetVehicleID(vehicleid);
  2390. if(IsValidVehicle(id))
  2391. {
  2392. if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  2393. {
  2394. SetPVarInt(playerid, "DialogValue1", id);
  2395. ShowDialog(playerid, DIALOG_VEHICLE_BUY);
  2396. return 1;
  2397. }
  2398. }
  2399. if(IsBicycle(vehicleid))
  2400. {
  2401. ToggleEngine(vehicleid, VEHICLE_PARAMS_ON);
  2402. }
  2403. if(Fuel[vehicleid] <= 0)
  2404. {
  2405. ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
  2406. }
  2407. }
  2408. return 1;
  2409. }
  2410.  
  2411. public OnVehicleMod(playerid, vehicleid, componentid)
  2412. {
  2413. new id = GetVehicleID(vehicleid);
  2414. if(IsValidVehicle(id))
  2415. {
  2416. VehicleMods[id][GetVehicleComponentType(componentid)] = componentid;
  2417. SaveVehicle(id);
  2418. }
  2419. return 1;
  2420. }
  2421.  
  2422. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  2423. {
  2424. new id = GetVehicleID(vehicleid);
  2425. if(IsValidVehicle(id))
  2426. {
  2427. VehiclePaintjob[id] = paintjobid;
  2428. SaveVehicle(id);
  2429. }
  2430. return 1;
  2431. }
  2432.  
  2433. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  2434. {
  2435. new id = GetVehicleID(vehicleid);
  2436. if(IsValidVehicle(id))
  2437. {
  2438. VehicleColor[id][0] = color1;
  2439. VehicleColor[id][1] = color2;
  2440. SaveVehicle(id);
  2441. }
  2442. return 1;
  2443. }
  2444.  
  2445. ShowDialog(playerid, dialogid)
  2446. {
  2447. switch(dialogid)
  2448. {
  2449. case DIALOG_VEHICLE:
  2450. {
  2451. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2452. new caption[32], info[256];
  2453. format(caption, sizeof(caption), "Vehicle ID %d", vehicleid);
  2454. strcat(info, "Engine\nLights\nHood\nTrunk", sizeof(info));
  2455. strcat(info, "\nFill Tank", sizeof(info));
  2456. if(GetPlayerVehicleAccess(playerid, vehicleid) >= 2)
  2457. {
  2458. new value = VehicleValue[vehicleid]/2;
  2459. format(info, sizeof(info), "%s\nSell Vehicle ($%d)\nPark Vehicle\nEdit License Plate", info, value);
  2460. }
  2461. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, info, "Select", "Cancel");
  2462. }
  2463. case DIALOG_VEHICLE_BUY:
  2464. {
  2465. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2466. new caption[32], info[256];
  2467. format(caption, sizeof(caption), "Vehicle ID %d", vehicleid);
  2468. format(info, sizeof(info), "This vehicle is for sale ($%d)\nWould you like to buy it?", VehicleValue[vehicleid]);
  2469. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, info, "Yes", "No");
  2470. }
  2471. case DIALOG_VEHICLE_SELL:
  2472. {
  2473. new targetid = GetPVarInt(playerid, "DialogValue1");
  2474. new id = GetPVarInt(playerid, "DialogValue2");
  2475. new price = GetPVarInt(playerid, "DialogValue3");
  2476. new info[256];
  2477. format(info, sizeof(info), "%s (%d) wants to sell you a %s for $%d.", PlayerName(targetid), targetid,
  2478. VehicleNames[VehicleModel[id]-400], price);
  2479. strcat(info, "\n\nWould you like to buy?", sizeof(info));
  2480. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Buy Vehicle", info, "Yes", "No");
  2481. }
  2482. case DIALOG_TRUNK:
  2483. {
  2484. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2485. new name[32], info[256];
  2486. for(new i=0; i < sizeof(VehicleTrunk[]); i++)
  2487. {
  2488. if(VehicleTrunk[vehicleid][i][1] > 0)
  2489. {
  2490. GetWeaponName(VehicleTrunk[vehicleid][i][0], name, sizeof(name));
  2491. format(info, sizeof(info), "%s%d. %s (%d)\n", info, i+1, name, VehicleTrunk[vehicleid][i][1]);
  2492. }
  2493. else
  2494. {
  2495. format(info, sizeof(info), "%s%d. Empty\n", info, i+1);
  2496. }
  2497. }
  2498. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Trunk", info, "Select", "Cancel");
  2499. }
  2500. case DIALOG_TRUNK_ACTION:
  2501. {
  2502. new info[128];
  2503. strcat(info, "Put Into Trunk\nTake From Trunk", sizeof(info));
  2504. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Trunk", info, "Select", "Cancel");
  2505. }
  2506. case DIALOG_VEHICLE_PLATE:
  2507. {
  2508. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Edit License Plate", "Enter new license plate:", "Change", "Back");
  2509. }
  2510. case DIALOG_FUEL:
  2511. {
  2512. new info[128];
  2513. strcat(info, "Refuel Vehicle ($" #FUEL_PRICE ")\nBuy Gas Can ($" #GAS_CAN_PRICE ")", sizeof(info));
  2514. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Fuel Station", info, "OK", "Cancel");
  2515. }
  2516. case DIALOG_EDITVEHICLE:
  2517. {
  2518. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2519. new caption[32], info[256];
  2520. format(caption, sizeof(caption), "Edit Vehicle ID %d", vehicleid);
  2521. format(info, sizeof(info), "1. Value: [$%d]\n2. Model: [%d (%s)]\n3. Colors: [%d] [%d]\n4. License Plate: [%s]",
  2522. VehicleValue[vehicleid], VehicleModel[vehicleid], VehicleNames[VehicleModel[vehicleid]-400],
  2523. VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], VehicleNumberPlate[vehicleid]);
  2524. strcat(info, "\n5. Delete Vehicle\n6. Park Vehicle\n7. Go To Vehicle", sizeof(info));
  2525. strcat(info, "\n\nEnter: [nr] [value1] [value2]", sizeof(info));
  2526. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, info, "OK", "Cancel");
  2527. }
  2528. }
  2529. }
  2530. DialogReturn[playerid] = dialogid;
  2531. if(dialogid == DIALOG_VEHICLE)
  2532. {
  2533. if(response)
  2534. {
  2535. switch(listitem)
  2536. {
  2537. case 0:
  2538. {
  2539. new vehicleid = GetPlayerVehicleID(playerid);
  2540. new engine, lights, alarm, doors, bonnet, boot, objective;
  2541. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2542. if(engine == 0 && Fuel[vehicleid] <= 0)
  2543. {
  2544. ShowErrorDialog(playerid, "This vehicle is out of fuel!");
  2545. return 1;
  2546. }
  2547. if(engine == 1) { engine = 0; lights = 0; }
  2548. else { engine = 1; lights = 1; }
  2549. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2550. }
  2551. case 1:
  2552. {
  2553. new vehicleid = GetPlayerVehicleID(playerid);
  2554. new engine, lights, alarm, doors, bonnet, boot, objective;
  2555. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2556. if(lights == 1) lights = 0; else lights = 1;
  2557. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2558. }
  2559. case 2:
  2560. {
  2561. new vehicleid = GetPlayerVehicleID(playerid);
  2562. new engine, lights, alarm, doors, bonnet, boot, objective;
  2563. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2564. if(bonnet == 1) bonnet = 0; else bonnet = 1;
  2565. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2566. }
  2567. case 3:
  2568. {
  2569. new vehicleid = GetPlayerVehicleID(playerid);
  2570. new engine, lights, alarm, doors, bonnet, boot, objective;
  2571. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2572. if(boot == 1) boot = 0; else boot = 1;
  2573. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  2574. }
  2575. case 4:
  2576. {
  2577. if(!GetPVarInt(playerid, "GasCan"))
  2578. {
  2579. ShowErrorDialog(playerid, "You don't have a gas can!");
  2580. return 1;
  2581. }
  2582. new vehicleid = GetPlayerVehicleID(playerid);
  2583. if(Fuel[vehicleid] < 80.0) Fuel[vehicleid] += 20.0;
  2584. else Fuel[vehicleid] = 100.0;
  2585. SetPVarInt(playerid, "GasCan", 0);
  2586. SendClientMessage(playerid, COLOR_WHITE, "You have filled the fuel tank with 20 fuel");
  2587. }
  2588. case 5:
  2589. {
  2590. new id = GetPVarInt(playerid, "DialogValue1");
  2591. if(GetPlayerVehicleAccess(playerid, id) < 2)
  2592. {
  2593. ShowErrorDialog(playerid, "You are not the owner of this vehicle!");
  2594. return 1;
  2595. }
  2596. new msg[128];
  2597. VehicleCreated[id] = 0;
  2598. new money = VehicleValue[id]/2;
  2599. GivePlayerMoney(playerid, money);
  2600. format(msg, sizeof(msg), "You have sold your vehicle for $%d", money);
  2601. SendClientMessage(playerid, COLOR_WHITE, msg);
  2602. RemovePlayerFromVehicle(playerid);
  2603. DestroyVehicle(VehicleID[id]);
  2604. SaveVehicle(id);
  2605. }
  2606. case 6:
  2607. {
  2608. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2609. if(GetPlayerVehicleAccess(playerid, vehicleid) < 2)
  2610. {
  2611. ShowErrorDialog(playerid, "You are not the owner of this vehicle!");
  2612. return 1;
  2613. }
  2614. GetVehiclePos(VehicleID[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1], VehiclePos[vehicleid][2]);
  2615. GetVehicleZAngle(VehicleID[vehicleid], VehiclePos[vehicleid][3]);
  2616. VehicleInterior[vehicleid] = GetPlayerInterior(playerid);
  2617. VehicleWorld[vehicleid] = GetPlayerVirtualWorld(playerid);
  2618. SendClientMessage(playerid, COLOR_WHITE, "You have parked this vehicle here");
  2619. UpdateVehicle(vehicleid, 1);
  2620. PutPlayerInVehicle(playerid, VehicleID[vehicleid], 0);
  2621. SaveVehicle(vehicleid);
  2622. }
  2623. case 7:
  2624. {
  2625. ShowDialog(playerid, DIALOG_VEHICLE_PLATE);
  2626. }
  2627. }
  2628. }
  2629. return 1;
  2630. }
  2631. if(dialogid == DIALOG_VEHICLE_BUY)
  2632. {
  2633. if(response)
  2634. {
  2635. if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
  2636. {
  2637. ShowErrorDialog(playerid, "You can't buy any more vehicles! Max: " #MAX_PLAYER_VEHICLES );
  2638. return 1;
  2639. }
  2640. new id = GetPVarInt(playerid, "DialogValue1");
  2641. if(GetPlayerMoney(playerid) < VehicleValue[id])
  2642. {
  2643. ShowErrorDialog(playerid, "You don't have enough money to buy this vehicle!");
  2644. return 1;
  2645. }
  2646. new freeid = GetFreeVehicleID();
  2647. if(!freeid)
  2648. {
  2649. ShowErrorDialog(playerid, "Vehicle dealership is out of stock!");
  2650. return 1;
  2651. }
  2652. GivePlayerMoney(playerid, -VehicleValue[id]);
  2653. new dealerid = strval(VehicleOwner[id]);
  2654. VehicleCreated[freeid] = VEHICLE_PLAYER;
  2655. VehicleModel[freeid] = VehicleModel[id];
  2656. VehiclePos[freeid] = DealershipPos[dealerid];
  2657. VehicleColor[freeid] = VehicleColor[id];
  2658. VehicleInterior[freeid] = VehicleInterior[id];
  2659. VehicleWorld[freeid] = VehicleWorld[id];
  2660. VehicleValue[freeid] = VehicleValue[id];
  2661. GetPlayerName(playerid, VehicleOwner[freeid], sizeof(VehicleOwner[]));
  2662. VehicleNumberPlate[freeid] = DEFAULT_NUMBER_PLATE;
  2663. for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  2664. {
  2665. VehicleTrunk[freeid][d][0] = 0;
  2666. VehicleTrunk[freeid][d][1] = 0;
  2667. }
  2668. for(new d=0; d < sizeof(VehicleMods[]); d++)
  2669. {
  2670. VehicleMods[freeid][d] = 0;
  2671. }
  2672. VehiclePaintjob[freeid] = 255;
  2673. VehicleLock[freeid] = 0;
  2674. VehicleAlarm[freeid] = 0;
  2675. UpdateVehicle(freeid, 0);
  2676. SaveVehicle(freeid);
  2677. new msg[128];
  2678. format(msg, sizeof(msg), "You have bought this vehicle for $%d", VehicleValue[id]);
  2679. SendClientMessage(playerid, COLOR_WHITE, msg);
  2680. }
  2681. else
  2682. {
  2683. new id = GetPVarInt(playerid, "DialogValue1");
  2684. if(GetPlayerVehicleAccess(playerid, id) < 1)
  2685. {
  2686. RemovePlayerFromVehicle(playerid);
  2687. }
  2688. }
  2689. return 1;
  2690. }
  2691. if(dialogid == DIALOG_VEHICLE_SELL)
  2692. {
  2693. if(response)
  2694. {
  2695. if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
  2696. {
  2697. ShowErrorDialog(playerid, "You can't buy any more vehicles! Max: " #MAX_PLAYER_VEHICLES );
  2698. return 1;
  2699. }
  2700. new targetid = GetPVarInt(playerid, "DialogValue1");
  2701. new id = GetPVarInt(playerid, "DialogValue2");
  2702. new price = GetPVarInt(playerid, "DialogValue3");
  2703. if(GetPlayerMoney(playerid) < price)
  2704. {
  2705. ShowErrorDialog(playerid, "You don't have enough money to buy this vehicle!");
  2706. return 1;
  2707. }
  2708. new msg[128];
  2709. GetPlayerName(playerid, VehicleOwner[id], sizeof(VehicleOwner[]));
  2710. GivePlayerMoney(playerid, -price);
  2711. GivePlayerMoney(targetid, price);
  2712. SaveVehicle(id);
  2713. format(msg, sizeof(msg), "You have bought this vehicle for $%d", price);
  2714. SendClientMessage(playerid, COLOR_WHITE, msg);
  2715. format(msg, sizeof(msg), "%s (%d) has accepted your offer and bought the vehicle", PlayerName(playerid), playerid);
  2716. SendClientMessage(targetid, COLOR_WHITE, msg);
  2717. }
  2718. else
  2719. {
  2720. new targetid = GetPVarInt(playerid, "DialogValue1");
  2721. new msg[128];
  2722. format(msg, sizeof(msg), "%s (%d) refused your offer", PlayerName(playerid), playerid);
  2723. SendClientMessage(targetid, COLOR_WHITE, msg);
  2724. }
  2725. return 1;
  2726. }
  2727. if(dialogid == DIALOG_FINDVEHICLE)
  2728. {
  2729. if(response)
  2730. {
  2731. new id;
  2732. sscanf(inputtext[4], "d", id);
  2733. if(IsValidVehicle(id))
  2734. {
  2735. TrackCar[playerid] = VehicleID[id];
  2736. SendClientMessage(playerid, COLOR_WHITE, "Your vehicle's location is shown on your minimap");
  2737. }
  2738. }
  2739. return 1;
  2740. }
  2741. if(dialogid == DIALOG_TRUNK)
  2742. {
  2743. if(response)
  2744. {
  2745. SetPVarInt(playerid, "DialogValue2", listitem);
  2746. ShowDialog(playerid, DIALOG_TRUNK_ACTION);
  2747. }
  2748. else
  2749. {
  2750. new id = GetPVarInt(playerid, "DialogValue1");
  2751. ToggleBoot(VehicleID[id], VEHICLE_PARAMS_OFF);
  2752. }
  2753. return 1;
  2754. }
  2755. if(dialogid == DIALOG_TRUNK_ACTION)
  2756. {
  2757. if(response)
  2758. {
  2759. new id = GetPVarInt(playerid, "DialogValue1");
  2760. new slot = GetPVarInt(playerid, "DialogValue2");
  2761. switch(listitem)
  2762. {
  2763. case 0:
  2764. {
  2765. new weaponid = GetPlayerWeapon(playerid);
  2766. if(weaponid == 0)
  2767. {
  2768. ShowErrorDialog(playerid, "You don't have a weapon in your hands!");
  2769. return 1;
  2770. }
  2771. VehicleTrunk[id][slot][0] = weaponid;
  2772. if(IsMeleeWeapon(weaponid)) VehicleTrunk[id][slot][1] = 1;
  2773. else VehicleTrunk[id][slot][1] = GetPlayerAmmo(playerid);
  2774. RemovePlayerWeapon(playerid, weaponid);
  2775. SaveVehicle(id);
  2776. }
  2777. case 1:
  2778. {
  2779. if(VehicleTrunk[id][slot][1] <= 0)
  2780. {
  2781. ShowErrorDialog(playerid, "This slot is empty!");
  2782. return 1;
  2783. }
  2784. GivePlayerWeapon(playerid, VehicleTrunk[id][slot][0], VehicleTrunk[id][slot][1]);
  2785. VehicleTrunk[id][slot][0] = 0;
  2786. VehicleTrunk[id][slot][1] = 0;
  2787. SaveVehicle(id);
  2788. }
  2789. }
  2790. }
  2791. ShowDialog(playerid, DIALOG_TRUNK);
  2792. return 1;
  2793. }
  2794. if(dialogid == DIALOG_VEHICLE_PLATE)
  2795. {
  2796. if(response)
  2797. {
  2798. if(strlen(inputtext) < 1 || strlen(inputtext) >= sizeof(VehicleNumberPlate[]))
  2799. {
  2800. ShowErrorDialog(playerid, "Invalid length!");
  2801. return 1;
  2802. }
  2803. new id = GetPVarInt(playerid, "DialogValue1");
  2804. new vehicleid = VehicleID[id];
  2805. strmid(VehicleNumberPlate[id], inputtext, 0, sizeof(VehicleNumberPlate[]));
  2806. SaveVehicle(id);
  2807. SetVehicleNumberPlate(vehicleid, inputtext);
  2808. SetVehicleToRespawn(vehicleid);
  2809. new msg[128];
  2810. format(msg, sizeof(msg), "You have changed vehicle number plate to %s", inputtext);
  2811. SendClientMessage(playerid, COLOR_WHITE, msg);
  2812. }
  2813. else ShowDialog(playerid, DIALOG_VEHICLE);
  2814. return 1;
  2815. }
  2816. if(dialogid == DIALOG_FUEL)
  2817. {
  2818. if(response)
  2819. {
  2820. switch(listitem)
  2821. {
  2822. case 0:
  2823. {
  2824. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  2825. {
  2826. ShowErrorDialog(playerid, "You are not driving a vehicle!");
  2827. return 1;
  2828. }
  2829. new vehicleid = GetPlayerVehicleID(playerid);
  2830. if(IsBicycle(vehicleid))
  2831. {
  2832. ShowErrorDialog(playerid, "Your vehicle doesn't have a fuel tank!");
  2833. return 1;
  2834. }
  2835. if(Fuel[vehicleid] >= 100.0)
  2836. {
  2837. ShowErrorDialog(playerid, "Your vehicle fuel tank is full!");
  2838. return 1;
  2839. }
  2840. if(GetPlayerMoney(playerid) < FUEL_PRICE)
  2841. {
  2842. ShowErrorDialog(playerid, "You don't have enough money!");
  2843. return 1;
  2844. }
  2845. RefuelTime[playerid] = 5;
  2846. SetPVarFloat(playerid, "Fuel", Fuel[vehicleid]);
  2847. GameTextForPlayer(playerid, "~w~refueling...", 2000, 3);
  2848. }
  2849. case 1:
  2850. {
  2851. if(GetPVarInt(playerid, "GasCan"))
  2852. {
  2853. ShowErrorDialog(playerid, "You already have a gas can!");
  2854. return 1;
  2855. }
  2856. if(GetPlayerMoney(playerid) < GAS_CAN_PRICE)
  2857. {
  2858. ShowErrorDialog(playerid, "You don't have enough money!");
  2859. return 1;
  2860. }
  2861. GivePlayerMoney(playerid, -GAS_CAN_PRICE);
  2862. SetPVarInt(playerid, "GasCan", 1);
  2863. SendClientMessage(playerid, COLOR_WHITE, "You have bought a gas can for $" #GAS_CAN_PRICE );
  2864. }
  2865. }
  2866. }
  2867. return 1;
  2868. }
  2869. if(dialogid == DIALOG_EDITVEHICLE)
  2870. {
  2871. if(response)
  2872. {
  2873. new id = GetPVarInt(playerid, "DialogValue1");
  2874. new nr, params[128];
  2875. sscanf(inputtext, "ds", nr, params);
  2876. switch(nr)
  2877. {
  2878. case 1:
  2879. {
  2880. new value = strval(params);
  2881. if(value < 0) value = 0;
  2882. VehicleValue[id] = value;
  2883. UpdateVehicleLabel(id, 1);
  2884. SaveVehicle(id);
  2885. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2886. }
  2887. case 2:
  2888. {
  2889. new value;
  2890. if(IsNumeric(params)) value = strval(params);
  2891. else value = GetVehicleModelIDFromName(params);
  2892. if(value < 400 || value > 611)
  2893. {
  2894. ShowErrorDialog(playerid, "Invalid vehicle model!");
  2895. return 1;
  2896. }
  2897. VehicleModel[id] = value;
  2898. for(new i=0; i < sizeof(VehicleMods[]); i++)
  2899. {
  2900. VehicleMods[id][i] = 0;
  2901. }
  2902. VehiclePaintjob[id] = 255;
  2903. UpdateVehicle(id, 1);
  2904. SaveVehicle(id);
  2905. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2906. }
  2907. case 3:
  2908. {
  2909. new color1, color2;
  2910. sscanf(params, "dd", color1, color2);
  2911. VehicleColor[id][0] = color1;
  2912. VehicleColor[id][1] = color2;
  2913. SaveVehicle(id);
  2914. ChangeVehicleColor(VehicleID[id], color1, color2);
  2915. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2916. }
  2917. case 4:
  2918. {
  2919. if(strlen(params) < 1 || strlen(params) > 8)
  2920. {
  2921. ShowErrorDialog(playerid, "Invalid length!");
  2922. return 1;
  2923. }
  2924. strmid(VehicleNumberPlate[id], params, 0, sizeof(params));
  2925. SaveVehicle(id);
  2926. SetVehicleNumberPlate(VehicleID[id], params);
  2927. SetVehicleToRespawn(VehicleID[id]);
  2928. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2929. }
  2930. case 5:
  2931. {
  2932. DestroyVehicle(VehicleID[id]);
  2933. if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  2934. {
  2935. Delete3DTextLabel(VehicleLabel[id]);
  2936. }
  2937. VehicleCreated[id] = 0;
  2938. SaveVehicle(id);
  2939. new msg[128];
  2940. format(msg, sizeof(msg), "You have deleted vehicle id %d", id);
  2941. SendClientMessage(playerid, COLOR_WHITE, msg);
  2942. }
  2943. case 6:
  2944. {
  2945. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  2946. {
  2947. ShowErrorDialog(playerid, "You are not driving the vehicle!");
  2948. return 1;
  2949. }
  2950. GetVehiclePos(VehicleID[id], VehiclePos[id][0], VehiclePos[id][1], VehiclePos[id][2]);
  2951. GetVehicleZAngle(VehicleID[id], VehiclePos[id][3]);
  2952. VehicleInterior[id] = GetPlayerInterior(playerid);
  2953. VehicleWorld[id] = GetPlayerVirtualWorld(playerid);
  2954. SendClientMessage(playerid, COLOR_WHITE, "You have parked this vehicle here");
  2955. UpdateVehicle(id, 1);
  2956. PutPlayerInVehicle(playerid, VehicleID[id], 0);
  2957. SaveVehicle(id);
  2958. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2959. }
  2960. case 7:
  2961. {
  2962. new Float:x, Float:y, Float:z;
  2963. GetVehiclePos(VehicleID[id], x, y, z);
  2964. SetPlayerPos(playerid, x, y, z+1);
  2965. new msg[128];
  2966. format(msg, sizeof(msg), "You have teleported to vehicle id %d", id);
  2967. SendClientMessage(playerid, COLOR_WHITE, msg);
  2968. }
  2969. }
  2970. }
  2971. return 1;
  2972. }
  2973. return 0;
  2974. }
  2975.  
  2976. stock sscanf(string[], format[], {Float,_}:...)
  2977. {
  2978. #if defined isnull
  2979. if (isnull(string))
  2980. #else
  2981. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  2982. #endif
  2983. {
  2984. return format[0];
  2985. }
  2986. new
  2987. formatPos = 0,
  2988. stringPos = 0,
  2989. paramPos = 2,
  2990. paramCount = numargs(),
  2991. delim = ' ';
  2992. while (string[stringPos] && string[stringPos] <= ' ')
  2993. {
  2994. stringPos++;
  2995. }
  2996. while (paramPos < paramCount && string[stringPos])
  2997. {
  2998. switch (format[formatPos++])
  2999. {
  3000. case '\0':
  3001. {
  3002. return 0;
  3003. }
  3004. case 'i', 'd':
  3005. {
  3006. new
  3007. neg = 1,
  3008. num = 0,
  3009. ch = string[stringPos];
  3010. if (ch == '-')
  3011. {
  3012. neg = -1;
  3013. ch = string[++stringPos];
  3014. }
  3015. do
  3016. {
  3017. stringPos++;
  3018. if ('0' <= ch <= '9')
  3019. {
  3020. num = (num * 10) + (ch - '0');
  3021. }
  3022. else
  3023. {
  3024. return -1;
  3025. }
  3026. }
  3027. while ((ch = string[stringPos]) > ' ' && ch != delim);
  3028. setarg(paramPos, 0, num * neg);
  3029. }
  3030. case 'h', 'x':
  3031. {
  3032. new
  3033. num = 0,
  3034. ch = string[stringPos];
  3035. do
  3036. {
  3037. stringPos++;
  3038. switch (ch)
  3039. {
  3040. case 'x', 'X':
  3041. {
  3042. num = 0;
  3043. continue;
  3044. }
  3045. case '0' .. '9':
  3046. {
  3047. num = (num << 4) | (ch - '0');
  3048. }
  3049. case 'a' .. 'f':
  3050. {
  3051. num = (num << 4) | (ch - ('a' - 10));
  3052. }
  3053. case 'A' .. 'F':
  3054. {
  3055. num = (num << 4) | (ch - ('A' - 10));
  3056. }
  3057. default:
  3058. {
  3059. return -1;
  3060. }
  3061. }
  3062. }
  3063. while ((ch = string[stringPos]) > ' ' && ch != delim);
  3064. setarg(paramPos, 0, num);
  3065. }
  3066. case 'c':
  3067. {
  3068. setarg(paramPos, 0, string[stringPos++]);
  3069. }
  3070. case 'f':
  3071. {
  3072. new
  3073. end = stringPos - 1,
  3074. ch;
  3075. while ((ch = string[++end]) && ch != delim) {}
  3076. string[end] = '\0';
  3077. setarg(paramPos,0,_:floatstr(string[stringPos]));
  3078. string[end] = ch;
  3079. stringPos = end;
  3080. }
  3081. case 'p':
  3082. {
  3083. delim = format[formatPos++];
  3084. continue;
  3085. }
  3086. case '\'':
  3087. {
  3088. new
  3089. end = formatPos - 1,
  3090. ch;
  3091. while ((ch = format[++end]) && ch != '\'') {}
  3092. if (!ch)
  3093. {
  3094. return -1;
  3095. }
  3096. format[end] = '\0';
  3097. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  3098. {
  3099. if (format[end + 1])
  3100. {
  3101. return -1;
  3102. }
  3103. return 0;
  3104. }
  3105. format[end] = '\'';
  3106. stringPos = ch + (end - formatPos);
  3107. formatPos = end + 1;
  3108. }
  3109. case 'u':
  3110. {
  3111. new
  3112. end = stringPos - 1,
  3113. id = 0,
  3114. bool:num = true,
  3115. ch;
  3116. while ((ch = string[++end]) && ch != delim)
  3117. {
  3118. if (num)
  3119. {
  3120. if ('0' <= ch <= '9')
  3121. {
  3122. id = (id * 10) + (ch - '0');
  3123. }
  3124. else
  3125. {
  3126. num = false;
  3127. }
  3128. }
  3129. }
  3130. if (num && IsPlayerConnected(id))
  3131. {
  3132. setarg(paramPos, 0, id);
  3133. }
  3134. else
  3135. {
  3136. #if !defined foreach
  3137. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  3138. #define __SSCANF_FOREACH__
  3139. #endif
  3140. string[end] = '\0';
  3141. num = false;
  3142. new
  3143. name[MAX_PLAYER_NAME];
  3144. id = end - stringPos;
  3145. foreach (Player, playerid)
  3146. {
  3147. GetPlayerName(playerid, name, sizeof (name));
  3148. if (!strcmp(name, string[stringPos], true, id))
  3149. {
  3150. setarg(paramPos, 0, playerid);
  3151. num = true;
  3152. break;
  3153. }
  3154. }
  3155. if (!num)
  3156. {
  3157. setarg(paramPos, 0, INVALID_PLAYER_ID);
  3158. }
  3159. string[end] = ch;
  3160. #if defined __SSCANF_FOREACH__
  3161. #undef foreach
  3162. #undef __SSCANF_FOREACH__
  3163. #endif
  3164. }
  3165. stringPos = end;
  3166. }
  3167. case 's', 'z':
  3168. {
  3169. new
  3170. i = 0,
  3171. ch;
  3172. if (format[formatPos])
  3173. {
  3174. while ((ch = string[stringPos++]) && ch != delim)
  3175. {
  3176. setarg(paramPos, i++, ch);
  3177. }
  3178. if (!i)
  3179. {
  3180. return -1;
  3181. }
  3182. }
  3183. else
  3184. {
  3185. while ((ch = string[stringPos++]))
  3186. {
  3187. setarg(paramPos, i++, ch);
  3188. }
  3189. }
  3190. stringPos--;
  3191. setarg(paramPos, i, '\0');
  3192. }
  3193. default:
  3194. {
  3195. continue;
  3196. }
  3197. }
  3198. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  3199. {
  3200. stringPos++;
  3201. }
  3202. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  3203. {
  3204. stringPos++;
  3205. }
  3206. paramPos++;
  3207. }
  3208. do
  3209. {
  3210. if ((delim = format[formatPos++]) > ' ')
  3211. {
  3212. if (delim == '\'')
  3213. {
  3214. while ((delim = format[formatPos++]) && delim != '\'') {}
  3215. }
  3216. else if (delim != 'z')
  3217. {
  3218. return delim;
  3219. }
  3220. }
  3221. }
  3222. while (delim > ' ');
  3223. return 0;
  3224. }
  3225.  
  3226. public OnFilterScriptInit()
  3227. DisableInteriorEnterExits();
  3228. {
  3229. print("\n--------------------------------------");
  3230. print(" OrbzGaming Light Roleplay by Jason Gray");
  3231. print("--------------------------------------\n");
  3232. return 1;
  3233. }
  3234.  
  3235. public OnFilterScriptExit()
  3236. DisableInteriorEnterExits();
  3237. {
  3238. return 1;
  3239. }
  3240.  
  3241. #else
  3242.  
  3243. main()
  3244. {
  3245. print("\n----------------------------------");
  3246. print(" OrbzGaming Light Roleplay by Jason Gray");
  3247. print("----------------------------------\n");
  3248. }
  3249.  
  3250. #endif
  3251. public OnGameModeInit()
  3252. {
  3253. // Don't use these lines if it's a filterscript
  3254. SetGameModeText("OrbzGaming LightRP");
  3255. UsePlayerPedAnims();
  3256. ManualVehicleEngineAndLights();
  3257. DisableInteriorEnterExits();
  3258. CreateObject(7654, 1718.14, 1943.70, 15.15, 3.14, 0.00, 1.57);
  3259. CreateObject(1290, -2037.52, -87.52, 39.89, 356.86, 0.00, 3.14);
  3260. CreateObject(1290, -2058.01, -87.72, 39.89, 356.86, 0.00, 3.14);
  3261. CreateObject(1226, -1638.45, 652.50, 10.07, 3.14, 0.00, 0.00);
  3262. CreateObject(1226, -1637.86, 674.39, 10.07, 3.14, 0.00, 0.00);
  3263. CreateObject(1226, -1574.28, 656.17, 10.04, 356.86, 0.00, -3.14);
  3264. CreateObject(1226, -1574.14, 673.81, 10.04, 356.86, 0.00, -3.14);
  3265. CreateObject(1226, -1605.40, 648.46, 10.00, 356.86, 0.00, -1.57);
  3266. CreateObject(1411, -1836.94, 170.46, 15.70, 356.86, 0.00, -1.63);
  3267. AddPlayerClass(165,-1421.8270,-287.2401,14.1484,150.1535,0,0,0,0,0,0);
  3268. AddStaticVehicleEx(597,-1419.9149,-297.4815,13.7989,47.7547,7,1,0); //
  3269. AddStaticVehicleEx(507,-1961.2831,1339.6487,6.9812,206.9296,0,0,0); //
  3270. AddStaticVehicleEx(507,-1945.5159,1339.0120,7.0121,147.4160,0,0,0); //
  3271. AddStaticVehicleEx(559,-1656.9678,454.4189,6.8266,225.8164,6,0,0); //
  3272. AddStaticVehicleEx(535,-1706.0708,406.1824,6.9136,227.5521,55,1,0); //
  3273. AddStaticVehicleEx(566,-1699.6498,413.3166,6.9761,225.9984,84,8,0); //
  3274. AddStaticVehicleEx(466,-1763.6812,948.5830,24.4841,271.0938,78,76,0); //
  3275. AddStaticVehicleEx(545,-1750.2876,948.8535,24.6076,271.0609,47,1,0); //
  3276. AddStaticVehicleEx(413,-1735.2789,1049.3479,17.6585,90.8813,88,1,0); //
  3277. AddStaticVehicleEx(574,-1720.4548,1015.6420,17.3111,88.2069,26,26,0); //
  3278. AddStaticVehicleEx(574,-1720.1385,1020.0734,17.3111,94.2959,26,26,0); //
  3279. AddStaticVehicleEx(560,-1587.9504,-1846.5280,75.7817,121.3242,1,29,0); //
  3280. AddStaticVehicleEx(585,-1687.7942,987.1858,17.2204,269.1499,42,42,0); //
  3281. AddStaticVehicleEx(549,-1702.3386,1004.0133,17.2829,90.4381,72,39,0); //
  3282. AddStaticVehicleEx(546,-1703.6456,1028.5342,17.3104,90.7219,78,38,0); //
  3283. AddStaticVehicleEx(546,-1693.9900,1059.1444,17.3103,359.6220,0,0,0); //
  3284. AddStaticVehicleEx(561,-1736.2745,1008.3485,17.3994,91.6291,8,17,0); //
  3285. AddStaticVehicleEx(497,-1680.0165,706.0964,30.7782,90.4319,7,1,0); //
  3286. AddStaticVehicleEx(533,-2073.6975,968.0374,61.6336,12.2912,75,1,0); //
  3287. AddStaticVehicleEx(421,-2510.1282,1139.0929,55.5997,177.1017,30,1,0); //
  3288. AddStaticVehicleEx(579,-2636.6277,932.9221,71.7419,195.2941,42,42,0); //
  3289. AddStaticVehicleEx(554,-2722.6489,915.8687,67.6814,90.2973,65,32,0); //
  3290. AddStaticVehicleEx(527,-2592.3743,645.2054,27.5310,89.6340,53,1,0); //
  3291. AddStaticVehicleEx(551,-2563.1392,625.7888,27.6088,359.9005,7,0,0); //
  3292. AddStaticVehicleEx(405,-2591.5808,666.0721,27.6875,89.2955,18,0,0); //
  3293. AddStaticVehicleEx(566,-2547.0613,647.4545,14.2404,268.5971,83,1,0); //
  3294. AddStaticVehicleEx(518,-2572.4792,627.5349,14.1137,89.5682,9,39,0); //
  3295. AddStaticVehicleEx(562,-2572.4861,632.7147,14.1188,90.0121,67,0,0); //
  3296. AddStaticVehicleEx(507,-2753.1187,381.7529,3.9579,180.1222,0,0,0); //
  3297. AddStaticVehicleEx(409,-2753.1152,373.4622,3.9432,179.3698,36,0,0); //
  3298. AddStaticVehicleEx(409,-2558.0938,184.3135,5.2257,0.0810,5,1,0); //
  3299. AddStaticVehicleEx(467,-2678.3210,268.2394,4.0761,181.8818,60,1,0); //
  3300. AddStaticVehicleEx(445,-2508.4253,371.4350,34.9871,61.7268,37,37,0); //
  3301. AddStaticVehicleEx(518,-2527.8633,322.1414,34.7881,70.9031,17,1,0); //
  3302. AddStaticVehicleEx(401,-2515.6631,309.6224,34.9000,70.1316,47,47,0); //
  3303. AddStaticVehicleEx(426,-2527.9316,321.9206,34.8603,68.4554,42,42,0); //
  3304. AddStaticVehicleEx(426,-2498.5146,370.8176,27.5035,238.7703,1,0,0); //
  3305. AddStaticVehicleEx(550,-2493.1240,427.8868,27.5981,316.6879,53,53,0); //
  3306. AddStaticVehicleEx(489,-2480.2244,393.3396,27.9227,321.6817,14,123,0); //
  3307. AddStaticVehicleEx(491,-2499.7964,365.8879,27.5219,242.8230,1,0,0); //
  3308. AddStaticVehicleEx(529,-2519.0066,319.9394,27.4002,251.8859,42,42,0); //
  3309. AddStaticVehicleEx(428,-2443.5657,522.9944,30.0682,359.3327,4,75,0); //
  3310. AddStaticVehicleEx(551,-1932.2621,585.2930,34.9226,359.9594,91,1,0); //
  3311. AddStaticVehicleEx(547,-1953.4591,585.7752,34.8511,178.9893,123,1,0); //
  3312. AddStaticVehicleEx(442,-2057.8953,1108.4733,53.1434,272.1801,36,0,0); //
  3313. AddStaticVehicleEx(526,-2429.9194,741.5828,34.7823,357.9499,6,0,0); //
  3314. AddStaticVehicleEx(421,-2451.4297,741.6859,34.8998,178.9552,36,1,0); //
  3315. AddStaticVehicleEx(542,-2416.5342,740.6115,34.7593,358.9466,0,0,0); //
  3316. AddStaticVehicleEx(540,-2473.3972,741.7297,34.8784,359.8324,53,53,0); //
  3317. AddStaticVehicleEx(414,-2461.1499,780.0235,35.2664,89.1396,1,0,0); //
  3318. AddStaticVehicleEx(482,-2444.1543,1030.8981,50.5168,319.7848,52,52,0); //
  3319. AddStaticVehicleEx(576,-1780.1013,1291.3773,22.1765,357.3319,74,8,0); //
  3320. AddStaticVehicleEx(412,-1836.7229,1286.5002,22.4005,23.1712,11,1,0); //
  3321. AddStaticVehicleEx(419,-1811.0551,1292.8221,31.6503,185.3804,47,76,0); //
  3322. AddStaticVehicleEx(540,-1836.6010,1307.4591,31.7135,200.1923,62,62,0); //
  3323. AddStaticVehicleEx(507,-1836.7715,1307.5745,40.9479,19.3174,37,37,0); //
  3324. AddStaticVehicleEx(517,-1816.9575,1292.5240,50.3004,182.7450,36,36,0); //
  3325. AddPlayerClass(165,-1421.8270,-287.2401,14.1484,150.1535,0,0,0,0,0,0); //
  3326. AddStaticVehicleEx(484,-1897.7371,1400.8870,0.2019,88.7209,50,32,0); //
  3327. AddStaticVehicleEx(409,-1498.8438,932.0814,6.9875,359.0845,0,0,0); //
  3328. AddStaticVehicleEx(409,-1499.2184,908.7103,6.9874,359.0846,0,0,0); //
  3329. AddStaticVehicleEx(428,-1594.1511,912.0474,7.6208,89.8368,0,0,0); //
  3330. AddStaticVehicleEx(526,-1655.7504,1314.4447,6.8057,314.7885,9,0,0); //
  3331. AddStaticVehicleEx(496,-1637.9939,1296.9856,6.7519,133.7763,66,72,0); //
  3332. AddStaticVehicleEx(419,-1631.0656,1289.8093,6.8362,313.5464,47,76,0); //
  3333. AddStaticVehicleEx(562,-1842.3298,1305.2004,31.5099,18.8147,11,1,0); //
  3334. AddStaticVehicleEx(576,-1830.0398,1289.5037,31.4716,21.6990,68,96,0); //
  3335. AddStaticVehicleEx(551,-1816.6403,1311.3402,31.6331,185.1523,75,1,0); //
  3336. AddStaticVehicleEx(559,-1817.8634,1293.4086,40.8048,8.3402,58,8,0); //
  3337. AddStaticVehicleEx(554,-1830.5575,1309.4885,41.2240,22.0684,15,32,0); //
  3338. AddStaticVehicleEx(419,-1836.6776,1306.8469,50.2419,13.8541,13,76,0); //
  3339. AddStaticVehicleEx(419,-1810.8240,1310.8662,50.2425,187.9256,13,76,0); //
  3340. AddStaticVehicleEx(400,-1798.7632,1294.2173,50.5378,173.8748,75,1,0); //
  3341. AddStaticVehicleEx(463,-1836.4780,1307.1892,59.2731,21.4393,11,11,0); //
  3342. AddStaticVehicleEx(521,-1818.3989,1293.8768,59.3047,185.3241,118,118,0); //
  3343. AddStaticVehicleEx(565,-1834.9785,1286.9188,59.3578,19.6149,53,53,0); //
  3344. AddStaticVehicleEx(527,-2490.5867,740.6007,34.7313,359.5035,53,1,0); //
  3345. AddStaticVehicleEx(442,-2477.7400,740.9944,34.8869,180.2623,11,105,0); //
  3346. AddStaticVehicleEx(533,-2451.4897,740.6172,34.7599,359.3139,74,1,0); //
  3347. AddStaticVehicleEx(546,-2416.8704,740.9793,34.7194,358.0265,9,0,0); //
  3348. AddStaticVehicleEx(401,-2546.1736,627.0665,14.2323,270.0223,47,47,0); //
  3349. AddStaticVehicleEx(492,-2545.8467,653.4535,14.2450,90.5829,77,26,0); //
  3350. AddStaticVehicleEx(536,-2588.8186,637.8892,14.1908,89.3080,37,1,0); //
  3351. AddStaticVehicleEx(527,-2579.0313,625.9368,27.5281,180.2480,66,1,0); //
  3352. AddStaticVehicleEx(410,-2545.7712,643.2911,27.4641,270.6863,9,1,0); //
  3353. AddStaticVehicleEx(404,-2545.1226,659.1423,27.5440,88.4578,119,50,0); //
  3354. AddStaticVehicleEx(431,-2636.3628,701.0225,28.0396,90.5583,55,83,0); //
  3355. AddStaticVehicleEx(504,-2502.0227,410.7433,27.5730,144.2056,57,38,0); //
  3356. AddStaticVehicleEx(445,-2496.5630,430.4102,27.6492,317.9887,37,37,0); //
  3357. AddStaticVehicleEx(410,-2477.1721,413.1068,27.4356,136.7082,10,1,0); //
  3358. AddStaticVehicleEx(575,-2500.7402,366.3426,27.3744,61.8277,31,64,0); //
  3359. AddStaticVehicleEx(526,-2510.4785,343.4210,27.3024,244.2330,21,1,0); //
  3360. AddStaticVehicleEx(587,-2523.9490,334.2809,34.8429,251.4482,53,1,0); //
  3361. AddStaticVehicleEx(412,-2518.2317,306.2414,34.9455,70.1292,10,8,0); //
  3362. AddStaticVehicleEx(426,-1622.5657,653.6423,-5.4949,88.9849,0,0,0); //
  3363. AddStaticVehicleEx(426,-1623.4417,649.4945,-5.4957,89.7894,0,0,0); //
  3364. AddStaticVehicleEx(597,-1572.5879,742.6980,-5.4648,90.2094,7,1,0); //
  3365. AddStaticVehicleEx(597,-1572.9409,734.6931,-5.4743,89.9725,7,1,0); //
  3366. AddStaticVehicleEx(597,-1573.0394,730.6691,-5.4705,90.0691,7,1,0); //
  3367. AddStaticVehicleEx(597,-1572.9001,726.4736,-5.4722,89.9498,7,1,0); //
  3368. AddStaticVehicleEx(597,-1600.3096,749.8445,-5.4742,180.7342,7,1,0); //
  3369. AddStaticVehicleEx(597,-1596.3020,749.9512,-5.4705,178.6602,7,1,0); //
  3370. AddStaticVehicleEx(597,-1588.0565,749.7051,-5.4636,178.8721,7,1,0); //
  3371. AddStaticVehicleEx(597,-1579.9174,750.2890,-5.4742,0.0874,7,1,0); //
  3372. AddStaticVehicleEx(525,-1612.4349,732.8472,-5.3590,0.7411,7,7,0); //
  3373. AddStaticVehicleEx(525,-1616.8719,732.5632,-5.3623,359.8827,7,7,0); //
  3374. AddStaticVehicleEx(427,-1638.8621,686.3785,-5.1107,269.2874,7,1,0); //
  3375. AddStaticVehicleEx(427,-1639.1558,682.1235,-5.1101,269.6810,0,0,0); //
  3376. AddStaticVehicleEx(523,-1609.6039,732.3074,-5.6723,360.0000,7,1,0); //
  3377. AddStaticVehicleEx(523,-1607.5031,732.3351,-5.6768,0.1751,7,1,0); //
  3378. AddStaticVehicleEx(523,-1605.9432,732.4283,-5.6751,9.2528,0,0,0); //
  3379. AddStaticVehicleEx(523,-1604.4277,732.6409,-5.6805,2.5247,0,0,0); //
  3380. AddStaticVehicleEx(490,-1639.9194,678.1533,-5.1127,269.1929,0,0,0); //
  3381. AddStaticVehicleEx(490,-1639.7589,674.2051,-5.1041,269.6698,0,0,0); //
  3382. AddStaticVehicleEx(528,-1639.9153,670.0104,-5.1967,269.2997,0,0,0); //
  3383. AddStaticVehicleEx(437,-1634.6141,652.6546,7.3209,359.1848,7,1,0); //
  3384. AddStaticVehicleEx(428,-1640.0018,649.7374,-5.1170,270.0845,7,0,0); //
  3385. AddStaticVehicleEx(528,-1640.5835,666.0452,-5.1985,269.9053,0,0,0); //
  3386. AddStaticVehicleEx(599,-1600.1836,675.2094,-5.2003,355.7190,7,1,0); //
  3387. AddStaticVehicleEx(599,-1596.1311,675.7261,-5.1968,0.3921,7,1,0); //
  3388. AddStaticVehicleEx(604,-2090.4595,185.4277,34.7965,338.3694,7,1,0); //
  3389. AddStaticVehicleEx(605,-2088.8259,155.5778,34.8758,42.3852,7,1,0); //
  3390. AddStaticVehicleEx(546,-2034.9806,178.8979,28.5657,269.1591,98,0,0); //
  3391. AddStaticVehicleEx(580,-2044.0807,139.3936,28.6322,58.5499,4,9,0); //
  3392. AddStaticVehicleEx(580,-2235.6335,306.2267,34.9134,179.2398,4,9,0); //
  3393. AddStaticVehicleEx(587,-2201.4712,292.9731,34.8420,179.3238,4,9,0); //
  3394. AddStaticVehicleEx(546,-2214.1594,305.9791,34.8416,1.1608,24,4,0); //
  3395. AddStaticVehicleEx(466,-2175.6118,305.8618,34.8590,0.7456,7,8,0); //
  3396. AddStaticVehicleEx(458,-2525.7676,1229.1654,37.3068,30.8426,9,7,0); //
  3397. AddStaticVehicleEx(474,-2538.7458,1229.2430,37.1844,33.3247,45,78,0); //
  3398. AddStaticVehicleEx(496,-2498.1296,1219.7996,37.1408,142.4715,85,79,0); //
  3399. AddStaticVehicleEx(407,-2021.5503,92.9053,28.2724,270.1223,3,3,0); //
  3400. AddStaticVehicleEx(407,-2021.3988,83.7772,28.2299,268.8312,3,3,0); //
  3401. AddStaticVehicleEx(407,-2021.4178,75.5521,28.3022,271.7103,3,3,0); //
  3402. AddStaticVehicleEx(416,-2667.2139,630.4111,14.6027,87.9471,1,103,0); //
  3403. AddStaticVehicleEx(416,-2659.8281,630.1400,14.6026,87.9210,1,103,0); //
  3404. AddStaticVehicleEx(416,-2589.1672,647.6618,14.6035,269.6186,1,103,0); //
  3405. AddStaticVehicleEx(416,-2589.1277,653.0188,14.6026,269.0490,1,103,0); //
  3406. AddStaticVehicleEx(416,-2588.6729,658.0298,14.6025,270.6754,1,103,0); //
  3407. return 1;
  3408. }
  3409. public OnGameModeExit()
  3410. {
  3411. return 1;
  3412. }
  3413. public OnPlayerRequestClass(playerid, classid)
  3414. {
  3415. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  3416. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  3417. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  3418. return 1;
  3419. }
  3420. public OnPlayerSpawn(playerid)
  3421. {
  3422. return 1;
  3423. }
  3424. public OnVehicleSpawn(vehicleid)
  3425. {
  3426. return 1;
  3427. }
  3428.  
  3429. public OnVehicleDeath(vehicleid, killerid)
  3430. {
  3431. return 1;
  3432. }
  3433.  
  3434. public OnPlayerText(playerid, text[])
  3435. {
  3436. return 1;
  3437. }
  3438.  
  3439. public OnPlayerCommandText(playerid, cmdtext[])
  3440. {
  3441. if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  3442. {
  3443. // Do something here
  3444. return 1;
  3445. }
  3446. return 0;
  3447. }
  3448.  
  3449. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  3450. {
  3451. return 1;
  3452. }
  3453.  
  3454. public OnPlayerExitVehicle(playerid, vehicleid)
  3455. {
  3456. return 1;
  3457. }
  3458.  
  3459. public OnPlayerStateChange(playerid, newstate, oldstate)
  3460. {
  3461. return 1;
  3462. }
  3463.  
  3464. public OnPlayerEnterCheckpoint(playerid)
  3465. {
  3466. return 1;
  3467. }
  3468.  
  3469. public OnPlayerLeaveCheckpoint(playerid)
  3470. {
  3471. return 1;
  3472. }
  3473.  
  3474. public OnPlayerEnterRaceCheckpoint(playerid)
  3475. {
  3476. return 1;
  3477. }
  3478.  
  3479. public OnPlayerLeaveRaceCheckpoint(playerid)
  3480. {
  3481. return 1;
  3482. }
  3483.  
  3484. public OnRconCommand(cmd[])
  3485. {
  3486. return 1;
  3487. }
  3488.  
  3489. public OnPlayerRequestSpawn(playerid)
  3490. {
  3491. return 1;
  3492. }
  3493.  
  3494. public OnObjectMoved(objectid)
  3495. {
  3496. return 1;
  3497. }
  3498.  
  3499. public OnPlayerObjectMoved(playerid, objectid)
  3500. {
  3501. return 1;
  3502. }
  3503.  
  3504. public OnPlayerPickUpPickup(playerid, pickupid)
  3505. {
  3506. return 1;
  3507. }
  3508.  
  3509. public OnVehicleMod(playerid, vehicleid, componentid)
  3510. {
  3511. return 1;
  3512. }
  3513.  
  3514. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  3515. {
  3516. return 1;
  3517. }
  3518.  
  3519. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  3520. {
  3521. return 1;
  3522. }
  3523.  
  3524. public OnPlayerSelectedMenuRow(playerid, row)
  3525. {
  3526. return 1;
  3527. }
  3528.  
  3529. public OnPlayerExitedMenu(playerid)
  3530. {
  3531. return 1;
  3532. }
  3533.  
  3534. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  3535. {
  3536. return 1;
  3537. }
  3538.  
  3539. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  3540. {
  3541. return 1;
  3542. }
  3543.  
  3544. public OnRconLoginAttempt(ip[], password[], success)
  3545. {
  3546. return 1;
  3547. }
  3548.  
  3549. public OnPlayerUpdate(playerid)
  3550. {
  3551. return 1;
  3552. }
  3553.  
  3554. public OnPlayerStreamIn(playerid, forplayerid)
  3555. {
  3556. return 1;
  3557. }
  3558.  
  3559. public OnPlayerStreamOut(playerid, forplayerid)
  3560. {
  3561. return 1;
  3562. }
  3563.  
  3564. public OnVehicleStreamIn(vehicleid, forplayerid)
  3565. {
  3566. return 1;
  3567. }
  3568.  
  3569. public OnVehicleStreamOut(vehicleid, forplayerid)
  3570. {
  3571. return 1;
  3572. }
  3573. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  3574. {
  3575. return 1;
  3576. }
Advertisement
Add Comment
Please, Sign In to add comment