Guest User

Untitled

a guest
Oct 7th, 2022
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 102.41 KB | Source Code | 0 0
  1. //==========================================================
  2. //    Advanced Vehicle System version 1.0 by MadeMan
  3. //                          Traduzido by Luan-RosaScripter
  4. //==========================================================
  5.  
  6. #define FILTERSCRIPT
  7.  
  8. #include <a_samp>
  9. #include <foreach>
  10. //=========================SETTINGS=========================
  11.  
  12. #undef MAX_PLAYERS
  13. #define MAX_PLAYERS 32
  14.  
  15. #define MAX_DVEHICLES 200
  16. #define MAX_DEALERSHIPS 10
  17. #define MAX_FUEL_STATIONS 10
  18.  
  19. #define VEHICLE_FILE_PATH "Conce/Veiculos/"
  20. #define DEALERSHIP_FILE_PATH "Conce/Locais/"
  21. #define FUEL_STATION_FILE_PATH "Conce/Postos/"
  22.  
  23. #define MAX_PLAYER_VEHICLES 3
  24. #define FUEL_PRICE 500
  25. #define GAS_CAN_PRICE 500
  26. #define ALARM_TIME 10000  // alarm duration in milliseconds (1 second = 1000 milliseconds)
  27. #define DEFAULT_NUMBER_PLATE "SEMPLACA"
  28.  
  29. //==========================================================
  30.  
  31. #define COLOR_BLACK 0x000000FF
  32. #define COLOR_RED 0xEE0000FF
  33. #define COLOR_GREEN 0x00CC00FF
  34. #define COLOR_BLUE 0x0000FFFF
  35. #define COLOR_ORANGE 0xFF6600FF
  36. #define COLOR_YELLOW 0xFFFF00FF
  37. #define COLOR_LIGHTBLUE 0x00FFFFFF
  38. #define COLOR_PURPLE 0xC2A2DAFF
  39. #define COLOR_GREY 0xC0C0C0FF
  40. #define COLOR_WHITE 0xFFFFFFFF
  41.  
  42. #define VEHICLE_DEALERSHIP 1
  43. #define VEHICLE_PLAYER 2
  44.  
  45. #define CMD:%1(%2)          \
  46.             forward cmd_%1(%2); \
  47.             public cmd_%1(%2)
  48.  
  49. #define ShowErrorDialog(%1,%2) ShowPlayerDialog(%1, DIALOG_ERROR, DIALOG_STYLE_MSGBOX, "ERROR", %2, "OK", "")
  50.  
  51. enum
  52. {
  53.     DIALOG_NONE=12345,
  54.     DIALOG_ERROR=12346,
  55.     DIALOG_VEHICLE=500,
  56.     DIALOG_VEHICLE_BUY,
  57.     DIALOG_VEHICLE_SELL,
  58.     DIALOG_FINDVEHICLE,
  59.     DIALOG_TRUNK,
  60.     DIALOG_TRUNK_ACTION,
  61.     DIALOG_VEHICLE_PLATE,
  62.     DIALOG_FUEL,
  63.     DIALOG_EDITVEHICLE
  64. };
  65.  
  66. new maintimer;
  67. new savetimer;
  68.  
  69. new SaveVehicleIndex;
  70.  
  71. new RefuelTime[MAX_PLAYERS];
  72. new TrackCar[MAX_PLAYERS];
  73. new DialogReturn[MAX_PLAYERS];
  74.  
  75. new Float:Fuel[MAX_VEHICLES] = {100.0, ...};
  76. new VehicleSecurity[MAX_VEHICLES];
  77.  
  78. new VehicleCreated[MAX_DVEHICLES];
  79. new VehicleID[MAX_DVEHICLES];
  80. new VehicleModel[MAX_DVEHICLES];
  81. new Float:VehiclePos[MAX_DVEHICLES][4];
  82. new VehicleColor[MAX_DVEHICLES][2];
  83. new VehicleInterior[MAX_DVEHICLES];
  84. new VehicleWorld[MAX_DVEHICLES];
  85. new VehicleOwner[MAX_DVEHICLES][MAX_PLAYER_NAME];
  86. new VehicleNumberPlate[MAX_DVEHICLES][16];
  87. new VehicleValue[MAX_DVEHICLES];
  88. new VehicleLock[MAX_DVEHICLES];
  89. new VehicleAlarm[MAX_DVEHICLES];
  90. new VehicleTrunk[MAX_DVEHICLES][5][2];
  91. new VehicleMods[MAX_DVEHICLES][14];
  92. new VehiclePaintjob[MAX_DVEHICLES] = {255, ...};
  93. new Text3D:VehicleLabel[MAX_DVEHICLES];
  94.  
  95. new DealershipCreated[MAX_DEALERSHIPS];
  96. new Float:DealershipPos[MAX_DEALERSHIPS][3];
  97. new Text3D:DealershipLabel[MAX_DEALERSHIPS];
  98.  
  99. new FuelStationCreated[MAX_FUEL_STATIONS];
  100. new Float:FuelStationPos[MAX_FUEL_STATIONS][3];
  101. new Text3D:FuelStationLabel[MAX_FUEL_STATIONS];
  102.  
  103. new VehicleNames[][] = {
  104.     "Landstalker","Bravura","Buffalo","Linerunner","Perennial","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
  105.     "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
  106.     "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
  107.     "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
  108.     "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
  109.     "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
  110.     "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
  111.     "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
  112.     "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
  113.     "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
  114.     "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
  115.     "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
  116.     "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
  117.     "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
  118.     "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
  119.     "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
  120.     "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
  121. };
  122.  
  123. enum MainZone
  124. {
  125.     Zone_Name[28],
  126.     Float:Zone_Area[6]
  127. }
  128.  
  129. static const SanAndreasZones[][MainZone] = {
  130.  
  131.     {"The Big Ear",                 {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
  132.     {"Aldea Malvada",               {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
  133.     {"Angel Pine",                  {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
  134.     {"Arco del Oeste",              {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
  135.     {"Avispa Country Club",         {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
  136.     {"Avispa Country Club",         {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
  137.     {"Avispa Country Club",         {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
  138.     {"Avispa Country Club",         {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
  139.     {"Avispa Country Club",         {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
  140.     {"Avispa Country Club",         {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
  141.     {"Back o Beyond",               {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
  142.     {"Battery Point",               {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
  143.     {"Bayside",                     {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
  144.     {"Bayside Marina",              {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
  145.     {"Beacon Hill",                 {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
  146.     {"Blackfield",                  {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
  147.     {"Blackfield",                  {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
  148.     {"Blackfield Chapel",           {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
  149.     {"Blackfield Chapel",           {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
  150.     {"Blackfield Intersection",     {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
  151.     {"Blackfield Intersection",     {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
  152.     {"Blackfield Intersection",     {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
  153.     {"Blackfield Intersection",     {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
  154.     {"Blueberry",                   {104.50,-220.10,2.30,349.60,152.20,200.00}},
  155.     {"Blueberry",                   {19.60,-404.10,3.80,349.60,-220.10,200.00}},
  156.     {"Blueberry Acres",             {-319.60,-220.10,0.00,104.50,293.30,200.00}},
  157.     {"Caligula's Palace",           {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
  158.     {"Caligula's Palace",           {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
  159.     {"Calton Heights",              {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
  160.     {"Chinatown",                   {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
  161.     {"City Hall",                   {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
  162.     {"Come-A-Lot",                  {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
  163.     {"Commerce",                    {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
  164.     {"Commerce",                    {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
  165.     {"Commerce",                    {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
  166.     {"Commerce",                    {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
  167.     {"Commerce",                    {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
  168.     {"Commerce",                    {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
  169.     {"Conference Center",           {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
  170.     {"Conference Center",           {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
  171.     {"Cranberry Station",           {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
  172.     {"Creek",                       {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
  173.     {"Dillimore",                   {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
  174.     {"Doherty",                     {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
  175.     {"Doherty",                     {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
  176.     {"Downtown",                    {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
  177.     {"Downtown",                    {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
  178.     {"Downtown",                    {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
  179.     {"Downtown",                    {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
  180.     {"Downtown",                    {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
  181.     {"Downtown",                    {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
  182.     {"Downtown Los Santos",         {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
  183.     {"Downtown Los Santos",         {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
  184.     {"Downtown Los Santos",         {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
  185.     {"Downtown Los Santos",         {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
  186.     {"Downtown Los Santos",         {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
  187.     {"Downtown Los Santos",         {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
  188.     {"Downtown Los Santos",         {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
  189.     {"Downtown Los Santos",         {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
  190.     {"Downtown Los Santos",         {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
  191.     {"East Beach",                  {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
  192.     {"East Beach",                  {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
  193.     {"East Beach",                  {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
  194.     {"East Beach",                  {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
  195.     {"East Los Santos",             {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
  196.     {"East Los Santos",             {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
  197.     {"East Los Santos",             {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
  198.     {"East Los Santos",             {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
  199.     {"East Los Santos",             {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
  200.     {"East Los Santos",             {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
  201.     {"East Los Santos",             {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
  202.     {"Easter Basin",                {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
  203.     {"Easter Basin",                {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
  204.     {"Easter Bay Airport",          {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
  205.     {"Easter Bay Airport",          {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
  206.     {"Easter Bay Airport",          {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
  207.     {"Easter Bay Airport",          {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
  208.     {"Easter Bay Airport",          {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
  209.     {"Easter Bay Airport",          {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
  210.     {"Easter Bay Airport",          {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
  211.     {"Easter Bay Airport",          {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
  212.     {"Easter Bay Chemicals",        {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
  213.     {"Easter Bay Chemicals",        {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
  214.     {"El Castillo del Diablo",      {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
  215.     {"El Castillo del Diablo",      {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
  216.     {"El Castillo del Diablo",      {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
  217.     {"El Corona",                   {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
  218.     {"El Corona",                   {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
  219.     {"El Quebrados",                {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
  220.     {"Esplanade East",              {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
  221.     {"Esplanade East",              {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
  222.     {"Esplanade East",              {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
  223.     {"Esplanade North",             {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
  224.     {"Esplanade North",             {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
  225.     {"Esplanade North",             {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
  226.     {"Fallen Tree",                 {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
  227.     {"Fallow Bridge",               {434.30,366.50,0.00,603.00,555.60,200.00}},
  228.     {"Fern Ridge",                  {508.10,-139.20,0.00,1306.60,119.50,200.00}},
  229.     {"Financial",                   {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
  230.     {"Fisher's Lagoon",             {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
  231.     {"Flint Intersection",          {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
  232.     {"Flint Range",                 {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
  233.     {"Fort Carson",                 {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
  234.     {"Foster Valley",               {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
  235.     {"Foster Valley",               {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
  236.     {"Foster Valley",               {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
  237.     {"Foster Valley",               {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
  238.     {"Frederick Bridge",            {2759.20,296.50,0.00,2774.20,594.70,200.00}},
  239.     {"Gant Bridge",                 {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
  240.     {"Gant Bridge",                 {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
  241.     {"Ganton",                      {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
  242.     {"Ganton",                      {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
  243.     {"Garcia",                      {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
  244.     {"Garcia",                      {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
  245.     {"Garver Bridge",               {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
  246.     {"Garver Bridge",               {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
  247.     {"Garver Bridge",               {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
  248.     {"Glen Park",                   {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
  249.     {"Glen Park",                   {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
  250.     {"Glen Park",                   {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
  251.     {"Green Palms",                 {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
  252.     {"Greenglass College",          {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
  253.     {"Greenglass College",          {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
  254.     {"Hampton Barns",               {603.00,264.30,0.00,761.90,366.50,200.00}},
  255.     {"Hankypanky Point",            {2576.90,62.10,0.00,2759.20,385.50,200.00}},
  256.     {"Harry Gold Parkway",          {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
  257.     {"Hashbury",                    {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
  258.     {"Hilltop Farm",                {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
  259.     {"Hunter Quarry",               {337.20,710.80,-115.20,860.50,1031.70,203.70}},
  260.     {"Idlewood",                    {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
  261.     {"Idlewood",                    {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
  262.     {"Idlewood",                    {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
  263.     {"Idlewood",                    {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
  264.     {"Idlewood",                    {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
  265.     {"Idlewood",                    {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
  266.     {"Jefferson",                   {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
  267.     {"Jefferson",                   {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
  268.     {"Jefferson",                   {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
  269.     {"Jefferson",                   {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
  270.     {"Jefferson",                   {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
  271.     {"Jefferson",                   {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
  272.     {"Julius Thruway East",         {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
  273.     {"Julius Thruway East",         {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
  274.     {"Julius Thruway East",         {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
  275.     {"Julius Thruway East",         {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
  276.     {"Julius Thruway North",        {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
  277.     {"Julius Thruway North",        {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
  278.     {"Julius Thruway North",        {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
  279.     {"Julius Thruway North",        {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
  280.     {"Julius Thruway North",        {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
  281.     {"Julius Thruway North",        {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
  282.     {"Julius Thruway North",        {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
  283.     {"Julius Thruway North",        {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
  284.     {"Julius Thruway South",        {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
  285.     {"Julius Thruway South",        {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
  286.     {"Julius Thruway West",         {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
  287.     {"Julius Thruway West",         {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
  288.     {"Juniper Hill",                {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
  289.     {"Juniper Hollow",              {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
  290.     {"K.A.C.C. Military Fuels",     {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
  291.     {"Kincaid Bridge",              {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
  292.     {"Kincaid Bridge",              {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
  293.     {"Kincaid Bridge",              {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
  294.     {"King's",                      {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
  295.     {"King's",                      {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
  296.     {"King's",                      {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
  297.     {"LVA Freight Depot",           {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
  298.     {"LVA Freight Depot",           {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
  299.     {"LVA Freight Depot",           {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
  300.     {"LVA Freight Depot",           {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
  301.     {"LVA Freight Depot",           {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
  302.     {"Las Barrancas",               {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
  303.     {"Las Brujas",                  {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
  304.     {"Las Colinas",                 {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
  305.     {"Las Colinas",                 {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
  306.     {"Las Colinas",                 {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
  307.     {"Las Colinas",                 {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
  308.     {"Las Colinas",                 {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
  309.     {"Las Colinas",                 {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
  310.     {"Las Colinas",                 {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
  311.     {"Las Payasadas",               {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
  312.     {"Las Venturas Airport",        {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
  313.     {"Las Venturas Airport",        {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
  314.     {"Las Venturas Airport",        {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
  315.     {"Las Venturas Airport",        {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
  316.     {"Last Dime Motel",             {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
  317.     {"Leafy Hollow",                {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
  318.     {"Liberty City",                {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
  319.     {"Lil' Probe Inn",              {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
  320.     {"Linden Side",                 {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
  321.     {"Linden Station",              {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
  322.     {"Linden Station",              {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
  323.     {"Little Mexico",               {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
  324.     {"Little Mexico",               {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
  325.     {"Los Flores",                  {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
  326.     {"Los Flores",                  {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
  327.     {"Los Santos International",    {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
  328.     {"Los Santos International",    {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
  329.     {"Los Santos International",    {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
  330.     {"Los Santos International",    {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
  331.     {"Los Santos International",    {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
  332.     {"Los Santos International",    {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
  333.     {"Marina",                      {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
  334.     {"Marina",                      {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
  335.     {"Marina",                      {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
  336.     {"Market",                      {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
  337.     {"Market",                      {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
  338.     {"Market",                      {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
  339.     {"Market",                      {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
  340.     {"Market Station",              {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
  341.     {"Martin Bridge",               {-222.10,293.30,0.00,-122.10,476.40,200.00}},
  342.     {"Missionary Hill",             {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
  343.     {"Montgomery",                  {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
  344.     {"Montgomery",                  {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
  345.     {"Montgomery Intersection",     {1546.60,208.10,0.00,1745.80,347.40,200.00}},
  346.     {"Montgomery Intersection",     {1582.40,347.40,0.00,1664.60,401.70,200.00}},
  347.     {"Mulholland",                  {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
  348.     {"Mulholland",                  {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
  349.     {"Mulholland",                  {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
  350.     {"Mulholland",                  {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
  351.     {"Mulholland",                  {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
  352.     {"Mulholland",                  {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
  353.     {"Mulholland",                  {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
  354.     {"Mulholland",                  {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
  355.     {"Mulholland",                  {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
  356.     {"Mulholland",                  {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
  357.     {"Mulholland",                  {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
  358.     {"Mulholland",                  {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
  359.     {"Mulholland",                  {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
  360.     {"Mulholland Intersection",     {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
  361.     {"North Rock",                  {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
  362.     {"Ocean Docks",                 {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
  363.     {"Ocean Docks",                 {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
  364.     {"Ocean Docks",                 {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
  365.     {"Ocean Docks",                 {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
  366.     {"Ocean Docks",                 {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
  367.     {"Ocean Docks",                 {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
  368.     {"Ocean Docks",                 {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
  369.     {"Ocean Flats",                 {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
  370.     {"Ocean Flats",                 {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
  371.     {"Ocean Flats",                 {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
  372.     {"Octane Springs",              {338.60,1228.50,0.00,664.30,1655.00,200.00}},
  373.     {"Old Venturas Strip",          {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
  374.     {"Palisades",                   {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
  375.     {"Palomino Creek",              {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
  376.     {"Paradiso",                    {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
  377.     {"Pershing Square",             {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
  378.     {"Pilgrim",                     {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
  379.     {"Pilgrim",                     {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
  380.     {"Pilson Intersection",         {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
  381.     {"Pirates in Men's Pants",      {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
  382.     {"Playa del Seville",           {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
  383.     {"Prickle Pine",                {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
  384.     {"Prickle Pine",                {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
  385.     {"Prickle Pine",                {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
  386.     {"Prickle Pine",                {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
  387.     {"Queens",                      {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
  388.     {"Queens",                      {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
  389.     {"Queens",                      {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
  390.     {"Randolph Industrial",         {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
  391.     {"Redsands East",               {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
  392.     {"Redsands East",               {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
  393.     {"Redsands East",               {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
  394.     {"Redsands West",               {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
  395.     {"Redsands West",               {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
  396.     {"Redsands West",               {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
  397.     {"Redsands West",               {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
  398.     {"Regular Tom",                 {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
  399.     {"Richman",                     {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
  400.     {"Richman",                     {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
  401.     {"Richman",                     {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
  402.     {"Richman",                     {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
  403.     {"Richman",                     {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
  404.     {"Richman",                     {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
  405.     {"Richman",                     {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
  406.     {"Richman",                     {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
  407.     {"Richman",                     {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
  408.     {"Richman",                     {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
  409.     {"Robada Intersection",         {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
  410.     {"Roca Escalante",              {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
  411.     {"Roca Escalante",              {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
  412.     {"Rockshore East",              {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
  413.     {"Rockshore West",              {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
  414.     {"Rockshore West",              {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
  415.     {"Rodeo",                       {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
  416.     {"Rodeo",                       {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
  417.     {"Rodeo",                       {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
  418.     {"Rodeo",                       {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
  419.     {"Rodeo",                       {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
  420.     {"Rodeo",                       {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
  421.     {"Rodeo",                       {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
  422.     {"Rodeo",                       {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
  423.     {"Rodeo",                       {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
  424.     {"Rodeo",                       {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
  425.     {"Rodeo",                       {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
  426.     {"Rodeo",                       {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
  427.     {"Royal Casino",                {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
  428.     {"San Andreas Sound",           {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
  429.     {"Santa Flora",                 {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
  430.     {"Santa Maria Beach",           {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
  431.     {"Santa Maria Beach",           {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
  432.     {"Shady Cabin",                 {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
  433.     {"Shady Creeks",                {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
  434.     {"Shady Creeks",                {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
  435.     {"Sobell Rail Yards",           {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
  436.     {"Spinybed",                    {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
  437.     {"Starfish Casino",             {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
  438.     {"Starfish Casino",             {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
  439.     {"Starfish Casino",             {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
  440.     {"Temple",                      {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
  441.     {"Temple",                      {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
  442.     {"Temple",                      {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
  443.     {"Temple",                      {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
  444.     {"Temple",                      {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
  445.     {"Temple",                      {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
  446.     {"The Camel's Toe",             {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
  447.     {"The Clown's Pocket",          {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
  448.     {"The Emerald Isle",            {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
  449.     {"The Farm",                    {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
  450.     {"Four Dragons Casino",         {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
  451.     {"The High Roller",             {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
  452.     {"The Mako Span",               {1664.60,401.70,0.00,1785.10,567.20,200.00}},
  453.     {"The Panopticon",              {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
  454.     {"The Pink Swan",               {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
  455.     {"The Sherman Dam",             {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
  456.     {"The Strip",                   {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
  457.     {"The Strip",                   {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
  458.     {"The Strip",                   {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
  459.     {"The Strip",                   {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
  460.     {"The Visage",                  {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
  461.     {"The Visage",                  {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
  462.     {"Unity Station",               {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
  463.     {"Valle Ocultado",              {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
  464.     {"Verdant Bluffs",              {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
  465.     {"Verdant Bluffs",              {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
  466.     {"Verdant Bluffs",              {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
  467.     {"Verdant Meadows",             {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
  468.     {"Verona Beach",                {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
  469.     {"Verona Beach",                {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
  470.     {"Verona Beach",                {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
  471.     {"Verona Beach",                {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
  472.     {"Verona Beach",                {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
  473.     {"Vinewood",                    {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
  474.     {"Vinewood",                    {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
  475.     {"Vinewood",                    {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
  476.     {"Vinewood",                    {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
  477.     {"Whitewood Estates",           {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
  478.     {"Whitewood Estates",           {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
  479.     {"Willowfield",                 {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
  480.     {"Willowfield",                 {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
  481.     {"Willowfield",                 {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
  482.     {"Willowfield",                 {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
  483.     {"Willowfield",                 {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
  484.     {"Willowfield",                 {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
  485.     {"Willowfield",                 {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
  486.     {"Yellow Bell Station",         {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
  487.     // Citys Zones
  488.     {"Los Santos",                  {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
  489.     {"Las Venturas",                {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
  490.     {"Bone County",                 {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
  491.     {"Tierra Robada",               {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
  492.     {"Tierra Robada",               {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
  493.     {"San Fierro",                  {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
  494.     {"Red County",                  {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
  495.     {"Flint County",                {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
  496.     {"Whetstone",                   {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
  497. };
  498.  
  499. forward MainTimer();
  500. forward SaveTimer();
  501. forward StopAlarm(vehicleid);
  502.  
  503. stock PlayerName(playerid)
  504. {
  505.     new pName[MAX_PLAYER_NAME];
  506.     GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  507.     return pName;
  508. }
  509.  
  510. stock IsPlayerSpawned(playerid)
  511. {
  512.     switch(GetPlayerState(playerid))
  513.     {
  514.         case 1,2,3: return 1;
  515.     }
  516.     return 0;
  517. }
  518.  
  519. stock IsMeleeWeapon(weaponid)
  520. {
  521.     switch(weaponid)
  522.     {
  523.         case 2 .. 15, 40, 44 .. 46: return 1;
  524.     }
  525.     return 0;
  526. }
  527.  
  528. stock RemovePlayerWeapon(playerid, weaponid)
  529. {
  530.     new WeaponData[12][2];
  531.     for(new i=1; i < sizeof(WeaponData); i++)
  532.     {
  533.         GetPlayerWeaponData(playerid, i, WeaponData[i][0], WeaponData[i][1]);
  534.     }
  535.     ResetPlayerWeapons(playerid);
  536.     for(new i=1; i < sizeof(WeaponData); i++)
  537.     {
  538.         if(WeaponData[i][0] != weaponid)
  539.         {
  540.             GivePlayerWeapon(playerid, WeaponData[i][0], WeaponData[i][1]);
  541.         }
  542.     }
  543. }
  544.  
  545. stock IsBicycle(vehicleid)
  546. {
  547.     switch(GetVehicleModel(vehicleid))
  548.     {
  549.         case 481,509,510: return 1;
  550.     }
  551.     return 0;
  552. }
  553.  
  554. stock PlayerToPlayer(playerid, targetid, Float:dist)
  555. {
  556.     new Float:pos[3];
  557.     GetPlayerPos(targetid, pos[0], pos[1], pos[2]);
  558.     return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  559. }
  560.  
  561. stock PlayerToVehicle(playerid, vehicleid, Float:dist)
  562. {
  563.     new Float:pos[3];
  564.     GetVehiclePos(vehicleid, pos[0], pos[1], pos[2]);
  565.     return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  566. }
  567.  
  568. stock GetClosestVehicle(playerid)
  569. {
  570.     new Float:x, Float:y, Float:z;
  571.     new Float:dist, Float:closedist=9999, closeveh;
  572.     for(new i=1; i < MAX_VEHICLES; i++)
  573.     {
  574.         if(GetVehiclePos(i, x, y, z))
  575.         {
  576.             dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
  577.             if(dist < closedist)
  578.             {
  579.                 closedist = dist;
  580.                 closeveh = i;
  581.             }
  582.         }
  583.     }
  584.     return closeveh;
  585. }
  586.  
  587. stock ToggleEngine(vehicleid, toggle)
  588. {
  589.     new engine, lights, alarm, doors, bonnet, boot, objective;
  590.     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  591.     SetVehicleParamsEx(vehicleid, toggle, lights, alarm, doors, bonnet, boot, objective);
  592. }
  593.  
  594. stock ToggleAlarm(vehicleid, toggle)
  595. {
  596.     new engine, lights, alarm, doors, bonnet, boot, objective;
  597.     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  598.     SetVehicleParamsEx(vehicleid, engine, lights, toggle, doors, bonnet, boot, objective);
  599. }
  600.  
  601. stock ToggleDoors(vehicleid, toggle)
  602. {
  603.     new engine, lights, alarm, doors, bonnet, boot, objective;
  604.     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  605.     SetVehicleParamsEx(vehicleid, engine, lights, alarm, toggle, bonnet, boot, objective);
  606. }
  607.  
  608. stock ToggleBoot(vehicleid, toggle)
  609. {
  610.     new engine, lights, alarm, doors, bonnet, boot, objective;
  611.     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  612.     SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, toggle, objective);
  613. }
  614.  
  615. stock StripNL(str[]) // credits to Y_Less for y_utils.inc
  616. {
  617.     new
  618.         i = strlen(str);
  619.     while (i-- && str[i] <= ' ') str[i] = '\0';
  620. }
  621.  
  622. stock IsNumeric(const string[])
  623. {
  624.     for(new i=0; string[i]; i++)
  625.     {
  626.         if(string[i] < '0' || string[i] > '9') return 0;
  627.     }
  628.     return 1;
  629. }
  630.  
  631. stock GetVehicleModelIDFromName(const vname[])
  632. {
  633.     for(new i=0; i < sizeof(VehicleNames); i++)
  634.     {
  635.         if(strfind(VehicleNames[i], vname, true) != -1) return i + 400;
  636.     }
  637.     return -1;
  638. }
  639.  
  640. stock GetPlayer2DZone(playerid)
  641. {
  642.     new zone[32] = "San Andreas";
  643.     new Float:x, Float:y, Float:z;
  644.     GetPlayerPos(playerid, x, y, z);
  645.     for(new i = 0; i < sizeof(SanAndreasZones); i++)
  646.     {
  647.         if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  648.         && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4])
  649.         {
  650.             strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  651.             return zone;
  652.         }
  653.     }
  654.     return zone;
  655. }
  656.  
  657. stock GetPlayer3DZone(playerid)
  658. {
  659.     new zone[32] = "San Andreas";
  660.     new Float:x, Float:y, Float:z;
  661.     GetPlayerPos(playerid, x, y, z);
  662.     for(new i = 0; i < sizeof(SanAndreasZones); i++)
  663.     {
  664.         if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  665.         && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4]
  666.         && z >= SanAndreasZones[i][Zone_Area][2] && z <= SanAndreasZones[i][Zone_Area][5])
  667.         {
  668.             strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  669.             return zone;
  670.         }
  671.     }
  672.     return zone;
  673. }
  674.  
  675. /*SafeGivePlayerMoney(playerid, money)
  676. {
  677.     return CallRemoteFunction("SafeGivePlayerMoney","dd",playerid, money);
  678. }
  679. #define GivePlayerMoney SafeGivePlayerMoney
  680.  
  681. SafeGetPlayerMoney(playerid)
  682. {
  683.     return CallRemoteFunction("SafeGetPlayerMoney","d",playerid);
  684. }
  685. #define GetPlayerMoney SafeGetPlayerMoney
  686.  
  687. IsAdmin(playerid, level)
  688. {
  689.     if(IsPlayerAdmin(playerid)) return 1;
  690.     if(CallRemoteFunction("GetPlayerAVSAdmin", "d", playerid) >= level) return 1;
  691.     return 0;
  692. }*/
  693.  
  694. LoadVehicles()
  695. {
  696.     new string[64];
  697.     new File:handle, count;
  698.     new filename[64], line[256], s, key[64];
  699.     for(new i=1; i < MAX_DVEHICLES; i++)
  700.     {
  701.         format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", i);
  702.         if(!fexist(filename)) continue;
  703.         handle = fopen(filename, io_read);
  704.         while(fread(handle, line))
  705.         {
  706.             StripNL(line);
  707.             s = strfind(line, "=");
  708.             if(!line[0] || s < 1) continue;
  709.             strmid(key, line, 0, s++);
  710.             if(strcmp(key, "Created") == 0) VehicleCreated[i] = strval(line[s]);
  711.             else if(strcmp(key, "Model") == 0) VehicleModel[i] = strval(line[s]);
  712.             else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,ffff", VehiclePos[i][0], VehiclePos[i][1],
  713.                 VehiclePos[i][2], VehiclePos[i][3]);
  714.             else if(strcmp(key, "Colors") == 0) sscanf(line[s], "p,dd", VehicleColor[i][0], VehicleColor[i][1]);
  715.             else if(strcmp(key, "Interior") == 0) VehicleInterior[i] = strval(line[s]);
  716.             else if(strcmp(key, "VirtualWorld") == 0) VehicleWorld[i] = strval(line[s]);
  717.             else if(strcmp(key, "Owner") == 0) strmid(VehicleOwner[i], line, s, sizeof(line));
  718.             else if(strcmp(key, "NumberPlate") == 0) strmid(VehicleNumberPlate[i], line, s, sizeof(line));
  719.             else if(strcmp(key, "Value") == 0) VehicleValue[i] = strval(line[s]);
  720.             else if(strcmp(key, "Lock") == 0) VehicleLock[i] = strval(line[s]);
  721.             else if(strcmp(key, "Alarm") == 0) VehicleAlarm[i] = strval(line[s]);
  722.             else if(strcmp(key, "Paintjob") == 0) VehiclePaintjob[i] = strval(line[s]);
  723.             else
  724.             {
  725.                 for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  726.                 {
  727.                     format(string, sizeof(string), "Trunk%d", t+1);
  728.                     if(strcmp(key, string) == 0) sscanf(line[s], "p,dd", VehicleTrunk[i][t][0], VehicleTrunk[i][t][1]);
  729.                 }
  730.                 for(new m=0; m < sizeof(VehicleMods[]); m++)
  731.                 {
  732.                     format(string, sizeof(string), "Mod%d", m);
  733.                     if(strcmp(key, string) == 0) VehicleMods[i][m] = strval(line[s]);
  734.                 }
  735.             }
  736.         }
  737.         fclose(handle);
  738.         if(VehicleCreated[i]) count++;
  739.     }
  740.     printf("  Carregado %d Veiculos", count);
  741. }
  742.  
  743. SaveVehicle(vehicleid)
  744. {
  745.     new filename[64], line[256];
  746.     format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", vehicleid);
  747.     new File:handle = fopen(filename, io_write);
  748.     format(line, sizeof(line), "Created=%d\r\n", VehicleCreated[vehicleid]); fwrite(handle, line);
  749.     format(line, sizeof(line), "Model=%d\r\n", VehicleModel[vehicleid]); fwrite(handle, line);
  750.     format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f,%.3f\r\n", VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  751.         VehiclePos[vehicleid][2], VehiclePos[vehicleid][3]);
  752.     fwrite(handle, line);
  753.     format(line, sizeof(line), "Colors=%d,%d\r\n", VehicleColor[vehicleid][0], VehicleColor[vehicleid][1]); fwrite(handle, line);
  754.     format(line, sizeof(line), "Interior=%d\r\n", VehicleInterior[vehicleid]); fwrite(handle, line);
  755.     format(line, sizeof(line), "VirtualWorld=%d\r\n", VehicleWorld[vehicleid]); fwrite(handle, line);
  756.     format(line, sizeof(line), "Owner=%s\r\n", VehicleOwner[vehicleid]); fwrite(handle, line);
  757.     format(line, sizeof(line), "NumberPlate=%s\r\n", VehicleNumberPlate[vehicleid]); fwrite(handle, line);
  758.     format(line, sizeof(line), "Value=%d\r\n", VehicleValue[vehicleid]); fwrite(handle, line);
  759.     format(line, sizeof(line), "Lock=%d\r\n", VehicleLock[vehicleid]); fwrite(handle, line);
  760.     format(line, sizeof(line), "Alarm=%d\r\n", VehicleAlarm[vehicleid]); fwrite(handle, line);
  761.     format(line, sizeof(line), "Paintjob=%d\r\n", VehiclePaintjob[vehicleid]); fwrite(handle, line);
  762.     for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  763.     {
  764.         format(line, sizeof(line), "Trunk%d=%d,%d\r\n", t+1, VehicleTrunk[vehicleid][t][0], VehicleTrunk[vehicleid][t][1]);
  765.         fwrite(handle, line);
  766.     }
  767.     for(new m=0; m < sizeof(VehicleMods[]); m++)
  768.     {
  769.         format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
  770.         fwrite(handle, line);
  771.     }
  772.     fclose(handle);
  773. }
  774.  
  775. UpdateVehicle(vehicleid, removeold)
  776. {
  777.     if(VehicleCreated[vehicleid])
  778.     {
  779.         if(removeold)
  780.         {
  781.             new Float:health;
  782.             GetVehicleHealth(VehicleID[vehicleid], health);
  783.             new engine, lights, alarm, doors, bonnet, boot, objective;
  784.             GetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  785.             new panels, doorsd, lightsd, tires;//
  786.             GetVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);//
  787.             DestroyVehicle(VehicleID[vehicleid]);
  788.             VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  789.                 VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  790.             SetVehicleHealth(VehicleID[vehicleid], health);
  791.             SetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  792.             UpdateVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);//
  793.         }
  794.         else
  795.         {
  796.             VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  797.                 VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  798.         }
  799.         LinkVehicleToInterior(VehicleID[vehicleid], VehicleInterior[vehicleid]);
  800.         SetVehicleVirtualWorld(VehicleID[vehicleid], VehicleWorld[vehicleid]);
  801.         SetVehicleNumberPlate(VehicleID[vehicleid], VehicleNumberPlate[vehicleid]);
  802.         for(new i=0; i < sizeof(VehicleMods[]); i++)
  803.         {
  804.             AddVehicleComponent(VehicleID[vehicleid], VehicleMods[vehicleid][i]);
  805.         }
  806.         ChangeVehiclePaintjob(VehicleID[vehicleid], VehiclePaintjob[vehicleid]);
  807.         if(VehicleLock[vehicleid]) ToggleDoors(VehicleID[vehicleid], VEHICLE_PARAMS_ON);
  808.         if(VehicleAlarm[vehicleid]) VehicleSecurity[VehicleID[vehicleid]] = 1;
  809.         UpdateVehicleLabel(vehicleid, removeold);
  810.     }
  811. }
  812.  
  813. UpdateVehicleLabel(vehicleid, removeold)
  814. {
  815.     if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  816.     {
  817.         if(removeold)
  818.         {
  819.             Delete3DTextLabel(VehicleLabel[vehicleid]);
  820.         }
  821.         new labeltext[128];
  822.         format(labeltext, sizeof(labeltext), "{FFFFFF}%s\n{FF0000}Concessionaria: {FFFFFF}%s\n{FF0000}Valor: {32CD32}R${FFFFFF}%d", VehicleNames[VehicleModel[vehicleid]-400],
  823.             VehicleOwner[vehicleid], VehicleValue[vehicleid]);
  824.         VehicleLabel[vehicleid] = Create3DTextLabel(labeltext, 0xBB7700DD, 0, 0, 0, 10.0, 0);
  825.         Attach3DTextLabelToVehicle(VehicleLabel[vehicleid], VehicleID[vehicleid], 0, 0, 0);
  826.     }
  827. }
  828.  
  829. IsValidVehicle2(vehicleid)
  830. {
  831.     if(vehicleid < 1 || vehicleid >= MAX_DVEHICLES) return 0;
  832.     if(VehicleCreated[vehicleid]) return 1;
  833.     return 0;
  834. }
  835.  
  836. GetFreeVehicleID()
  837. {
  838.     for(new i=1; i < MAX_DVEHICLES; i++)
  839.     {
  840.         if(!VehicleCreated[i]) return i;
  841.     }
  842.     return 0;
  843. }
  844.  
  845. GetVehicleID(vehicleid)
  846. {
  847.     for(new i=1; i < MAX_DVEHICLES; i++)
  848.     {
  849.         if(VehicleCreated[i] && VehicleID[i] == vehicleid) return i;
  850.     }
  851.     return 0;
  852. }
  853.  
  854. GetPlayerVehicles(playerid)
  855. {
  856.     new playername[24];
  857.     GetPlayerName(playerid, playername, sizeof(playername));
  858.     new count;
  859.     for(new i=1; i < MAX_DVEHICLES; i++)
  860.     {
  861.         if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  862.         {
  863.             count++;
  864.         }
  865.     }
  866.     return count;
  867. }
  868.  
  869. GetPlayerVehicleAccess(playerid, vehicleid)
  870. {
  871.     if(IsValidVehicle2(vehicleid))
  872.     {
  873.         if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  874.         {
  875.             if(IsPlayerAdmin(playerid))
  876.             {
  877.                 return 1;
  878.             }
  879.         }
  880.         else if(VehicleCreated[vehicleid] == VEHICLE_PLAYER)
  881.         {
  882.             if(strcmp(VehicleOwner[vehicleid], PlayerName(playerid)) == 0)
  883.             {
  884.                 return 2;
  885.             }
  886.             else if(GetPVarInt(playerid, "CarKeys") == vehicleid)
  887.             {
  888.                 return 1;
  889.             }
  890.         }
  891.     }
  892.     else
  893.     {
  894.         return 1;
  895.     }
  896.     return 0;
  897. }
  898.  
  899. LoadDealerships()
  900. {
  901.     new File:handle, count;
  902.     new filename[64], line[256], s, key[64];
  903.     for(new i=1; i < MAX_DEALERSHIPS; i++)
  904.     {
  905.         format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", i);
  906.         if(!fexist(filename)) continue;
  907.         handle = fopen(filename, io_read);
  908.         while(fread(handle, line))
  909.         {
  910.             StripNL(line);
  911.             s = strfind(line, "=");
  912.             if(!line[0] || s < 1) continue;
  913.             strmid(key, line, 0, s++);
  914.             if(strcmp(key, "Created") == 0) DealershipCreated[i] = strval(line[s]);
  915.             else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", DealershipPos[i][0],
  916.                 DealershipPos[i][1], DealershipPos[i][2]);
  917.         }
  918.         fclose(handle);
  919.         if(DealershipCreated[i]) count++;
  920.     }
  921.     printf("  Carregado %d Concessionarias", count);
  922. }
  923.  
  924. SaveDealership(dealerid)
  925. {
  926.     new filename[64], line[256];
  927.     format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", dealerid);
  928.     new File:handle = fopen(filename, io_write);
  929.     format(line, sizeof(line), "Created=%d\r\n", DealershipCreated[dealerid]); fwrite(handle, line);
  930.     format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", DealershipPos[dealerid][0],
  931.         DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  932.     fwrite(handle, line);
  933.     fclose(handle);
  934. }
  935.  
  936. UpdateDealership(dealerid, removeold)
  937. {
  938.     if(DealershipCreated[dealerid])
  939.     {
  940.         if(removeold)
  941.         {
  942.             Delete3DTextLabel(DealershipLabel[dealerid]);
  943.         }
  944.         new labeltext[32];
  945.         format(labeltext, sizeof(labeltext), "SpawnVeh\nID: %d", dealerid);
  946.         DealershipLabel[dealerid] = Create3DTextLabel(labeltext, 0x00BB00DD, DealershipPos[dealerid][0],
  947.             DealershipPos[dealerid][1], DealershipPos[dealerid][2]+0.5, 20.0, 0);
  948.     }
  949. }
  950.  
  951. IsValidDealership(dealerid)
  952. {
  953.     if(dealerid < 1 || dealerid >= MAX_DEALERSHIPS) return 0;
  954.     if(DealershipCreated[dealerid]) return 1;
  955.     return 0;
  956. }
  957.  
  958. LoadFuelStations()
  959. {
  960.     new File:handle, count;
  961.     new filename[64], line[256], s, key[64];
  962.     for(new i=1; i < MAX_FUEL_STATIONS; i++)
  963.     {
  964.         format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", i);
  965.         if(!fexist(filename)) continue;
  966.         handle = fopen(filename, io_read);
  967.         while(fread(handle, line))
  968.         {
  969.             StripNL(line);
  970.             s = strfind(line, "=");
  971.             if(!line[0] || s < 1) continue;
  972.             strmid(key, line, 0, s++);
  973.             if(strcmp(key, "Created") == 0) FuelStationCreated[i] = strval(line[s]);
  974.             else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", FuelStationPos[i][0],
  975.                 FuelStationPos[i][1], FuelStationPos[i][2]);
  976.         }
  977.         fclose(handle);
  978.         if(FuelStationCreated[i]) count++;
  979.     }
  980.     printf("  Carregado %d Postos de Combustivel", count);
  981. }
  982.  
  983. SaveFuelStation(stationid)
  984. {
  985.     new filename[64], line[256];
  986.     format(filename, sizeof(filename), FUEL_STATION_FILE_PATH "f%d.ini", stationid);
  987.     new File:handle = fopen(filename, io_write);
  988.     format(line, sizeof(line), "Created=%d\r\n", FuelStationCreated[stationid]); fwrite(handle, line);
  989.     format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", FuelStationPos[stationid][0],
  990.         FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  991.     fwrite(handle, line);
  992.     fclose(handle);
  993. }
  994.  
  995. UpdateFuelStation(stationid, removeold)
  996. {
  997.     if(FuelStationCreated[stationid])
  998.     {
  999.         if(removeold)
  1000.         {
  1001.             Delete3DTextLabel(FuelStationLabel[stationid]);
  1002.         }
  1003.         new labeltext[800];
  1004.         format(labeltext, sizeof(labeltext), "{FFFFFF}Posto de Gasolina\n/{FF0000}gasolina", stationid);
  1005.         FuelStationLabel[stationid] = Create3DTextLabel(labeltext, 0x00BBFFDD, FuelStationPos[stationid][0],
  1006.             FuelStationPos[stationid][1], FuelStationPos[stationid][2]+0.5, 20.0, 0);
  1007.     }
  1008. }
  1009.  
  1010. IsValidFuelStation(stationid)
  1011. {
  1012.     if(stationid < 1 || stationid >= MAX_FUEL_STATIONS) return 0;
  1013.     if(FuelStationCreated[stationid]) return 1;
  1014.     return 0;
  1015. }
  1016.  
  1017. public MainTimer()
  1018. {
  1019.     new string[800];
  1020.     new Float:x, Float:y, Float:z;
  1021.  
  1022.     for(new i=0; i < MAX_PLAYERS; i++)
  1023.     {
  1024.         if(IsPlayerConnected(i))
  1025.         {
  1026.             if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
  1027.             {
  1028.                 new vehicleid = GetPlayerVehicleID(i);
  1029.                 if(!IsBicycle(vehicleid) && Fuel[vehicleid] > 0)
  1030.                   {
  1031.                     if(Fuel[vehicleid] <= 0)
  1032.                     {
  1033.                         ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
  1034.                         GameTextForPlayer(i, "~r~ Sem Combustivel", 3000, 3);
  1035.                         SendClientMessage(i, COLOR_RED, "Veiculo sem combustivel!");
  1036.                     }
  1037.                 }
  1038.             }
  1039.             if(RefuelTime[i] > 0 && GetPVarInt(i, "FuelStation"))
  1040.             {
  1041.                 new vehicleid = GetPlayerVehicleID(i);
  1042.                 Fuel[vehicleid] += 2.0;
  1043.                 RefuelTime[i]--;
  1044.                 if(RefuelTime[i] == 0)
  1045.                 {
  1046.                     if(Fuel[vehicleid] >= 100.0) Fuel[vehicleid] = 100.0;
  1047.                     new stationid = GetPVarInt(i, "FuelStation");
  1048.                     new cost = floatround(Fuel[vehicleid]-GetPVarFloat(i, "Fuel"))*FUEL_PRICE;
  1049.                     if(GetPlayerState(i) != PLAYER_STATE_DRIVER || Fuel[vehicleid] >= 100.0 || GetPlayerMoney(i) < cost
  1050.                     || !IsPlayerInRangeOfPoint(i, 10.0, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]))
  1051.                     {
  1052.                         if(GetPlayerMoney(i) < cost) cost = GetPlayerMoney(i);
  1053.                         GivePlayerMoney(i, -cost);
  1054.                         format(string, sizeof(string), "~r~-$%d", cost);
  1055.                         GameTextForPlayer(i, string, 2000, 3);
  1056.                         format(string, sizeof(string), "Voce pagou {32CD32}R$%d {FFFFFF}para abastecer", cost);
  1057.                         SendClientMessage(i, COLOR_WHITE, string);
  1058.                         SetPVarInt(i, "FuelStation", 0);
  1059.                         SetPVarFloat(i, "Fuel", 0.0);
  1060.                     }
  1061.                     else
  1062.                     {
  1063.                         RefuelTime[i] = 5;
  1064.                         format(string, sizeof(string), "~w~ABASTECENDO...~n~~r~-R$%d", cost);
  1065.                         GameTextForPlayer(i, string, 2000, 3);
  1066.                     }
  1067.                 }
  1068.             }
  1069.             if(TrackCar[i])
  1070.             {
  1071.                 GetVehiclePos(TrackCar[i], x, y, z);
  1072.                 SetPlayerCheckpoint(i, x, y, z, 3);
  1073.             }
  1074.         }
  1075.     }
  1076. }
  1077.  
  1078. public SaveTimer()
  1079. {
  1080.     SaveVehicleIndex++;
  1081.     if(SaveVehicleIndex >= MAX_DVEHICLES) SaveVehicleIndex = 1;
  1082.     if(IsValidVehicle2(SaveVehicleIndex)) SaveVehicle(SaveVehicleIndex);
  1083. }
  1084.  
  1085. public StopAlarm(vehicleid)
  1086. {
  1087.     ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
  1088. }
  1089.  
  1090. /*forward GetVehicleIDFromPlate(Plate[]);
  1091. public GetVehicleIDFromPlate(Plate[])
  1092. {
  1093.     for(new i=1; i < MAX_DVEHICLES; i++)
  1094.     {
  1095.         if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleNumberPlate[i], Plate) == 0)
  1096.         {
  1097.             return i;
  1098.         }
  1099.     }
  1100.     return 0;
  1101. }*/
  1102.  
  1103. public OnFilterScriptInit()
  1104. {
  1105.     LoadVehicles();
  1106.     LoadDealerships();
  1107.     LoadFuelStations();
  1108.  
  1109.     for(new i=0; i < MAX_PLAYERS; i++)
  1110.     {
  1111.         if(IsPlayerConnected(i))
  1112.         {
  1113.             OnPlayerConnect(i);
  1114.         }
  1115.     }
  1116.     for(new i=1; i < MAX_DVEHICLES; i++)
  1117.     {
  1118.         UpdateVehicle(i, 0);
  1119.     }
  1120.     for(new i=1; i < MAX_DEALERSHIPS; i++)
  1121.     {
  1122.         UpdateDealership(i, 0);
  1123.     }
  1124.     for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1125.     {
  1126.         UpdateFuelStation(i, 0);
  1127.     }
  1128.  
  1129.     maintimer = SetTimer("MainTimer", 1000, true);
  1130.     savetimer = SetTimer("SaveTimer", 2222, true);
  1131.     return 1;
  1132. }
  1133.  
  1134. public OnFilterScriptExit()
  1135. {
  1136.     KillTimer(maintimer);
  1137.     KillTimer(savetimer);
  1138.     for(new i=0; i < MAX_PLAYERS; i++)
  1139.     {
  1140.         if(IsPlayerConnected(i))
  1141.         {
  1142.             OnPlayerDisconnect(i, 1);
  1143.         }
  1144.     }
  1145.     for(new i=1; i < MAX_DVEHICLES; i++)
  1146.     {
  1147.         if(VehicleCreated[i])
  1148.         {
  1149.             DestroyVehicle(VehicleID[i]);
  1150.             if(VehicleCreated[i] == VEHICLE_DEALERSHIP)
  1151.             {
  1152.                 Delete3DTextLabel(VehicleLabel[i]);
  1153.             }
  1154.         }
  1155.     }
  1156.     for(new i=1; i < MAX_DEALERSHIPS; i++)
  1157.     {
  1158.         if(DealershipCreated[i])
  1159.         {
  1160.             Delete3DTextLabel(DealershipLabel[i]);
  1161.         }
  1162.     }
  1163.     for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1164.     {
  1165.         if(FuelStationCreated[i])
  1166.         {
  1167.             Delete3DTextLabel(FuelStationLabel[i]);
  1168.         }
  1169.     }
  1170.     return 1;
  1171. }
  1172.  
  1173. public OnPlayerConnect(playerid)
  1174. {
  1175.     RefuelTime[playerid] = 0;
  1176.     TrackCar[playerid] = 0;
  1177.  
  1178.     return 1;
  1179. }
  1180.  
  1181. public OnPlayerDisconnect(playerid, reason)
  1182. {
  1183.     print(".");
  1184.     return 1;
  1185. }
  1186.  
  1187. public OnVehicleSpawn(vehicleid)
  1188. {
  1189.     VehicleSecurity[vehicleid] = 0;
  1190.     new id = GetVehicleID(vehicleid);
  1191.     if(IsValidVehicle2(id))
  1192.     {
  1193.         if(VehicleColor[id][0] >= 0 && VehicleColor[id][1] >= 0)
  1194.             ChangeVehicleColor(vehicleid, VehicleColor[id][0], VehicleColor[id][1]);
  1195.         LinkVehicleToInterior(vehicleid, VehicleInterior[id]);
  1196.         SetVehicleVirtualWorld(vehicleid, VehicleWorld[id]);
  1197.         for(new i=0; i < sizeof(VehicleMods[]); i++)
  1198.         {
  1199.             AddVehicleComponent(vehicleid, VehicleMods[id][i]);
  1200.         }
  1201.         ChangeVehiclePaintjob(vehicleid, VehiclePaintjob[id]);
  1202.         if(VehicleLock[id]) ToggleDoors(vehicleid, VEHICLE_PARAMS_ON);
  1203.         if(VehicleAlarm[id]) VehicleSecurity[vehicleid] = 1;
  1204.     }
  1205.     return 1;
  1206. }
  1207.  
  1208. CMD:ajudav(playerid, params[])
  1209. {
  1210.     new info[512];
  1211.     strcat(info, "/mv  /rebocar  /ejetar  /ejetartodos\n", sizeof(info));
  1212.     strcat(info, "/trancar  /alarme  /gasolina  /mala  /tirarmods  /venderv  /darchaves  /localizarv\n", sizeof(info));
  1213.     if(IsPlayerAdmin(playerid))
  1214.     {
  1215.         strcat(info, "/addv  /editv  /setfuel  /rac (respawnallcars)  /rtc (respawnthiscar)\n", sizeof(info));
  1216.         strcat(info, "/adddealership  /deletedealership  /movedealership  /gotodealership\n", sizeof(info));
  1217.         strcat(info, "/addfuelstation  /deletefuelstation  /movefuelstation  /gotofuelstation", sizeof(info));
  1218.     }
  1219.     ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "MOHH Vehicle System Help", info, "OK", "");
  1220.     return 1;
  1221. }
  1222.  
  1223. CMD:rebocar(playerid, params[])
  1224. {
  1225.     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!!");
  1226.     new vehicleid = GetPlayerVehicleID(playerid);
  1227.     if(IsTrailerAttachedToVehicle(vehicleid))
  1228.     {
  1229.         DetachTrailerFromVehicle(vehicleid);
  1230.         SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Voce parou de rebocar");
  1231.         return 1;
  1232.     }
  1233.     new Float:x, Float:y, Float:z;
  1234.     new Float:dist, Float:closedist=8, closeveh;
  1235.     for(new i=1; i < MAX_VEHICLES; i++)
  1236.     {
  1237.         if(i != vehicleid && GetVehiclePos(i, x, y, z))
  1238.         {
  1239.             dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
  1240.             if(dist < closedist)
  1241.             {
  1242.                 closedist = dist;
  1243.                 closeveh = i;
  1244.             }
  1245.         }
  1246.     }
  1247.     if(!closeveh) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta proximo do veiculo!");
  1248.     AttachTrailerToVehicle(closeveh, vehicleid);
  1249.     SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Voce esta rebocando um veiculo!");
  1250.     return 1;
  1251. }
  1252.  
  1253. CMD:ejetar(playerid, params[])
  1254. {
  1255.     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!");
  1256.     new pid, msg[800];
  1257.     if(sscanf(params, "u", pid)) return SendClientMessage(playerid, COLOR_GREY, "{FF0000}SERVER {FFFFFF}USE: /ejetar [player]");
  1258.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Jogador invalido!");
  1259.     new vehicleid = GetPlayerVehicleID(playerid);
  1260.     if(!IsPlayerInVehicle(pid, vehicleid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}O jogador nao esta no seu veicuz");
  1261.     RemovePlayerFromVehicle(pid);
  1262.     format(msg, sizeof(msg), "{FFFFFF}O dono do veiculo {FF0000}%s {FFFFFF}({FF0000}%d{FFFFFF}) te expulsou", PlayerName(playerid), playerid);
  1263.     SendClientMessage(pid, COLOR_WHITE, msg);
  1264.     format(msg, sizeof(msg), " {FF0000}%s{FFFFFF}({FF0000}%d{FFFFFF}) te expulsou do veiculo dele", PlayerName(pid), pid);
  1265.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1266.     return 1;
  1267. }
  1268.  
  1269. CMD:ejetartodos(playerid, params[])
  1270. {
  1271.     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!");
  1272.     new vehicleid = GetPlayerVehicleID(playerid);
  1273.     new msg[800];
  1274.     format(msg, sizeof(msg), "{FFFFFF}O dono do veiculo {FF0000}%s{FFFFFF}({FF0000}%d{FFFFFF}) te expulsou", PlayerName(playerid), playerid);
  1275.     foreach(new i : Player)
  1276.     {
  1277.         if(IsPlayerConnected(i) && i != playerid && IsPlayerInVehicle(i, vehicleid))
  1278.         {
  1279.             RemovePlayerFromVehicle(i);
  1280.             SendClientMessage(i, COLOR_WHITE, msg);
  1281.         }
  1282.     }
  1283.     SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Expulsou todos os passageiros");
  1284.     return 1;
  1285. }
  1286.  
  1287. CMD:tirarmods(playerid, params[])
  1288. {
  1289.     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!!");
  1290.     new vehicleid = GetPlayerVehicleID(playerid);
  1291.     new id = GetVehicleID(vehicleid);
  1292.     if(GetPlayerVehicleAccess(playerid, id) < 2)
  1293.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Este nao e o seu veículo!");
  1294.     for(new i=0; i < sizeof(VehicleMods[]); i++)
  1295.     {
  1296.         RemoveVehicleComponent(VehicleID[id], GetVehicleComponentInSlot(VehicleID[id], i));
  1297.         VehicleMods[id][i] = 0;
  1298.     }
  1299.     VehiclePaintjob[id] = 255;
  1300.     ChangeVehiclePaintjob(VehicleID[id], 255);
  1301.     SaveVehicle(id);
  1302.     SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Removeu todas as modificacoes");
  1303.     return 1;
  1304. }
  1305.  
  1306. CMD:localizarv(playerid, params[])
  1307. {
  1308.     if(TrackCar[playerid])
  1309.     {
  1310.         TrackCar[playerid] = 0;
  1311.         DisablePlayerCheckpoint(playerid);
  1312.         SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Voce não esta mais rastreando seu veiculo");
  1313.         return 1;
  1314.     }
  1315.     new playername[24];
  1316.     GetPlayerName(playerid, playername, sizeof(playername));
  1317.     new info[256], bool:found;
  1318.     for(new i=1; i < MAX_DVEHICLES; i++)
  1319.     {
  1320.         if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  1321.         {
  1322.             found = true;
  1323.             format(info, sizeof(info), "{FF0000}- {FFFFFF}%s ID: %d  Name: %s\n", info, i, VehicleNames[VehicleModel[i]-400]);
  1324.         }
  1325.     }
  1326.     if(!found) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem nenhum veiculo!");
  1327.     ShowPlayerDialog(playerid, DIALOG_FINDVEHICLE, DIALOG_STYLE_LIST, "Selecione um veiculo", info, "Localizar", "Cancel");
  1328.     return 1;
  1329. }
  1330.  
  1331. CMD:mv(playerid, params[])
  1332. {
  1333.     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!!");
  1334.     new vehicleid = GetPlayerVehicleID(playerid);
  1335.     if(IsBicycle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!!");
  1336.     new id = GetVehicleID(vehicleid);
  1337.     if(GetPlayerVehicleAccess(playerid, id) < 1)
  1338.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem as chaves deste veiculo!");
  1339.     SetPVarInt(playerid, "DialogValue1", id);
  1340.     ShowDialog(playerid, DIALOG_VEHICLE);
  1341.     return 1;
  1342. }
  1343.  
  1344. CMD:venderv(playerid, params[])
  1345. {
  1346.     new pid, id, price, msg[128];
  1347.     if(sscanf(params, "udd", pid, id, price)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /venderv [player] [vehicleid] [price]");
  1348.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Jogador Invalido!");
  1349.     if(GetPlayerVehicleAccess(playerid, id) < 2)
  1350.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Você nao e o dono deste veiculo!");
  1351.     if(price < 1) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Valor invalido!!");
  1352.     if(!PlayerToPlayer(playerid, pid, 10.0)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Jogador nao esta proximo!");
  1353.     SetPVarInt(pid, "DialogValue1", playerid);
  1354.     SetPVarInt(pid, "DialogValue2", id);
  1355.     SetPVarInt(pid, "DialogValue3", price);
  1356.     ShowDialog(pid, DIALOG_VEHICLE_SELL);
  1357.     format(msg, sizeof(msg), "{FFFFFF}Ofereceu a {FF0000}%s{FFFFFF}({FF0000}%d{FFFFFF}) comprar seu veiculo por {32CD32}R$%d", PlayerName(pid), pid, price);
  1358.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1359.     return 1;
  1360. }
  1361.  
  1362. CMD:darchaves(playerid, params[])
  1363. {
  1364.     new pid, id, msg[128];
  1365.     if(sscanf(params, "ud", pid, id)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /darchaves [player] [vehicleid]");
  1366.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Jogador Invalido!");
  1367.     if(!IsValidVehicle2(id)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}ID invalido!");
  1368.     if(GetPlayerVehicleAccess(playerid, id) < 2)
  1369.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao e o dono deste veiculo!");
  1370.     if(!PlayerToPlayer(playerid, pid, 10.0)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Jogador nao esta proximo!");
  1371.     SetPVarInt(pid, "CarKeys", id);
  1372.     format(msg, sizeof(msg), "{FFFFFF}Deu as chaves do seu veiculo para {FF0000}%s {FFFFFF}({FF0000}%d{FFFFFF})", PlayerName(pid), pid);
  1373.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1374.     format(msg, sizeof(msg), "{FF0000}%s {FFFFFF}({FF0000}%d{FFFFFF}) te deu as chaves do veiculo dele", PlayerName(playerid), playerid);
  1375.     SendClientMessage(pid, COLOR_WHITE, msg);
  1376.     return 1;
  1377. }
  1378.  
  1379. CMD:trancar(playerid, params[])
  1380. {
  1381.     new vehicleid;
  1382.     if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1383.     {
  1384.         vehicleid = GetPlayerVehicleID(playerid);
  1385.     }
  1386.     else
  1387.     {
  1388.         vehicleid = GetClosestVehicle(playerid);
  1389.         if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  1390.     }
  1391.     if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta proximo do veiculo!");
  1392.     new id = GetVehicleID(vehicleid);
  1393.     if(!IsValidVehicle2(id)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem as chaves deste veiculo!");
  1394.     if(GetPlayerVehicleAccess(playerid, id) < 2)
  1395.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem as chaves deste veiculo!");
  1396.     new engine, lights, alarm, doors, bonnet, boot, objective;
  1397.     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1398.     if(doors == 1)
  1399.     {
  1400.         doors = 0;
  1401.         VehicleLock[id] = 0;
  1402.         GameTextForPlayer(playerid, "~g~ABERTO", 3000, 6);
  1403.     }
  1404.     else
  1405.     {
  1406.         doors = 1;
  1407.         VehicleLock[id] = 1;
  1408.         GameTextForPlayer(playerid, "~r~TRANCADO", 3000, 6);
  1409.     }
  1410.     SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1411.     SaveVehicle(id);
  1412.     return 1;
  1413. }
  1414.  
  1415. CMD:alarme(playerid, params[])
  1416. {
  1417.     new vehicleid;
  1418.     if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1419.     {
  1420.         vehicleid = GetPlayerVehicleID(playerid);
  1421.     }
  1422.     else
  1423.     {
  1424.         vehicleid = GetClosestVehicle(playerid);
  1425.         if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  1426.     }
  1427.     if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta proximo do veiculo!");
  1428.     new id = GetVehicleID(vehicleid);
  1429.     if(!IsValidVehicle2(id)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem as chaves deste veiculo!");
  1430.     if(GetPlayerVehicleAccess(playerid, id) < 2)
  1431.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem as chaves deste veiculo!");
  1432.     if(VehicleSecurity[vehicleid] == 0)
  1433.     {
  1434.         VehicleSecurity[vehicleid] = 1;
  1435.         VehicleAlarm[id] = 1;
  1436.         GameTextForPlayer(playerid, "~g~ALARME LIGADO", 3000, 6);
  1437.     }
  1438.     else
  1439.     {
  1440.         ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
  1441.         VehicleSecurity[vehicleid] = 0;
  1442.         VehicleAlarm[id] = 0;
  1443.         GameTextForPlayer(playerid, "~r~ALARME DESLIGADO", 3000, 6);
  1444.     }
  1445.     SaveVehicle(id);
  1446.     return 1;
  1447. }
  1448.  
  1449. CMD:mala(playerid, params[])
  1450. {
  1451.     new vehicleid = GetClosestVehicle(playerid);
  1452.     if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  1453.     if(!vehicleid || IsBicycle(vehicleid) || IsPlayerInAnyVehicle(playerid))
  1454.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Nao esta proximo do veiculo!");
  1455.     new id = GetVehicleID(vehicleid);
  1456.     if(!IsValidVehicle2(id)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem as chaves deste veiculo!");
  1457.     if(GetPlayerVehicleAccess(playerid, id) < 2)
  1458.         return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao tem as chaves deste veiculo!");
  1459.     ToggleBoot(vehicleid, VEHICLE_PARAMS_ON);
  1460.     SetPVarInt(playerid, "DialogValue1", id);
  1461.     ShowDialog(playerid, DIALOG_TRUNK);
  1462.     return 1;
  1463. }
  1464.  
  1465. CMD:gasolina(playerid, params[])
  1466. {
  1467.     for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1468.     {
  1469.         if(FuelStationCreated[i])
  1470.         {
  1471.             if(IsPlayerInRangeOfPoint(playerid, 15.0, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]))
  1472.             {
  1473.                 SetPVarInt(playerid, "FuelStation", i);
  1474.                 ShowDialog(playerid, DIALOG_FUEL);
  1475.                 return 1;
  1476.             }
  1477.         }
  1478.     }
  1479.     SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Voce nao esta em um posto de combustível!");
  1480.     return 1;
  1481. }
  1482.  
  1483. CMD:rtc(playerid, params[])
  1484. {
  1485.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1486.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
  1487.     SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  1488.     SendClientMessage(playerid, COLOR_WHITE, "Vehicle respawned");
  1489.     return 1;
  1490. }
  1491.  
  1492. CMD:rac(playerid, params[])
  1493. {
  1494.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1495.     new bool:vehicleused[MAX_VEHICLES];
  1496.     for(new i=0; i < MAX_PLAYERS; i++)
  1497.     {
  1498.         if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
  1499.         {
  1500.             vehicleused[GetPlayerVehicleID(i)] = true;
  1501.         }
  1502.     }
  1503.     for(new i=1; i < MAX_VEHICLES; i++)
  1504.     {
  1505.         if(!vehicleused[i])
  1506.         {
  1507.             SetVehicleToRespawn(i);
  1508.         }
  1509.     }
  1510.     new msg[128];
  1511.     format(msg, sizeof(msg), "Admin %s (%d) has respawned all unused vehicles", PlayerName(playerid), playerid);
  1512.     SendClientMessageToAll(COLOR_YELLOW, msg);
  1513.     return 1;
  1514. }
  1515.  
  1516. CMD:setfuel(playerid, params[])
  1517. {
  1518.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1519.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
  1520.     new amount, msg[128];
  1521.     if(sscanf(params, "d", amount)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /setfuel [amount]");
  1522.     if(amount < 0 || amount > 100) return SendClientMessage(playerid, COLOR_RED, "Invalid amount! (0-100)");
  1523.     Fuel[GetPlayerVehicleID(playerid)] = amount;
  1524.     format(msg, sizeof(msg), "You have set your vehicle fuel to %d", amount);
  1525.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1526.     return 1;
  1527. }
  1528.  
  1529. CMD:addv(playerid, params[])
  1530. {
  1531.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1532.     if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  1533.     new model[32], modelid, dealerid, color1, color2, price;
  1534.     if(sscanf(params, "dsddd", dealerid, model, color1, color2, price))
  1535.         return SendClientMessage(playerid, COLOR_GREY, "USAGE: /addv [dealerid] [model] [color1] [color2] [price]");
  1536.     if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  1537.     if(IsNumeric(model)) modelid = strval(model);
  1538.     else modelid = GetVehicleModelIDFromName(model);
  1539.     if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid model ID!");
  1540.     if(color1 < 0 || color2 < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid color!");
  1541.     if(price < 0) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Valor invalido!!");
  1542.     new Float:X, Float:Y, Float:Z, Float:angle;
  1543.     GetPlayerPos(playerid, X, Y, Z);
  1544.     GetPlayerFacingAngle(playerid, angle);
  1545.     X += floatmul(floatsin(-angle, degrees), 4.0);
  1546.     Y += floatmul(floatcos(-angle, degrees), 4.0);
  1547.     for(new i=1; i < MAX_DVEHICLES; i++)
  1548.     {
  1549.         if(!VehicleCreated[i])
  1550.         {
  1551.             new msg[128];
  1552.             VehicleCreated[i] = VEHICLE_DEALERSHIP;
  1553.             VehicleModel[i] = modelid;
  1554.             VehiclePos[i][0] = X;
  1555.             VehiclePos[i][1] = Y;
  1556.             VehiclePos[i][2] = Z;
  1557.             VehiclePos[i][3] = angle+90.0;
  1558.             VehicleColor[i][0] = color1;
  1559.             VehicleColor[i][1] = color2;
  1560.             VehicleInterior[i] = GetPlayerInterior(playerid);
  1561.             VehicleWorld[i] = GetPlayerVirtualWorld(playerid);
  1562.             VehicleValue[i] = price;
  1563.             valstr(VehicleOwner[i], dealerid);
  1564.             VehicleNumberPlate[i] = DEFAULT_NUMBER_PLATE;
  1565.             for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  1566.             {
  1567.                 VehicleTrunk[i][d][0] = 0;
  1568.                 VehicleTrunk[i][d][1] = 0;
  1569.             }
  1570.             for(new d=0; d < sizeof(VehicleMods[]); d++)
  1571.             {
  1572.                 VehicleMods[i][d] = 0;
  1573.             }
  1574.             VehiclePaintjob[i] = 255;
  1575.             VehicleLock[i] = 0;
  1576.             VehicleAlarm[i] = 0;
  1577.             UpdateVehicle(i, 0);
  1578.             SaveVehicle(i);
  1579.             format(msg, sizeof(msg), "Added vehicle id %d to dealerid %d", i, dealerid);
  1580.             SendClientMessage(playerid, COLOR_WHITE, msg);
  1581.             return 1;
  1582.         }
  1583.     }
  1584.     SendClientMessage(playerid, COLOR_RED, "Can't add any more vehicles!");
  1585.     return 1;
  1586. }
  1587.  
  1588. CMD:editv(playerid, params[])
  1589. {
  1590.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1591.     if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1592.     {
  1593.         new id = GetVehicleID(GetPlayerVehicleID(playerid));
  1594.         if(!IsValidVehicle2(id)) return SendClientMessage(playerid, COLOR_RED, "This is not a dynamic vehicle!");
  1595.         SetPVarInt(playerid, "DialogValue1", id);
  1596.         ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1597.         return 1;
  1598.     }
  1599.     new vehicleid;
  1600.     if(sscanf(params, "d", vehicleid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /editv [vehicleid]");
  1601.     if(!IsValidVehicle2(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}ID invalido!");
  1602.     SetPVarInt(playerid, "DialogVal2ue1", vehicleid);
  1603.     ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1604.     return 1;
  1605. }
  1606.  
  1607. CMD:adddealership(playerid, params[])
  1608. {
  1609.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1610.     if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  1611.     for(new i=1; i < MAX_DEALERSHIPS; i++)
  1612.     {
  1613.         if(!DealershipCreated[i])
  1614.         {
  1615.             new msg[128];
  1616.             DealershipCreated[i] = 1;
  1617.             GetPlayerPos(playerid, DealershipPos[i][0], DealershipPos[i][1], DealershipPos[i][2]);
  1618.             UpdateDealership(i, 0);
  1619.             SaveDealership(i);
  1620.             format(msg, sizeof(msg), "Added dealership id %d", i);
  1621.             SendClientMessage(playerid, COLOR_WHITE, msg);
  1622.             return 1;
  1623.         }
  1624.     }
  1625.     SendClientMessage(playerid, COLOR_RED, "Can't add any more dealerships!");
  1626.     return 1;
  1627. }
  1628.  
  1629. CMD:deletedealership(playerid, params[])
  1630. {
  1631.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1632.     new dealerid, msg[128];
  1633.     if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletedealership [dealerid]");
  1634.     if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  1635.     for(new i=1; i < MAX_DVEHICLES; i++)
  1636.     {
  1637.         if(VehicleCreated[i] == VEHICLE_DEALERSHIP && strval(VehicleOwner[i]) == dealerid)
  1638.         {
  1639.             DestroyVehicle(VehicleID[i]);
  1640.             Delete3DTextLabel(VehicleLabel[i]);
  1641.             VehicleCreated[i] = 0;
  1642.         }
  1643.     }
  1644.     DealershipCreated[dealerid] = 0;
  1645.     Delete3DTextLabel(DealershipLabel[dealerid]);
  1646.     SaveDealership(dealerid);
  1647.     format(msg, sizeof(msg), "Deleted dealership id %d", dealerid);
  1648.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1649.     return 1;
  1650. }
  1651.  
  1652. CMD:movedealership(playerid, params[])
  1653. {
  1654.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1655.     new dealerid, msg[128];
  1656.     if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movedealership [dealerid]");
  1657.     if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  1658.     GetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  1659.     UpdateDealership(dealerid, 1);
  1660.     SaveDealership(dealerid);
  1661.     format(msg, sizeof(msg), "Moved dealership id %d here", dealerid);
  1662.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1663.     return 1;
  1664. }
  1665.  
  1666. CMD:gotodealership(playerid, params[])
  1667. {
  1668.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1669.     new dealerid, msg[128];
  1670.     if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotodealership [dealerid]");
  1671.     if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Invalid dealerid!");
  1672.     SetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  1673.     format(msg, sizeof(msg), "Teleported to dealership id %d", dealerid);
  1674.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1675.     return 1;
  1676. }
  1677.  
  1678. CMD:addfuelstation(playerid, params[])
  1679. {
  1680.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1681.     if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "You can't use this command now!");
  1682.     for(new i=1; i < MAX_FUEL_STATIONS; i++)
  1683.     {
  1684.         if(!FuelStationCreated[i])
  1685.         {
  1686.             new msg[128];
  1687.             FuelStationCreated[i] = 1;
  1688.             GetPlayerPos(playerid, FuelStationPos[i][0], FuelStationPos[i][1], FuelStationPos[i][2]);
  1689.             UpdateFuelStation(i, 0);
  1690.             SaveFuelStation(i);
  1691.             format(msg, sizeof(msg), "Added fuel station id %d", i);
  1692.             SendClientMessage(playerid, COLOR_WHITE, msg);
  1693.             return 1;
  1694.         }
  1695.     }
  1696.     SendClientMessage(playerid, COLOR_RED, "Can't add any more fuel stations!");
  1697.     return 1;
  1698. }
  1699.  
  1700. CMD:deletefuelstation(playerid, params[])
  1701. {
  1702.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1703.     new stationid, msg[128];
  1704.     if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /deletefuelstation [stationid]");
  1705.     if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  1706.     FuelStationCreated[stationid] = 0;
  1707.     Delete3DTextLabel(FuelStationLabel[stationid]);
  1708.     SaveFuelStation(stationid);
  1709.     format(msg, sizeof(msg), "Deleted fuel station id %d", stationid);
  1710.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1711.     return 1;
  1712. }
  1713.  
  1714. CMD:movefuelstation(playerid, params[])
  1715. {
  1716.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1717.     new stationid, msg[128];
  1718.     if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /movefuelstation [stationid]");
  1719.     if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  1720.     GetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  1721.     UpdateFuelStation(stationid, 1);
  1722.     SaveFuelStation(stationid);
  1723.     format(msg, sizeof(msg), "Moved fuel station id %d here", stationid);
  1724.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1725.     return 1;
  1726. }
  1727.  
  1728. CMD:gotofuelstation(playerid, params[])
  1729. {
  1730.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FF0000}SERVER {FFFFFF}Sem premissao!");
  1731.     new stationid, msg[128];
  1732.     if(sscanf(params, "d", stationid)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotofuelstation [stationid]");
  1733.     if(!IsValidFuelStation(stationid)) return SendClientMessage(playerid, COLOR_RED, "Invalid stationid!");
  1734.     SetPlayerPos(playerid, FuelStationPos[stationid][0], FuelStationPos[stationid][1], FuelStationPos[stationid][2]);
  1735.     format(msg, sizeof(msg), "Teleported to fuel station id %d", stationid);
  1736.     SendClientMessage(playerid, COLOR_WHITE, msg);
  1737.     return 1;
  1738. }
  1739.  
  1740. public OnPlayerCommandText(playerid, cmdtext[])
  1741. {
  1742.     new pos, funcname[32];
  1743.     while(cmdtext[++pos] > ' ')
  1744.     {
  1745.         funcname[pos-1] = tolower(cmdtext[pos]);
  1746.     }
  1747.     strins(funcname, "cmd_", 0, sizeof(funcname));
  1748.     while (cmdtext[pos] == ' ') pos++;
  1749.     if(!cmdtext[pos])
  1750.     {
  1751.         return CallLocalFunction(funcname, "is", playerid, "\1");
  1752.     }
  1753.     return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  1754. }
  1755.  
  1756. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  1757. {
  1758.     if(!ispassenger)
  1759.     {
  1760.         new id = GetVehicleID(vehicleid);
  1761.         if(IsValidVehicle2(id) && VehicleCreated[id] == VEHICLE_PLAYER)
  1762.         {
  1763.             new msg[128];
  1764.             format(msg, sizeof(msg), "Veiculo de {FF0000}%s", VehicleOwner[id]);
  1765.             SendClientMessage(playerid, COLOR_GREY, msg);
  1766.         }
  1767.     }
  1768.     return 1;
  1769. }
  1770.  
  1771. public OnPlayerStateChange(playerid, newstate, oldstate)
  1772. {
  1773.     if(IsPlayerInAnyVehicle(playerid) && !IsBicycle(GetPlayerVehicleID(playerid)))
  1774.     {
  1775.         new vehicleid = GetPlayerVehicleID(playerid);
  1776.         if(VehicleSecurity[vehicleid] == 1)
  1777.         {
  1778.             ToggleAlarm(vehicleid, VEHICLE_PARAMS_ON);
  1779.             SetTimerEx("StopAlarm", ALARM_TIME, false, "d", vehicleid);
  1780.         }
  1781.     }
  1782.     else
  1783.     {
  1784.         //lol leave this as it is
  1785.     }
  1786.     if(newstate == PLAYER_STATE_DRIVER)
  1787.     {
  1788.         new vehicleid = GetPlayerVehicleID(playerid);
  1789.         new id = GetVehicleID(vehicleid);
  1790.         if(IsValidVehicle2(id))
  1791.         {
  1792.             if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  1793.             {
  1794.                 SetPVarInt(playerid, "DialogValue1", id);
  1795.                 ShowDialog(playerid, DIALOG_VEHICLE_BUY);
  1796.                 return 1;
  1797.             }
  1798.         }
  1799.         if(IsBicycle(vehicleid))
  1800.         {
  1801.             ToggleEngine(vehicleid, VEHICLE_PARAMS_ON);
  1802.         }
  1803.         if(Fuel[vehicleid] <= 0)
  1804.         {
  1805.             ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
  1806.         }
  1807.     }
  1808.     return 1;
  1809. }
  1810.  
  1811. public OnVehicleMod(playerid, vehicleid, componentid)
  1812. {
  1813.     new id = GetVehicleID(vehicleid);
  1814.     if(IsValidVehicle2(id))
  1815.     {
  1816.         VehicleMods[id][GetVehicleComponentType(componentid)] = componentid;
  1817.         SaveVehicle(id);
  1818.     }
  1819.     return 1;
  1820. }
  1821.  
  1822. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1823. {
  1824.     new id = GetVehicleID(vehicleid);
  1825.     if(IsValidVehicle2(id))
  1826.     {
  1827.         VehiclePaintjob[id] = paintjobid;
  1828.         SaveVehicle(id);
  1829.     }
  1830.     return 1;
  1831. }
  1832.  
  1833. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  1834. {
  1835.     new id = GetVehicleID(vehicleid);
  1836.     if(IsValidVehicle2(id))
  1837.     {
  1838.         VehicleColor[id][0] = color1;
  1839.         VehicleColor[id][1] = color2;
  1840.         SaveVehicle(id);
  1841.     }
  1842.     return 1;
  1843. }
  1844.  
  1845. ShowDialog(playerid, dialogid)
  1846. {
  1847.     switch(dialogid)
  1848.     {
  1849.         case DIALOG_VEHICLE:
  1850.         {
  1851.             new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1852.             new caption[32], info[256];
  1853.             format(caption, sizeof(caption), "Veiculo ID %d", vehicleid);
  1854.             strcat(info, "{FF0000}- {FFFFFF}Motor\n{FF0000}- {FFFFFF}Luzes\n{FF0000}- {FFFFFF}Capo\n{FF0000}- {FFFFFF}Porta Malas", sizeof(info));
  1855.             strcat(info, "\n{FF0000}- {FFFFFF}Tanque de Combustivel", sizeof(info));
  1856.             if(GetPlayerVehicleAccess(playerid, vehicleid) >= 2)
  1857.             {
  1858.                 new value = VehicleValue[vehicleid]/2;
  1859.                 format(info, sizeof(info), "{FF0000}- {FFFFFF}%s\nVender veiculo ($%d)\n{FF0000}- {FFFFFF}Estacionar veiculo\n", info, value); //PLACA
  1860.             }
  1861.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, info, "Selecionar", "Sair");
  1862.         }
  1863.         case DIALOG_VEHICLE_BUY:
  1864.         {
  1865.             new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1866.             new caption[32], info[256];
  1867.             format(caption, sizeof(caption), "Veiculo ID %d", vehicleid);
  1868.             format(info, sizeof(info), "Este veiculo esta a venda({32CD32}R$%d{FFFFFF})\nDeseja comprar?", VehicleValue[vehicleid]);
  1869.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, info, "Sim", "Nao");
  1870.         }
  1871.         case DIALOG_VEHICLE_SELL:
  1872.         {
  1873.             new targetid = GetPVarInt(playerid, "DialogValue1");
  1874.             new id = GetPVarInt(playerid, "DialogValue2");
  1875.             new price = GetPVarInt(playerid, "DialogValue3");
  1876.             new info[500];
  1877.             format(info, sizeof(info), "{FF0000}%s {FFFFFF}({FF0000}%d{FFFFFF}) quer vender para voce um {FF0000}%s{FFFFFF} por {32CD32}$%d.", PlayerName(targetid), targetid,
  1878.                 VehicleNames[VehicleModel[id]-400], price);
  1879.             strcat(info, "\n\nDeseja comprar?", sizeof(info));
  1880.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar Veiculo", info, "Sim", "Nao");
  1881.         }
  1882.         case DIALOG_TRUNK:
  1883.         {
  1884.             new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1885.             new name[32], info[256];
  1886.             for(new i=0; i < sizeof(VehicleTrunk[]); i++)
  1887.             {
  1888.                 if(VehicleTrunk[vehicleid][i][1] > 0)
  1889.                 {
  1890.                     GetWeaponName(VehicleTrunk[vehicleid][i][0], name, sizeof(name));
  1891.                     format(info, sizeof(info), "%s%d. %s (%d)\n", info, i+1, name, VehicleTrunk[vehicleid][i][1]);
  1892.                 }
  1893.                 else
  1894.                 {
  1895.                     format(info, sizeof(info), "%s%d. Esvaziar\n", info, i+1);
  1896.                 }
  1897.             }
  1898.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Porta Malas", info, "Selecionar", "Sair");
  1899.         }
  1900.         case DIALOG_TRUNK_ACTION:
  1901.         {
  1902.             new info[128];
  1903.             strcat(info, "{FF0000}- {FFFFFF}Colocar\n{FF0000}- {FFFFFF}Retirar", sizeof(info));
  1904.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Porta Malas", info, "Selecionar", "Sair");
  1905.         }
  1906.         case DIALOG_VEHICLE_PLATE:
  1907.         {
  1908.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Editar Placa", "Digite a nova placa:", "Mudar", "Voltar");
  1909.         }
  1910.         case DIALOG_FUEL:
  1911.         {
  1912.             new info[500];
  1913.             strcat(info, "{FF0000}- {FFFFFF}Reabastecer veículo ({32CD32}R$" #FUEL_PRICE "{FFFFFF})\n{FF0000}- {FFFFFF}Galao de Gasolina  ({32CD32}$" #GAS_CAN_PRICE "{FFFFFF})", sizeof(info));
  1914.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Posto de gasolina", info, "OK", "Sair");
  1915.         }
  1916.         case DIALOG_EDITVEHICLE:
  1917.         {
  1918.             new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1919.             new caption[32], info[800];
  1920.             format(caption, sizeof(caption), "Editar ID do veiculo %d", vehicleid);
  1921.             format(info, sizeof(info), "{FF0000}- {FFFFFF}1. Valor: [$%d]\n{FF0000}- {FFFFFF}2. Modelo: [%d (%s)]\n{FF0000}- {FFFFFF}3. Cors: [%d]  [%d]\n{FF0000}- {FFFFFF}4. Placa de carro: [%s]",
  1922.                 VehicleValue[vehicleid], VehicleModel[vehicleid], VehicleNames[VehicleModel[vehicleid]-400],
  1923.                 VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], VehicleNumberPlate[vehicleid]);
  1924.             strcat(info, "\n{FF0000}- {FFFFFF}5. Excluir veiculo\n{FF0000}- {FFFFFF}6. Estacionar\n{FF0000}- {FFFFFF}7. Ir para veiculo", sizeof(info));
  1925.             strcat(info, "\n\n{FF0000}- {FFFFFF}Entrar: [nap] [valor1] [valor2]", sizeof(info));
  1926.             ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, info, "OK", "Salir");
  1927.         }
  1928.     }
  1929. }
  1930.  
  1931. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1932. {
  1933.     if(dialogid == DIALOG_ERROR)
  1934.     {
  1935.         ShowDialog(playerid, DialogReturn[playerid]);
  1936.         return 1;
  1937.     }
  1938.     DialogReturn[playerid] = dialogid;
  1939.     if(dialogid == DIALOG_VEHICLE)
  1940.     {
  1941.         if(response)
  1942.         {
  1943.             switch(listitem)
  1944.             {
  1945.                 case 0:
  1946.                 {
  1947.                     new vehicleid = GetPlayerVehicleID(playerid);
  1948.                     new engine, lights, alarm, doors, bonnet, boot, objective;
  1949.                     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1950.                     if(engine == 0 && Fuel[vehicleid] <= 0)
  1951.                     {
  1952.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Este veiculo esta sem gasolina!");
  1953.                         return 1;
  1954.                     }
  1955.                     if(engine == 1) { engine = 0; lights = 0; }
  1956.                     else { engine = 1; lights = 1; }
  1957.                     SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1958.                 }
  1959.                 case 1:
  1960.                 {
  1961.                     new vehicleid = GetPlayerVehicleID(playerid);
  1962.                     new engine, lights, alarm, doors, bonnet, boot, objective;
  1963.                     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1964.                     if(lights == 1) lights = 0; else lights = 1;
  1965.                     SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1966.                 }
  1967.                 case 2:
  1968.                 {
  1969.                     new vehicleid = GetPlayerVehicleID(playerid);
  1970.                     new engine, lights, alarm, doors, bonnet, boot, objective;
  1971.                     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1972.                     if(bonnet == 1) bonnet = 0; else bonnet = 1;
  1973.                     SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1974.                 }
  1975.                 case 3:
  1976.                 {
  1977.                     new vehicleid = GetPlayerVehicleID(playerid);
  1978.                     new engine, lights, alarm, doors, bonnet, boot, objective;
  1979.                     GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1980.                     if(boot == 1) boot = 0; else boot = 1;
  1981.                     SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1982.                 }
  1983.                 case 4:
  1984.                 {
  1985.                     if(!GetPVarInt(playerid, "GasCan"))
  1986.                     {
  1987.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Nao tem um galao!");
  1988.                         return 1;
  1989.                     }
  1990.                     new vehicleid = GetPlayerVehicleID(playerid);
  1991.                     if(Fuel[vehicleid] < 80.0) Fuel[vehicleid] += 20.0;
  1992.                     else Fuel[vehicleid] = 100.0;
  1993.                     SetPVarInt(playerid, "GasCan", 0);
  1994.                     SendClientMessage(playerid, COLOR_WHITE, "Colocou 20L de gasolina");
  1995.                 }
  1996.                 case 5:
  1997.                 {
  1998.                     new id = GetPVarInt(playerid, "DialogValue1");
  1999.                     if(GetPlayerVehicleAccess(playerid, id) < 2)
  2000.                     {
  2001.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Voce nao e o dono deste veiculo!");
  2002.                         return 1;
  2003.                     }
  2004.                     new msg[128];
  2005.                     VehicleCreated[id] = 0;
  2006.                     new money2 = VehicleValue[id]/2;
  2007.                     GivePlayerMoney(playerid, money2);
  2008.                     format(msg, sizeof(msg), "{FFFFFF}Vendeu seu veiculo por {32CD32}R$%d", money2);
  2009.                     SendClientMessage(playerid, COLOR_WHITE, msg);
  2010.                     RemovePlayerFromVehicle(playerid);
  2011.                     DestroyVehicle(VehicleID[id]);
  2012.                     SaveVehicle(id);
  2013.                 }
  2014.                 case 6:
  2015.                 {
  2016.                     new vehicleid = GetPVarInt(playerid, "DialogValue1");
  2017.                     if(GetPlayerVehicleAccess(playerid, vehicleid) < 2)
  2018.                     {
  2019.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Voce nao e o dono deste veiculo!");
  2020.                         return 1;
  2021.                     }
  2022.                     GetVehiclePos(VehicleID[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1], VehiclePos[vehicleid][2]);
  2023.                     GetVehicleZAngle(VehicleID[vehicleid], VehiclePos[vehicleid][3]);
  2024.                     VehicleInterior[vehicleid] = GetPlayerInterior(playerid);
  2025.                     VehicleWorld[vehicleid] = GetPlayerVirtualWorld(playerid);
  2026.                     SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Estaciono este veiculo aqui");
  2027.                     UpdateVehicle(vehicleid, 1);
  2028.                     PutPlayerInVehicle(playerid, VehicleID[vehicleid], 0);
  2029.                     SaveVehicle(vehicleid);
  2030.                 }
  2031.                 case 7:
  2032.                 {
  2033.                     ShowDialog(playerid, DIALOG_VEHICLE_PLATE);
  2034.                 }
  2035.             }
  2036.         }
  2037.         return 1;
  2038.     }
  2039.     if(dialogid == DIALOG_VEHICLE_BUY)
  2040.     {
  2041.         if(response)
  2042.         {
  2043.             if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
  2044.             {
  2045.                 ShowErrorDialog(playerid, "Estaciono este veiculo aqui " #MAX_PLAYER_VEHICLES );
  2046.                 return 1;
  2047.             }
  2048.             new id = GetPVarInt(playerid, "DialogValue1");
  2049.             if(GetPlayerMoney(playerid) < VehicleValue[id])
  2050.             {
  2051.                 ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Dinheiro insuficiente!");
  2052.                 return 1;
  2053.             }
  2054.             new freeid = GetFreeVehicleID();
  2055.             if(!freeid)
  2056.             {
  2057.                 ShowErrorDialog(playerid, "Concesionaria de veiculos agotada!");
  2058.                 return 1;
  2059.             }
  2060.             GivePlayerMoney(playerid, -VehicleValue[id]);
  2061.             new dealerid = strval(VehicleOwner[id]);
  2062.             VehicleCreated[freeid] = VEHICLE_PLAYER;
  2063.             VehicleModel[freeid] = VehicleModel[id];
  2064.             VehiclePos[freeid] = DealershipPos[dealerid];
  2065.             VehicleColor[freeid] = VehicleColor[id];
  2066.             VehicleInterior[freeid] = VehicleInterior[id];
  2067.             VehicleWorld[freeid] = VehicleWorld[id];
  2068.             VehicleValue[freeid] = VehicleValue[id];
  2069.             GetPlayerName(playerid, VehicleOwner[freeid], sizeof(VehicleOwner[]));
  2070.             VehicleNumberPlate[freeid] = DEFAULT_NUMBER_PLATE;
  2071.             for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  2072.             {
  2073.                 VehicleTrunk[freeid][d][0] = 0;
  2074.                 VehicleTrunk[freeid][d][1] = 0;
  2075.             }
  2076.             for(new d=0; d < sizeof(VehicleMods[]); d++)
  2077.             {
  2078.                 VehicleMods[freeid][d] = 0;
  2079.             }
  2080.             VehiclePaintjob[freeid] = 255;
  2081.             VehicleLock[freeid] = 0;
  2082.             VehicleAlarm[freeid] = 0;
  2083.             UpdateVehicle(freeid, 0);
  2084.             SaveVehicle(freeid);
  2085.             new msg[128];
  2086.             format(msg, sizeof(msg), "{FFFFFF}Comprou este veiculo por {FF0000}R$%d", VehicleValue[id]);
  2087.             SendClientMessage(playerid, COLOR_WHITE, msg);
  2088.         }
  2089.         else
  2090.         {
  2091.             new id = GetPVarInt(playerid, "DialogValue1");
  2092.             if(GetPlayerVehicleAccess(playerid, id) < 1)
  2093.             {
  2094.                 RemovePlayerFromVehicle(playerid);
  2095.             }
  2096.         }
  2097.         return 1;
  2098.     }
  2099.     if(dialogid == DIALOG_VEHICLE_SELL)
  2100.     {
  2101.         if(response)
  2102.         {
  2103.             if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
  2104.             {
  2105.                 ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}No pode comprar mas veiculos! Maximo: " #MAX_PLAYER_VEHICLES );
  2106.                 return 1;
  2107.             }
  2108.             new targetid = GetPVarInt(playerid, "DialogValue1");
  2109.             new id = GetPVarInt(playerid, "DialogValue2");
  2110.             new price = GetPVarInt(playerid, "DialogValue3");
  2111.             if(GetPlayerMoney(playerid) < price)
  2112.             {
  2113.                 ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Dinheiro insuficiente!");
  2114.                 return 1;
  2115.             }
  2116.             new msg[128];
  2117.             GetPlayerName(playerid, VehicleOwner[id], sizeof(VehicleOwner[]));
  2118.             GivePlayerMoney(playerid, -price);
  2119.             GivePlayerMoney(targetid, price);
  2120.             SaveVehicle(id);
  2121.             format(msg, sizeof(msg), "Compro este veiculo por {FF0000}R$%d", price);
  2122.             SendClientMessage(playerid, COLOR_WHITE, msg);
  2123.             format(msg, sizeof(msg), "{FF0000}%s {FFFFFF}({FF0000}%d{FFFFFF}) aceitou sua oferta!", PlayerName(playerid), playerid);
  2124.             SendClientMessage(targetid, COLOR_WHITE, msg);
  2125.         }
  2126.         else
  2127.         {
  2128.             new targetid = GetPVarInt(playerid, "DialogValue1");
  2129.             new msg[128];
  2130.             format(msg, sizeof(msg), "%s (%d) recusou!", PlayerName(playerid), playerid);
  2131.             SendClientMessage(targetid, COLOR_WHITE, msg);
  2132.         }
  2133.         return 1;
  2134.     }
  2135.     if(dialogid == DIALOG_FINDVEHICLE)
  2136.     {
  2137.         if(response)
  2138.         {
  2139.             new id;
  2140.             sscanf(inputtext[4], "d", id);
  2141.             if(IsValidVehicle2(id))
  2142.             {
  2143.                 TrackCar[playerid] = VehicleID[id];
  2144.                 SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Veiculo Localizado!");
  2145.             }
  2146.         }
  2147.         return 1;
  2148.     }
  2149.     if(dialogid == DIALOG_TRUNK)
  2150.     {
  2151.         if(response)
  2152.         {
  2153.             SetPVarInt(playerid, "DialogValue2", listitem);
  2154.             ShowDialog(playerid, DIALOG_TRUNK_ACTION);
  2155.         }
  2156.         else
  2157.         {
  2158.             new id = GetPVarInt(playerid, "DialogValue1");
  2159.             ToggleBoot(VehicleID[id], VEHICLE_PARAMS_OFF);
  2160.         }
  2161.         return 1;
  2162.     }
  2163.     if(dialogid == DIALOG_TRUNK_ACTION)
  2164.     {
  2165.         if(response)
  2166.         {
  2167.             new id = GetPVarInt(playerid, "DialogValue1");
  2168.             new slot = GetPVarInt(playerid, "DialogValue2");
  2169.             switch(listitem)
  2170.             {
  2171.             case 0:
  2172.             {
  2173.                 new weaponid = GetPlayerWeapon(playerid);
  2174.                 if(weaponid == 0)
  2175.                 {
  2176.                     ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Sem armas nas maos!");
  2177.                     return 1;
  2178.                 }
  2179.                 VehicleTrunk[id][slot][0] = weaponid;
  2180.                 if(IsMeleeWeapon(weaponid)) VehicleTrunk[id][slot][1] = 1;
  2181.                 else VehicleTrunk[id][slot][1] = GetPlayerAmmo(playerid);
  2182.                 RemovePlayerWeapon(playerid, weaponid);
  2183.                 SaveVehicle(id);
  2184.             }
  2185.             case 1:
  2186.             {
  2187.                 if(VehicleTrunk[id][slot][1] <= 0)
  2188.                 {
  2189.                     ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Espaco vazio!");
  2190.                     return 1;
  2191.                 }
  2192.                 GivePlayerWeapon(playerid, VehicleTrunk[id][slot][0], VehicleTrunk[id][slot][1]);
  2193.                 VehicleTrunk[id][slot][0] = 0;
  2194.                 VehicleTrunk[id][slot][1] = 0;
  2195.                 SaveVehicle(id);
  2196.             }
  2197.             }
  2198.         }
  2199.         ShowDialog(playerid, DIALOG_TRUNK);
  2200.         return 1;
  2201.     }
  2202.     if(dialogid == DIALOG_VEHICLE_PLATE)
  2203.     {
  2204.         if(response)
  2205.         {
  2206.             if(strlen(inputtext) < 1 || strlen(inputtext) >= sizeof(VehicleNumberPlate[]))
  2207.             {
  2208.                 ShowErrorDialog(playerid, "Comprimento invalido!");
  2209.                 return 1;
  2210.             }
  2211.             new id = GetPVarInt(playerid, "DialogValue1");
  2212.             new vehicleid = VehicleID[id];
  2213.             strmid(VehicleNumberPlate[id], inputtext, 0, sizeof(VehicleNumberPlate[]));
  2214.             SaveVehicle(id);
  2215.             SetVehicleNumberPlate(vehicleid, inputtext);
  2216.             SetVehicleToRespawn(vehicleid);
  2217.             new msg[128];
  2218.             format(msg, sizeof(msg), "Cambio la placa del vehiculo a %s", inputtext);
  2219.             SendClientMessage(playerid, COLOR_WHITE, msg);
  2220.         }
  2221.         else ShowDialog(playerid, DIALOG_VEHICLE);
  2222.         return 1;
  2223.     }
  2224.     if(dialogid == DIALOG_FUEL)
  2225.     {
  2226.         if(response)
  2227.         {
  2228.             switch(listitem)
  2229.             {
  2230.                 case 0:
  2231.                 {
  2232.                     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  2233.                     {
  2234.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!");
  2235.                         return 1;
  2236.                     }
  2237.                     new vehicleid = GetPlayerVehicleID(playerid);
  2238.                     if(IsBicycle(vehicleid))
  2239.                     {
  2240.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Esse veiculo nao possui tanque!");
  2241.                         return 1;
  2242.                     }
  2243.                     if(Fuel[vehicleid] >= 100.0)
  2244.                     {
  2245.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Tanque cheio!");
  2246.                         return 1;
  2247.                     }
  2248.                     if(GetPlayerMoney(playerid) < FUEL_PRICE)
  2249.                     {
  2250.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Dinheiro insuficiente!");
  2251.                         return 1;
  2252.                     }
  2253.                     RefuelTime[playerid] = 5;
  2254.                     SetPVarFloat(playerid, "Fuel", Fuel[vehicleid]);
  2255.                     GameTextForPlayer(playerid, "~w~ABASTECENDO...", 2000, 3);
  2256.                 }
  2257.                 case 1:
  2258.                 {
  2259.                     if(GetPVarInt(playerid, "GasCan"))
  2260.                     {
  2261.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Ja tem um galao!");
  2262.                         return 1;
  2263.                     }
  2264.                     if(GetPlayerMoney(playerid) < GAS_CAN_PRICE)
  2265.                     {
  2266.                         ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Dinheiro insuficiente!!");
  2267.                         return 1;
  2268.                     }
  2269.                     GivePlayerMoney(playerid, -GAS_CAN_PRICE);
  2270.                     SetPVarInt(playerid, "GasCan", 1);
  2271.                     SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Dinheiro insuficiente!! {32CD32}R$" #GAS_CAN_PRICE );
  2272.                 }
  2273.             }
  2274.         }
  2275.         return 1;
  2276.     }
  2277.     if(dialogid == DIALOG_EDITVEHICLE)
  2278.     {
  2279.         if(response)
  2280.         {
  2281.             new id = GetPVarInt(playerid, "DialogValue1");
  2282.             new nr, params[128];
  2283.             sscanf(inputtext, "ds", nr, params);
  2284.             switch(nr)
  2285.             {
  2286.             case 1:
  2287.             {
  2288.                 new value = strval(params);
  2289.                 if(value < 0) value = 0;
  2290.                 VehicleValue[id] = value;
  2291.                 UpdateVehicleLabel(id, 1);
  2292.                 SaveVehicle(id);
  2293.                 ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2294.             }
  2295.             case 2:
  2296.             {
  2297.                 new value;
  2298.                 if(IsNumeric(params)) value = strval(params);
  2299.                 else value = GetVehicleModelIDFromName(params);
  2300.                 if(value < 400 || value > 611)
  2301.                 {
  2302.                     ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Modelo de veiculo invalido!");
  2303.                     return 1;
  2304.                 }
  2305.                 VehicleModel[id] = value;
  2306.                 for(new i=0; i < sizeof(VehicleMods[]); i++)
  2307.                 {
  2308.                     VehicleMods[id][i] = 0;
  2309.                 }
  2310.                 VehiclePaintjob[id] = 255;
  2311.                 UpdateVehicle(id, 1);
  2312.                 SaveVehicle(id);
  2313.                 ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2314.             }
  2315.             case 3:
  2316.             {
  2317.                 new color1, color2;
  2318.                 sscanf(params, "dd", color1, color2);
  2319.                 VehicleColor[id][0] = color1;
  2320.                 VehicleColor[id][1] = color2;
  2321.                 SaveVehicle(id);
  2322.                 ChangeVehicleColor(VehicleID[id], color1, color2);
  2323.                 ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2324.             }
  2325.             case 4:
  2326.             {
  2327.                 if(strlen(params) < 1 || strlen(params) > 8)
  2328.                 {
  2329.                     ShowErrorDialog(playerid, "Comprimento invalido!");
  2330.                     return 1;
  2331.                 }
  2332.                 strmid(VehicleNumberPlate[id], params, 0, sizeof(params));
  2333.                 SaveVehicle(id);
  2334.                 SetVehicleNumberPlate(VehicleID[id], params);
  2335.                 SetVehicleToRespawn(VehicleID[id]);
  2336.                 ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2337.             }
  2338.             case 5:
  2339.             {
  2340.                 DestroyVehicle(VehicleID[id]);
  2341.                 if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  2342.                 {
  2343.                     Delete3DTextLabel(VehicleLabel[id]);
  2344.                 }
  2345.                 VehicleCreated[id] = 0;
  2346.                 SaveVehicle(id);
  2347.                 new msg[128];
  2348.                 format(msg, sizeof(msg), "{FF0000}SERVER {FFFFFF}destruiu veh id {FF0000}%d", id);
  2349.                 SendClientMessage(playerid, COLOR_WHITE, msg);
  2350.             }
  2351.             case 6:
  2352.             {
  2353.                 if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  2354.                 {
  2355.                     ShowErrorDialog(playerid, "{FF0000}SERVER {FFFFFF}Nao esta em um veiculo!");
  2356.                     return 1;
  2357.                 }
  2358.                 GetVehiclePos(VehicleID[id], VehiclePos[id][0], VehiclePos[id][1], VehiclePos[id][2]);
  2359.                 GetVehicleZAngle(VehicleID[id], VehiclePos[id][3]);
  2360.                 VehicleInterior[id] = GetPlayerInterior(playerid);
  2361.                 VehicleWorld[id] = GetPlayerVirtualWorld(playerid);
  2362.                 SendClientMessage(playerid, COLOR_WHITE, "{FF0000}SERVER {FFFFFF}Estaciono este veiculo aqui");
  2363.                 UpdateVehicle(id, 1);
  2364.                 PutPlayerInVehicle(playerid, VehicleID[id], 0);
  2365.                 SaveVehicle(id);
  2366.                 ShowDialog(playerid, DIALOG_EDITVEHICLE);
  2367.             }
  2368.             case 7:
  2369.             {
  2370.                 new Float:x, Float:y, Float:z;
  2371.                 GetVehiclePos(VehicleID[id], x, y, z);
  2372.                 SetPlayerPos(playerid, x, y, z+1);
  2373.                 new msg[128];
  2374.                 format(msg, sizeof(msg), "{FF0000}SERVER {FFFFFF}Foi ate o veiculo. {FF0000}%d", id);
  2375.                 SendClientMessage(playerid, COLOR_WHITE, msg);
  2376.             }
  2377.             }
  2378.         }
  2379.         return 1;
  2380.     }
  2381.     return 0;
  2382. }
  2383.  
  2384. stock sscanf(string[], format[], {Float,_}:...)
  2385. {
  2386.     #if defined isnull
  2387.     if (isnull(string))
  2388.     #else
  2389.     if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  2390.     #endif
  2391.     {
  2392.         return format[0];
  2393.     }
  2394.     new
  2395.         formatPos = 0,
  2396.         stringPos = 0,
  2397.         paramPos = 2,
  2398.         paramCount = numargs(),
  2399.         delim = ' ';
  2400.     while (string[stringPos] && string[stringPos] <= ' ')
  2401.     {
  2402.         stringPos++;
  2403.     }
  2404.     while (paramPos < paramCount && string[stringPos])
  2405.     {
  2406.         switch (format[formatPos++])
  2407.         {
  2408.             case '\0':
  2409.             {
  2410.                 return 0;
  2411.             }
  2412.             case 'i', 'd':
  2413.             {
  2414.                 new
  2415.                     neg = 1,
  2416.                     num = 0,
  2417.                     ch = string[stringPos];
  2418.                 if (ch == '-')
  2419.                 {
  2420.                     neg = -1;
  2421.                     ch = string[++stringPos];
  2422.                 }
  2423.                 do
  2424.                 {
  2425.                     stringPos++;
  2426.                     if ('0' <= ch <= '9')
  2427.                     {
  2428.                         num = (num * 10) + (ch - '0');
  2429.                     }
  2430.                     else
  2431.                     {
  2432.                         return -1;
  2433.                     }
  2434.                 }
  2435.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  2436.                 setarg(paramPos, 0, num * neg);
  2437.             }
  2438.             case 'h', 'x':
  2439.             {
  2440.                 new
  2441.                     num = 0,
  2442.                     ch = string[stringPos];
  2443.                 do
  2444.                 {
  2445.                     stringPos++;
  2446.                     switch (ch)
  2447.                     {
  2448.                         case 'x', 'X':
  2449.                         {
  2450.                             num = 0;
  2451.                             continue;
  2452.                         }
  2453.                         case '0' .. '9':
  2454.                         {
  2455.                             num = (num << 4) | (ch - '0');
  2456.                         }
  2457.                         case 'a' .. 'f':
  2458.                         {
  2459.                             num = (num << 4) | (ch - ('a' - 10));
  2460.                         }
  2461.                         case 'A' .. 'F':
  2462.                         {
  2463.                             num = (num << 4) | (ch - ('A' - 10));
  2464.                         }
  2465.                         default:
  2466.                         {
  2467.                             return -1;
  2468.                         }
  2469.                     }
  2470.                 }
  2471.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  2472.                 setarg(paramPos, 0, num);
  2473.             }
  2474.             case 'c':
  2475.             {
  2476.                 setarg(paramPos, 0, string[stringPos++]);
  2477.             }
  2478.             case 'f':
  2479.             {
  2480.                 new
  2481.                     end = stringPos - 1,
  2482.                     ch;
  2483.                 while ((ch = string[++end]) && ch != delim) {}
  2484.                 string[end] = '\0';
  2485.                 setarg(paramPos,0,_:floatstr(string[stringPos]));
  2486.                 string[end] = ch;
  2487.                 stringPos = end;
  2488.             }
  2489.             case 'p':
  2490.             {
  2491.                 delim = format[formatPos++];
  2492.                 continue;
  2493.             }
  2494.             case '\'':
  2495.             {
  2496.                 new
  2497.                     end = formatPos - 1,
  2498.                     ch;
  2499.                 while ((ch = format[++end]) && ch != '\'') {}
  2500.                 if (!ch)
  2501.                 {
  2502.                     return -1;
  2503.                 }
  2504.                 format[end] = '\0';
  2505.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  2506.                 {
  2507.                     if (format[end + 1])
  2508.                     {
  2509.                         return -1;
  2510.                     }
  2511.                     return 0;
  2512.                 }
  2513.                 format[end] = '\'';
  2514.                 stringPos = ch + (end - formatPos);
  2515.                 formatPos = end + 1;
  2516.             }
  2517.             case 'u':
  2518.             {
  2519.                 new
  2520.                     end = stringPos - 1,
  2521.                     id = 0,
  2522.                     bool:num = true,
  2523.                     ch;
  2524.                 while ((ch = string[++end]) && ch != delim)
  2525.                 {
  2526.                     if (num)
  2527.                     {
  2528.                         if ('0' <= ch <= '9')
  2529.                         {
  2530.                             id = (id * 10) + (ch - '0');
  2531.                         }
  2532.                         else
  2533.                         {
  2534.                             num = false;
  2535.                         }
  2536.                     }
  2537.                 }
  2538.                 if (num && IsPlayerConnected(id))
  2539.                 {
  2540.                     setarg(paramPos, 0, id);
  2541.                 }
  2542.                 else
  2543.                 {
  2544.                     #if !defined foreach
  2545.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  2546.                         #define __SSCANF_FOREACH__
  2547.                     #endif
  2548.                     string[end] = '\0';
  2549.                     num = false;
  2550.                     new
  2551.                         name[MAX_PLAYER_NAME];
  2552.                     id = end - stringPos;
  2553.                     foreach (Player, playerid)
  2554.                     {
  2555.                         GetPlayerName(playerid, name, sizeof (name));
  2556.                         if (!strcmp(name, string[stringPos], true, id))
  2557.                         {
  2558.                             setarg(paramPos, 0, playerid);
  2559.                             num = true;
  2560.                             break;
  2561.                         }
  2562.                     }
  2563.                     if (!num)
  2564.                     {
  2565.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  2566.                     }
  2567.                     string[end] = ch;
  2568.                     #if defined __SSCANF_FOREACH__
  2569.                         #undef foreach
  2570.                         #undef __SSCANF_FOREACH__
  2571.                     #endif
  2572.                 }
  2573.                 stringPos = end;
  2574.             }
  2575.             case 's', 'z':
  2576.             {
  2577.                 new
  2578.                     i = 0,
  2579.                     ch;
  2580.                 if (format[formatPos])
  2581.                 {
  2582.                     while ((ch = string[stringPos++]) && ch != delim)
  2583.                     {
  2584.                         setarg(paramPos, i++, ch);
  2585.                     }
  2586.                     if (!i)
  2587.                     {
  2588.                         return -1;
  2589.                     }
  2590.                 }
  2591.                 else
  2592.                 {
  2593.                     while ((ch = string[stringPos++]))
  2594.                     {
  2595.                         setarg(paramPos, i++, ch);
  2596.                     }
  2597.                 }
  2598.                 stringPos--;
  2599.                 setarg(paramPos, i, '\0');
  2600.             }
  2601.             default:
  2602.             {
  2603.                 continue;
  2604.             }
  2605.         }
  2606.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  2607.         {
  2608.             stringPos++;
  2609.         }
  2610.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  2611.         {
  2612.             stringPos++;
  2613.         }
  2614.         paramPos++;
  2615.     }
  2616.     do
  2617.     {
  2618.         if ((delim = format[formatPos++]) > ' ')
  2619.         {
  2620.             if (delim == '\'')
  2621.             {
  2622.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  2623.             }
  2624.             else if (delim != 'z')
  2625.             {
  2626.                 return delim;
  2627.             }
  2628.         }
  2629.     }
  2630.     while (delim > ' ');
  2631.     return 0;
  2632. }
  2633.  
  2634.  
Add Comment
Please, Sign In to add comment