Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - //==========================================================
 - // Advanced Vehicle System version 1.0 by MadeMan
 - //==========================================================
 - #define FILTERSCRIPT
 - #include <a_samp>
 - //=========================SETTINGS=========================
 - #undef MAX_PLAYERS
 - #define MAX_PLAYERS 100
 - #define MAX_DVEHICLES 200
 - #define MAX_DEALERSHIPS 10
 - #define MAX_FUEL_STATIONS 10
 - #define VEHICLE_FILE_PATH "AVS/Vehicles/"
 - #define DEALERSHIP_FILE_PATH "AVS/Dealerships/"
 - #define FUEL_STATION_FILE_PATH "AVS/FuelStations/"
 - #define MAX_PLAYER_VEHICLES 3
 - #define FUEL_PRICE 5
 - #define GAS_CAN_PRICE 500
 - #define ALARM_TIME 10000 // alarm duration in milliseconds (1 second = 1000 milliseconds)
 - #define DEFAULT_NUMBER_PLATE "123 ABC"
 - //==========================================================
 - #define COLOR_BLACK 0x000000FF
 - #define COLOR_RED 0xEE0000FF
 - #define COLOR_GREEN 0x00CC00FF
 - #define COLOR_BLUE 0x0000FFFF
 - #define COLOR_ORANGE 0xFF6600FF
 - #define COLOR_YELLOW 0xFFFF00FF
 - #define COLOR_LIGHTBLUE 0x00FFFFFF
 - #define COLOR_PURPLE 0xC2A2DAFF
 - #define COLOR_GREY 0xC0C0C0FF
 - #define COLOR_WHITE 0xFFFFFFFF
 - #define VEHICLE_DEALERSHIP 1
 - #define VEHICLE_PLAYER 2
 - #define CMD:%1(%2) \
 - forward cmd_%1(%2); \
 - public cmd_%1(%2)
 - #define ShowErrorDialog(%1,%2) ShowPlayerDialog(%1, DIALOG_ERROR, DIALOG_STYLE_MSGBOX, "ERROR", %2, "OK", "")
 - enum
 - {
 - DIALOG_NONE=12345,
 - DIALOG_ERROR=12346,
 - DIALOG_VEHICLE=500,
 - DIALOG_VEHICLE_BUY,
 - DIALOG_VEHICLE_SELL,
 - DIALOG_FINDVEHICLE,
 - DIALOG_TRUNK,
 - DIALOG_TRUNK_ACTION,
 - DIALOG_VEHICLE_PLATE,
 - DIALOG_FUEL,
 - DIALOG_EDITVEHICLE
 - };
 - new maintimer;
 - new speedotimer;
 - new savetimer;
 - new SaveVehicleIndex;
 - new RefuelTime[MAX_PLAYERS];
 - new TrackCar[MAX_PLAYERS];
 - new DialogReturn[MAX_PLAYERS];
 - //new Text:SpeedoBox;
 - new Text:SpeedoText[MAX_PLAYERS];
 - new Float:Fuel[MAX_VEHICLES] = {100.0, ...};
 - new VehicleSecurity[MAX_VEHICLES];
 - new VehicleCreated[MAX_DVEHICLES];
 - new VehicleID[MAX_DVEHICLES];
 - new VehicleModel[MAX_DVEHICLES];
 - new Float:VehiclePos[MAX_DVEHICLES][4];
 - new VehicleColor[MAX_DVEHICLES][2];
 - new VehicleInterior[MAX_DVEHICLES];
 - new VehicleWorld[MAX_DVEHICLES];
 - new VehicleOwner[MAX_DVEHICLES][MAX_PLAYER_NAME];
 - new VehicleNumberPlate[MAX_DVEHICLES][16];
 - new VehicleValue[MAX_DVEHICLES];
 - new VehicleLock[MAX_DVEHICLES];
 - new VehicleAlarm[MAX_DVEHICLES];
 - new VehicleTrunk[MAX_DVEHICLES][5][2];
 - new VehicleMods[MAX_DVEHICLES][14];
 - new VehiclePaintjob[MAX_DVEHICLES] = {255, ...};
 - new Text3D:VehicleLabel[MAX_DVEHICLES];
 - new DealershipCreated[MAX_DEALERSHIPS];
 - new Float:DealershipPos[MAX_DEALERSHIPS][3];
 - new Text3D:DealershipLabel[MAX_DEALERSHIPS];
 - new FuelStationCreated[MAX_FUEL_STATIONS];
 - new Float:FuelStationPos[MAX_FUEL_STATIONS][3];
 - new Text3D:FuelStationLabel[MAX_FUEL_STATIONS];
 - new VehicleNames[][] = {
 - "Landstalker","Bravura","Buffalo","Linerunner","Perennial","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
 - "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
 - "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
 - "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
 - "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
 - "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
 - "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
 - "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
 - "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
 - "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
 - "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
 - "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
 - "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
 - "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
 - "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
 - "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
 - "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
 - };
 - enum MainZone
 - {
 - Zone_Name[28],
 - Float:Zone_Area[6]
 - }
 - static const SanAndreasZones[][MainZone] = {
 - {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
 - {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
 - {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
 - {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
 - {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
 - {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
 - {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
 - {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
 - {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
 - {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
 - {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
 - {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
 - {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
 - {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
 - {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
 - {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
 - {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
 - {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
 - {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
 - {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
 - {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
 - {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
 - {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
 - {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
 - {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
 - {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
 - {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
 - {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
 - {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
 - {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
 - {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
 - {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
 - {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
 - {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
 - {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
 - {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
 - {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
 - {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
 - {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
 - {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
 - {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
 - {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
 - {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
 - {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
 - {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
 - {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
 - {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
 - {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
 - {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
 - {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
 - {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
 - {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
 - {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
 - {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
 - {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
 - {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
 - {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
 - {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
 - {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
 - {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
 - {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
 - {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
 - {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
 - {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
 - {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
 - {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
 - {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
 - {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
 - {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
 - {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
 - {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
 - {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
 - {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
 - {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
 - {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
 - {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
 - {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
 - {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
 - {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
 - {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
 - {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
 - {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
 - {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
 - {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
 - {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
 - {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
 - {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
 - {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
 - {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
 - {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
 - {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
 - {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
 - {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
 - {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
 - {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
 - {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
 - {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
 - {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
 - {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
 - {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
 - {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
 - {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
 - {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
 - {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
 - {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
 - {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
 - {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
 - {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
 - {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
 - {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
 - {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
 - {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
 - {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
 - {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
 - {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
 - {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
 - {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
 - {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
 - {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
 - {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
 - {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
 - {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
 - {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
 - {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
 - {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
 - {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
 - {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
 - {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
 - {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
 - {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
 - {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
 - {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
 - {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
 - {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
 - {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
 - {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
 - {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
 - {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
 - {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
 - {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
 - {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
 - {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
 - {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
 - {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
 - {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
 - {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
 - {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
 - {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
 - {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
 - {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
 - {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
 - {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
 - {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
 - {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
 - {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
 - {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
 - {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
 - {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
 - {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
 - {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
 - {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
 - {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
 - {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
 - {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
 - {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
 - {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
 - {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
 - {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
 - {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
 - {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
 - {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
 - {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
 - {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
 - {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
 - {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
 - {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
 - {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
 - {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
 - {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
 - {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
 - {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
 - {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
 - {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
 - {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
 - {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
 - {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
 - {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
 - {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
 - {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
 - {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
 - {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
 - {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
 - {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
 - {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
 - {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
 - {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
 - {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
 - {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
 - {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
 - {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
 - {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
 - {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
 - {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
 - {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
 - {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
 - {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
 - {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
 - {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
 - {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
 - {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
 - {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
 - {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
 - {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
 - {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
 - {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
 - {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
 - {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
 - {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
 - {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
 - {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
 - {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
 - {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
 - {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
 - {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
 - {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
 - {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
 - {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
 - {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
 - {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
 - {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
 - {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
 - {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
 - {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
 - {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
 - {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
 - {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
 - {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
 - {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
 - {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
 - {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
 - {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
 - {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
 - {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
 - {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
 - {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
 - {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
 - {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
 - {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
 - {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
 - {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
 - {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
 - {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
 - {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
 - {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
 - {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
 - {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
 - {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
 - {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
 - {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
 - {"Randolph Industrial", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
 - {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
 - {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
 - {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
 - {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
 - {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
 - {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
 - {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
 - {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
 - {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
 - {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
 - {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
 - {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
 - {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
 - {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
 - {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
 - {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
 - {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
 - {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
 - {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
 - {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
 - {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
 - {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
 - {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
 - {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
 - {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
 - {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
 - {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
 - {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
 - {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
 - {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
 - {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
 - {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
 - {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
 - {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
 - {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
 - {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
 - {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
 - {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
 - {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
 - {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
 - {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
 - {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
 - {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
 - {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
 - {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
 - {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
 - {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
 - {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
 - {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
 - {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
 - {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
 - {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
 - {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
 - {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
 - {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
 - {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
 - {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
 - {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
 - {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
 - {"Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
 - {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
 - {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
 - {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
 - {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
 - {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
 - {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
 - {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
 - {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
 - {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
 - {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
 - {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
 - {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
 - {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
 - {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
 - {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
 - {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
 - {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
 - {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
 - {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
 - {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
 - {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
 - {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
 - {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
 - {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
 - {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
 - {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
 - {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
 - {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
 - {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
 - {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
 - {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
 - {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
 - {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
 - {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
 - {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
 - {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
 - // Citys Zones
 - {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
 - {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
 - {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
 - {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
 - {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
 - {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
 - {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
 - {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
 - {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
 - };
 - forward MainTimer();
 - forward Speedometer();
 - forward SaveTimer();
 - forward StopAlarm(vehicleid);
 - stock PlayerName(playerid)
 - {
 - new pName[MAX_PLAYER_NAME];
 - GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
 - return pName;
 - }
 - stock IsPlayerSpawned(playerid)
 - {
 - switch(GetPlayerState(playerid))
 - {
 - case 1,2,3: return 1;
 - }
 - return 0;
 - }
 - stock IsMeleeWeapon(weaponid)
 - {
 - switch(weaponid)
 - {
 - case 2 .. 15, 40, 44 .. 46: return 1;
 - }
 - return 0;
 - }
 - stock RemovePlayerWeapon(playerid, weaponid)
 - {
 - new WeaponData[12][2];
 - for(new i=1; i < sizeof(WeaponData); i++)
 - {
 - GetPlayerWeaponData(playerid, i, WeaponData[i][0], WeaponData[i][1]);
 - }
 - ResetPlayerWeapons(playerid);
 - for(new i=1; i < sizeof(WeaponData); i++)
 - {
 - if(WeaponData[i][0] != weaponid)
 - {
 - GivePlayerWeapon(playerid, WeaponData[i][0], WeaponData[i][1]);
 - }
 - }
 - }
 - stock IsBicycle(vehicleid)
 - {
 - switch(GetVehicleModel(vehicleid))
 - {
 - case 481,509,510: return 1;
 - }
 - return 0;
 - }
 - stock PlayerToPlayer(playerid, targetid, Float:dist)
 - {
 - new Float:pos[3];
 - GetPlayerPos(targetid, pos[0], pos[1], pos[2]);
 - return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
 - }
 - stock PlayerToVehicle(playerid, vehicleid, Float:dist)
 - {
 - new Float:pos[3];
 - GetVehiclePos(vehicleid, pos[0], pos[1], pos[2]);
 - return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
 - }
 - stock GetClosestVehicle(playerid)
 - {
 - new Float:x, Float:y, Float:z;
 - new Float:dist, Float:closedist=9999, closeveh;
 - for(new i=1; i < MAX_VEHICLES; i++)
 - {
 - if(GetVehiclePos(i, x, y, z))
 - {
 - dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
 - if(dist < closedist)
 - {
 - closedist = dist;
 - closeveh = i;
 - }
 - }
 - }
 - return closeveh;
 - }
 - stock ToggleEngine(vehicleid, toggle)
 - {
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - SetVehicleParamsEx(vehicleid, toggle, lights, alarm, doors, bonnet, boot, objective);
 - }
 - stock ToggleAlarm(vehicleid, toggle)
 - {
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - SetVehicleParamsEx(vehicleid, engine, lights, toggle, doors, bonnet, boot, objective);
 - }
 - stock ToggleDoors(vehicleid, toggle)
 - {
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - SetVehicleParamsEx(vehicleid, engine, lights, alarm, toggle, bonnet, boot, objective);
 - }
 - stock ToggleBoot(vehicleid, toggle)
 - {
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, toggle, objective);
 - }
 - stock StripNL(str[]) // credits to Y_Less for y_utils.inc
 - {
 - new
 - i = strlen(str);
 - while (i-- && str[i] <= ' ') str[i] = '\0';
 - }
 - stock IsNumeric(const string[])
 - {
 - for(new i=0; string[i]; i++)
 - {
 - if(string[i] < '0' || string[i] > '9') return 0;
 - }
 - return 1;
 - }
 - stock GetVehicleModelIDFromName(const vname[])
 - {
 - for(new i=0; i < sizeof(VehicleNames); i++)
 - {
 - if(strfind(VehicleNames[i], vname, true) != -1) return i + 400;
 - }
 - return -1;
 - }
 - stock GetPlayer2DZone(playerid)
 - {
 - new zone[32] = "San Andreas";
 - new Float:x, Float:y, Float:z;
 - GetPlayerPos(playerid, x, y, z);
 - for(new i = 0; i < sizeof(SanAndreasZones); i++)
 - {
 - if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
 - && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4])
 - {
 - strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
 - return zone;
 - }
 - }
 - return zone;
 - }
 - stock GetPlayer3DZone(playerid)
 - {
 - new zone[32] = "San Andreas";
 - new Float:x, Float:y, Float:z;
 - GetPlayerPos(playerid, x, y, z);
 - for(new i = 0; i < sizeof(SanAndreasZones); i++)
 - {
 - if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
 - && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4]
 - && z >= SanAndreasZones[i][Zone_Area][2] && z <= SanAndreasZones[i][Zone_Area][5])
 - {
 - strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
 - return zone;
 - }
 - }
 - return zone;
 - }
 - stock GetPlayerSpeed(playerid, bool:kmh = true)
 - {
 - new
 - Float:xx,
 - Float:yy,
 - Float:zz,
 - Float:pSpeed;
 - if(IsPlayerInAnyVehicle(playerid))
 - {
 - GetVehicleVelocity(GetPlayerVehicleID(playerid),xx,yy,zz);
 - }
 - else
 - {
 - GetPlayerVelocity(playerid,xx,yy,zz);
 - }
 - pSpeed = floatsqroot((xx * xx) + (yy * yy) + (zz * zz));
 - return kmh ? floatround((pSpeed * 165.12)) : floatround((pSpeed * 103.9));
 - }
 - /*SafeGivePlayerMoney(playerid, money)
 - {
 - return CallRemoteFunction("SafeGivePlayerMoney","dd",playerid, money);
 - }
 - #define GivePlayerMoney SafeGivePlayerMoney
 - SafeGetPlayerMoney(playerid)
 - {
 - return CallRemoteFunction("SafeGetPlayerMoney","d",playerid);
 - }
 - #define GetPlayerMoney SafeGetPlayerMoney*/
 - IsAdmin(playerid, level)
 - {
 - if(IsPlayerAdmin(playerid)) return 1;
 - if(CallRemoteFunction("GetPlayerAVSAdmin", "d", playerid) >= level) return 1;
 - return 0;
 - }
 - LoadVehicles()
 - {
 - new string[64];
 - new File:handle, count;
 - new filename[64], line[256], s, key[64];
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", i);
 - if(!fexist(filename)) continue;
 - handle = fopen(filename, io_read);
 - while(fread(handle, line))
 - {
 - StripNL(line);
 - s = strfind(line, "=");
 - if(!line[0] || s < 1) continue;
 - strmid(key, line, 0, s++);
 - if(strcmp(key, "Created") == 0) VehicleCreated[i] = strval(line[s]);
 - else if(strcmp(key, "Model") == 0) VehicleModel[i] = strval(line[s]);
 - else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,ffff", VehiclePos[i][0], VehiclePos[i][1],
 - VehiclePos[i][2], VehiclePos[i][3]);
 - else if(strcmp(key, "Colors") == 0) sscanf(line[s], "p,dd", VehicleColor[i][0], VehicleColor[i][1]);
 - else if(strcmp(key, "Interior") == 0) VehicleInterior[i] = strval(line[s]);
 - else if(strcmp(key, "VirtualWorld") == 0) VehicleWorld[i] = strval(line[s]);
 - else if(strcmp(key, "Owner") == 0) strmid(VehicleOwner[i], line, s, sizeof(line));
 - else if(strcmp(key, "NumberPlate") == 0) strmid(VehicleNumberPlate[i], line, s, sizeof(line));
 - else if(strcmp(key, "Value") == 0) VehicleValue[i] = strval(line[s]);
 - else if(strcmp(key, "Lock") == 0) VehicleLock[i] = strval(line[s]);
 - else if(strcmp(key, "Alarm") == 0) VehicleAlarm[i] = strval(line[s]);
 - else if(strcmp(key, "Paintjob") == 0) VehiclePaintjob[i] = strval(line[s]);
 - else
 - {
 - for(new t=0; t < sizeof(VehicleTrunk[]); t++)
 - {
 - format(string, sizeof(string), "Trunk%d", t+1);
 - if(strcmp(key, string) == 0) sscanf(line[s], "p,dd", VehicleTrunk[i][t][0], VehicleTrunk[i][t][1]);
 - }
 - for(new m=0; m < sizeof(VehicleMods[]); m++)
 - {
 - format(string, sizeof(string), "Mod%d", m);
 - if(strcmp(key, string) == 0) VehicleMods[i][m] = strval(line[s]);
 - }
 - }
 - }
 - fclose(handle);
 - if(VehicleCreated[i]) count++;
 - }
 - printf(" Loaded %d vehicles", count);
 - }
 - SaveVehicle(vehicleid)
 - {
 - new filename[64], line[256];
 - format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", vehicleid);
 - new File:handle = fopen(filename, io_write);
 - format(line, sizeof(line), "Created=%d\r\n", VehicleCreated[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "Model=%d\r\n", VehicleModel[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f,%.3f\r\n", VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
 - VehiclePos[vehicleid][2], VehiclePos[vehicleid][3]);
 - fwrite(handle, line);
 - format(line, sizeof(line), "Colors=%d,%d\r\n", VehicleColor[vehicleid][0], VehicleColor[vehicleid][1]); fwrite(handle, line);
 - format(line, sizeof(line), "Interior=%d\r\n", VehicleInterior[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "VirtualWorld=%d\r\n", VehicleWorld[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "Owner=%s\r\n", VehicleOwner[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "NumberPlate=%s\r\n", VehicleNumberPlate[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "Value=%d\r\n", VehicleValue[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "Lock=%d\r\n", VehicleLock[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "Alarm=%d\r\n", VehicleAlarm[vehicleid]); fwrite(handle, line);
 - format(line, sizeof(line), "Paintjob=%d\r\n", VehiclePaintjob[vehicleid]); fwrite(handle, line);
 - for(new t=0; t < sizeof(VehicleTrunk[]); t++)
 - {
 - format(line, sizeof(line), "Trunk%d=%d,%d\r\n", t+1, VehicleTrunk[vehicleid][t][0], VehicleTrunk[vehicleid][t][1]);
 - fwrite(handle, line);
 - }
 - for(new m=0; m < sizeof(VehicleMods[]); m++)
 - {
 - format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
 - fwrite(handle, line);
 - }
 - fclose(handle);
 - }
 - UpdateVehicle(vehicleid, removeold)
 - {
 - if(VehicleCreated[vehicleid])
 - {
 - if(removeold)
 - {
 - new Float:health;
 - GetVehicleHealth(VehicleID[vehicleid], health);
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
 - //new panels, doorsd, lightsd, tires;
 - //GetVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
 - DestroyVehicle(VehicleID[vehicleid]);
 - VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
 - VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
 - SetVehicleHealth(VehicleID[vehicleid], health);
 - SetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
 - //UpdateVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
 - }
 - else
 - {
 - VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
 - VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
 - }
 - LinkVehicleToInterior(VehicleID[vehicleid], VehicleInterior[vehicleid]);
 - SetVehicleVirtualWorld(VehicleID[vehicleid], VehicleWorld[vehicleid]);
 - SetVehicleNumberPlate(VehicleID[vehicleid], VehicleNumberPlate[vehicleid]);
 - for(new i=0; i < sizeof(VehicleMods[]); i++)
 - {
 - AddVehicleComponent(VehicleID[vehicleid], VehicleMods[vehicleid][i]);
 - }
 - ChangeVehiclePaintjob(VehicleID[vehicleid], VehiclePaintjob[vehicleid]);
 - if(VehicleLock[vehicleid]) ToggleDoors(VehicleID[vehicleid], VEHICLE_PARAMS_ON);
 - if(VehicleAlarm[vehicleid]) VehicleSecurity[VehicleID[vehicleid]] = 1;
 - UpdateVehicleLabel(vehicleid, removeold);
 - }
 - }
 - UpdateVehicleLabel(vehicleid, removeold)
 - {
 - if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
 - {
 - if(removeold)
 - {
 - Delete3DTextLabel(VehicleLabel[vehicleid]);
 - }
 - new labeltext[128];
 - format(labeltext, sizeof(labeltext), "%s\nID: %d\nDealership: %s\nPrice: $%d", VehicleNames[VehicleModel[vehicleid]-400],
 - vehicleid, VehicleOwner[vehicleid], VehicleValue[vehicleid]);
 - VehicleLabel[vehicleid] = Create3DTextLabel(labeltext, 0xBB7700DD, 0, 0, 0, 10.0, 0);
 - Attach3DTextLabelToVehicle(VehicleLabel[vehicleid], VehicleID[vehicleid], 0, 0, 0);
 - }
 - }
 - IsValidVehicle(vehicleid)
 - {
 - if(vehicleid < 1 || vehicleid >= MAX_DVEHICLES) return 0;
 - if(VehicleCreated[vehicleid]) return 1;
 - return 0;
 - }
 - GetFreeVehicleID()
 - {
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(!VehicleCreated[i]) return i;
 - }
 - return 0;
 - }
 - GetVehicleID(vehicleid)
 - {
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(VehicleCreated[i] && VehicleID[i] == vehicleid) return i;
 - }
 - return 0;
 - }
 - GetPlayerVehicles(playerid)
 - {
 - new playername[24];
 - GetPlayerName(playerid, playername, sizeof(playername));
 - new count;
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
 - {
 - count++;
 - }
 - }
 - return count;
 - }
 - GetPlayerVehicleAccess(playerid, vehicleid)
 - {
 - if(IsValidVehicle(vehicleid))
 - {
 - if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
 - {
 - if(IsAdmin(playerid, 1))
 - {
 - return 1;
 - }
 - }
 - else if(VehicleCreated[vehicleid] == VEHICLE_PLAYER)
 - {
 - if(strcmp(VehicleOwner[vehicleid], PlayerName(playerid)) == 0)
 - {
 - return 2;
 - }
 - else if(GetPVarInt(playerid, "CarKeys") == vehicleid)
 - {
 - return 1;
 - }
 - }
 - }
 - else
 - {
 - return 1;
 - }
 - return 0;
 - }
 - LoadDealerships()
 - {
 - new File:handle, count;
 - new filename[64], line[256], s, key[64];
 - for(new i=1; i < MAX_DEALERSHIPS; i++)
 - {
 - format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", i);
 - if(!fexist(filename)) continue;
 - handle = fopen(filename, io_read);
 - while(fread(handle, line))
 - {
 - StripNL(line);
 - s = strfind(line, "=");
 - if(!line[0] || s < 1) continue;
 - strmid(key, line, 0, s++);
 - if(strcmp(key, "Created") == 0) DealershipCreated[i] = strval(line[s]);
 - else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", DealershipPos[i][0],
 - DealershipPos[i][1], DealershipPos[i][2]);
 - }
 - fclose(handle);
 - if(DealershipCreated[i]) count++;
 - }
 - printf(" Loaded %d dealerships", count);
 - }
 - SaveDealership(dealerid)
 - {
 - new filename[64], line[256];
 - format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", dealerid);
 - new File:handle = fopen(filename, io_write);
 - format(line, sizeof(line), "Created=%d\r\n", DealershipCreated[dealerid]); fwrite(handle, line);
 - format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", DealershipPos[dealerid][0],
 - DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
 - fwrite(handle, line);
 - fclose(handle);
 - }
 - UpdateDealership(dealerid, removeold)
 - {
 - if(DealershipCreated[dealerid])
 - {
 - if(removeold)
 - {
 - Delete3DTextLabel(DealershipLabel[dealerid]);
 - }
 - new labeltext[32];
 - format(labeltext, sizeof(labeltext), "Vehicle Dealership\nID: %d", dealerid);
 - DealershipLabel[dealerid] = Create3DTextLabel(labeltext, 0x00BB00DD, DealershipPos[dealerid][0],
 - DealershipPos[dealerid][1], DealershipPos[dealerid][2]+0.5, 20.0, 0);
 - }
 - }
 - IsValidDealership(dealerid)
 - {
 - if(dealerid < 1 || dealerid >= MAX_DEALERSHIPS) return 0;
 - if(DealershipCreated[dealerid]) return 1;
 - return 0;
 - }
 - LoadFuelStations()
 - {
 - new File:handle, count;
 - new filename[64], line[256], s, key[64];
 - for(new i=1; i < MAX_FUEL_STATIONS; i++)
 - {
 - format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", i);
 - if(!fexist(filename)) continue;
 - handle = fopen(filename, io_read);
 - while(fread(handle, line))
 - {
 - StripNL(line);
 - s = strfind(line, "=");
 - if(!line[0] || s < 1) continue;
 - strmid(key, line, 0, s++);
 - if(strcmp(key, "Created") == 0) FuelStationCreated[i] = strval(line[s]);
 - else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", FuelStationPos[i][0],
 - FuelStationPos[i][1], FuelStationPos[i][2]);
 - }
 - fclose(handle);
 - if(FuelStationCreated[i]) count++;
 - }
 - printf(" Loaded %d fuel stations", count);
 - }
 - SaveFuelStation(stationid)
 - {
 - new filename[64], line[256];
 - format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", stationid);
 - new File:handle = fopen(filename, io_write);
 - format(line, sizeof(line), "Created=%d\r\n", FuelStationCreated[stationid]); fwrite(handle, line);
 - format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", FuelStationPos[stationid][0],
 - FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
 - fwrite(handle, line);
 - fclose(handle);
 - }
 - UpdateFuelStation(stationid, removeold)
 - {
 - if(FuelStationCreated[stationid])
 - {
 - if(removeold)
 - {
 - Delete3DTextLabel(FuelStationLabel[stationid]);
 - }
 - new labeltext[32];
 - format(labeltext, sizeof(labeltext), "Fuel Station\nID: %d\n/fuel", stationid);
 - FuelStationLabel[stationid] = Create3DTextLabel(labeltext, 0x00BBFFDD, FuelStationPos[stationid][0],
 - FuelStationPos[stationid][1], FuelStationPos[stationid][2]+0.5, 20.0, 0);
 - }
 - }
 - IsValidFuelStation(stationid)
 - {
 - if(stationid < 1 || stationid >= MAX_FUEL_STATIONS) return 0;
 - if(FuelStationCreated[stationid]) return 1;
 - return 0;
 - }
 - public MainTimer()
 - {
 - new string[128];
 - new Float:x, Float:y, Float:z;
 - for(new i=0; i < MAX_PLAYERS; i++)
 - {
 - if(IsPlayerConnected(i))
 - {
 - if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
 - {
 - new vehicleid = GetPlayerVehicleID(i);
 - if(!IsBicycle(vehicleid) && Fuel[vehicleid] > 0)
 - {
 - Fuel[vehicleid] -= GetPlayerSpeed(i)/1000.0;
 - if(Fuel[vehicleid] <= 0)
 - {
 - ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
 - GameTextForPlayer(i, "~r~out of fuel", 3000, 3);
 - SendClientMessage(i, COLOR_RED, "This vehicle is out of fuel!");
 - }
 - }
 - }
 - if(RefuelTime[i] > 0 && GetPVarInt(i, "FuelStation"))
 - {
 - new vehicleid = GetPlayerVehicleID(i);
 - Fuel[vehicleid] += 2.0;
 - RefuelTime[i]--;
 - if(RefuelTime[i] == 0)
 - {
 - if(Fuel[vehicleid] >= 100.0) Fuel[vehicleid] = 100.0;
 - new stationid = GetPVarInt(i, "FuelStation");
 - new cost = floatround(Fuel[vehicleid]-GetPVarFloat(i, "Fuel"))*FUEL_PRICE;
 - if(GetPlayerState(i) != PLAYER_STATE_DRIVER || Fuel[vehicleid] >= 100.0 || GetPlayerMoney(i) < cost
 - || !IsPlayerInRangeOfPoint(i, 10.0, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]))
 - {
 - if(GetPlayerMoney(i) < cost) cost = GetPlayerMoney(i);
 - GivePlayerMoney(i, -cost);
 - format(string, sizeof(string), "~r~-$%d", cost);
 - GameTextForPlayer(i, string, 2000, 3);
 - format(string, sizeof(string), "You pay $%d for fuel", cost);
 - SendClientMessage(i, COLOR_WHITE, string);
 - SetPVarInt(i, "FuelStation", 0);
 - SetPVarFloat(i, "Fuel", 0.0);
 - }
 - else
 - {
 - RefuelTime[i] = 5;
 - format(string, sizeof(string), "~w~refueling...~n~~r~-$%d", cost);
 - GameTextForPlayer(i, string, 2000, 3);
 - }
 - }
 - }
 - if(TrackCar[i])
 - {
 - GetVehiclePos(TrackCar[i], x, y, z);
 - SetPlayerCheckpoint(i, x, y, z, 3);
 - }
 - }
 - }
 - }
 - public Speedometer()
 - {
 - new vehicleid, Float:health;
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - new fstring[32], string[512];
 - for(new i=0; i < MAX_PLAYERS; i++)
 - {
 - if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
 - {
 - vehicleid = GetPlayerVehicleID(i);
 - GetVehicleHealth(vehicleid, health);
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - string = "~b~~h~vehicle: ~w~";
 - strcat(string, VehicleNames[GetVehicleModel(vehicleid)-400], sizeof(string));
 - strcat(string, "~n~~b~~h~gps: ~w~", sizeof(string));
 - strcat(string, GetPlayer3DZone(i), sizeof(string));
 - strcat(string, "~n~~b~~h~health: ~g~", sizeof(string));
 - fstring = "iiiiiiiiii";
 - if(health > 1000.0) strins(fstring, "~r~", 10, sizeof(fstring));
 - else if(health < 0.0) strins(fstring, "~r~", 0, sizeof(fstring));
 - else strins(fstring, "~r~", floatround(health/100.0), sizeof(fstring));
 - strcat(string, fstring, sizeof(string));
 - strcat(string, " ~b~~h~fuel: ~g~", sizeof(string));
 - fstring = "iiiiiiiiii";
 - if(Fuel[vehicleid] > 100.0) strins(fstring, "~r~", 10, sizeof(fstring));
 - else if(Fuel[vehicleid] < 0.0) strins(fstring, "~r~", 0, sizeof(fstring));
 - else strins(fstring, "~r~", floatround(Fuel[vehicleid]/10.0), sizeof(fstring));
 - strcat(string, fstring, sizeof(string));
 - strcat(string, " ~b~~h~", sizeof(string));
 - if(GetPVarInt(i, "Speedo")) format(fstring,sizeof(fstring),"mph: ~w~%d", GetPlayerSpeed(i, false));
 - else format(fstring,sizeof(fstring),"kph: ~w~%d", GetPlayerSpeed(i, true));
 - strcat(string, fstring, sizeof(string));
 - strcat(string, "~n~~b~~h~engine: ", sizeof(string));
 - if(engine == 1) strcat(string, "~g~on", sizeof(string));
 - else strcat(string, "~r~off", sizeof(string));
 - strcat(string, " ~b~~h~alarm: ", sizeof(string));
 - if(VehicleSecurity[vehicleid] == 1) strcat(string, "~g~on", sizeof(string));
 - else strcat(string, "~r~off", sizeof(string));
 - strcat(string, " ~b~~h~doors: ", sizeof(string));
 - if(doors == 1) strcat(string, "~r~locked", sizeof(string));
 - else strcat(string, "~g~unlocked", sizeof(string));
 - TextDrawSetString(SpeedoText[i], string);
 - }
 - }
 - }
 - public SaveTimer()
 - {
 - SaveVehicleIndex++;
 - if(SaveVehicleIndex >= MAX_DVEHICLES) SaveVehicleIndex = 1;
 - if(IsValidVehicle(SaveVehicleIndex)) SaveVehicle(SaveVehicleIndex);
 - }
 - public StopAlarm(vehicleid)
 - {
 - ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
 - }
 - /*forward GetVehicleIDFromPlate(Plate[]);
 - public GetVehicleIDFromPlate(Plate[])
 - {
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleNumberPlate[i], Plate) == 0)
 - {
 - return i;
 - }
 - }
 - return 0;
 - }*/
 - public OnFilterScriptInit()
 - {
 - print("\n------------------------------------------------");
 - print(" Advanced Vehicle System 1.0 by MadeMan");
 - print("------------------------------------------------");
 - LoadVehicles();
 - LoadDealerships();
 - LoadFuelStations();
 - /*SpeedoBox = TextDrawCreate(345.000, 363.000, "~n~~n~~n~~n~");
 - TextDrawAlignment(SpeedoBox, 2);
 - TextDrawLetterSize(SpeedoBox, 0.500, 1.400);
 - TextDrawUseBox(SpeedoBox, 1);
 - TextDrawBoxColor(SpeedoBox, 153);
 - TextDrawTextSize(SpeedoBox, 0.000, 340.000);*/
 - for(new i=0; i < MAX_PLAYERS; i++)
 - {
 - if(IsPlayerConnected(i))
 - {
 - OnPlayerConnect(i);
 - }
 - }
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - UpdateVehicle(i, 0);
 - }
 - for(new i=1; i < MAX_DEALERSHIPS; i++)
 - {
 - UpdateDealership(i, 0);
 - }
 - for(new i=1; i < MAX_FUEL_STATIONS; i++)
 - {
 - UpdateFuelStation(i, 0);
 - }
 - maintimer = SetTimer("MainTimer", 1000, true);
 - speedotimer = SetTimer("Speedometer", 555, true);
 - savetimer = SetTimer("SaveTimer", 2222, true);
 - print("------------------------------------------------\n");
 - return 1;
 - }
 - public OnFilterScriptExit()
 - {
 - KillTimer(maintimer);
 - KillTimer(speedotimer);
 - KillTimer(savetimer);
 - //TextDrawDestroy(SpeedoBox);
 - for(new i=0; i < MAX_PLAYERS; i++)
 - {
 - if(IsPlayerConnected(i))
 - {
 - OnPlayerDisconnect(i, 1);
 - }
 - }
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(VehicleCreated[i])
 - {
 - DestroyVehicle(VehicleID[i]);
 - if(VehicleCreated[i] == VEHICLE_DEALERSHIP)
 - {
 - Delete3DTextLabel(VehicleLabel[i]);
 - }
 - }
 - }
 - for(new i=1; i < MAX_DEALERSHIPS; i++)
 - {
 - if(DealershipCreated[i])
 - {
 - Delete3DTextLabel(DealershipLabel[i]);
 - }
 - }
 - for(new i=1; i < MAX_FUEL_STATIONS; i++)
 - {
 - if(FuelStationCreated[i])
 - {
 - Delete3DTextLabel(FuelStationLabel[i]);
 - }
 - }
 - print("\n------------------------------------------------");
 - print(" Advanced Vehicle System 1.0 Unloaded");
 - print("------------------------------------------------\n");
 - return 1;
 - }
 - public OnPlayerConnect(playerid)
 - {
 - RefuelTime[playerid] = 0;
 - TrackCar[playerid] = 0;
 - SpeedoText[playerid] = TextDrawCreate(180.000, 362.000," ");
 - TextDrawAlignment(SpeedoText[playerid], 1);
 - TextDrawFont(SpeedoText[playerid],2);
 - TextDrawLetterSize(SpeedoText[playerid], 0.310, 1.400);
 - TextDrawSetShadow(SpeedoText[playerid],0);
 - TextDrawUseBox(SpeedoText[playerid], 1);
 - TextDrawBoxColor(SpeedoText[playerid], 0x99);
 - TextDrawTextSize(SpeedoText[playerid], 520.000, 0.000);
 - return 1;
 - }
 - public OnPlayerDisconnect(playerid, reason)
 - {
 - TextDrawDestroy(SpeedoText[playerid]);
 - return 1;
 - }
 - public OnVehicleSpawn(vehicleid)
 - {
 - VehicleSecurity[vehicleid] = 0;
 - new id = GetVehicleID(vehicleid);
 - if(IsValidVehicle(id))
 - {
 - if(VehicleColor[id][0] >= 0 && VehicleColor[id][1] >= 0)
 - ChangeVehicleColor(vehicleid, VehicleColor[id][0], VehicleColor[id][1]);
 - LinkVehicleToInterior(vehicleid, VehicleInterior[id]);
 - SetVehicleVirtualWorld(vehicleid, VehicleWorld[id]);
 - for(new i=0; i < sizeof(VehicleMods[]); i++)
 - {
 - AddVehicleComponent(vehicleid, VehicleMods[id][i]);
 - }
 - ChangeVehiclePaintjob(vehicleid, VehiclePaintjob[id]);
 - if(VehicleLock[id]) ToggleDoors(vehicleid, VEHICLE_PARAMS_ON);
 - if(VehicleAlarm[id]) VehicleSecurity[vehicleid] = 1;
 - }
 - return 1;
 - }
 - CMD:avshelp(playerid, params[])
 - {
 - new info[512];
 - strcat(info, "/v /eject /ejectall\n", sizeof(info));
 - strcat(info, "/vlock /valarm /fuel /trunk /kph /mph /clearmods /trackcar\n", sizeof(info));
 - if(IsAdmin(playerid, 1))
 - {
 - strcat(info, "/addv /editv /setfuel /rac (respawnallcars) /rtc (respawnthiscar)\n", sizeof(info));
 - strcat(info, "/adddealership /deletedealership /movedealership /gotodealership\n", sizeof(info));
 - strcat(info, "/addfuelstation /deletefuelstation /movefuelstation /gotofuelstation", sizeof(info));
 - }
 - ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "Advanced Vehicle System Help", info, "OK", "");
 - return 1;
 - }
 - CMD:kph(playerid, params[])
 - {
 - SetPVarInt(playerid, "Speedo", 0);
 - SendClientMessage(playerid, COLOR_WHITE, "Speedometer units set to KPH");
 - return 1;
 - }
 - CMD:mph(playerid, params[])
 - {
 - SetPVarInt(playerid, "Speedo", 1);
 - SendClientMessage(playerid, COLOR_WHITE, "Speedometer units set to MPH");
 - return 1;
 - }
 - CMD:eject(playerid, params[])
 - {
 - if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
 - new pid, msg[128];
 - if(sscanf(params, "u", pid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /eject [player]");
 - if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
 - new vehicleid = GetPlayerVehicleID(playerid);
 - if(!IsPlayerInVehicle(pid, vehicleid)) return SendClientMessage(playerid, COLOR_RED, "Player is not in your vehicle!");
 - RemovePlayerFromVehicle(pid);
 - format(msg, sizeof(msg), "Vehicle driver %s (%d) has ejected you", PlayerName(playerid), playerid);
 - SendClientMessage(pid, COLOR_WHITE, msg);
 - format(msg, sizeof(msg), "You have ejected %s (%d) from your vehicle", PlayerName(pid), pid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:ejectall(playerid, params[])
 - {
 - if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
 - new vehicleid = GetPlayerVehicleID(playerid);
 - new msg[128];
 - format(msg, sizeof(msg), "Vehicle driver %s (%d) has ejected you", PlayerName(playerid), playerid);
 - for(new i=0; i < MAX_PLAYERS; i++)
 - {
 - if(IsPlayerConnected(i) && i != playerid && IsPlayerInVehicle(i, vehicleid))
 - {
 - RemovePlayerFromVehicle(i);
 - SendClientMessage(i, COLOR_WHITE, msg);
 - }
 - }
 - SendClientMessage(playerid, COLOR_WHITE, "You have ejected all passengers");
 - return 1;
 - }
 - CMD:clearmods(playerid, params[])
 - {
 - if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
 - new vehicleid = GetPlayerVehicleID(playerid);
 - new id = GetVehicleID(vehicleid);
 - if(GetPlayerVehicleAccess(playerid, id) < 2)
 - return SendClientMessage(playerid, COLOR_RED, "This is not your vehicle!");
 - for(new i=0; i < sizeof(VehicleMods[]); i++)
 - {
 - RemoveVehicleComponent(VehicleID[id], GetVehicleComponentInSlot(VehicleID[id], i));
 - VehicleMods[id][i] = 0;
 - }
 - VehiclePaintjob[id] = 255;
 - ChangeVehiclePaintjob(VehicleID[id], 255);
 - SaveVehicle(id);
 - SendClientMessage(playerid, COLOR_WHITE, "You have removed all modifications from your vehicle");
 - return 1;
 - }
 - CMD:trackcar(playerid, params[])
 - {
 - if(TrackCar[playerid])
 - {
 - TrackCar[playerid] = 0;
 - DisablePlayerCheckpoint(playerid);
 - SendClientMessage(playerid, COLOR_WHITE, "You are not tracking your vehicle anymore");
 - return 1;
 - }
 - new playername[24];
 - GetPlayerName(playerid, playername, sizeof(playername));
 - new info[256], bool:found;
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
 - {
 - found = true;
 - format(info, sizeof(info), "%sID: %d Name: %s\n", info, i, VehicleNames[VehicleModel[i]-400]);
 - }
 - }
 - if(!found) return SendClientMessage(playerid, COLOR_RED, "You don't have any vehicles!");
 - ShowPlayerDialog(playerid, DIALOG_FINDVEHICLE, DIALOG_STYLE_LIST, "Find Your Vehicle", info, "Find", "Cancel");
 - return 1;
 - }
 - CMD:v(playerid, params[])
 - {
 - if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
 - new vehicleid = GetPlayerVehicleID(playerid);
 - if(IsBicycle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "You are not driving a vehicle!");
 - new id = GetVehicleID(vehicleid);
 - if(GetPlayerVehicleAccess(playerid, id) < 1)
 - return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
 - SetPVarInt(playerid, "DialogValue1", id);
 - ShowDialog(playerid, DIALOG_VEHICLE);
 - return 1;
 - }
 - CMD:sellv(playerid, params[])
 - {
 - new pid, id, price, msg[128];
 - if(sscanf(params, "udd", pid, id, price)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /sellv [player] [vehicleid] [price]");
 - if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Invalid player!");
 - if(GetPlayerVehicleAccess(playerid, id) < 2)
 - return SendClientMessage(playerid, COLOR_RED, "You are not the owner of this vehicle!");
 - if(price < 1) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
 - if(!PlayerToPlayer(playerid, pid, 10.0)) return SendClientMessage(playerid, COLOR_RED, "Player is too far!");
 - SetPVarInt(pid, "DialogValue1", playerid);
 - SetPVarInt(pid, "DialogValue2", id);
 - SetPVarInt(pid, "DialogValue3", price);
 - ShowDialog(pid, DIALOG_VEHICLE_SELL);
 - format(msg, sizeof(msg), "You have offered %s (%d) to buy your vehicle for $%d", PlayerName(pid), pid, price);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:vlock(playerid, params[])
 - {
 - new vehicleid;
 - if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
 - {
 - vehicleid = GetPlayerVehicleID(playerid);
 - }
 - else
 - {
 - vehicleid = GetClosestVehicle(playerid);
 - if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
 - }
 - if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
 - new id = GetVehicleID(vehicleid);
 - if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
 - if(GetPlayerVehicleAccess(playerid, id) < 2)
 - return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - if(doors == 1)
 - {
 - doors = 0;
 - VehicleLock[id] = 0;
 - GameTextForPlayer(playerid, "~g~doors unlocked", 3000, 6 );
 - }
 - else
 - {
 - doors = 1;
 - VehicleLock[id] = 1;
 - GameTextForPlayer(playerid, "~r~doors locked", 3000, 6 );
 - }
 - SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - SaveVehicle(id);
 - return 1;
 - }
 - CMD:valarm(playerid, params[])
 - {
 - new vehicleid;
 - if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
 - {
 - vehicleid = GetPlayerVehicleID(playerid);
 - }
 - else
 - {
 - vehicleid = GetClosestVehicle(playerid);
 - if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
 - }
 - if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
 - new id = GetVehicleID(vehicleid);
 - if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
 - if(GetPlayerVehicleAccess(playerid, id) < 2)
 - return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
 - if(VehicleSecurity[vehicleid] == 0)
 - {
 - VehicleSecurity[vehicleid] = 1;
 - VehicleAlarm[id] = 1;
 - GameTextForPlayer(playerid, "~g~alarm on", 3000, 6);
 - }
 - else
 - {
 - ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
 - VehicleSecurity[vehicleid] = 0;
 - VehicleAlarm[id] = 0;
 - GameTextForPlayer(playerid, "~r~alarm off", 3000, 6);
 - }
 - SaveVehicle(id);
 - return 1;
 - }
 - CMD:trunk(playerid, params[])
 - {
 - new vehicleid = GetClosestVehicle(playerid);
 - if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
 - if(!vehicleid || IsBicycle(vehicleid) || IsPlayerInAnyVehicle(playerid))
 - return SendClientMessage(playerid, COLOR_RED, "You are not close to a vehicle!");
 - new id = GetVehicleID(vehicleid);
 - if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
 - if(GetPlayerVehicleAccess(playerid, id) < 2)
 - return SendClientMessage(playerid, COLOR_RED, "You don't have the keys for this vehicle!");
 - ToggleBoot(vehicleid, VEHICLE_PARAMS_ON);
 - SetPVarInt(playerid, "DialogValue1", id);
 - ShowDialog(playerid, DIALOG_TRUNK);
 - return 1;
 - }
 - CMD:fuel(playerid, params[])
 - {
 - for(new i=1; i < MAX_FUEL_STATIONS; i++)
 - {
 - if(FuelStationCreated[i])
 - {
 - if(IsPlayerInRangeOfPoint(playerid, 15.0, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]))
 - {
 - SetPVarInt(playerid, "FuelStation", i);
 - ShowDialog(playerid, DIALOG_FUEL);
 - return 1;
 - }
 - }
 - }
 - SendClientMessage(playerid, COLOR_RED, "You are not in a fuel station!");
 - return 1;
 - }
 - CMD:setfuel(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
 - new amount, msg[128];
 - if(sscanf(params, "d", amount)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /setfuel [amount]");
 - if(amount < 0 || amount > 100) return SendClientMessage(playerid, COLOR_RED, "Invalid amount! (0-100)");
 - Fuel[GetPlayerVehicleID(playerid)] = amount;
 - format(msg, sizeof(msg), "You have set your vehicle fuel to %d", amount);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:addv(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
 - new model[32], modelid, dealerid, color1, color2, price;
 - if(sscanf(params, "dsddd", dealerid, model, color1, color2, price))
 - return SendClientMessage(playerid, COLOR_GREY, "USAGE: /addv [dealerid] [model] [color1] [color2] [price]");
 - if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
 - if(IsNumeric(model)) modelid = strval(model);
 - else modelid = GetVehicleModelIDFromName(model);
 - if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid model ID!");
 - if(color1 < 0 || color2 < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid color!");
 - if(price < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
 - new Float:X, Float:Y, Float:Z, Float:angle;
 - GetPlayerPos(playerid, X, Y, Z);
 - GetPlayerFacingAngle(playerid, angle);
 - X += floatmul(floatsin(-angle, degrees), 4.0);
 - Y += floatmul(floatcos(-angle, degrees), 4.0);
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(!VehicleCreated[i])
 - {
 - new msg[128];
 - VehicleCreated[i] = VEHICLE_DEALERSHIP;
 - VehicleModel[i] = modelid;
 - VehiclePos[i][0] = X;
 - VehiclePos[i][1] = Y;
 - VehiclePos[i][2] = Z;
 - VehiclePos[i][3] = angle+90.0;
 - VehicleColor[i][0] = color1;
 - VehicleColor[i][1] = color2;
 - VehicleInterior[i] = GetPlayerInterior(playerid);
 - VehicleWorld[i] = GetPlayerVirtualWorld(playerid);
 - VehicleValue[i] = price;
 - valstr(VehicleOwner[i], dealerid);
 - VehicleNumberPlate[i] = DEFAULT_NUMBER_PLATE;
 - for(new d=0; d < sizeof(VehicleTrunk[]); d++)
 - {
 - VehicleTrunk[i][d][0] = 0;
 - VehicleTrunk[i][d][1] = 0;
 - }
 - for(new d=0; d < sizeof(VehicleMods[]); d++)
 - {
 - VehicleMods[i][d] = 0;
 - }
 - VehiclePaintjob[i] = 255;
 - VehicleLock[i] = 0;
 - VehicleAlarm[i] = 0;
 - UpdateVehicle(i, 0);
 - SaveVehicle(i);
 - format(msg, sizeof(msg), "Added vehicle id %d to dealerid %d", i, dealerid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - }
 - SendClientMessage(playerid, COLOR_RED, "Can't add any more vehicles!");
 - return 1;
 - }
 - CMD:editv(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
 - {
 - new id = GetVehicleID(GetPlayerVehicleID(playerid));
 - if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "This is not a dynamic vehicle!");
 - SetPVarInt(playerid, "DialogValue1", id);
 - ShowDialog(playerid, DIALOG_EDITVEHICLE);
 - return 1;
 - }
 - new vehicleid;
 - if(sscanf(params, "d", vehicleid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /editv [vehicleid]");
 - if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "Invalid vehicleid!");
 - SetPVarInt(playerid, "DialogValue1", vehicleid);
 - ShowDialog(playerid, DIALOG_EDITVEHICLE);
 - return 1;
 - }
 - CMD:adddealership(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
 - for(new i=1; i < MAX_DEALERSHIPS; i++)
 - {
 - if(!DealershipCreated[i])
 - {
 - new msg[128];
 - DealershipCreated[i] = 1;
 - GetPlayerPos(playerid, DealershipPos[i][0], DealershipPos[i][1], DealershipPos[i][2]);
 - UpdateDealership(i, 0);
 - SaveDealership(i);
 - format(msg, sizeof(msg), "Added dealership id %d", i);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - }
 - SendClientMessage(playerid, COLOR_RED, "Can't add any more dealerships!");
 - return 1;
 - }
 - CMD:deletedealership(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - new dealerid, msg[128];
 - if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletedealership [dealerid]");
 - if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
 - for(new i=1; i < MAX_DVEHICLES; i++)
 - {
 - if(VehicleCreated[i] == VEHICLE_DEALERSHIP && strval(VehicleOwner[i]) == dealerid)
 - {
 - DestroyVehicle(VehicleID[i]);
 - Delete3DTextLabel(VehicleLabel[i]);
 - VehicleCreated[i] = 0;
 - }
 - }
 - DealershipCreated[dealerid] = 0;
 - Delete3DTextLabel(DealershipLabel[dealerid]);
 - SaveDealership(dealerid);
 - format(msg, sizeof(msg), "Deleted dealership id %d", dealerid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:movedealership(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - new dealerid, msg[128];
 - if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movedealership [dealerid]");
 - if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
 - GetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
 - UpdateDealership(dealerid, 1);
 - SaveDealership(dealerid);
 - format(msg, sizeof(msg), "Moved dealership id %d here", dealerid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:gotodealership(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - new dealerid, msg[128];
 - if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotodealership [dealerid]");
 - if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
 - SetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
 - format(msg, sizeof(msg), "Teleported to dealership id %d", dealerid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:addfuelstation(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
 - for(new i=1; i < MAX_FUEL_STATIONS; i++)
 - {
 - if(!FuelStationCreated[i])
 - {
 - new msg[128];
 - FuelStationCreated[i] = 1;
 - GetPlayerPos(playerid, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]);
 - UpdateFuelStation(i, 0);
 - SaveFuelStation(i);
 - format(msg, sizeof(msg), "Added fuel station id %d", i);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - }
 - SendClientMessage(playerid, COLOR_RED, "Can't add any more fuel stations!");
 - return 1;
 - }
 - CMD:deletefuelstation(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - new stationid, msg[128];
 - if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletefuelstation [stationid]");
 - if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
 - FuelStationCreated[stationid] = 0;
 - Delete3DTextLabel(FuelStationLabel[stationid]);
 - SaveFuelStation(stationid);
 - format(msg, sizeof(msg), "Deleted fuel station id %d", stationid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:movefuelstation(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - new stationid, msg[128];
 - if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movefuelstation [stationid]");
 - if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
 - GetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
 - UpdateFuelStation(stationid, 1);
 - SaveFuelStation(stationid);
 - format(msg, sizeof(msg), "Moved fuel station id %d here", stationid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - CMD:gotofuelstation(playerid, params[])
 - {
 - if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
 - new stationid, msg[128];
 - if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotofuelstation [stationid]");
 - if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
 - SetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
 - format(msg, sizeof(msg), "Teleported to fuel station id %d", stationid);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - return 1;
 - }
 - public OnPlayerCommandText(playerid, cmdtext[])
 - {
 - new pos, funcname[32];
 - while(cmdtext[++pos] > ' ')
 - {
 - funcname[pos-1] = tolower(cmdtext[pos]);
 - }
 - strins(funcname, "cmd_", 0, sizeof(funcname));
 - while (cmdtext[pos] == ' ') pos++;
 - if(!cmdtext[pos])
 - {
 - return CallLocalFunction(funcname, "is", playerid, "\1");
 - }
 - return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
 - }
 - public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
 - {
 - if(!ispassenger)
 - {
 - new id = GetVehicleID(vehicleid);
 - if(IsValidVehicle(id) && VehicleCreated[id] == VEHICLE_PLAYER)
 - {
 - new msg[128];
 - format(msg, sizeof(msg), "This vehicle belongs to %s", VehicleOwner[id]);
 - SendClientMessage(playerid, COLOR_GREY, msg);
 - }
 - }
 - return 1;
 - }
 - public OnPlayerStateChange(playerid, newstate, oldstate)
 - {
 - if(IsPlayerInAnyVehicle(playerid) && !IsBicycle(GetPlayerVehicleID(playerid)))
 - {
 - //TextDrawShowForPlayer(playerid, SpeedoBox);
 - TextDrawShowForPlayer(playerid, SpeedoText[playerid]);
 - new vehicleid = GetPlayerVehicleID(playerid);
 - if(VehicleSecurity[vehicleid] == 1)
 - {
 - ToggleAlarm(vehicleid, VEHICLE_PARAMS_ON);
 - SetTimerEx("StopAlarm", ALARM_TIME, false, "d", vehicleid);
 - }
 - }
 - else
 - {
 - //TextDrawHideForPlayer(playerid, SpeedoBox);
 - TextDrawHideForPlayer(playerid, SpeedoText[playerid]);
 - }
 - if(newstate == PLAYER_STATE_DRIVER)
 - {
 - new vehicleid = GetPlayerVehicleID(playerid);
 - new id = GetVehicleID(vehicleid);
 - if(IsValidVehicle(id))
 - {
 - if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
 - {
 - SetPVarInt(playerid, "DialogValue1", id);
 - ShowDialog(playerid, DIALOG_VEHICLE_BUY);
 - return 1;
 - }
 - }
 - if(IsBicycle(vehicleid))
 - {
 - ToggleEngine(vehicleid, VEHICLE_PARAMS_ON);
 - }
 - if(Fuel[vehicleid] <= 0)
 - {
 - ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
 - }
 - }
 - return 1;
 - }
 - public OnVehicleMod(playerid, vehicleid, componentid)
 - {
 - new id = GetVehicleID(vehicleid);
 - if(IsValidVehicle(id))
 - {
 - VehicleMods[id][GetVehicleComponentType(componentid)] = componentid;
 - SaveVehicle(id);
 - }
 - return 1;
 - }
 - public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
 - {
 - new id = GetVehicleID(vehicleid);
 - if(IsValidVehicle(id))
 - {
 - VehiclePaintjob[id] = paintjobid;
 - SaveVehicle(id);
 - }
 - return 1;
 - }
 - public OnVehicleRespray(playerid, vehicleid, color1, color2)
 - {
 - new id = GetVehicleID(vehicleid);
 - if(IsValidVehicle(id))
 - {
 - VehicleColor[id][0] = color1;
 - VehicleColor[id][1] = color2;
 - SaveVehicle(id);
 - }
 - return 1;
 - }
 - ShowDialog(playerid, dialogid)
 - {
 - switch(dialogid)
 - {
 - case DIALOG_VEHICLE:
 - {
 - new vehicleid = GetPVarInt(playerid, "DialogValue1");
 - new caption[32], info[256];
 - format(caption, sizeof(caption), "Vehicle ID %d", vehicleid);
 - strcat(info, "Engine\nLights\nHood\nTrunk", sizeof(info));
 - strcat(info, "\nFill Tank", sizeof(info));
 - if(GetPlayerVehicleAccess(playerid, vehicleid) >= 2)
 - {
 - new value = VehicleValue[vehicleid]/2;
 - format(info, sizeof(info), "%s\nSell Vehicle ($%d)\nPark Vehicle\nEdit License Plate", info, value);
 - }
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, info, "Select", "Cancel");
 - }
 - case DIALOG_VEHICLE_BUY:
 - {
 - new vehicleid = GetPVarInt(playerid, "DialogValue1");
 - new caption[32], info[256];
 - format(caption, sizeof(caption), "Vehicle ID %d", vehicleid);
 - format(info, sizeof(info), "This vehicle is for sale ($%d)\nWould you like to buy it?", VehicleValue[vehicleid]);
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, info, "Yes", "No");
 - }
 - case DIALOG_VEHICLE_SELL:
 - {
 - new targetid = GetPVarInt(playerid, "DialogValue1");
 - new id = GetPVarInt(playerid, "DialogValue2");
 - new price = GetPVarInt(playerid, "DialogValue3");
 - new info[256];
 - format(info, sizeof(info), "%s (%d) wants to sell you a %s for $%d.", PlayerName(targetid), targetid,
 - VehicleNames[VehicleModel[id]-400], price);
 - strcat(info, "\n\nWould you like to buy?", sizeof(info));
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Buy Vehicle", info, "Yes", "No");
 - }
 - case DIALOG_TRUNK:
 - {
 - new vehicleid = GetPVarInt(playerid, "DialogValue1");
 - new name[32], info[256];
 - for(new i=0; i < sizeof(VehicleTrunk[]); i++)
 - {
 - if(VehicleTrunk[vehicleid][i][1] > 0)
 - {
 - GetWeaponName(VehicleTrunk[vehicleid][i][0], name, sizeof(name));
 - format(info, sizeof(info), "%s%d. %s (%d)\n", info, i+1, name, VehicleTrunk[vehicleid][i][1]);
 - }
 - else
 - {
 - format(info, sizeof(info), "%s%d. Empty\n", info, i+1);
 - }
 - }
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Trunk", info, "Select", "Cancel");
 - }
 - case DIALOG_TRUNK_ACTION:
 - {
 - new info[128];
 - strcat(info, "Put Into Trunk\nTake From Trunk", sizeof(info));
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Trunk", info, "Select", "Cancel");
 - }
 - case DIALOG_VEHICLE_PLATE:
 - {
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Edit License Plate", "Enter new license plate:", "Change", "Back");
 - }
 - case DIALOG_FUEL:
 - {
 - new info[128];
 - strcat(info, "Refuel Vehicle ($" #FUEL_PRICE ")\nBuy Gas Can ($" #GAS_CAN_PRICE ")", sizeof(info));
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Fuel Station", info, "OK", "Cancel");
 - }
 - case DIALOG_EDITVEHICLE:
 - {
 - new vehicleid = GetPVarInt(playerid, "DialogValue1");
 - new caption[32], info[256];
 - format(caption, sizeof(caption), "Edit Vehicle ID %d", vehicleid);
 - format(info, sizeof(info), "1. Value: [$%d]\n2. Model: [%d (%s)]\n3. Colors: [%d] [%d]\n4. License Plate: [%s]",
 - VehicleValue[vehicleid], VehicleModel[vehicleid], VehicleNames[VehicleModel[vehicleid]-400],
 - VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], VehicleNumberPlate[vehicleid]);
 - strcat(info, "\n5. Delete Vehicle\n6. Park Vehicle\n7. Go To Vehicle", sizeof(info));
 - strcat(info, "\n\nEnter: [nr] [value1] [value2]", sizeof(info));
 - ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, info, "OK", "Cancel");
 - }
 - }
 - }
 - public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
 - {
 - if(dialogid == DIALOG_ERROR)
 - {
 - ShowDialog(playerid, DialogReturn[playerid]);
 - return 1;
 - }
 - DialogReturn[playerid] = dialogid;
 - if(dialogid == DIALOG_VEHICLE)
 - {
 - if(response)
 - {
 - switch(listitem)
 - {
 - case 0:
 - {
 - new vehicleid = GetPlayerVehicleID(playerid);
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - if(engine == 0 && Fuel[vehicleid] <= 0)
 - {
 - ShowErrorDialog(playerid, "This vehicle is out of fuel!");
 - return 1;
 - }
 - if(engine == 1) { engine = 0; lights = 0; }
 - else { engine = 1; lights = 1; }
 - SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - }
 - case 1:
 - {
 - new vehicleid = GetPlayerVehicleID(playerid);
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - if(lights == 1) lights = 0; else lights = 1;
 - SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - }
 - case 2:
 - {
 - new vehicleid = GetPlayerVehicleID(playerid);
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - if(bonnet == 1) bonnet = 0; else bonnet = 1;
 - SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - }
 - case 3:
 - {
 - new vehicleid = GetPlayerVehicleID(playerid);
 - new engine, lights, alarm, doors, bonnet, boot, objective;
 - GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - if(boot == 1) boot = 0; else boot = 1;
 - SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
 - }
 - case 4:
 - {
 - if(!GetPVarInt(playerid, "GasCan"))
 - {
 - ShowErrorDialog(playerid, "You don't have a gas can!");
 - return 1;
 - }
 - new vehicleid = GetPlayerVehicleID(playerid);
 - if(Fuel[vehicleid] < 80.0) Fuel[vehicleid] += 20.0;
 - else Fuel[vehicleid] = 100.0;
 - SetPVarInt(playerid, "GasCan", 0);
 - SendClientMessage(playerid, COLOR_WHITE, "You have filled the fuel tank with 20 fuel");
 - }
 - case 5:
 - {
 - new id = GetPVarInt(playerid, "DialogValue1");
 - if(GetPlayerVehicleAccess(playerid, id) < 2)
 - {
 - ShowErrorDialog(playerid, "You are not the owner of this vehicle!");
 - return 1;
 - }
 - new msg[128];
 - VehicleCreated[id] = 0;
 - new money = VehicleValue[id]/2;
 - GivePlayerMoney(playerid, money);
 - format(msg, sizeof(msg), "You have sold your vehicle for $%d", money);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - RemovePlayerFromVehicle(playerid);
 - DestroyVehicle(VehicleID[id]);
 - SaveVehicle(id);
 - }
 - case 6:
 - {
 - new vehicleid = GetPVarInt(playerid, "DialogValue1");
 - if(GetPlayerVehicleAccess(playerid, vehicleid) < 2)
 - {
 - ShowErrorDialog(playerid, "You are not the owner of this vehicle!");
 - return 1;
 - }
 - GetVehiclePos(VehicleID[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1], VehiclePos[vehicleid][2]);
 - GetVehicleZAngle(VehicleID[vehicleid], VehiclePos[vehicleid][3]);
 - VehicleInterior[vehicleid] = GetPlayerInterior(playerid);
 - VehicleWorld[vehicleid] = GetPlayerVirtualWorld(playerid);
 - SendClientMessage(playerid, COLOR_WHITE, "You have parked this vehicle here");
 - UpdateVehicle(vehicleid, 1);
 - PutPlayerInVehicle(playerid, VehicleID[vehicleid], 0);
 - SaveVehicle(vehicleid);
 - }
 - case 7:
 - {
 - ShowDialog(playerid, DIALOG_VEHICLE_PLATE);
 - }
 - }
 - }
 - return 1;
 - }
 - if(dialogid == DIALOG_VEHICLE_BUY)
 - {
 - if(response)
 - {
 - if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
 - {
 - ShowErrorDialog(playerid, "You can't buy any more vehicles! Max: " #MAX_PLAYER_VEHICLES );
 - return 1;
 - }
 - new id = GetPVarInt(playerid, "DialogValue1");
 - if(GetPlayerMoney(playerid) < VehicleValue[id])
 - {
 - ShowErrorDialog(playerid, "You don't have enough money to buy this vehicle!");
 - return 1;
 - }
 - new freeid = GetFreeVehicleID();
 - if(!freeid)
 - {
 - ShowErrorDialog(playerid, "Vehicle dealership is out of stock!");
 - return 1;
 - }
 - GivePlayerMoney(playerid, -VehicleValue[id]);
 - new dealerid = strval(VehicleOwner[id]);
 - VehicleCreated[freeid] = VEHICLE_PLAYER;
 - VehicleModel[freeid] = VehicleModel[id];
 - VehiclePos[freeid] = DealershipPos[dealerid];
 - VehicleColor[freeid] = VehicleColor[id];
 - VehicleInterior[freeid] = VehicleInterior[id];
 - VehicleWorld[freeid] = VehicleWorld[id];
 - VehicleValue[freeid] = VehicleValue[id];
 - GetPlayerName(playerid, VehicleOwner[freeid], sizeof(VehicleOwner[]));
 - VehicleNumberPlate[freeid] = DEFAULT_NUMBER_PLATE;
 - for(new d=0; d < sizeof(VehicleTrunk[]); d++)
 - {
 - VehicleTrunk[freeid][d][0] = 0;
 - VehicleTrunk[freeid][d][1] = 0;
 - }
 - for(new d=0; d < sizeof(VehicleMods[]); d++)
 - {
 - VehicleMods[freeid][d] = 0;
 - }
 - VehiclePaintjob[freeid] = 255;
 - VehicleLock[freeid] = 0;
 - VehicleAlarm[freeid] = 0;
 - UpdateVehicle(freeid, 0);
 - SaveVehicle(freeid);
 - new msg[128];
 - format(msg, sizeof(msg), "You have bought this vehicle for $%d", VehicleValue[id]);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - }
 - else
 - {
 - new id = GetPVarInt(playerid, "DialogValue1");
 - if(GetPlayerVehicleAccess(playerid, id) < 1)
 - {
 - RemovePlayerFromVehicle(playerid);
 - }
 - }
 - return 1;
 - }
 - if(dialogid == DIALOG_VEHICLE_SELL)
 - {
 - if(response)
 - {
 - if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
 - {
 - ShowErrorDialog(playerid, "You can't buy any more vehicles! Max: " #MAX_PLAYER_VEHICLES );
 - return 1;
 - }
 - new targetid = GetPVarInt(playerid, "DialogValue1");
 - new id = GetPVarInt(playerid, "DialogValue2");
 - new price = GetPVarInt(playerid, "DialogValue3");
 - if(GetPlayerMoney(playerid) < price)
 - {
 - ShowErrorDialog(playerid, "You don't have enough money to buy this vehicle!");
 - return 1;
 - }
 - new msg[128];
 - GetPlayerName(playerid, VehicleOwner[id], sizeof(VehicleOwner[]));
 - GivePlayerMoney(playerid, -price);
 - GivePlayerMoney(targetid, price);
 - SaveVehicle(id);
 - format(msg, sizeof(msg), "You have bought this vehicle for $%d", price);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - format(msg, sizeof(msg), "%s (%d) has accepted your offer and bought the vehicle", PlayerName(playerid), playerid);
 - SendClientMessage(targetid, COLOR_WHITE, msg);
 - }
 - else
 - {
 - new targetid = GetPVarInt(playerid, "DialogValue1");
 - new msg[128];
 - format(msg, sizeof(msg), "%s (%d) refused your offer", PlayerName(playerid), playerid);
 - SendClientMessage(targetid, COLOR_WHITE, msg);
 - }
 - return 1;
 - }
 - if(dialogid == DIALOG_FINDVEHICLE)
 - {
 - if(response)
 - {
 - new id;
 - sscanf(inputtext[4], "d", id);
 - if(IsValidVehicle(id))
 - {
 - TrackCar[playerid] = VehicleID[id];
 - SendClientMessage(playerid, COLOR_WHITE, "Your vehicle's location is shown on your minimap");
 - }
 - }
 - return 1;
 - }
 - if(dialogid == DIALOG_TRUNK)
 - {
 - if(response)
 - {
 - SetPVarInt(playerid, "DialogValue2", listitem);
 - ShowDialog(playerid, DIALOG_TRUNK_ACTION);
 - }
 - else
 - {
 - new id = GetPVarInt(playerid, "DialogValue1");
 - ToggleBoot(VehicleID[id], VEHICLE_PARAMS_OFF);
 - }
 - return 1;
 - }
 - if(dialogid == DIALOG_TRUNK_ACTION)
 - {
 - if(response)
 - {
 - new id = GetPVarInt(playerid, "DialogValue1");
 - new slot = GetPVarInt(playerid, "DialogValue2");
 - switch(listitem)
 - {
 - case 0:
 - {
 - new weaponid = GetPlayerWeapon(playerid);
 - if(weaponid == 0)
 - {
 - ShowErrorDialog(playerid, "You don't have a weapon in your hands!");
 - return 1;
 - }
 - VehicleTrunk[id][slot][0] = weaponid;
 - if(IsMeleeWeapon(weaponid)) VehicleTrunk[id][slot][1] = 1;
 - else VehicleTrunk[id][slot][1] = GetPlayerAmmo(playerid);
 - RemovePlayerWeapon(playerid, weaponid);
 - SaveVehicle(id);
 - }
 - case 1:
 - {
 - if(VehicleTrunk[id][slot][1] <= 0)
 - {
 - ShowErrorDialog(playerid, "This slot is empty!");
 - return 1;
 - }
 - GivePlayerWeapon(playerid, VehicleTrunk[id][slot][0], VehicleTrunk[id][slot][1]);
 - VehicleTrunk[id][slot][0] = 0;
 - VehicleTrunk[id][slot][1] = 0;
 - SaveVehicle(id);
 - }
 - }
 - }
 - ShowDialog(playerid, DIALOG_TRUNK);
 - return 1;
 - }
 - if(dialogid == DIALOG_VEHICLE_PLATE)
 - {
 - if(response)
 - {
 - if(strlen(inputtext) < 1 || strlen(inputtext) >= sizeof(VehicleNumberPlate[]))
 - {
 - ShowErrorDialog(playerid, "Invalid length!");
 - return 1;
 - }
 - new id = GetPVarInt(playerid, "DialogValue1");
 - new vehicleid = VehicleID[id];
 - strmid(VehicleNumberPlate[id], inputtext, 0, sizeof(VehicleNumberPlate[]));
 - SaveVehicle(id);
 - SetVehicleNumberPlate(vehicleid, inputtext);
 - SetVehicleToRespawn(vehicleid);
 - new msg[128];
 - format(msg, sizeof(msg), "You have changed vehicle number plate to %s", inputtext);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - }
 - else ShowDialog(playerid, DIALOG_VEHICLE);
 - return 1;
 - }
 - if(dialogid == DIALOG_FUEL)
 - {
 - if(response)
 - {
 - switch(listitem)
 - {
 - case 0:
 - {
 - if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
 - {
 - ShowErrorDialog(playerid, "You are not driving a vehicle!");
 - return 1;
 - }
 - new vehicleid = GetPlayerVehicleID(playerid);
 - if(IsBicycle(vehicleid))
 - {
 - ShowErrorDialog(playerid, "Your vehicle doesn't have a fuel tank!");
 - return 1;
 - }
 - if(Fuel[vehicleid] >= 100.0)
 - {
 - ShowErrorDialog(playerid, "Your vehicle fuel tank is full!");
 - return 1;
 - }
 - if(GetPlayerMoney(playerid) < FUEL_PRICE)
 - {
 - ShowErrorDialog(playerid, "You don't have enough money!");
 - return 1;
 - }
 - RefuelTime[playerid] = 5;
 - SetPVarFloat(playerid, "Fuel", Fuel[vehicleid]);
 - GameTextForPlayer(playerid, "~w~refueling...", 2000, 3);
 - }
 - case 1:
 - {
 - if(GetPVarInt(playerid, "GasCan"))
 - {
 - ShowErrorDialog(playerid, "You already have a gas can!");
 - return 1;
 - }
 - if(GetPlayerMoney(playerid) < GAS_CAN_PRICE)
 - {
 - ShowErrorDialog(playerid, "You don't have enough money!");
 - return 1;
 - }
 - GivePlayerMoney(playerid, -GAS_CAN_PRICE);
 - SetPVarInt(playerid, "GasCan", 1);
 - SendClientMessage(playerid, COLOR_WHITE, "You have bought a gas can for $" #GAS_CAN_PRICE );
 - }
 - }
 - }
 - return 1;
 - }
 - if(dialogid == DIALOG_EDITVEHICLE)
 - {
 - if(response)
 - {
 - new id = GetPVarInt(playerid, "DialogValue1");
 - new nr, params[128];
 - sscanf(inputtext, "ds", nr, params);
 - switch(nr)
 - {
 - case 1:
 - {
 - new value = strval(params);
 - if(value < 0) value = 0;
 - VehicleValue[id] = value;
 - UpdateVehicleLabel(id, 1);
 - SaveVehicle(id);
 - ShowDialog(playerid, DIALOG_EDITVEHICLE);
 - }
 - case 2:
 - {
 - new value;
 - if(IsNumeric(params)) value = strval(params);
 - else value = GetVehicleModelIDFromName(params);
 - if(value < 400 || value > 611)
 - {
 - ShowErrorDialog(playerid, "Invalid vehicle model!");
 - return 1;
 - }
 - VehicleModel[id] = value;
 - for(new i=0; i < sizeof(VehicleMods[]); i++)
 - {
 - VehicleMods[id][i] = 0;
 - }
 - VehiclePaintjob[id] = 255;
 - UpdateVehicle(id, 1);
 - SaveVehicle(id);
 - ShowDialog(playerid, DIALOG_EDITVEHICLE);
 - }
 - case 3:
 - {
 - new color1, color2;
 - sscanf(params, "dd", color1, color2);
 - VehicleColor[id][0] = color1;
 - VehicleColor[id][1] = color2;
 - SaveVehicle(id);
 - ChangeVehicleColor(VehicleID[id], color1, color2);
 - ShowDialog(playerid, DIALOG_EDITVEHICLE);
 - }
 - case 4:
 - {
 - if(strlen(params) < 1 || strlen(params) > 8)
 - {
 - ShowErrorDialog(playerid, "Invalid length!");
 - return 1;
 - }
 - strmid(VehicleNumberPlate[id], params, 0, sizeof(params));
 - SaveVehicle(id);
 - SetVehicleNumberPlate(VehicleID[id], params);
 - SetVehicleToRespawn(VehicleID[id]);
 - ShowDialog(playerid, DIALOG_EDITVEHICLE);
 - }
 - case 5:
 - {
 - DestroyVehicle(VehicleID[id]);
 - if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
 - {
 - Delete3DTextLabel(VehicleLabel[id]);
 - }
 - VehicleCreated[id] = 0;
 - SaveVehicle(id);
 - new msg[128];
 - format(msg, sizeof(msg), "You have deleted vehicle id %d", id);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - }
 - case 6:
 - {
 - if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
 - {
 - ShowErrorDialog(playerid, "You are not driving the vehicle!");
 - return 1;
 - }
 - GetVehiclePos(VehicleID[id], VehiclePos[id][0], VehiclePos[id][1], VehiclePos[id][2]);
 - GetVehicleZAngle(VehicleID[id], VehiclePos[id][3]);
 - VehicleInterior[id] = GetPlayerInterior(playerid);
 - VehicleWorld[id] = GetPlayerVirtualWorld(playerid);
 - SendClientMessage(playerid, COLOR_WHITE, "You have parked this vehicle here");
 - UpdateVehicle(id, 1);
 - PutPlayerInVehicle(playerid, VehicleID[id], 0);
 - SaveVehicle(id);
 - ShowDialog(playerid, DIALOG_EDITVEHICLE);
 - }
 - case 7:
 - {
 - new Float:x, Float:y, Float:z;
 - GetVehiclePos(VehicleID[id], x, y, z);
 - SetPlayerPos(playerid, x, y, z+1);
 - new msg[128];
 - format(msg, sizeof(msg), "You have teleported to vehicle id %d", id);
 - SendClientMessage(playerid, COLOR_WHITE, msg);
 - }
 - }
 - }
 - return 1;
 - }
 - return 0;
 - }
 - stock sscanf(string[], format[], {Float,_}:...)
 - {
 - #if defined isnull
 - if (isnull(string))
 - #else
 - if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
 - #endif
 - {
 - return format[0];
 - }
 - new
 - formatPos = 0,
 - stringPos = 0,
 - paramPos = 2,
 - paramCount = numargs(),
 - delim = ' ';
 - while (string[stringPos] && string[stringPos] <= ' ')
 - {
 - stringPos++;
 - }
 - while (paramPos < paramCount && string[stringPos])
 - {
 - switch (format[formatPos++])
 - {
 - case '\0':
 - {
 - return 0;
 - }
 - case 'i', 'd':
 - {
 - new
 - neg = 1,
 - num = 0,
 - ch = string[stringPos];
 - if (ch == '-')
 - {
 - neg = -1;
 - ch = string[++stringPos];
 - }
 - do
 - {
 - stringPos++;
 - if ('0' <= ch <= '9')
 - {
 - num = (num * 10) + (ch - '0');
 - }
 - else
 - {
 - return -1;
 - }
 - }
 - while ((ch = string[stringPos]) > ' ' && ch != delim);
 - setarg(paramPos, 0, num * neg);
 - }
 - case 'h', 'x':
 - {
 - new
 - num = 0,
 - ch = string[stringPos];
 - do
 - {
 - stringPos++;
 - switch (ch)
 - {
 - case 'x', 'X':
 - {
 - num = 0;
 - continue;
 - }
 - case '0' .. '9':
 - {
 - num = (num << 4) | (ch - '0');
 - }
 - case 'a' .. 'f':
 - {
 - num = (num << 4) | (ch - ('a' - 10));
 - }
 - case 'A' .. 'F':
 - {
 - num = (num << 4) | (ch - ('A' - 10));
 - }
 - default:
 - {
 - return -1;
 - }
 - }
 - }
 - while ((ch = string[stringPos]) > ' ' && ch != delim);
 - setarg(paramPos, 0, num);
 - }
 - case 'c':
 - {
 - setarg(paramPos, 0, string[stringPos++]);
 - }
 - case 'f':
 - {
 - new
 - end = stringPos - 1,
 - ch;
 - while ((ch = string[++end]) && ch != delim) {}
 - string[end] = '\0';
 - setarg(paramPos,0,_:floatstr(string[stringPos]));
 - string[end] = ch;
 - stringPos = end;
 - }
 - case 'p':
 - {
 - delim = format[formatPos++];
 - continue;
 - }
 - case '\'':
 - {
 - new
 - end = formatPos - 1,
 - ch;
 - while ((ch = format[++end]) && ch != '\'') {}
 - if (!ch)
 - {
 - return -1;
 - }
 - format[end] = '\0';
 - if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
 - {
 - if (format[end + 1])
 - {
 - return -1;
 - }
 - return 0;
 - }
 - format[end] = '\'';
 - stringPos = ch + (end - formatPos);
 - formatPos = end + 1;
 - }
 - case 'u':
 - {
 - new
 - end = stringPos - 1,
 - id = 0,
 - bool:num = true,
 - ch;
 - while ((ch = string[++end]) && ch != delim)
 - {
 - if (num)
 - {
 - if ('0' <= ch <= '9')
 - {
 - id = (id * 10) + (ch - '0');
 - }
 - else
 - {
 - num = false;
 - }
 - }
 - }
 - if (num && IsPlayerConnected(id))
 - {
 - setarg(paramPos, 0, id);
 - }
 - else
 - {
 - #if !defined foreach
 - #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
 - #define __SSCANF_FOREACH__
 - #endif
 - string[end] = '\0';
 - num = false;
 - new
 - name[MAX_PLAYER_NAME];
 - id = end - stringPos;
 - foreach (Player, playerid)
 - {
 - GetPlayerName(playerid, name, sizeof (name));
 - if (!strcmp(name, string[stringPos], true, id))
 - {
 - setarg(paramPos, 0, playerid);
 - num = true;
 - break;
 - }
 - }
 - if (!num)
 - {
 - setarg(paramPos, 0, INVALID_PLAYER_ID);
 - }
 - string[end] = ch;
 - #if defined __SSCANF_FOREACH__
 - #undef foreach
 - #undef __SSCANF_FOREACH__
 - #endif
 - }
 - stringPos = end;
 - }
 - case 's', 'z':
 - {
 - new
 - i = 0,
 - ch;
 - if (format[formatPos])
 - {
 - while ((ch = string[stringPos++]) && ch != delim)
 - {
 - setarg(paramPos, i++, ch);
 - }
 - if (!i)
 - {
 - return -1;
 - }
 - }
 - else
 - {
 - while ((ch = string[stringPos++]))
 - {
 - setarg(paramPos, i++, ch);
 - }
 - }
 - stringPos--;
 - setarg(paramPos, i, '\0');
 - }
 - default:
 - {
 - continue;
 - }
 - }
 - while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
 - {
 - stringPos++;
 - }
 - while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
 - {
 - stringPos++;
 - }
 - paramPos++;
 - }
 - do
 - {
 - if ((delim = format[formatPos++]) > ' ')
 - {
 - if (delim == '\'')
 - {
 - while ((delim = format[formatPos++]) && delim != '\'') {}
 - }
 - else if (delim != 'z')
 - {
 - return delim;
 - }
 - }
 - }
 - while (delim > ' ');
 - return 0;
 - }
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment