Bom, apуs atingir uma certa quantia de jogadores em meu servidor a text draw SpeedoMeter do meu servidor, comeзa piscar e logo apуs desaparece para todos.
Oque estб ocorrendo? Jб tentei arrumar mais ainda nгo achei uma soluзгo.
Код:
#define MAX_ZONE_NAME 28
enum SAZONE_MAIN {
SAZONE_NAME[28],
Float:SAZONE_AREA[6]
};
new Vehicles[][] ={
"Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster",
"Stretch","Manana","Infernus","Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto",
"Taxi","Washington","Bobcat","Mr Whoopee","BF Injection","Hunter","Premier","Enforcer","Securicar","Banshee",
"Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie","Stallion","Rumpo",
"RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer",
"Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer",
"PCJ-600","Faggio","Freeway","RC Baron","RC Raider","Glendale","Oceanic","Sanchez","Sparrow","Patriot",
"Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina","Comet","BMX",
"Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo",
"Greenwood","Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa",
"RC Goblin","Hotring Racer A","Hotring Racer B","Bloodring Banger","Rancher","Super GT","Elegant",
"Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain","Nebula","Majestic",
"Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona",
"FBI Truck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight",
"Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob",
"Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A","Monster B","Uranus",
"Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight",
"Trailer","Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford",
"BF-400","Newsvan","Tug","Trailer A","Emperor","Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C",
"Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)","Police Car (LVPD)","Police Ranger",
"Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
"Stair Trailer","Boxville","Farm Plow","Utility Trailer" };
static const gSAZones[][SAZONE_MAIN] = {
// NOMES /LOCALIZAR AREA (Xmin,Ymin,Zmin,Xmax,Ymax,Zmax)
{ "'The Big Ear'", {-410.00, 1403.30, -3.00, -137.90, 1681.20, 200.00}},
{ "Aldea Malvada", {-1372.10, 2498.50, 0.00, -1277.50, 2615.30, 200.00}},
{ "Angel Pine", {-2324.90, -2584.20, -6.10, -1964.20, -2212.10, 200.00}},
{ "Arco del Oeste", {-901.10, 2221.80, 0.00, -592.00, 2571.90, 200.00}},
{ "Avispa Country Club", {-2646.40, -355.40, 0.00, -2270.00, -222.50, 200.00}},
{ "Avispa Country Club", {-2831.80, -430.20, -6.10, -2646.40, -222.50, 200.00}},
{ "Avispa Country Club", {-2361.50, -417.10, 0.00, -2270.00, -355.40, 200.00}},
{ "Avispa Country Club", {-2667.80, -302.10, -28.80, -2646.40, -262.30, 71.10}},
{ "Avispa Country Club", {-2470.00, -355.40, 0.00, -2270.00, -318.40, 46.10}},
{ "Avispa Country Club", {-2550.00, -355.40, 0.00, -2470.00, -318.40, 39.70}},
{ "Back o Beyond", {-1166.90, -2641.10, 0.00, -321.70, -1856.00, 200.00}},
{ "Battery Point", {-2741.00, 1268.40, -4.50, -2533.00, 1490.40, 200.00}},
{ "Bayside", {-2741.00, 2175.10, 0.00, -2353.10, 2722.70, 200.00}},
{ "Bayside Marina", {-2353.10, 2275.70, 0.00, -2153.10, 2475.70, 200.00}},
{ "Beacon Hill", {-399.60, -1075.50, -1.40, -319.00, -977.50, 198.50}},
{ "Blackfield", {964.30, 1203.20, -89.00, 1197.30, 1403.20, 110.90}},
{ "Blackfield", {964.30, 1403.20, -89.00, 1197.30, 1726.20, 110.90}},
{ "Blackfield Chapel", {1375.60, 596.30, -89.00, 1558.00, 823.20, 110.90}},
{ "Blackfield Chapel", {1325.60, 596.30, -89.00, 1375.60, 795.00, 110.90}},
{ "Blackfield Intersection", {1197.30, 1044.60, -89.00, 1277.00, 1163.30, 110.90}},
{ "Blackfield Intersection", {1166.50, 795.00, -89.00, 1375.60, 1044.60, 110.90}},
{ "Blackfield Intersection", {1277.00, 1044.60, -89.00, 1315.30, 1087.60, 110.90}},
{ "Blackfield Intersection", {1375.60, 823.20, -89.00, 1457.30, 919.40, 110.90}},
{ "BlueGCLry", {104.50, -220.10, 2.30, 349.60, 152.20, 200.00}},
{ "BlueGCLry", {19.60, -404.10, 3.80, 349.60, -220.10, 200.00}},
{ "Blue Berry", {-319.60, -220.10, 0.00, 104.50, 293.30, 200.00}},
{ "Caligula's Palace", {2087.30, 1543.20, -89.00, 2437.30, 1703.20, 110.90}},
{ "Caligula's Palace", {2137.40, 1703.20, -89.00, 2437.30, 1783.20, 110.90}},
{ "Calton HeigBNA", {-2274.10, 744.10, -6.10, -1982.30, 1358.90, 200.00}},
{ "Chinatown", {-2274.10, 578.30, -7.60, -2078.60, 744.10, 200.00}},
{ "City Hall", {-2867.80, 277.40, -9.10, -2593.40, 458.40, 200.00}},
{ "Come-A-Lot", {2087.30, 943.20, -89.00, 2623.10, 1203.20, 110.90}},
{ "Commerce", {1323.90, -1842.20, -89.00, 1701.90, -1722.20, 110.90}},
{ "Commerce", {1323.90, -1722.20, -89.00, 1440.90, -1577.50, 110.90}},
{ "Commerce", {1370.80, -1577.50, -89.00, 1463.90, -1384.90, 110.90}},
{ "Commerce", {1463.90, -1577.50, -89.00, 1667.90, -1430.80, 110.90}},
{ "Commerce", {1583.50, -1722.20, -89.00, 1758.90, -1577.50, 110.90}},
{ "Commerce", {1667.90, -1577.50, -89.00, 1812.60, -1430.80, 110.90}},
{ "Conference Center", {1046.10, -1804.20, -89.00, 1323.90, -1722.20, 110.90}},
{ "Conference Center", {1073.20, -1842.20, -89.00, 1323.90, -1804.20, 110.90}},
{ "CranGCLry Station", {-2007.80, 56.30, 0.00, -1922.00, 224.70, 100.00}},
{ "Creek", {2749.90, 1937.20, -89.00, 2921.60, 2669.70, 110.90}},
{ "Dillimore", {580.70, -674.80, -9.50, 861.00, -404.70, 200.00}},
{ "Doherty", {-2270.00, -324.10, -0.00, -1794.90, -222.50, 200.00}},
{ "Doherty", {-2173.00, -222.50, -0.00, -1794.90, 265.20, 200.00}},
{ "Downtown", {-1982.30, 744.10, -6.10, -1871.70, 1274.20, 200.00}},
{ "Downtown", {-1871.70, 1176.40, -4.50, -1620.30, 1274.20, 200.00}},
{ "Downtown", {-1700.00, 744.20, -6.10, -1580.00, 1176.50, 200.00}},
{ "Downtown", {-1580.00, 744.20, -6.10, -1499.80, 1025.90, 200.00}},
{ "Downtown", {-2078.60, 578.30, -7.60, -1499.80, 744.20, 200.00}},
{ "Downtown", {-1993.20, 265.20, -9.10, -1794.90, 578.30, 200.00}},
{ "Downtown Los Santos", {1463.90, -1430.80, -89.00, 1724.70, -1290.80, 110.90}},
{ "Downtown Los Santos", {1724.70, -1430.80, -89.00, 1812.60, -1250.90, 110.90}},
{ "Downtown Los Santos", {1463.90, -1290.80, -89.00, 1724.70, -1150.80, 110.90}},
{ "Downtown Los Santos", {1370.80, -1384.90, -89.00, 1463.90, -1170.80, 110.90}},
{ "Downtown Los Santos", {1724.70, -1250.90, -89.00, 1812.60, -1150.80, 110.90}},
{ "Downtown Los Santos", {1370.80, -1170.80, -89.00, 1463.90, -1130.80, 110.90}},
{ "Downtown Los Santos", {1378.30, -1130.80, -89.00, 1463.90, -1026.30, 110.90}},
{ "Downtown Los Santos", {1391.00, -1026.30, -89.00, 1463.90, -926.90, 110.90}},
{ "Downtown Los Santos", {1507.50, -1385.20, 110.90, 1582.50, -1325.30, 335.90}},
{ "East Beach", {2632.80, -1852.80, -89.00, 2959.30, -1668.10, 110.90}},
{ "East Beach", {2632.80, -1668.10, -89.00, 2747.70, -1393.40, 110.90}},
{ "East Beach", {2747.70, -1668.10, -89.00, 2959.30, -1498.60, 110.90}},
{ "East Beach", {2747.70, -1498.60, -89.00, 2959.30, -1120.00, 110.90}},
{ "East Los Santos", {2421.00, -1628.50, -89.00, 2632.80, -1454.30, 110.90}},
{ "East Los Santos", {2222.50, -1628.50, -89.00, 2421.00, -1494.00, 110.90}},
{ "East Los Santos", {2266.20, -1494.00, -89.00, 2381.60, -1372.00, 110.90}},
{ "East Los Santos", {2381.60, -1494.00, -89.00, 2421.00, -1454.30, 110.90}},
{ "East Los Santos", {2281.40, -1372.00, -89.00, 2381.60, -1135.00, 110.90}},
{ "East Los Santos", {2381.60, -1454.30, -89.00, 2462.10, -1135.00, 110.90}},
{ "East Los Santos", {2462.10, -1454.30, -89.00, 2581.70, -1135.00, 110.90}},
{ "Easter Basin", {-1794.90, 249.90, -9.10, -1242.90, 578.30, 200.00}},
{ "Easter Basin", {-1794.90, -50.00, -0.00, -1499.80, 249.90, 200.00}},
{ "Aeroporto de San Fierro", {-1499.80, -50.00, -0.00, -1242.90, 249.90, 200.00}},
{ "Aeroporto de San Fierro", {-1794.90, -730.10, -3.00, -1213.90, -50.00, 200.00}},
{ "Aeroporto de San Fierro", {-1213.90, -730.10, 0.00, -1132.80, -50.00, 200.00}},
{ "Aeroporto de San Fierro", {-1242.90, -50.00, 0.00, -1213.90, 578.30, 200.00}},
{ "Aeroporto de San Fierro", {-1213.90, -50.00, -4.50, -947.90, 578.30, 200.00}},
{ "Aeroporto de San Fierro", {-1315.40, -405.30, 15.40, -1264.40, -209.50, 25.40}},
{ "Aeroporto de San Fierro", {-1354.30, -287.30, 15.40, -1315.40, -209.50, 25.40}},
{ "Aeroporto de San Fierro", {-1490.30, -209.50, 15.40, -1264.40, -148.30, 25.40}},
{ "Easter Bay Chemicals", {-1132.80, -768.00, 0.00, -956.40, -578.10, 200.00}},
{ "Easter Bay Chemicals", {-1132.80, -787.30, 0.00, -956.40, -768.00, 200.00}},
{ "El Castillo del Diablo", {-464.50, 2217.60, 0.00, -208.50, 2580.30, 200.00}},
{ "El Castillo del Diablo", {-208.50, 2123.00, -7.60, 114.00, 2337.10, 200.00}},
{ "El Castillo del Diablo", {-208.50, 2337.10, 0.00, 8.40, 2487.10, 200.00}},
{ "El Corona", {1812.60, -2179.20, -89.00, 1970.60, -1852.80, 110.90}},
{ "El Corona", {1692.60, -2179.20, -89.00, 1812.60, -1842.20, 110.90}},
{ "El Quebrados", {-1645.20, 2498.50, 0.00, -1372.10, 2777.80, 200.00}},
{ "Esplanade East", {-1620.30, 1176.50, -4.50, -1580.00, 1274.20, 200.00}},
{ "Esplanade East", {-1580.00, 1025.90, -6.10, -1499.80, 1274.20, 200.00}},
{ "Esplanade East", {-1499.80, 578.30, -79.60, -1339.80, 1274.20, 20.30}},
{ "Esplanade North", {-2533.00, 1358.90, -4.50, -1996.60, 1501.20, 200.00}},
{ "Esplanade North", {-1996.60, 1358.90, -4.50, -1524.20, 1592.50, 200.00}},
{ "Esplanade North", {-1982.30, 1274.20, -4.50, -1524.20, 1358.90, 200.00}},
{ "Fallen Tree", {-792.20, -698.50, -5.30, -452.40, -380.00, 200.00}},
{ "Fallow Bridge", {434.30, 366.50, 0.00, 603.00, 555.60, 200.00}},
{ "Fern Ridge", {508.10, -139.20, 0.00, 1306.60, 119.50, 200.00}},
{ "Financial", {-1871.70, 744.10, -6.10, -1701.30, 1176.40, 300.00}},
{ "Fisher's Lagoon", {1916.90, -233.30, -100.00, 2131.70, 13.80, 200.00}},
{ "Flint Intersection", {-187.70, -1596.70, -89.00, 17.00, -1276.60, 110.90}},
{ "Flint Range", {-594.10, -1648.50, 0.00, -187.70, -1276.60, 200.00}},
{ "Fort Carson", {-376.20, 826.30, -3.00, 123.70, 1220.40, 200.00}},
{ "Foster Valley", {-2270.00, -430.20, -0.00, -2178.60, -324.10, 200.00}},
{ "Foster Valley", {-2178.60, -599.80, -0.00, -1794.90, -324.10, 200.00}},
{ "Foster Valley", {-2178.60, -1115.50, 0.00, -1794.90, -599.80, 200.00}},
{ "Foster Valley", {-2178.60, -1250.90, 0.00, -1794.90, -1115.50, 200.00}},
{ "Frederick Bridge", {2759.20, 296.50, 0.00, 2774.20, 594.70, 200.00}},
{ "Gant Bridge", {-2741.40, 1659.60, -6.10, -2616.40, 2175.10, 200.00}},
{ "Gant Bridge", {-2741.00, 1490.40, -6.10, -2616.40, 1659.60, 200.00}},
{ "Ganton", {2222.50, -1852.80, -89.00, 2632.80, -1722.30, 110.90}},
{ "Ganton", {2222.50, -1722.30, -89.00, 2632.80, -1628.50, 110.90}},
{ "Garcia", {-2411.20, -222.50, -0.00, -2173.00, 265.20, 200.00}},
{ "Garcia", {-2395.10, -222.50, -5.30, -2354.00, -204.70, 200.00}},
{ "Garver Bridge", {-1339.80, 828.10, -89.00, -1213.90, 1057.00, 110.90}},
{ "Garver Bridge", {-1213.90, 950.00, -89.00, -1087.90, 1178.90, 110.90}},
{ "Garver Bridge", {-1499.80, 696.40, -179.60, -1339.80, 925.30, 20.30}},
{ "Glen Park", {1812.60, -1449.60, -89.00, 1996.90, -1350.70, 110.90}},
{ "Glen Park", {1812.60, -1100.80, -89.00, 1994.30, -973.30, 110.90}},
{ "Glen Park", {1812.60, -1350.70, -89.00, 2056.80, -1100.80, 110.90}},
{ "Green Palms", {176.50, 1305.40, -3.00, 338.60, 1520.70, 200.00}},
{ "Greenglass College", {964.30, 1044.60, -89.00, 1197.30, 1203.20, 110.90}},
{ "Greenglass College", {964.30, 930.80, -89.00, 1166.50, 1044.60, 110.90}},
{ "Hampton Barns", {603.00, 264.30, 0.00, 761.90, 366.50, 200.00}},
{ "Hankypanky Point", {2576.90, 62.10, 0.00, 2759.20, 385.50, 200.00}},
{ "Harry Gold Parkway", {1777.30, 863.20, -89.00, 1817.30, 2342.80, 110.90}},
{ "Hashbury", {-2593.40, -222.50, -0.00, -2411.20, 54.70, 200.00}},
{ "Hilltop Farm", {967.30, -450.30, -3.00, 1176.70, -217.90, 200.00}},
{ "Quarry Top", {337.20, 710.80, -115.20, 860.50, 1031.70, 203.70}},
{ "Idlewood", {1812.60, -1852.80, -89.00, 1971.60, -1742.30, 110.90}},
{ "Idlewood", {1812.60, -1742.30, -89.00, 1951.60, -1602.30, 110.90}},
{ "Idlewood", {1951.60, -1742.30, -89.00, 2124.60, -1602.30, 110.90}},
{ "Idlewood", {1812.60, -1602.30, -89.00, 2124.60, -1449.60, 110.90}},
{ "Idlewood", {2124.60, -1742.30, -89.00, 2222.50, -1494.00, 110.90}},
{ "Idlewood", {1971.60, -1852.80, -89.00, 2222.50, -1742.30, 110.90}},
{ "Jefferson", {1996.90, -1449.60, -89.00, 2056.80, -1350.70, 110.90}},
{ "Jefferson", {2124.60, -1494.00, -89.00, 2266.20, -1449.60, 110.90}},
{ "Jefferson", {2056.80, -1372.00, -89.00, 2281.40, -1210.70, 110.90}},
{ "Jefferson", {2056.80, -1210.70, -89.00, 2185.30, -1126.30, 110.90}},
{ "Jefferson", {2185.30, -1210.70, -89.00, 2281.40, -1154.50, 110.90}},
{ "Jefferson", {2056.80, -1449.60, -89.00, 2266.20, -1372.00, 110.90}},
{ "Julius Thruway East", {2623.10, 943.20, -89.00, 2749.90, 1055.90, 110.90}},
{ "Julius Thruway East", {2685.10, 1055.90, -89.00, 2749.90, 2626.50, 110.90}},
{ "Julius Thruway East", {2536.40, 2442.50, -89.00, 2685.10, 2542.50, 110.90}},
{ "Julius Thruway East", {2625.10, 2202.70, -89.00, 2685.10, 2442.50, 110.90}},
{ "Julius Thruway North", {2498.20, 2542.50, -89.00, 2685.10, 2626.50, 110.90}},
{ "Julius Thruway North", {2237.40, 2542.50, -89.00, 2498.20, 2663.10, 110.90}},
{ "Julius Thruway North", {2121.40, 2508.20, -89.00, 2237.40, 2663.10, 110.90}},
{ "Julius Thruway North", {1938.80, 2508.20, -89.00, 2121.40, 2624.20, 110.90}},
{ "Julius Thruway North", {1534.50, 2433.20, -89.00, 1848.40, 2583.20, 110.90}},
{ "Julius Thruway North", {1848.40, 2478.40, -89.00, 1938.80, 2553.40, 110.90}},
{ "Julius Thruway North", {1704.50, 2342.80, -89.00, 1848.40, 2433.20, 110.90}},
{ "Julius Thruway North", {1377.30, 2433.20, -89.00, 1534.50, 2507.20, 110.90}},
{ "Julius Thruway South", {1457.30, 823.20, -89.00, 2377.30, 863.20, 110.90}},
{ "Julius Thruway South", {2377.30, 788.80, -89.00, 2537.30, 897.90, 110.90}},
{ "Julius Thruway West", {1197.30, 1163.30, -89.00, 1236.60, 2243.20, 110.90}},
{ "Julius Thruway West", {1236.60, 2142.80, -89.00, 1297.40, 2243.20, 110.90}},
{ "Juniper Hill", {-2533.00, 578.30, -7.60, -2274.10, 968.30, 200.00}},
{ "Juniper Hollow", {-2533.00, 968.30, -6.10, -2274.10, 1358.90, 200.00}},
{ "K.A.C.C. Military Fuels", {2498.20, 2626.50, -89.00, 2749.90, 2861.50, 110.90}},
{ "Kincaid Bridge", {-1339.80, 599.20, -89.00, -1213.90, 828.10, 110.90}},
{ "Kincaid Bridge", {-1213.90, 721.10, -89.00, -1087.90, 950.00, 110.90}},
{ "Kincaid Bridge", {-1087.90, 855.30, -89.00, -961.90, 986.20, 110.90}},
{ "King's", {-2329.30, 458.40, -7.60, -1993.20, 578.30, 200.00}},
{ "King's", {-2411.20, 265.20, -9.10, -1993.20, 373.50, 200.00}},
{ "King's", {-2253.50, 373.50, -9.10, -1993.20, 458.40, 200.00}},
{ "LVA Freight Depot", {1457.30, 863.20, -89.00, 1777.40, 1143.20, 110.90}},
{ "LVA Freight Depot", {1375.60, 919.40, -89.00, 1457.30, 1203.20, 110.90}},
{ "LVA Freight Depot", {1277.00, 1087.60, -89.00, 1375.60, 1203.20, 110.90}},
{ "LVA Freight Depot", {1315.30, 1044.60, -89.00, 1375.60, 1087.60, 110.90}},
{ "LVA Freight Depot", {1236.60, 1163.40, -89.00, 1277.00, 1203.20, 110.90}},
{ "Las Barrancas", {-926.10, 1398.70, -3.00, -719.20, 1634.60, 200.00}},
{ "Las Brujas", {-365.10, 2123.00, -3.00, -208.50, 2217.60, 200.00}},
{ "Las Colinas", {1994.30, -1100.80, -89.00, 2056.80, -920.80, 110.90}},
{ "Las Colinas", {2056.80, -1126.30, -89.00, 2126.80, -920.80, 110.90}},
{ "Las Colinas", {2185.30, -1154.50, -89.00, 2281.40, -934.40, 110.90}},
{ "Las Colinas", {2126.80, -1126.30, -89.00, 2185.30, -934.40, 110.90}},
{ "Las Colinas", {2747.70, -1120.00, -89.00, 2959.30, -945.00, 110.90}},
{ "Las Colinas", {2632.70, -1135.00, -89.00, 2747.70, -945.00, 110.90}},
{ "Las Colinas", {2281.40, -1135.00, -89.00, 2632.70, -945.00, 110.90}},
{ "Las Payasadas", {-354.30, 2580.30, 2.00, -133.60, 2816.80, 200.00}},
{ "Las Venturas Airport", {1236.60, 1203.20, -89.00, 1457.30, 1883.10, 110.90}},
{ "Las Venturas Airport", {1457.30, 1203.20, -89.00, 1777.30, 1883.10, 110.90}},
{ "Las Venturas Airport", {1457.30, 1143.20, -89.00, 1777.40, 1203.20, 110.90}},
{ "Las Venturas Airport", {1515.80, 1586.40, -12.50, 1729.90, 1714.50, 87.50}},
{ "Last Dime Motel", {1823.00, 596.30, -89.00, 1997.20, 823.20, 110.90}},
{ "Leafy Hollow", {-1166.90, -1856.00, 0.00, -815.60, -1602.00, 200.00}},
{ "Lil' Probe Inn", {-90.20, 1286.80, -3.00, 153.80, 1554.10, 200.00}},
{ "Linden Side", {2749.90, 943.20, -89.00, 2923.30, 1198.90, 110.90}},
{ "Linden Station", {2749.90, 1198.90, -89.00, 2923.30, 1548.90, 110.90}},
{ "Linden Station", {2811.20, 1229.50, -39.50, 2861.20, 1407.50, 60.40}},
{ "Little Mexico", {1701.90, -1842.20, -89.00, 1812.60, -1722.20, 110.90}},
{ "Little Mexico", {1758.90, -1722.20, -89.00, 1812.60, -1577.50, 110.90}},
{ "Los Flores", {2581.70, -1454.30, -89.00, 2632.80, -1393.40, 110.90}},
{ "Los Flores", {2581.70, -1393.40, -89.00, 2747.70, -1135.00, 110.90}},
{ "Los Santos International", {1249.60, -2394.30, -89.00, 1852.00, -2179.20, 110.90}},
{ "Los Santos International", {1852.00, -2394.30, -89.00, 2089.00, -2179.20, 110.90}},
{ "Los Santos International", {1382.70, -2730.80, -89.00, 2201.80, -2394.30, 110.90}},
{ "Los Santos International", {1974.60, -2394.30, -39.00, 2089.00, -2256.50, 60.90}},
{ "Los Santos International", {1400.90, -2669.20, -39.00, 2189.80, -2597.20, 60.90}},
{ "Los Santos International", {2051.60, -2597.20, -39.00, 2152.40, -2394.30, 60.90}},
{ "Marina", {647.70, -1804.20, -89.00, 851.40, -1577.50, 110.90}},
{ "Marina", {647.70, -1577.50, -89.00, 807.90, -1416.20, 110.90}},
{ "Marina", {807.90, -1577.50, -89.00, 926.90, -1416.20, 110.90}},
{ "Market", {787.40, -1416.20, -89.00, 1072.60, -1310.20, 110.90}},
{ "Market", {952.60, -1310.20, -89.00, 1072.60, -1130.80, 110.90}},
{ "Market", {1072.60, -1416.20, -89.00, 1370.80, -1130.80, 110.90}},
{ "Market", {926.90, -1577.50, -89.00, 1370.80, -1416.20, 110.90}},
{ "Market Station", {787.40, -1410.90, -34.10, 866.00, -1310.20, 65.80}},
{ "Martin Bridge", {-222.10, 293.30, 0.00, -122.10, 476.40, 200.00}},
{ "Missionary Hill", {-2994.40, -811.20, 0.00, -2178.60, -430.20, 200.00}},
{ "Montgomery", {1119.50, 119.50, -3.00, 1451.40, 493.30, 200.00}},
{ "Montgomery", {1451.40, 347.40, -6.10, 1582.40, 420.80, 200.00}},
{ "Montgomery Intersection", {1546.60, 208.10, 0.00, 1745.80, 347.40, 200.00}},
{ "Montgomery Intersection", {1582.40, 347.40, 0.00, 1664.60, 401.70, 200.00}},
{ "Mulholland", {1414.00, -768.00, -89.00, 1667.60, -452.40, 110.90}},
{ "Mulholland", {1281.10, -452.40, -89.00, 1641.10, -290.90, 110.90}},
{ "Mulholland", {1269.10, -768.00, -89.00, 1414.00, -452.40, 110.90}},
{ "Mulholland", {1357.00, -926.90, -89.00, 1463.90, -768.00, 110.90}},
{ "Mulholland", {1318.10, -910.10, -89.00, 1357.00, -768.00, 110.90}},
{ "Mulholland", {1169.10, -910.10, -89.00, 1318.10, -768.00, 110.90}},
{ "Mulholland", {768.60, -954.60, -89.00, 952.60, -860.60, 110.90}},
{ "Mulholland", {687.80, -860.60, -89.00, 911.80, -768.00, 110.90}},
{ "Mulholland", {737.50, -768.00, -89.00, 1142.20, -674.80, 110.90}},
{ "Mulholland", {1096.40, -910.10, -89.00, 1169.10, -768.00, 110.90}},
{ "Mulholland", {952.60, -937.10, -89.00, 1096.40, -860.60, 110.90}},
{ "Mulholland", {911.80, -860.60, -89.00, 1096.40, -768.00, 110.90}},
{ "Mulholland", {861.00, -674.80, -89.00, 1156.50, -600.80, 110.90}},
{ "Mulholland Intersection", {1463.90, -1150.80, -89.00, 1812.60, -768.00, 110.90}},
{ "North Rock", {2285.30, -768.00, 0.00, 2770.50, -269.70, 200.00}},
{ "Ocean Docks", {2373.70, -2697.00, -89.00, 2809.20, -2330.40, 110.90}},
{ "Ocean Docks", {2201.80, -2418.30, -89.00, 2324.00, -2095.00, 110.90}},
{ "Ocean Docks", {2324.00, -2302.30, -89.00, 2703.50, -2145.10, 110.90}},
{ "Ocean Docks", {2089.00, -2394.30, -89.00, 2201.80, -2235.80, 110.90}},
{ "Ocean Docks", {2201.80, -2730.80, -89.00, 2324.00, -2418.30, 110.90}},
{ "Ocean Docks", {2703.50, -2302.30, -89.00, 2959.30, -2126.90, 110.90}},
{ "Ocean Docks", {2324.00, -2145.10, -89.00, 2703.50, -2059.20, 110.90}},
{ "Ocean Flats", {-2994.40, 277.40, -9.10, -2867.80, 458.40, 200.00}},
{ "Ocean Flats", {-2994.40, -222.50, -0.00, -2593.40, 277.40, 200.00}},
{ "Ocean Flats", {-2994.40, -430.20, -0.00, -2831.80, -222.50, 200.00}},
{ "Octane Springs", {338.60, 1228.50, 0.00, 664.30, 1655.00, 200.00}},
{ "Old Venturas Strip", {2162.30, 2012.10, -89.00, 2685.10, 2202.70, 110.90}},
{ "Palisades", {-2994.40, 458.40, -6.10, -2741.00, 1339.60, 200.00}},
{ "Palomino Creek", {2160.20, -149.00, 0.00, 2576.90, 228.30, 200.00}},
{ "Paradiso", {-2741.00, 793.40, -6.10, -2533.00, 1268.40, 200.00}},
{ "Pershing Square", {1440.90, -1722.20, -89.00, 1583.50, -1577.50, 110.90}},
{ "Pilgrim", {2437.30, 1383.20, -89.00, 2624.40, 1783.20, 110.90}},
{ "Pilgrim", {2624.40, 1383.20, -89.00, 2685.10, 1783.20, 110.90}},
{ "Pilson Intersection", {1098.30, 2243.20, -89.00, 1377.30, 2507.20, 110.90}},
{ "Pirates in Men's Pants", {1817.30, 1469.20, -89.00, 2027.40, 1703.20, 110.90}},
{ "Playa del Seville", {2703.50, -2126.90, -89.00, 2959.30, -1852.80, 110.90}},
{ "Prickle Pine", {1534.50, 2583.20, -89.00, 1848.40, 2863.20, 110.90}},
{ "Prickle Pine", {1117.40, 2507.20, -89.00, 1534.50, 2723.20, 110.90}},
{ "Prickle Pine", {1848.40, 2553.40, -89.00, 1938.80, 2863.20, 110.90}},
{ "Prickle Pine", {1938.80, 2624.20, -89.00, 2121.40, 2861.50, 110.90}},
{ "Queens", {-2533.00, 458.40, 0.00, -2329.30, 578.30, 200.00}},
{ "Queens", {-2593.40, 54.70, 0.00, -2411.20, 458.40, 200.00}},
{ "Queens", {-2411.20, 373.50, 0.00, -2253.50, 458.40, 200.00}},
{ "Randolph Industrial Estate", {1558.00, 596.30, -89.00, 1823.00, 823.20, 110.90}},
{ "Redsands East", {1817.30, 2011.80, -89.00, 2106.70, 2202.70, 110.90}},
{ "Redsands East", {1817.30, 2202.70, -89.00, 2011.90, 2342.80, 110.90}},
{ "Redsands East", {1848.40, 2342.80, -89.00, 2011.90, 2478.40, 110.90}},
{ "Redsands West", {1236.60, 1883.10, -89.00, 1777.30, 2142.80, 110.90}},
{ "Redsands West", {1297.40, 2142.80, -89.00, 1777.30, 2243.20, 110.90}},
{ "Redsands West", {1377.30, 2243.20, -89.00, 1704.50, 2433.20, 110.90}},
{ "Redsands West", {1704.50, 2243.20, -89.00, 1777.30, 2342.80, 110.90}},
{ "Regular Tom", {-405.70, 1712.80, -3.00, -276.70, 1892.70, 200.00}},
{ "Richman", {647.50, -1118.20, -89.00, 787.40, -954.60, 110.90}},
{ "Richman", {647.50, -954.60, -89.00, 768.60, -860.60, 110.90}},
{ "Richman", {225.10, -1369.60, -89.00, 334.50, -1292.00, 110.90}},
{ "Richman", {225.10, -1292.00, -89.00, 466.20, -1235.00, 110.90}},
{ "Richman", {72.60, -1404.90, -89.00, 225.10, -1235.00, 110.90}},
{ "Richman", {72.60, -1235.00, -89.00, 321.30, -1008.10, 110.90}},
{ "Richman", {321.30, -1235.00, -89.00, 647.50, -1044.00, 110.90}},
{ "Richman", {321.30, -1044.00, -89.00, 647.50, -860.60, 110.90}},
{ "Richman", {321.30, -860.60, -89.00, 687.80, -768.00, 110.90}},
{ "Richman", {321.30, -768.00, -89.00, 700.70, -674.80, 110.90}},
{ "Robada Intersection", {-1119.00, 1178.90, -89.00, -862.00, 1351.40, 110.90}},
{ "Roca Escalante", {2237.40, 2202.70, -89.00, 2536.40, 2542.50, 110.90}},
{ "Roca Escalante", {2536.40, 2202.70, -89.00, 2625.10, 2442.50, 110.90}},
{ "Rockshore East", {2537.30, 676.50, -89.00, 2902.30, 943.20, 110.90}},
{ "Rockshore West", {1997.20, 596.30, -89.00, 2377.30, 823.20, 110.90}},
{ "Rockshore West", {2377.30, 596.30, -89.00, 2537.30, 788.80, 110.90}},
{ "Rodeo", {72.60, -1684.60, -89.00, 225.10, -1544.10, 110.90}},
{ "Rodeo", {72.60, -1544.10, -89.00, 225.10, -1404.90, 110.90}},
{ "Rodeo", {225.10, -1684.60, -89.00, 312.80, -1501.90, 110.90}},
{ "Rodeo", {225.10, -1501.90, -89.00, 334.50, -1369.60, 110.90}},
{ "Rodeo", {334.50, -1501.90, -89.00, 422.60, -1406.00, 110.90}},
{ "Rodeo", {312.80, -1684.60, -89.00, 422.60, -1501.90, 110.90}},
{ "Rodeo", {422.60, -1684.60, -89.00, 558.00, -1570.20, 110.90}},
{ "Rodeo", {558.00, -1684.60, -89.00, 647.50, -1384.90, 110.90}},
{ "Rodeo", {466.20, -1570.20, -89.00, 558.00, -1385.00, 110.90}},
{ "Rodeo", {422.60, -1570.20, -89.00, 466.20, -1406.00, 110.90}},
{ "Rodeo", {466.20, -1385.00, -89.00, 647.50, -1235.00, 110.90}},
{ "Rodeo", {334.50, -1406.00, -89.00, 466.20, -1292.00, 110.90}},
{ "Royal Casino", {2087.30, 1383.20, -89.00, 2437.30, 1543.20, 110.90}},
{ "San Andreas Sound", {2450.30, 385.50, -100.00, 2759.20, 562.30, 200.00}},
{ "Santa Flora", {-2741.00, 458.40, -7.60, -2533.00, 793.40, 200.00}},
{ "Santa Maria Beach", {342.60, -2173.20, -89.00, 647.70, -1684.60, 110.90}},
{ "Santa Maria Beach", {72.60, -2173.20, -89.00, 342.60, -1684.60, 110.90}},
{ "Shady Cabin", {-1632.80, -2263.40, -3.00, -1601.30, -2231.70, 200.00}},
{ "Shady Creeks", {-1820.60, -2643.60, -8.00, -1226.70, -1771.60, 200.00}},
{ "Shady Creeks", {-2030.10, -2174.80, -6.10, -1820.60, -1771.60, 200.00}},
{ "Sobell Rail Yards", {2749.90, 1548.90, -89.00, 2923.30, 1937.20, 110.90}},
{ "Spinybed", {2121.40, 2663.10, -89.00, 2498.20, 2861.50, 110.90}},
{ "Starfish Casino", {2437.30, 1783.20, -89.00, 2685.10, 2012.10, 110.90}},
{ "Starfish Casino", {2437.30, 1858.10, -39.00, 2495.00, 1970.80, 60.90}},
{ "Starfish Casino", {2162.30, 1883.20, -89.00, 2437.30, 2012.10, 110.90}},
{ "Temple", {1252.30, -1130.80, -89.00, 1378.30, -1026.30, 110.90}},
{ "Temple", {1252.30, -1026.30, -89.00, 1391.00, -926.90, 110.90}},
{ "Temple", {1252.30, -926.90, -89.00, 1357.00, -910.10, 110.90}},
{ "Temple", {952.60, -1130.80, -89.00, 1096.40, -937.10, 110.90}},
{ "Temple", {1096.40, -1130.80, -89.00, 1252.30, -1026.30, 110.90}},
{ "Temple", {1096.40, -1026.30, -89.00, 1252.30, -910.10, 110.90}},
{ "The Camel's Toe", {2087.30, 1203.20, -89.00, 2640.40, 1383.20, 110.90}},
{ "The Clown's Pocket", {2162.30, 1783.20, -89.00, 2437.30, 1883.20, 110.90}},
{ "The Emerald Isle", {2011.90, 2202.70, -89.00, 2237.40, 2508.20, 110.90}},
{ "The Farm", {-1209.60, -1317.10, 114.90, -908.10, -787.30, 251.90}},
{ "The Four Dragons Casino", {1817.30, 863.20, -89.00, 2027.30, 1083.20, 110.90}},
{ "The High Roller", {1817.30, 1283.20, -89.00, 2027.30, 1469.20, 110.90}},
{ "The Mako Span", {1664.60, 401.70, 0.00, 1785.10, 567.20, 200.00}},
{ "The Panopticon", {-947.90, -304.30, -1.10, -319.60, 327.00, 200.00}},
{ "The Pink Swan", {1817.30, 1083.20, -89.00, 2027.30, 1283.20, 110.90}},
{ "The Sherman Dam", {-968.70, 1929.40, -3.00, -481.10, 2155.20, 200.00}},
{ "The Strip", {2027.40, 863.20, -89.00, 2087.30, 1703.20, 110.90}},
{ "The Strip", {2106.70, 1863.20, -89.00, 2162.30, 2202.70, 110.90}},
{ "The Strip", {2027.40, 1783.20, -89.00, 2162.30, 1863.20, 110.90}},
{ "The Strip", {2027.40, 1703.20, -89.00, 2137.40, 1783.20, 110.90}},
{ "The Visage", {1817.30, 1863.20, -89.00, 2106.70, 2011.80, 110.90}},
{ "The Visage", {1817.30, 1703.20, -89.00, 2027.40, 1863.20, 110.90}},
{ "Unity Station", {1692.60, -1971.80, -20.40, 1812.60, -1932.80, 79.50}},
{ "Valle Ocultado", {-936.60, 2611.40, 2.00, -715.90, 2847.90, 200.00}},
{ "Verdant Bluffs", {930.20, -2488.40, -89.00, 1249.60, -2006.70, 110.90}},
{ "Verdant Bluffs", {1073.20, -2006.70, -89.00, 1249.60, -1842.20, 110.90}},
{ "Verdant Bluffs", {1249.60, -2179.20, -89.00, 1692.60, -1842.20, 110.90}},
{ "Verdant Meadows", {37.00, 2337.10, -3.00, 435.90, 2677.90, 200.00}},
{ "Verona Beach", {647.70, -2173.20, -89.00, 930.20, -1804.20, 110.90}},
{ "Verona Beach", {930.20, -2006.70, -89.00, 1073.20, -1804.20, 110.90}},
{ "Verona Beach", {851.40, -1804.20, -89.00, 1046.10, -1577.50, 110.90}},
{ "Verona Beach", {1161.50, -1722.20, -89.00, 1323.90, -1577.50, 110.90}},
{ "Verona Beach", {1046.10, -1722.20, -89.00, 1161.50, -1577.50, 110.90}},
{ "Vinewood", {787.40, -1310.20, -89.00, 952.60, -1130.80, 110.90}},
{ "Vinewood", {787.40, -1130.80, -89.00, 952.60, -954.60, 110.90}},
{ "Vinewood", {647.50, -1227.20, -89.00, 787.40, -1118.20, 110.90}},
{ "Vinewood", {647.70, -1416.20, -89.00, 787.40, -1227.20, 110.90}},
{ "Whitewood Estates", {883.30, 1726.20, -89.00, 1098.30, 2507.20, 110.90}},
{ "Whitewood Estates", {1098.30, 1726.20, -89.00, 1197.30, 2243.20, 110.90}},
{ "Willowfield", {1970.60, -2179.20, -89.00, 2089.00, -1852.80, 110.90}},
{ "Willowfield", {2089.00, -2235.80, -89.00, 2201.80, -1989.90, 110.90}},
{ "Willowfield", {2089.00, -1989.90, -89.00, 2324.00, -1852.80, 110.90}},
{ "Willowfield", {2201.80, -2095.00, -89.00, 2324.00, -1989.90, 110.90}},
{ "Willowfield", {2541.70, -1941.40, -89.00, 2703.50, -1852.80, 110.90}},
{ "Willowfield", {2324.00, -2059.20, -89.00, 2541.70, -1852.80, 110.90}},
{ "Willowfield", {2541.70, -2059.20, -89.00, 2703.50, -1941.40, 110.90}},
{ "Yellow Bell Station", {1377.40, 2600.40, -21.90, 1492.40, 2687.30, 78.00}},
// Main Zones
{ "Los Santos", {44.60, -2892.90, -242.90, 2997.00, -768.00, 900.00}},
{ "Las Venturas", {869.40, 596.30, -242.90, 2997.00, 2993.80, 900.00}},
{ "Bone County", {-480.50, 596.30, -242.90, 869.40, 2993.80, 900.00}},
{ "Tierra Robada", {-2997.40, 1659.60, -242.90, -480.50, 2993.80, 900.00}},
{ "Tierra Robada", {-1213.90, 596.30, -242.90, -480.50, 1659.60, 900.00}},
{ "San Fierro", {-2997.40, -1115.50, -242.90, -1213.90, 1659.60, 900.00}},
{ "Red County", {-1213.90, -768.00, -242.90, 2997.00, 596.30, 900.00}},
{ "Flint County", {-1213.90, -2892.90, -242.90, 44.60, -768.00, 900.00}},
{ "Whetstone", {-2997.40, -2892.90, -242.90, -1213.90, -1115.50, 900.00}}
};
// Forward the function needed to update the speedometer (used by a timer)
forward Speedometer_Update(playerid);
forward RefuelVehicle(playerid);
// This function sets up the speedometer for the given player
Speedometer_Setup(playerid)
{
// Setup the speedometer for the player
APlayerData[playerid][SpeedometerText] = TextDrawCreate(538.000000, 368.000000, " ");
APlayerData[playerid][FuelGauge] = TextDrawCreate(537.000000, 387.000000, " ");
TextDrawBackgroundColor(APlayerData[playerid][SpeedometerText], 65535);
TextDrawFont(APlayerData[playerid][SpeedometerText], 2);
TextDrawLetterSize(APlayerData[playerid][SpeedometerText], 0.500000, 1.299999);
TextDrawColor(APlayerData[playerid][SpeedometerText], -1);
TextDrawSetOutline(APlayerData[playerid][SpeedometerText], 1);
TextDrawSetProportional(APlayerData[playerid][SpeedometerText], 1);
TextDrawUseBox(APlayerData[playerid][SpeedometerText], 1);
TextDrawBoxColor(APlayerData[playerid][SpeedometerText], 0x00000066);
TextDrawTextSize(APlayerData[playerid][SpeedometerText], 710.000000, 0.000000);
TextDrawBackgroundColor(APlayerData[playerid][FuelGauge], 65535);
TextDrawFont(APlayerData[playerid][FuelGauge], 1);
TextDrawLetterSize(APlayerData[playerid][FuelGauge], 0.500000, 1.299999);
TextDrawColor(APlayerData[playerid][FuelGauge], -1);
TextDrawSetOutline(APlayerData[playerid][FuelGauge], 1);
TextDrawSetProportional(APlayerData[playerid][FuelGauge], 0);
TextDrawUseBox(APlayerData[playerid][FuelGauge], 1);
TextDrawBoxColor(APlayerData[playerid][FuelGauge], 0x00000066);
TextDrawTextSize(APlayerData[playerid][FuelGauge], 710.000000, 0.000000);
APlayerData[playerid][NomeVeiculo] = TextDrawCreate(538.000000, 348.000000, " ");
TextDrawBackgroundColor(APlayerData[playerid][NomeVeiculo], 65535);
TextDrawFont(APlayerData[playerid][NomeVeiculo], 1);
TextDrawLetterSize(APlayerData[playerid][NomeVeiculo], 0.290000, 1.299998);
TextDrawColor(APlayerData[playerid][NomeVeiculo], -1);
TextDrawSetOutline(APlayerData[playerid][NomeVeiculo], 1);
TextDrawSetProportional(APlayerData[playerid][NomeVeiculo], 1);
TextDrawUseBox(APlayerData[playerid][NomeVeiculo], 1);
TextDrawBoxColor(APlayerData[playerid][NomeVeiculo], 0x00000066);
TextDrawTextSize(APlayerData[playerid][NomeVeiculo], 639.000000, 0.000000);
APlayerData[playerid][Gps] = TextDrawCreate(538.000000, 328.000000, " ");
TextDrawBackgroundColor(APlayerData[playerid][Gps], 65535);
TextDrawFont(APlayerData[playerid][Gps], 1);
TextDrawLetterSize(APlayerData[playerid][Gps], 0.290000, 1.299998);
TextDrawColor(APlayerData[playerid][Gps], -1);
TextDrawSetOutline(APlayerData[playerid][Gps], 1);
TextDrawSetProportional(APlayerData[playerid][Gps], 1);
TextDrawUseBox(APlayerData[playerid][Gps], 1);
TextDrawBoxColor(APlayerData[playerid][Gps], 0x00000066);
TextDrawTextSize(APlayerData[playerid][Gps], 639.000000, 0.000000);
// Enable the TextDraw for this player
TextDrawShowForPlayer(playerid, APlayerData[playerid][SpeedometerText]);
TextDrawShowForPlayer(playerid, APlayerData[playerid][FuelGauge]);
TextDrawShowForPlayer(playerid, APlayerData[playerid][NomeVeiculo]);
TextDrawShowForPlayer(playerid, APlayerData[playerid][Gps]);
// Start the speedometer timer
APlayerData[playerid][SpeedometerTimer] = SetTimerEx("Speedometer_Update", 500, true, "i", playerid);
return 1;
}
// This function cleans up the speedometer for the given player
Speedometer_Cleanup(playerid)
{
// Destroy the speedometer textdraw
TextDrawDestroy(APlayerData[playerid][SpeedometerText]);
TextDrawDestroy(APlayerData[playerid][FuelGauge]);
TextDrawDestroy(APlayerData[playerid][NomeVeiculo]);
TextDrawDestroy(APlayerData[playerid][Gps]);
// Kill the speedometer timer
KillTimer(APlayerData[playerid][SpeedometerTimer]);
// Set player speed to 0
APlayerData[playerid][PlayerSpeed] = 0;
return 1;
}
// This function gets called by a timer which runs every 500ms to display and update the speedometer
public Speedometer_Update(playerid)
{
// Setup local variables
new vehicleid, Float:speed_x, Float:speed_y, Float:speed_z, Float:final_speed, speed_string[50], final_speed_int, Float:vehiclehealth;
new FuelString[50], FuelStatus[20];
new Name[28], MeuVeiculo[40], MeuLocal[50];
// Get the ID of the player's vehicle
vehicleid = GetPlayerVehicleID(playerid);
//******************************************************************************************************************************
// Anti-hack stuff
//******************************************************************************************************************************
AntiHack(playerid);
//******************************************************************************************************************************
// End of anti-hack stuff
//******************************************************************************************************************************
// Check and toggle spectate-mode when needed (when target player entered or exited his vehicle)
if (GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
{
// Get the target player's ID and name
new OtherPlayer = APlayerData[playerid][SpectateID];
GetPlayerName(OtherPlayer, Name, sizeof(Name));
// Use the same worldid and interiorid as the OtherPlayer
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(OtherPlayer));
SetPlayerInterior(playerid, GetPlayerInterior(OtherPlayer));
// Check if the player is spectating a player
if (APlayerData[playerid][SpectateType] == ADMIN_SPEC_TYPE_PLAYER)
{
// Check if the target player has entered a vehicle
if (GetPlayerVehicleSeat(OtherPlayer) != -1)
{
// Change spectate mode to vehicle
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(OtherPlayer));
APlayerData[playerid][SpectateID] = OtherPlayer;
APlayerData[playerid][SpectateVehicle] = GetPlayerVehicleID(OtherPlayer);
APlayerData[playerid][SpectateType] = ADMIN_SPEC_TYPE_VEHICLE;
}
}
else // The player is spectating a vehicle
{
// Check if the target player has exited a vehicle
if (GetPlayerVehicleSeat(OtherPlayer) == -1)
{
// Change spectate mode to player
PlayerSpectatePlayer(playerid, OtherPlayer);
SetPlayerInterior(playerid, GetPlayerInterior(OtherPlayer));
APlayerData[playerid][SpectateID] = OtherPlayer;
APlayerData[playerid][SpectateType] = ADMIN_SPEC_TYPE_PLAYER;
}
}
}
// When the player got a wanted level and a police player warned him to stop, a timer is started and a variable is set to "true"
// Check if this variable has been set
if (APlayerData[playerid][PoliceWarnedMe] == true)
{
// Check if the player has no wanted level anymore (after finishing a overloaded mission, player got fined, ...)
if (GetPlayerWantedLevel(playerid) == 0)
{
APlayerData[playerid][PoliceCanJailMe] = false; // Clear the variable
APlayerData[playerid][PoliceWarnedMe] = false; // Clear the variable
APlayerData[playerid][Value_PoliceCanJailMe] = 0; // Clear the remaining time for the timer
KillTimer(APlayerData[playerid][Timer_PoliceCanJailMe]); // Kill the timer
}
}
// If the player is inside a vehicle
if(vehicleid != 0)
{
// Get the vehicles velocity
GetVehicleVelocity(vehicleid, speed_x, speed_y, speed_z);
// Calculate the speed (in kph)
final_speed = floatsqroot(((speed_x * speed_x) + (speed_y * speed_y)) + (speed_z * speed_z)) * 158.179;
// Convert the float value to an int value
final_speed_int = floatround(final_speed, floatround_round);
// Also save the speed for the player
APlayerData[playerid][PlayerSpeed] = final_speed_int;
// Setup the string to display for the player and display it
format(speed_string, 50, TXT_SpeedometerSpeed, final_speed_int);
TextDrawSetString(APlayerData[playerid][SpeedometerText], speed_string);
format(MeuVeiculo, sizeof(MeuVeiculo), "%s", Vehicles[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
TextDrawSetString(APlayerData[playerid][NomeVeiculo], MeuVeiculo);
format(MeuLocal,sizeof(MeuLocal),"%s",ReturnPlayerZone(playerid));
TextDrawSetString(APlayerData[playerid][Gps], MeuLocal);
// Add the speed to the stats (this will be the meters driven in total)
APlayerData[playerid][StatsMetersDriven] = APlayerData[playerid][StatsMetersDriven] + (final_speed / 7.2);
// Also display the vehicle's health through the player-health bar
GetVehicleHealth(vehicleid, vehiclehealth);
SetPlayerHealth(playerid, vehiclehealth / 10.0);
// Check if the speed is above 10kph and the fuel of the vehicle isn't empty yet
if ((final_speed_int > 10) && (AVehicleData[vehicleid][Fuel] > 0))
AVehicleData[vehicleid][Fuel] = AVehicleData[vehicleid][Fuel] - 1; // Decrease the fuel for this vehicle every time the timer is run
// Construct the fuelgauge
if ((AVehicleData[vehicleid][Fuel] > 0) && (AVehicleData[vehicleid][Fuel] < 100000))
format(FuelStatus, 20, "~g~%s~r~%s", "I", "IIIIIIIII"); // Fuel is between 0% and 10% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 1)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 2)))
format(FuelStatus, 20, "~g~%s~r~%s", "II", "IIIIIIII"); // Fuel is between 10% and 20% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 2)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 3)))
format(FuelStatus, 20, "~g~%s~r~%s", "III", "IIIIIII"); // Fuel is between 20% and 30% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 3)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 4)))
format(FuelStatus, 20, "~g~%s~r~%s", "IIII", "IIIIII"); // Fuel is between 30% and 40% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 4)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 5)))
format(FuelStatus, 20, "~g~%s~r~%s", "IIIII", "IIIII"); // Fuel is between 40% and 50% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 5)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 6)))
format(FuelStatus, 20, "~g~%s~r~%s", "IIIIII", "IIII"); // Fuel is between 50% and 60% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 6)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 7)))
format(FuelStatus, 20, "~g~%s~r~%s", "IIIIIII", "III"); // Fuel is between 60% and 70% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 7)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 8)))
format(FuelStatus, 20, "~g~%s~r~%s", "IIIIIIII", "II"); // Fuel is between 70% and 80% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 8)) && (AVehicleData[vehicleid][Fuel] < ((MaxFuel / 10) * 9)))
format(FuelStatus, 20, "~g~%s~r~%s", "IIIIIIIII", "I"); // Fuel is between 80% and 90% full
if ((AVehicleData[vehicleid][Fuel] >= ((MaxFuel / 10) * 9)) && (AVehicleData[vehicleid][Fuel] <= MaxFuel))
format(FuelStatus, 20, "~g~%s", "IIIIIIIIII"); // Fuel is between 90% and 100% full (all bars are green)
if (AVehicleData[vehicleid][Fuel] == 0)
format(FuelStatus, 20, "~r~%s", "IIIIIIIIII"); // Fuel is empty (all bars are red)
// Format the final fuel-gauge readout
format(FuelString, 50, TXT_SpeedometerFuel, FuelStatus);
// Display the fuel-gauge
TextDrawSetString(APlayerData[playerid][FuelGauge], FuelString);
// Check if the vehicle is out of fuel
if (AVehicleData[vehicleid][Fuel] == 0)
{
// Stop the engine and turn off the lights
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, 0, 0, alarm, doors, bonnet, boot, objective);
}
// Check if the player is not in any plane or helicopter (those cannot be caught by speedcamera's)
if (IsVehicleAirVehicle(vehicleid) == 0)
if (APlayerData[playerid][PlayerClass] != ClassPolice) // Check if the player isn't speeding (cops won't get caught)
CheckPlayerSpeeding(playerid);
}
else
{
// If the player is not inside a vehicle, display an empty string (looks like the speedometer is gone)
TextDrawSetString(APlayerData[playerid][SpeedometerText], " ");
TextDrawSetString(APlayerData[playerid][FuelGauge], " ");
TextDrawSetString(APlayerData[playerid][NomeVeiculo], " ");
TextDrawSetString(APlayerData[playerid][Gps], " ");
// Set the speed of the player to 0
APlayerData[playerid][PlayerSpeed] = 0;
}
}
// This timer-function is called when a player picks up a refuelpickup
public RefuelVehicle(playerid)
{
new RefuelMsg[128];
// Get the vehicle-id of the player's vehicle
new vID = GetPlayerVehicleID(playerid);
// Calculate the amount of fuel that needs to be refuelled
new Amount = MaxFuel - AVehicleData[vID][Fuel];
// Calculate the price to refuel
new RefuelPrice = (Amount * RefuelMaxPrice) / MaxFuel;
// Check if the player has enough cash
if (APlayerData[playerid][PlayerMoney] >= RefuelPrice)
{
// Refuel the vehicle
AVehicleData[vID][Fuel] = MaxFuel;
// Withdraw the money from the player
RewardPlayer(playerid, -RefuelPrice, 0);
// Let the player know he refuelled his vehicle
format(RefuelMsg, 128, TXT_RefuelledVehicle, RefuelPrice);
SendClientMessage(playerid, 0xFFFFFFFF, RefuelMsg);
}
else
SendClientMessage(playerid, 0xFFFFFFFF, TXT_CannotRefuelVehicle);
// Allow the player to move again
TogglePlayerControllable(playerid, 1);
return 1;
}
// This function checks if the player is speeding near a speedcamera
CheckPlayerSpeeding(playerid)
{
// Setup local variables
new Name[28], Msg[128], Msgg[128], location[MAX_ZONE_NAME], targetid;
// Check if the player hasn't been caught speeding recently
if (APlayerData[playerid][PlayerCaughtSpeeding] == 0)
{
// Loop through all speedcameras
for (new CamID; CamID < MAX_CAMERAS; CamID++)
{
// Check if this camera has been created
if (ACameras[CamID][CamSpeed] != 0)
{
// Check if the player is the driver of the vehicle
if (GetPlayerVehicleSeat(playerid) == 0)
{
// Check if the player's speed is greater than the speed allowed by this camera (no need to process a distance-check if not speeding)
if (APlayerData[playerid][PlayerSpeed] > ACameras[CamID][CamSpeed])
{
// Check if the player is near the camera
if (IsPlayerInRangeOfPoint(playerid, 50.0, ACameras[CamID][CamX], ACameras[CamID][CamY], ACameras[CamID][CamZ]))
{
// Prevent the player being caught multiple times by the same speed-camera
APlayerData[playerid][PlayerCaughtSpeeding] = 20;
// Increase the wanted-level of this player by 1 star
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1);
// Let the player know he's been caught speeding
SendClientMessage(playerid, 0xFFFFFFFF, TXT_PlayerCaughtSpeeding);
// Get the name of the player
GetPlayerName(playerid, Name, sizeof(Name));
GetPlayer2DZonea(targetid, location, MAX_ZONE_NAME);
// Also inform all police players that this player is caught speeding
format(Msg, 128, "{FF0000}%s foi pego em alta velocidade pelo radar!", Name);
format(Msgg, 128, "{079100}[LOCAL] Visto pela ultima vez proximo de: %s", location);
Police_SendMessage(Msg);
Police_SendMessage(Msgg);
}
}
}
}
}
}
else // If the player has been caught before, reduce the value until it's 0 again, then he can be caught again
APlayerData[playerid][PlayerCaughtSpeeding]--;
}
// This function processes anti-hack stuff
stock AntiHack(playerid)
{
// Setup local variables
new Float:Armour;
// Skip checking for hacks used by the player if he was reported by the Anti-Hack system already
if (APlayerData[playerid][AutoReportTime] > 0)
{
// Reduce the time so the player can be reported again soon if he doesn't stop using hacks
APlayerData[playerid][AutoReportTime]--;
// Exit the function, this skips the hack-checks until the AutoReportTime has reached 0
// Otherwise the player is reported every half a second until he stops using hacks
return 1;
}
// Check if a filterscript gave some money (or took it) to the player
if (GetPVarInt(playerid, "PVarMoney") != 0)
{
// Add the money to the players account
APlayerData[playerid][PlayerMoney] = APlayerData[playerid][PlayerMoney] + GetPVarInt(playerid, "PVarMoney");
// Clear the PVar
SetPVarInt(playerid, "PVarMoney", 0);
}
if (GetPVarInt(playerid, "PVarScore") != 0)
{
// Add the money to the players account
APlayerData[playerid][PlayerScore] = APlayerData[playerid][PlayerScore] + GetPVarInt(playerid, "PVarScore");
// Clear the PVar
SetPVarInt(playerid, "PVarScore", 0);
}
// Reset the player's money and set it to the stored value in the player's account (do the same for scorepoints)
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, APlayerData[playerid][PlayerMoney]);
SetPlayerScore(playerid, APlayerData[playerid][PlayerScore]);
// Limit the cash that the player can have
if (APlayerData[playerid][PlayerMoney] > 999000000)
APlayerData[playerid][PlayerMoney] = 999000000;
// Limit the cash that the player can have below 0
if (APlayerData[playerid][PlayerMoney] < -1000000)
APlayerData[playerid][PlayerMoney] = -1000000;
// Port anyone out of the area who is not an admin and inside the area 69
Player_PortOutAdminZone(playerid, 106.0, 1805.0, -50.0, 285.0, 1940.0, 40.0, 15.0, 1732.0, 25.0);
// Weapon hacks are also neutralized here, except for police players (if they are allowed to have weapons)
if ((PoliceGetsWeapons == true) && (APlayerData[playerid][PlayerClass] == ClassPolice))
{
// Do nothing
}
// Check if the player got any armour (= health-hack)
GetPlayerArmour(playerid, Armour);
// Send an automated report to the admins so they're informed about it and can take action
if (Armour > 1.0 && PlayerInfo[playerid][NoEvento] == 0)
SendReportToAdmins(playerid, "Health-hack", true);
// Check if the speed is higher than 300 (kick player if it is)
// Send an automated report to the admins so they're informed about it and can take action
if (APlayerData[playerid][PlayerSpeed] > 300)
SendReportToAdmins(playerid, "Speed-hack", true);
// Check if the player is not allowed to have a jetpack (admins lvl 3 and higher can use /fly, so they will be excluded)
if (APlayerData[playerid][PlayerLevel] < 3)
{
// Check if the player is using a jetpack
// Send an automated report to the admins so they're informed about it and can take action
if (GetPlayerSpecialAction(playerid) == 2)
SendReportToAdmins(playerid, "Jetpack-hack", true);
}
// Detect airbreak hack
if (GetPlayerVehicleSeat(playerid) == 0)
{
// Check if the player is nearly standing still
if (APlayerData[playerid][PlayerSpeed] < 10)
{
// Check if the player switched interior-id's
if (GetPlayerInterior(playerid) != APlayerData[playerid][PreviousInt])
{
// Check if the new interior is the normal world or any mod-shop
switch (GetPlayerInterior(playerid))
{
case 0, 1, 2, 3: // Check interiors 0, 1, 2 and 3 (normal world and all mod-shops)
{
// Store the player's current location and interior-id for the next iteration
GetPlayerPos(playerid, APlayerData[playerid][PreviousX], APlayerData[playerid][PreviousY], APlayerData[playerid][PreviousZ]);
APlayerData[playerid][PreviousInt] = GetPlayerInterior(playerid);
// Exit the function
return 1;
}
}
}
// Check if the player is still near the same place he was half a second ago
if (IsPlayerInRangeOfPoint(playerid, 7.5, APlayerData[playerid][PreviousX], APlayerData[playerid][PreviousY], APlayerData[playerid][PreviousZ]))
{
}
else // Send an automated report to the admins so they're informed about it and can take action
SendReportToAdmins(playerid, "Airbreak-hack", true);
}
}
// Store the player's current location and interior-id for the next iteration
GetPlayerPos(playerid, APlayerData[playerid][PreviousX], APlayerData[playerid][PreviousY], APlayerData[playerid][PreviousZ]);
APlayerData[playerid][PreviousInt] = GetPlayerInterior(playerid);
return 1;
}
stock ReturnPlayerZone(playerid)
{
new location[MAX_ZONE_NAME];
GetPlayer2DZone(playerid, location, MAX_ZONE_NAME);
return location;
}
stock GetPlayer2DZone(playerid, zone[], len)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new i = 0; i != sizeof(gSAZones); i++ )
{
if(x >= gSAZones[i][SAZONE_AREA][0] && x <= gSAZones[i][SAZONE_AREA][3] && y >= gSAZones[i][SAZONE_AREA][1] && y <= gSAZones[i][SAZONE_AREA][4])
{
return format(zone, len, gSAZones[i][SAZONE_NAME], 0);
}
}
return 0;
}
'Capa de menu' que merda й essa? O servidor nгo estб inteiro bugado.
Se uma textdraw buga, pode bugar todas as outras.