[Ajuda] Text Draw Bugando
#1

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.

SpeedMeter:

Код:
#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;
}
Reply
#2

Nгo e sу o textdraw nгo
O server inteiro ta bugado '-'

Entrei la pra ver, entrei 5 vezes e a capa de menu nгo sai.
Reply
#3

'Capa de menu' que merda й essa? O servidor nгo estб inteiro bugado.

Se uma textdraw buga, pode bugar todas as outras.

Alguem pode me ajudar?
Reply
#4

Ajuda?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)