www.pudn.com > lvdm.rar > lvdm.pwn


#include 
#include 
#include 

#pragma tabsize 0

#define Version "v1.2"

#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define PocketMoney 50000
#define PocketWeaponID 24
#define PocketWeaponAmmo 300
#define MaxSave 100
#define MaxBuyVehicle 200

forward MoneyGrubScoreUpdate();
forward PlayerCheckpointsUpdate();
forward GivePlayerMoneyUpdate();
forward RaceCountUpdate();
forward WeatherUpdate();
forward RaceTimerUpdate();
forward DestroyPickups(idx);
forward DisablePlayerWeaponCheck();

//------------------------------------------------------------------------------------------------------

new TeleCommands[5][20] =                   {
"/ldz","/4long","/hdc","/sfck","/cjj"
                                            };

new TeleNames[5][30] =                      {
"¹p¹F¯¸","¥|Às½ä³õ","®üµs²î","SF¨®®w","CJ¦Ñ®a"
											};

new Float:TelePoss[5][4] =                  {
{-275.722045,1552.411376,75.065612,0.0},
{2021.312744,999.861633,10.820312,0.0},
{2018.5475,1535.1003,10.8224,0.0},
{-1972.760253,285.018524,35.171875,0.0},
{2507.9397,-1681.3051,13.5469,0.0}
										    };
//------------------------------------------------------------------------------------------------------

new Float:CheckpointsArea[3][4] =           {
{1898.1156,1443.6792,2079.6196,1721.9296},
{284.053161,-86.436386,303.030212,-76.663833},
{-1965.174194,253.466308,-1941.886352,277.229095}
								            };

new Float:CheckpointsInfos[3][5] =          {
{2000.5331,1519.2322,17.0625,2.0,1.0},
{298.254974,-80.4079,1001.515625,1.0,2.0},
{-1942.630859,254.134719,35.468750,2.0,3.0}
								            };

new CheckpointsText[3][100] =               {
" §A¥i¥H¦b®üµs²î¤WÀò±oª÷¿ú.",
" ¦b³o¸Ì¶Rºj¦º¤`«á¥i¥HÄ~Äò¨Ï¥Î^^,¦ý»ù¿ú¤]¤£«K©y®@@@",
" §A¥i¥H¦b³o¸Ì¬Ý¦u¨®©±Àò±o¤u¿ú."
											};

new Float:RacesArea[11][9] =                 {
{-313.9563,1451.4565,-271.0909,1563.1326,1.0,-302.603607,1515.305786,75.066429,15.0},
{1977.698730,818.227233,2040.038452,867.325988,2.0,2005.967163,834.576721,6.417941,15.0},
{2099.992675,822.485473,2189.071533,868.777099,3.0,2142.4348,852.6296,6.4446,15.0},
{-1619.2917,1008.7499,-1548.4275,1093.5212,4.0,-1584.1683,1040.0474,6.6037,15.0},
{-1806.4449,-644.2509,-1711.9590,-554.3396,5.0,-1762.1678,-584.9152,15.9071,15.0},
{1373.2338,1656.5471,1556.4810,1861.8489,6.0,1477.6029,1750.0604,10.3765,20.0},
{113.5470,-1565.9362,296.1089,-1484.2670,7.0,197.2630,-1498.1868,12.4469,15.0},
{2284.7673,1931.2582,2298.9167,1984.1702,8.0,2290.9880,1936.8302,31.5067,10.0},
{1871.1764,801.4373,1948.1963,901.8195,9.0,1904.9873,834.2745,7.3589,15.0},
{2246.5237,797.4461,2356.3979,892.7870,10.0,2299.5808,853.0750,6.2999,15.0},
{1755.2638,784.0143,1853.6821,902.4185,11.0,1788.2479,825.2874,10.2284,15.0}
											};

new RacepointsText[11][50] =                 {
"¨Fºz­·¼É","°ª³t¤½¸ôÁÉ","LV«°ÂíÁÉI","SF¹D¸ô²V¦XÁÉI","SF¹D¸ô²V¦XÁÉII","LV¾÷³õ¶°éÁÉ","LS«°ÂíÁÉ","LVº}²¾½m²ßÁÉ","LS¹A§ø¹D¸ôÁÉ","LV«°ÂíÁÉII","LS¹D¸ô²V¦XÁÉ"
											};

new Float:Race1Checkpoints[23][4] =         {
{-306.219543,1395.202026,72.013809,15.0},
{-362.067108,1464.847534,63.346614,15.0},
{-320.868041,1321.343872,53.165271,15.0},
{-451.293823,1541.437133,36.307544,15.0},
{-415.616424,1918.719726,57.233325,15.0},
{-453.036773,1759.208374,71.798820,15.0},
{-382.355224,2073.724609,60.565448,15.0},
{-877.086120,1944.114624,59.889945,15.0},
{-966.836547,1829.056030,61.539569,15.0},
{-1153.740966,1782.622558,39.203063,15.0},
{-914.249023,1705.569824,27.031356,15.0},
{-768.972412,1284.146606,13.312028,15.0},
{-532.538574,1086.099975,10.737322,15.0},
{-275.338623,791.630615,15.278830,15.0},
{119.202072,888.455139,21.373659,15.0},
{214.764648,998.343444,27.174871,15.0},
{144.342422,1167.901489,15.103495,15.0},
{-77.171844,1259.906250,12.201769,15.0},
{-411.929351,1444.811767,35.619297,15.0},
{-326.164611,1316.856445,52.478385,15.0},
{-372.193725,1462.142822,62.164287,15.0},
{-304.213775,1395.456909,72.031318,15.0},
{-302.624145,1510.448120,75.065673,15.0}
											 };

new Float:Race2Checkpoints[28][4] =          {
{1873.105712,834.715515,8.532384,15.0},
{1802.802368,834.498962,10.351023,15.0},
{1753.963134,834.346313,9.583683,15.0},
{1681.787231,834.125244,7.221040,15.0},
{1612.996459,833.887023,6.417655,15.0},
{1499.486206,832.880432,6.547313,15.0},
{1257.142944,829.674621,7.998331,15.0},
{923.942932,719.626708,10.442388,15.0},
{390.235626,772.013916,5.839733,15.0},
{198.612182,955.557006,27.541267,15.0},
{-114.792030,805.391296,20.301284,15.0},
{-295.371948,674.935058,17.777833,15.0},
{-187.146240,650.128784,6.392411,15.0},
{-103.301918,539.614929,6.643163,15.0},
{142.570175,693.262634,5.758738,15.0},
{863.223571,696.066101,11.496833,15.0},
{1202.146850,865.573120,12.010387,15.0},
{1307.259033,1037.075805,11.493945,15.0},
{1227.211425,1395.108764,6.465366,15.0},
{1227.388916,1949.854858,6.461638,15.0},
{1356.362792,2442.511718,6.461503,15.0},
{2089.716064,2565.369384,6.507553,15.0},
{2482.281738,2596.059326,4.856646,15.0},
{2708.575683,2105.484130,6.469346,15.0},
{2707.880615,1628.153930,6.465365,15.0},
{2708.038574,1259.214355,6.465429,15.0},
{2494.386230,859.889587,6.461636,15.0},
{1999.133544,852.408447,6.457599,15.0}
                                              };

new Float:Race3Checkpoints[22][4] =           {
{1857.5424,852.3164,9.0666,15.0},
{1569.5276,833.4738,6.4781,15.0},
{1283.4171,909.1198,6.5186,15.0},
{1226.2426,1257.6860,6.4454,15.0},
{1208.6522,1540.6212,6.4461,15.0},
{1259.1206,1727.1323,7.6723,15.0},
{1327.3728,1837.3894,10.3827,15.0},
{1361.6879,1873.3285,10.3780,15.0},
{1707.3190,1895.6301,10.3779,15.0},
{1729.7087,2053.2153,10.3786,15.0},
{1962.3785,2022.4387,10.3788,15.0},
{2146.3711,2039.7515,10.3780,15.0},
{2182.4739,2136.8645,10.3789,15.0},
{2350.5977,2176.6929,10.3885,15.0},
{2287.3594,2264.4888,10.3789,15.0},
{2270.4050,2413.1094,10.3795,15.0},
{2189.7004,2325.6182,10.3780,15.0},
{2146.7046,2098.4155,10.3823,15.0},
{2076.2852,1758.2347,10.3785,15.0},
{2066.3904,1504.2338,10.3780,15.0},
{2048.4412,1326.2501,10.3780,15.0},
{2048.4331,852.9920,6.4376,15.0}
                                               };

new Float:Race4Checkpoints[37][4] =            {
{-1584.2928,1151.7778,6.6037,15.0},
{-1693.4873,1306.7061,6.6052,15.0},
{-1882.1967,1346.2892,6.6050,15.0},
{-2067.1877,1273.8612,8.8215,15.0},
{-2269.1892,1228.6245,46.9732,15.0},
{-2143.4243,1074.6460,79.4126,15.0},
{-2143.7625,784.2877,68.9802,15.0},
{-2143.1077,545.8139,34.5817,15.0},
{-2040.6165,504.1263,34.5725,15.0},
{-1983.0829,605.7291,34.5804,15.0},
{-1898.9146,591.1979,34.5454,15.0},
{-1826.6498,443.9276,17.6239,15.0},
{-1889.8517,181.8546,38.0079,15.0},
{-1911.0107,-411.5964,37.8079,15.0},
{-1907.6628,-1325.7872,39.4907,15.0},
{-1968.1576,-1328.7991,39.3548,15.0},
{-2113.0361,-1088.4169,29.7392,15.0},
{-2207.4387,-866.1030,53.3850,15.0},
{-2269.9131,-759.5767,79.4861,15.0},
{-2348.9058,-784.3986,93.9797,15.0},
{-2423.4553,-607.9565,132.1282,15.0},
{-2511.4695,-483.7780,90.0474,15.0},
{-2628.0720,-493.7973,69.6669,15.0},
{-2323.6685,-454.4333,79.5919,15.0},
{-2488.5229,-367.5089,63.3713,15.0},
{-2673.6377,-467.2357,25.9472,15.0},
{-2734.6016,-521.6826,7.7905,15.0},
{-2756.5669,-451.9859,6.6493,15.0},
{-2138.1006,-349.7059,34.6385,15.0},
{-1900.7662,-317.2262,49.2222,15.0},
{-1890.0569,2.8772,37.8079,15.0},
{-1857.4261,192.4098,37.4518,15.0},
{-1798.4565,358.3932,16.5817,15.0},
{-1710.3119,342.7227,6.5969,15.0},
{-1559.1774,665.4386,6.6050,15.0},
{-1584.1492,1054.3411,6.6053,15.0},
{-1584.2190,1149.2968,6.6053,15.0}
                                               };

new Float:Race5Checkpoints[58][4] =            {
{-1761.2782,-677.8287,22.8481,15.0},
{-1353.5712,-814.9792,77.5606,15.0},
{-1210.0947,-748.2033,60.7374,15.0},
{-1168.3228,-642.3738,41.8549,15.0},
{-1076.1241,-471.7011,33.6254,15.0},
{-975.5204,-441.4345,34.7967,15.0},
{-807.5438,-454.6881,17.4776,15.0},
{-553.5473,-391.8330,19.7058,15.0},
{-397.9999,-529.3001,17.7054,15.0},
{-405.9109,-656.1783,13.946,15.0},
{-373.0450,-819.7197,28.0200,15.0},
{-655.8243,-1477.3895,19.9057,15.0},
{-717.2574,-1696.5249,48.1851,15.0},
{-719.6248,-1313.5677,63.3768,15.0},
{-762.8658,-1322.0499,76.0873,15.0},
{-773.4388,-1738.7867,95.2752,15.0},
{-968.3632,-1905.7871,80.0724,15.0},
{-1002.0175,-1988.5261,71.9517,15.0},
{-1173.1003,-2368.1709,44.5717,15.0},
{-974.8641,-2609.7065,86.7761,15.0},
{-546.5800,-2163.4604,44.8979,15.0},
{-342.3828,-2142.1892,41.8651,15.0},
{-268.0175,-1984.9473,29.3136,15.0},
{-238.9529,-1673.1022,2.0423,15.0},
{-42.5822,-1515.5112,1.3861,15.0},
{-148.0343,-1301.6570,2.2613,15.0},
{-119.9645,-978.9011,25.5288,15.0},
{-84.9609,-911.8202,17.2832,15.0},
{19.9482,-499.2120,8.0427,15.0},
{-181.8252,-343.6422,0.6440,15.0},
{-264.2547,-276.3852,1.0836,15.0},
{-390.8916,-259.2280,25.1696,15.0},
{-743.8986,-247.0809,54.9069,15.0},
{-943.0221,-214.5491,39.7617,15.0},
{-673.7037,-18.0866,70.6599 ,15.0},
{-702.8096,12.3190,62.8472,15.0},
{-859.7112,-48.1207,40.0724,15.0},
{-854.4598,1.1747,32.7923,15.0},
{-673.3597,42.5234,32.5665,15.0},
{-702.9084,114.6225,16.7831,15.0},
{-776.6520,154.4646,6.0281,15.0},
{-690.5784,245.1951,1.6529,15.0},
{-296.3804,262.6231,3.8190,15.0},
{-195.7839,261.2834,11.6439,15.0},
{-160.0941,397.9532,11.6441,15.0},
{-139.0790,533.5099,6.7376,15.0},
{-326.9411,548.4161,15.9566,15.0},
{-881.7430,822.7986,19.2670,15.0},
{-985.4780,1144.5260,30.6638,15.0},
{-1189.0881,1060.0184,40.5984,15.0},
{-1407.6825,829.5368,47.0106,15.0},
{-1579.9127,647.9978,42.5816,15.0},
{-1802.0940,414.8592,38.6286,15.0},
{-1869.9789,193.8131,37.9032,15.0},
{-1891.4246,-20.6390,37.8082,15.0},
{-1885.1929,-384.8047,37.8016,15.0},
{-1836.1007,-580.0587,17.1720,15.0},
{-1764.2335,-584.6127,15.9071,15.0}
                                               };

new Float:Race6Checkpoints[20][4] =            {
{1464.5317,1276.5209,10.3862,15.0},
{1389.8287,1296.4795,10.3853,15.0},
{1393.2756,1706.4818,10.3851,15.0},
{1477.6100,1701.9880,10.3885,15.0},
{1464.5317,1276.5209,10.3862,15.0},
{1389.8287,1296.4795,10.3853,15.0},
{1393.2756,1706.4818,10.3851,15.0},
{1477.6100,1701.9880,10.3885,15.0},
{1464.5317,1276.5209,10.3862,15.0},
{1389.8287,1296.4795,10.3853,15.0},
{1393.2756,1706.4818,10.3851,15.0},
{1477.6100,1701.9880,10.3885,15.0},
{1464.5317,1276.5209,10.3862,15.0},
{1389.8287,1296.4795,10.3853,15.0},
{1393.2756,1706.4818,10.3851,15.0},
{1477.6100,1701.9880,10.3885,15.0},
{1464.5317,1276.5209,10.3862,15.0},
{1389.8287,1296.4795,10.3853,15.0},
{1393.2756,1706.4818,10.3851,15.0},
{1477.6100,1701.9880,10.3885,15.0}
                                               };

new Float:Race7Checkpoints[19][4] =            {
{268.7280,-1426.1914,13.1849,15.0},
{618.1451,-1218.7190,17.6683,15.0},
{807.7799,-1048.4258,24.6279,15.0},
{1064.7172,-955.7869,42.1593,15.0},
{1607.2676,-971.2263,37.7821,15.0},
{1896.0972,-1019.5569,35.6987,15.0},
{2390.5466,-1153.8451,28.0310,15.0},
{2866.8855,-1137.5182,10.4366,15.0},
{2890.8018,-1304.6022,10.4406,15.0},
{2822.6187,-1966.3575,10.5032,15.0},
{2734.2395,-2160.2473,10.6679,15.0},
{2249.1101,-2324.8918,12.9411,15.0},
{2144.6138,-2623.7937,12.9477,15.0},
{1858.0919,-2669.9294,5.4334,15.0},
{1320.6206,-2504.0466,12.0928,15.0},
{1110.6592,-2360.1526,11.4853,15.0},
{1024.6168,-1798.5897,13.3179,15.0},
{525.7977,-1715.1487,12.1439,15.0},
{343.1227,-1700.1687,6.1645,15.0}
                                               };

new Float:Race8Checkpoints[49][4] =            {
{2235.6204,1949.9951,31.3493,10.0},
{2284.5696,1963.4237,31.3463,10.0},
{2239.4497,1976.8438,31.3508,10.0},
{2302.9260,1964.6893,31.3407,10.0},
{2236.8540,1950.1963,25.8642,10.0},
{2283.6267,1963.1610,25.8645,10.0},
{2236.6387,1977.0745,25.8624,10.0},
{2301.4973,1964.6221,25.8640,10.0},
{2235.9307,1950.0455,20.3867,10.0},
{2284.8928,1963.3348,20.3929,10.0},
{2235.5112,1977.0656,20.3931,10.0},
{2303.4392,1964.0658,20.3744,10.0},
{2235.9805,1949.7026,14.9109,10.0},
{2283.3977,1962.7467,14.9180,10.0},
{2239.1533,1976.3923,14.9145,10.0},
{2303.7424,1964.6273,14.9125,10.0},
{2236.4521,1950.5032,9.4315,10.0},
{2281.3838,1963.2268,9.4324,10.0},
{2223.7688,1977.4929,9.4331,10.0},
{2287.4805,1994.4928,6.4785,10.0},
{2319.1262,1900.0687,10.2444,10.0},
{2345.5813,1925.1538,10.2377,10.0},
{2323.4478,2022.0103,10.2379,10.0},
{2157.4187,2022.0365,10.3975,10.0},
{2171.9167,2135.7617,10.2379,10.0},
{2336.3301,2136.0791,10.2476,10.0},
{2346.1851,2008.3788,10.1657,10.0},
{2319.5178,1906.4958,9.4180,10.0},
{2230.6362,1994.0548,9.4342,10.0},
{2237.7114,1964.4982,9.4321,10.0},
{2283.9519,1951.2292,9.4382,10.0},
{2236.3845,1937.2745,9.4322,10.0},
{2283.6580,1976.2255,14.9131,10.0},
{2235.8804,1963.5842,14.9077,10.0},
{2283.2517,1950.6141,14.8905,10.0},
{2235.9875,1936.3816,14.9181,10.0},
{2283.3477,1976.2703,20.3849,10.0},
{2236.7861,1964.1766,20.3949,10.0},
{2283.6548,1950.4860,20.3932,10.0},
{2236.6162,1937.2865,20.3849,10.0},
{2283.3496,1976.1437,25.8643,10.0},
{2237.0942,1964.0226,25.8640,10.0},
{2284.2449,1950.1892,25.8585,10.0},
{2236.6387,1937.8336,25.8608,10.0},
{2283.5332,1976.7197,31.3438,10.0},
{2236.2776,1963.8390,31.3472,10.0},
{2284.1863,1950.4846,31.3449,10.0},
{2236.2712,1937.4370,31.3446,10.0},
{2292.7925,1936.3477,31.3422,10.0}
                                               };

new Float:Race9Checkpoints[63][4] =            {
{1458.4331,851.0778,6.3771,15.0},
{1226.7533,1350.2371,6.3084,15.0},
{1227.0592,2063.4976,6.3008,15.0},
{1048.9591,2512.5022,10.1977,15.0},
{667.3976,2537.5430,30.1860,15.0},
{654.5019,1841.3328,5.0387,15.0},
{527.6116,1698.3717,10.6339,15.0},
{564.0200,1771.4120,12.0311,15.0},
{571.4389,2239.1401,34.8065,15.0},
{367.0135,2334.3350,24.8114,15.0},
{172.4062,2283.0664,21.6537,15.0},
{-43.4692,2305.7437,24.2831,15.0},
{-98.3789,2441.7439,14.9864,15.0},
{-331.3643,2517.6028,34.6364,15.0},
{-518.7040,2425.4749,57.5320,15.0},
{-725.7844,2574.3013,70.6420,15.0},
{-702.7380,2678.0229,56.9890,15.0},
{-765.1004,2692.8601,47.3858,15.0},
{-794.6036,2729.6948,44.8992,15.0},
{-1211.3776,2686.4043,45.6261,15.0},
{-1171.1986,2597.3950,63.7927,15.0},
{-1063.1685,2178.3159,87.0961,15.0},
{-1249.0842,1956.3871,48.9509,15.0},
{-1147.4524,1779.0901,38.5404,15.0},
{-850.1663,1449.3633,14.2334,15.0},
{-712.3261,1232.1748,12.7799,15.0},
{-605.1240,1167.9415,7.8252,15.0},
{-304.2222,904.5165,10.0023,15.0},
{-225.0624,795.2267,18.5995,15.0},
{-115.3168,808.8246,20.0815,15.0},
{-297.0319,671.4177,17.5855,15.0},
{-188.0604,649.7690,6.3429,15.0},
{-131.3680,508.8771,8.7424,15.0},
{-309.4517,-139.6273,0.6440,15.0},
{-152.2624,-185.2478,1.4563,15.0},
{181.6600,-216.9417,0.9897,15.0},
{207.9897,-311.5576,1.0645,15.0},
{352.3449,-393.7118,17.5523,15.0},
{640.9377,-423.2729,15.7556,15.0},
{665.6191,-485.0364,15.7527,15.0},
{720.8717,-493.2549,15.7559,15.0},
{721.1318,-591.2515,15.7537,15.0},
{681.7167,-615.7885,15.7513,15.0},
{719.7399,-874.2814,42.6962,15.0},
{795.5276,-1014.3465,27.2928,15.0},
{776.5111,-1586.0459,12.9496,15.0},
{867.2005,-1584.0529,12.9492,15.0},
{1299.2281,-1544.1425,12.9485,15.0},
{1357.4187,-1154.5297,23.2116,15.0},
{1392.8225,-1144.0873,23.2227,15.0},
{1847.8981,-1180.8809,23.2117,15.0},
{1867.1771,-1075.2513,23.2378,15.0},
{1977.3680,-1051.5991,23.9643,15.0},
{2379.3828,-1154.3955,27.0077,15.0},
{2860.5576,-1137.2570,10.4409,15.0},
{2873.2039,-896.7383,10.4427,15.0},
{2739.3811,-177.7121,30.7635,15.0},
{2442.3613,318.8771,32.0070,15.0},
{1970.4253,301.4303,33.0897,15.0},
{1767.8337,277.9324,18.2843,15.0},
{1706.0121,395.4771,29.9358,15.0},
{1803.8925,794.6735,10.7804,15.0},
{1873.5494,834.2311,8.4025,15.0}
                                               };

new Float:Race10Checkpoints[32][4] =           {
{2675.8560,992.3091,6.3007,15.0},
{2709.5010,1214.8992,6.3087,15.0},
{2679.0540,1381.4010,7.1038,15.0},
{2552.4573,1473.5209,10.3467,15.0},
{2547.1453,1428.5343,10.2380,15.0},
{2527.3347,1350.4716,10.2389,15.0},
{2519.8091,1194.4312,10.3618,15.0},
{2244.4673,1193.0460,10.2382,15.0},
{2247.3462,1407.7128,10.2459,15.0},
{2270.7053,1532.9812,10.2386,15.0},
{2327.4187,1561.4539,10.2381,15.0},
{2356.1267,1613.2954,10.2385,15.0},
{2547.8315,1633.4211,10.2422,15.0},
{2507.2620,1727.9271,10.2372,15.0},
{2527.3499,2074.0754,10.2381,15.0},
{2488.0435,2136.6160,10.2383,15.0},
{2350.5845,2110.9309,10.2460,15.0},
{2311.9082,1893.4005,10.2366,15.0},
{2139.6245,1849.7250,10.2460,15.0},
{2015.4595,1712.9547,10.2388,15.0},
{1581.9972,1713.1055,10.2378,15.0},
{1566.8898,1868.6625,10.4251,15.0},
{1343.6592,1873.2896,10.2361,15.0},
{1322.9418,1815.8519,10.2390,15.0},
{1202.1943,1813.2816,13.1168,15.0},
{1025.4497,1813.3748,10.2407,15.0},
{1007.3904,1212.3372,10.2387,15.0},
{1166.0142,1177.3599,10.3109,15.0},
{1208.6907,1065.9657,6.3795,15.0},
{1283.7001,882.2339,6.3787,15.0},
{1542.0940,852.3070,6.3789,15.0},
{2042.4181,852.2728,6.2664,15.0}
                                               };

new Float:Race11Checkpoints[38][4] =           {
{1762.1470,627.9617,20.1009,15.0},
{1630.6967,189.2709,32.5268,15.0},
{1710.7838,-625.5118,39.8879,15.0},
{1655.4530,-817.6631,57.2760,15.0},
{1392.7832,-937.5399,33.9324,15.0},
{1398.7698,-872.5309,41.6730,15.0},
{1475.8527,-767.7053,90.8966,15.0},
{1437.1052,-699.1652,88.0694,15.0},
{1208.9255,-749.8516,98.5096,15.0},
{949.0266,-789.7018,106.8797,15.0},
{875.6412,-772.6322,89.1769,15.0},
{680.8303,-857.0383,69.5905,15.0},
{529.0253,-902.2149,71.1413,15.0},
{506.0791,-984.8463,87.0074,15.0},
{320.3396,-1033.2529,91.8184,15.0},
{271.2714,-1122.8875,78.0384,15.0},
{168.7856,-1200.7474,48.2758,15.0},
{168.0553,-1407.1356,45.6771,15.0},
{108.5238,-1488.3505,13.4096,15.0},
{149.0222,-1558.9868,10.2195,15.0},
{483.9612,-1724.4675,10.7091,15.0},
{981.1561,-1800.4893,13.6363,15.0},
{1056.9642,-2026.1306,12.4893,15.0},
{1201.9158,-2443.9502,9.2878,15.0},
{1339.2279,-2523.7463,13.1122,15.0},
{1358.1060,-2458.8096,7.2244,15.0},
{1306.6613,-2308.0195,12.9470,15.0},
{1320.5132,-2378.0505,21.2640,15.0},
{1773.5455,-2378.1199,12.9414,15.0},
{1838.9982,-2292.4070,12.9480,15.0},
{1772.0658,-2194.7051,12.9409,15.0},
{1281.5348,-2198.5989,20.5807,15.0},
{1333.7258,-2215.6130,12.9488,15.0},
{1610.9480,-2076.4448,19.2587,15.0},
{1678.6438,-917.0666,61.3938,15.0},
{1680.7157,-338.5795,44.4001,15.0},
{1704.7422,398.1100,29.9814,15.0},
{1787.7513,805.3448,10.6027,15.0}
                                               };

//------------------------------------------------------------------------------------------------------

new Float:gRandomPlayerSpawns[23][3] =      {//By SA-MP Team
{1958.3783,1343.1572,15.3746},
{2199.6531,1393.3678,10.8203},
{2483.5977,1222.0825,10.8203},
{2637.2712,1129.2743,11.1797},
{2000.0106,1521.1111,17.0625},
{2024.8190,1917.9425,12.3386},
{2261.9048,2035.9547,10.8203},
{2262.0986,2398.6572,10.8203},
{2244.2566,2523.7280,10.8203},
{2335.3228,2786.4478,10.8203},
{2150.0186,2734.2297,11.1763},
{2158.0811,2797.5488,10.8203},
{1969.8301,2722.8564,10.8203},
{1652.0555,2709.4072,10.8265},
{1564.0052,2756.9463,10.8203},
{1271.5452,2554.0227,10.8203},
{1441.5894,2567.9099,10.8203},
{1480.6473,2213.5718,11.0234},
{1400.5906,2225.6960,11.0234},
{1598.8419,2221.5676,11.0625},
{1318.7759,1251.3580,10.8203},
{1558.0731,1007.8292,10.8125},
{1705.2347,1025.6808,10.8203}
                                            };

//------------------------------------------------------------------------------------------------------

main()
{
		print("\n----------------------------------");
		print("  Running LVDM +Racing\n");
		print("         Made By");
		print("            Jax\n");
		print("         Modify By");
		print("           cjllai");
		print("        QQ:290594927");
		print("        MSN:cjllai@msn.cn");
		print("----------------------------------\n");
}

//------------------------------------------------------------------------------------------------------
new PlayerName[200][24];

public MoneyGrubScoreUpdate()//By SA-MP Team
{
	for(new i=0;i<200;i++)if (IsPlayerConnected(i))SetPlayerScore(i,GetPlayerMoney(i));
}

//------------------------------------------------------------------------------------------------------
new Float:Checkpoint[200],IsPlayerInCheckpointArea[200];
new Float:Racepoint[200],IsPlayerInRacesArea[200],IsPlayerRacing[200],RacingPositon[200],RaceCount[200],RacingID[200],IsIn1[200],IsIn2[200],RaceTimer[200],RaceCheckpoints[200],Text:RaceTime[200][6],RacerPositon[200],RacerPositonTmp[100],RaceID,Racers[100];
new IsPlayerSpecting[200],Text:SpectingInfos[200][3],SpectingTmp[200],IsPlayerSpawned[200];
new Menu:Wlist1[200],Menu:Wlist2[200],Menu:Wlist3[200],Menu:Wlist4[200],Menu:Wlist5[200],Menu:Wlist6[200],Menu:Wlist7[200],Menu:Wlist8[200],Menu:WBN1[200],Menu:WBN2[200],Menu:WBN3[200],Menu:WBN4[200],Menu:WBN5[200],Menu:WBN6[200],Menu:WBN7[200],Menu:WBN8[200],Menu:WBN9[200],Menu:WBN10[200],Menu:WBN11[200],Menu:WBN12[200],Menu:WBN13[200],IsPlayerBuyingWeapons[200],SpawnWeaponInfos[200][2][6],Weapons[200][2][13];
new SaveNames[MaxSave][24],SaveMoney[MaxSave],SaveWeapons[MaxSave][2][6],SavePos;
new Vehicles[MaxBuyVehicle],BuyVehiclePos;

public OnPlayerConnect(playerid)
{
	new string[60],ip[15];
	GameTextForPlayer(playerid,"~w~SA-MP: ~r~Las Venturas ~g~Racing",5000,5);
	SendClientMessage(playerid,0xFF004040, " Åwªï¨Ó¨ì¦¹ªA°È¾¹,¿é¤J/help¬d¬Ý¤¶²Ð.");
	GetPlayerName(playerid,PlayerName[playerid],24),GetPlayerIp(playerid,ip,15);
	format(string,60,"[join] %s has joined the server (%d:%s)",PlayerName[playerid],playerid,ip);
	SendClientMessageToAll(COLOR_GREY,string);
	SendDeathMessage(255,playerid,200);
	RaceCount[playerid] = -1;
	Checkpoint[playerid] = IsPlayerInCheckpointArea[playerid] = 0;
	Racepoint[playerid] = IsPlayerInRacesArea[playerid] = IsPlayerRacing[playerid] = RacingPositon[playerid] = RacingID[playerid] = IsIn1[playerid] = IsIn2[playerid] = RaceTimer[playerid] = RaceCheckpoints[playerid] = RacerPositon[playerid] = 0;
	IsPlayerSpecting[playerid] = SpectingTmp[playerid] = -1;
	IsPlayerSpawned[playerid] = 0;
	IsPlayerBuyingWeapons[playerid] = 0;
	for(new i=0;i<6;i++)
	SpawnWeaponInfos[playerid][0][i] = 0;

    for(new i=0;i -1)
	   {
          SendClientMessage(playerid,COLOR_YELLOW," ½Ð¥ý°h¥X¤ñÁÉ!");
		  return 1;
	   }
	   new id[256];
	   id = strtok(cmdtext,idx);
	   if(!strlen(id) || strval(id) < 1)
	   {
	      SendClientMessage(playerid,COLOR_YELLOW," ¨Ï¥Î¤èªk:/race 1~5");
	      return 1;
	   }
	   if(strval(id) == 1)SetPlayerPosEx(playerid,-1553.7537,1089.9167,7.3766,0);
	   if(strval(id) == 2)SetPlayerPosEx(playerid,-1786.0852,-624.9550,19.6574,0);
	   if(strval(id) == 3)SetPlayerPosEx(playerid,1534.3239,1671.5698,11.0322,0);
	   if(strval(id) == 4)SetPlayerPosEx(playerid,153.1164,-1532.8431,11.5503,0);
	   if(strval(id) == 5)SetPlayerPosEx(playerid,2295.1831,1936.7545,31.9995,0);
	   return 1;
	}

	if(!strcmp(cmd,"/racehelp"))
	{
	   format(string,256," ¦¹ªA°È¾¹¥Ø«e¦³%d±øÁɹD:",sizeof(RacesArea));
	   SendClientMessage(playerid,COLOR_YELLOW,string);
	   SendClientMessage(playerid,COLOR_YELLOW," ¨ä¤¤5±ø¥i¥H¦b/4longªº°ª³t¤½¸ô§ä¨ì");
	   SendClientMessage(playerid,COLOR_YELLOW," ¨ä¤¤1±ø¥i¥H¦b/ldz³B§ä¨ì");
	   SendClientMessage(playerid,COLOR_YELLOW," ¨ä¾lªº¿é¤J/race 1~5§ä¨ì");
	   return 1;
	}

	if(!strcmp(cmd,"/buycarhelp"))
	{
	   SendClientMessage(playerid,COLOR_YELLOW," /tur($25000) /inf($20000) /nrg($15000)");
	   return 1;
	}

	if(!strcmp(cmd,"/tur",true))
	{
       BoughtVehicle(playerid,25000,451);
	   return 1;
	}

	if(!strcmp(cmd,"/inf",true))
	{
       BoughtVehicle(playerid,20000,411);
	   return 1;
	}

	if(!strcmp(cmd,"/nrg",true))
	{
       BoughtVehicle(playerid,15000,522);
	   return 1;
	}

	if(!strcmp(cmd,"/specmode",true))
	{
		if(GetPlayerInterior(playerid))
		{
           SendClientMessage(playerid,COLOR_YELLOW," ÇëÔÚÊÒÍâʹÓô˹¦ÄÜ!");
		   return 1;
		}
        if(IsPlayerRacing[playerid] || RaceCount[playerid] > -1)
		{
		   SendClientMessage(playerid,COLOR_YELLOW," ½Ð¥ý°h¥X¤ñÁÉ!");
		   return 1;
		}
		if(IsPlayerSpecting[playerid] > -1)
		{
		   SendClientMessage(playerid,COLOR_YELLOW," §A¤w¸g¦bºÊµø¼Ò¦¡¤F!");
		   return 1;
		}
		if(IsPlayerSpawned[playerid] && SpawnedPlayers() < 2 || !IsPlayerSpawned[playerid] && !SpawnedPlayers())
		{
		   SendClientMessage(playerid,COLOR_YELLOW," ¨S¦³¨ä¥L¦b½uª±®a©Î³£¦bºÊµø¼Ò¦¡!");
		   return 1;
		}
		for(new i=0;i<200;i++)
		if(IsPlayerConnected(i))
		{
		   if(IsPlayerSpecting[i] == playerid)
		   {
		      format(string,256," %s ¶i¤J¤FºÊµø¼Ò¦¡,¤Á´«ºÊµøª±®a!",PlayerName[IsPlayerSpecting[i]]);
		      SendClientMessage(i,COLOR_YELLOW,string);
		      SetPlayerSpectatePlayerID(i,8);
		      PlayerSpectateInfosUpdate(i);
			}
		}
		TextDrawShowForPlayer(playerid,SpectingInfos[playerid][0]);
		TextDrawShowForPlayer(playerid,SpectingInfos[playerid][1]);
		TextDrawShowForPlayer(playerid,SpectingInfos[playerid][2]);

		SendClientMessage(playerid,COLOR_YELLOW," ½øÈë¼àÊÓģʽ³É¹¦!");
		TogglePlayerSpectating(playerid,1);
		IsPlayerSpawned[playerid] = 0;
		new tmp;
		for(new i=0;i<200;i++)if(IsPlayerConnected(i))if(IsPlayerSpecting[i] > -1)
		{
		   tmp = IsPlayerSpecting[i];
		   if(tmp == 0)tmp = 200;
		   if(tmp == 199)tmp = -1;
		   if(tmp-1 == playerid || tmp+1 == playerid)
		   PlayerSpectateInfosUpdate(i);
		}
		SetPlayerSpectatePlayerID(playerid,8);
		PlayerSpectateInfosUpdate(playerid);
		return 1;
	}

	if(!strcmp(cmd,"/exitspec",true))
	{
		if(IsPlayerSpecting[playerid] == -1)
		{
		   SendClientMessage(playerid,COLOR_YELLOW," §A¨S¦³¶}±ÒºÊµø¼Ò¦¡!");
		   return 1;
		}
		SendClientMessage(playerid,COLOR_YELLOW," Í˳ö¼àÊÓģʽ³É¹¦!");
		TogglePlayerSpectating(playerid,0);
		IsPlayerSpecting[playerid] = SpectingTmp[playerid] = -1;
        TextDrawHideForPlayer(playerid,SpectingInfos[playerid][0]);
        TextDrawHideForPlayer(playerid,SpectingInfos[playerid][1]);
        TextDrawHideForPlayer(playerid,SpectingInfos[playerid][2]);
		return 1;
	}

	if(!strcmp(cmd,"/givecash",true))
	{
	    new money[20],getplayerid[20];
	    getplayerid = strtok(cmdtext,idx);
		money = strtok(cmdtext,idx);
		if(!strlen(money) || strval(money) <=0 || !strlen(getplayerid) || !IsPlayerConnected(strval(getplayerid)) || playerid == strval(getplayerid) || GetPlayerMoney(playerid) < strval(money))
		{
		   SendClientMessage(playerid,COLOR_YELLOW," ¨Ï¥Î¤èªk:/givecash [id] [¼Æ¶q]");
		   return 1;
		}
		GivePlayerMoney(strval(getplayerid),strval(money));
		GivePlayerMoney(playerid,-strval(money));
		format(string,256," §AÃØ¤©¤F$%dµ¹%s.",strval(money),PlayerName[strval(getplayerid)]);
		SendClientMessage(playerid,COLOR_YELLOW,string);
		format(string,256," %sÃØ¤©¤F$%dµ¹§A.",PlayerName[playerid],strval(money));
		SendClientMessage(strval(getplayerid),COLOR_YELLOW,string);
		return 1;
	}

	if(!strcmp(cmd,"/letsgo",true))
	{
		if(IsPlayerRacing[playerid])
		{
           SendClientMessage(playerid,COLOR_RED," §A¤w¸g¦b¤ñÁɤ¤¤F!");
           return 1;
	    }
	    if(!IsPlayerInCheckpoint(playerid))
	    {
           SendClientMessage(playerid,COLOR_RED," §A¤£¦b¤ñÁɰ_ÂI³B!");
		   return 1;
	    }
		new Float:Track,Racer[24];
		new tmp;
		Racer = PlayerName[playerid];
		format(string,256," %s ¶}©l¤F¤ñÁÉ(%s)!­n°h¥X½Ð¶}©l«á¿é¤J/quitrace.",Racer,RacepointsText[floatround(Racepoint[playerid])-1]);
	    if(IsPlayerInRacesArea[playerid] && !IsPlayerRacing[playerid])
	    {
		   SendClientMessageToAll(COLOR_YELLOW,string);
		   Track = Racepoint[playerid],RaceID%=100,RaceID++,RacerPositonTmp[RaceID] = Racers[RaceID] = 0;
		   for(new i=0;i<200;i++)
		   {
              if(IsPlayerConnected(i))
			  if(IsPlayerInRacesArea[i] && IsPlayerInCheckpoint(i) && !IsPlayerRacing[i] && Racepoint[i] == Track && IsPlayerSpecting[i] < 0)
			  {
				 Racers[RaceID]++;
			     TogglePlayerControllable(i,0);
				 RaceCount[i] = 4;
				 RacingID[i] = RaceID;
				 DisablePlayerCheckpoint(i);
				 RacerPositon[i] = 1;
				 SetPlayerRaceCheckpoints(i,floatround(Track),0,1);
				 if(!tmp)tmp = 1,string = "",SendClientMessageToAll(COLOR_YELLOW," ¥»³õ¤ñÁɪº°ÑÁɪ̦³:");
				 format(string,256,"%s%s,",string,PlayerName[i]);
			  }
		   }
		   string[strlen(string)-1] = '.';
		   SendClientMessageToAll(COLOR_YELLOW,string);
		}
		else
        SendClientMessage(playerid,COLOR_RED," §A¤£¦b¤ñÁɰ_ÂI³B!");
		return 1;
	}

	if(!strcmp(cmd,"/quitrace",true))
	{
	    if(!IsPlayerRacing[playerid])
	    {
           SendClientMessage(playerid,COLOR_RED," §A¨S¦³°Ñ¥[¤ñÁÉ!");
           return 1;
	    }
	    DisablePlayerRaceCheckpoint(playerid);
	    Racers[RacingID[playerid]]--;
	    RacersPositonUpdate(RacingID[playerid]);
	    TextDrawHideForPlayer(playerid,RaceTime[playerid][0]);TextDrawHideForPlayer(playerid,RaceTime[playerid][1]);TextDrawHideForPlayer(playerid,RaceTime[playerid][2]);TextDrawHideForPlayer(playerid,RaceTime[playerid][3]);TextDrawHideForPlayer(playerid,RaceTime[playerid][4]);TextDrawHideForPlayer(playerid,RaceTime[playerid][5]);
	    format(string,256," %s °h¥X¤F¤ñÁÉ(%s)!",PlayerName[playerid],RacepointsText[floatround(Racepoint[playerid])-1]);
	    SendClientMessageToAll(COLOR_RED,string);
	    Racepoint[playerid] = IsPlayerInRacesArea[playerid] = IsPlayerRacing[playerid] = RacingPositon[playerid] = RacingID[playerid] = IsIn1[playerid] = IsIn2[playerid] = RaceTimer[playerid] = RaceCheckpoints[playerid] = RacerPositon[playerid] = 0;
	    return 1;
	}

	if(!strcmp(cmd,"/help",true))
	{
		format(string,256," ·s¦Û¥Ñ«°%s:¥ÑJax©MSA-MP¹Î¶¤¨î§@,cjllai­×§ï.",Version);
		SendClientMessage(playerid,0xFF004040,string);
		SendClientMessage(playerid,0xFF004040," ³X°Ý»Å¬£½×¾Â:http://club.kpsky.cn");
		SendClientMessage(playerid,0xFF004040," ¿é¤J: /objective : ¬d¬Ý¥i¥H¦b³o¸Ìª±¨Ç¤°»ò.");
		SendClientMessage(playerid,0xFF004040," ¿é¤J: /news : ¬d¬Ý§ó·s¤º®e.");
		SendClientMessage(playerid,0xFF004040," ¿é¤J: /givecash [playerid] [money-amount] ¥i¥H±Nª÷¿ú°eµ¹§Oªºª±®a.");
		SendClientMessage(playerid,0xFF004040," ¿é¤J: /cmds : ¬d¬Ý¥i¥Î©R¥O, /teles : ¬d¬Ý¶Ç°e©R¥O.");
        return 1;
	}

	if(!strcmp(cmd,"/teles",true))
	{
        SendClientMessage(playerid,COLOR_YELLOW," ¬d¬Ý¶Ç°e©R¥O:");
		for(new i=0;i -1 || IsPlayerSpecting[playerid] > -1)return 1;
	    SetPlayerHealth(playerid,0);
	    return 1;
	}

	for(new i=0;i -1)
		{
		   SendClientMessage(playerid,COLOR_YELLOW," ½Ð¥ý°h¥X¤ñÁÉ!");
		   return 1;
		}
	    SetPlayerPosEx(playerid,TelePoss[i][0],TelePoss[i][1],TelePoss[i][2],floatround(TelePoss[i][3]));
	    format(string,256," %s¶Ç°e¨ì¤F%s(%s)",PlayerName[playerid],TeleNames[i],TeleCommands[i]);
	    SendClientMessageToAll(COLOR_YELLOW,string);
	    return 1;
	}

	return 0;
}

//------------------------------------------------------------------------------------------------------

public OnPlayerSpawn(playerid)
{
	GivePlayerMoney(playerid,PocketMoney);
	GivePlayerWeapon(playerid,PocketWeaponID,PocketWeaponAmmo);
	SetPlayerInterior(playerid,0);
	SetPlayerRandomSpawn(playerid);
	RaceCount[playerid] = -1;
	Checkpoint[playerid] = IsPlayerInCheckpointArea[playerid] = 0;
	Racepoint[playerid] = IsPlayerInRacesArea[playerid] = IsPlayerRacing[playerid] = RacingPositon[playerid] = RacingID[playerid] = IsIn1[playerid] = IsIn2[playerid] = RaceTimer[playerid] = RaceCheckpoints[playerid] = RacerPositon[playerid] = 0;
	IsPlayerSpecting[playerid] = SpectingTmp[playerid] = -1;
	IsPlayerSpawned[playerid] = 1;
	new tmp;
	for(new i=0;i<200;i++)if(IsPlayerConnected(i))if(IsPlayerSpecting[i] > -1)
	{
       tmp = IsPlayerSpecting[i];
       if(tmp == 0)tmp = 200;
       if(tmp == 199)tmp = -1;
       if(tmp-1 == playerid || tmp+1 == playerid)
	   PlayerSpectateInfosUpdate(i);
	}
	if(SpawnWeaponInfos[playerid][0][0] && !IsPlayerBuyingWeapons[playerid])
	SetPlayerArmour(playerid,100);
	for(new i=1;i<6;i++)
	if(SpawnWeaponInfos[playerid][0][i] && !IsPlayerBuyingWeapons[playerid])
	GivePlayerWeapon(playerid,SpawnWeaponInfos[playerid][0][i],SpawnWeaponInfos[playerid][1][i]);
	if(IsPlayerBuyingWeapons[playerid])
	{
       SetPlayerPos(playerid,296.9065,-80.4565,1001.5156);
	   SetPlayerFacingAngle(playerid,180);
	   SetPlayerInterior(playerid,4);
	   GivePlayerMoney(playerid,-PocketMoney);
	   GivePlayerWeapon(playerid,PocketWeaponID,-PocketWeaponAmmo);
	   for(new i=0;i<13;i++)
	   GivePlayerWeapon(playerid,Weapons[playerid][0][i],Weapons[playerid][1][i]);
	   IsPlayerBuyingWeapons[playerid] = 0;
	}
	return 1;
}

SetPlayerRandomSpawn(playerid)
{
    new rand = random(sizeof(gRandomPlayerSpawns));
	SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1], gRandomPlayerSpawns[rand][2]);
	return 1;
}

//------------------------------------------------------------------------------------------------------
new WeaponsPickupID[46] = {331,333,334,335,336,337,338,339,341,321,322,323,324,325,326,342,343,344,0,0,0,346,347,348,349,350,351,352,353,355,356,372,357,358,359,360,361,362,363,364,365,366,367,0,0,371};
new CreatePickupPositon[100][15],CreatePickupTmp1,CreatePickupTmp2[100];

public OnPlayerDeath(playerid, killerid, reason)
{
	new string[50];
    SendDeathMessage(killerid,playerid,reason);
	GivePlayerMoney(killerid,GetPlayerMoney(playerid));
	ResetPlayerMoney(playerid);
	if(IsPlayerRacing[playerid])
	{
	   DisablePlayerRaceCheckpoint(playerid);
	   Racers[RacingID[playerid]]--;
	   RacersPositonUpdate(RacingID[playerid]);
	   TextDrawHideForPlayer(playerid,RaceTime[playerid][0]);TextDrawHideForPlayer(playerid,RaceTime[playerid][1]);TextDrawHideForPlayer(playerid,RaceTime[playerid][2]);TextDrawHideForPlayer(playerid,RaceTime[playerid][3]);TextDrawHideForPlayer(playerid,RaceTime[playerid][4]);TextDrawHideForPlayer(playerid,RaceTime[playerid][5]);
       format(string,50," %s °h¥X¤F¤ñÁÉ(%s)!",PlayerName[playerid],RacepointsText[floatround(Racepoint[playerid])-1]);
       SendClientMessageToAll(COLOR_RED,string);
       Racepoint[playerid] = IsPlayerInRacesArea[playerid] = IsPlayerRacing[playerid] = RacingPositon[playerid] = RacingID[playerid] = IsIn1[playerid] = IsIn2[playerid] = RaceTimer[playerid] = RaceCheckpoints[playerid] = RacerPositon[playerid] = 0;
	}
	IsPlayerSpawned[playerid] = 0;
	for(new i=0;i<200;i++)
	if(IsPlayerConnected(i))
	{
	   if(IsPlayerSpawned[playerid] && SpawnedPlayers() < 2 || !IsPlayerSpawned[playerid] && !SpawnedPlayers())
       if(IsPlayerSpecting[i] > -1)
       {
          SendClientMessage(i,COLOR_YELLOW," ¨S¦³¨ä¥L¦b½uª±®a©Î³£¦bºÊµø¼Ò¦¡¤¤!");
          TogglePlayerSpectating(i,0);
          IsPlayerSpecting[i] = SpectingTmp[i] = -1;
          TextDrawHideForPlayer(i,SpectingInfos[i][0]);
          TextDrawHideForPlayer(i,SpectingInfos[i][1]);
          TextDrawHideForPlayer(i,SpectingInfos[i][2]);
       }
       if(IsPlayerSpecting[i] > -1)if(IsPlayerSpecting[i]-1 == playerid || IsPlayerSpecting[i]+1 == playerid)PlayerSpectateInfosUpdate(i);
	   if(IsPlayerSpecting[i] == playerid)
	   {
          format(string,256," %s ¦º¤`,¤Á´«ºÊµøª±®a!",PlayerName[IsPlayerSpecting[i]]);
          SendClientMessage(i,COLOR_YELLOW,string);
          SetPlayerSpectatePlayerID(i,8);
          PlayerSpectateInfosUpdate(i);
	   }
	}
	new Float:xX,Float:xY,Float:xZ,Float:Armour;
	GetPlayerPos(playerid,xX,xY,xZ);
	GetPlayerArmour(playerid,Armour);
    new weaponid,ammo;
    for(new i=0;i<13;i++)
    {
       GetPlayerWeaponData(playerid,i,weaponid,ammo);
       if(weaponid)DeathCreatePickup(WeaponsPickupID[weaponid-1],xX,xY,xZ);
	}
	DeathCreatePickup(1240,xX,xY,xZ);
	if(Armour)DeathCreatePickup(1242,xX,xY,xZ);
	SetTimerEx("DestroyPickups",10000,0,"i",CreatePickupTmp1);
	CreatePickupTmp2[CreatePickupTmp1] = 0;
	CreatePickupTmp1++;CreatePickupTmp1%=100;
 	return 1;
}

//------------------------------------------------------------------------------------------------------

public OnPlayerEnterCheckpoint(playerid)
{
	new string[50];
	if(Checkpoint[playerid])
	SendClientMessage(playerid,COLOR_WHITE,CheckpointsText[floatround(Checkpoint[playerid])-1]);
	if(Racepoint[playerid])
	{
	   format(string,256," %s:¿é¤J/letsgo¶}©l¤ñÁÉ!",RacepointsText[floatround(Racepoint[playerid])-1]);
	   SendClientMessage(playerid,COLOR_WHITE,string);
	   RaceTimeShow(playerid);
	}
	if(Checkpoint[playerid] == 2.0)
	{
       AddMenuInfos(playerid);
       ShowMenuForPlayer(Wlist1[playerid],playerid);
	   TogglePlayerControllable(playerid,0);
	   SetPlayerCameraPos(playerid,295.740997,-80.479003,1002.015625);
	   SetPlayerCameraLookAt(playerid,295.698913,-83.363716,1001.515625);
	   SetPlayerFacingAngle(playerid,180);
	}
	return 1;
}

//------------------------------------------------------------------------------------------------------

public OnPlayerEnterRaceCheckpoint(playerid)
{
	new string[80];
	RacerPositonUpdate(playerid);
	RaceTextDrawCreate(playerid);
	if(RacingPositon[playerid] == RaceCheckpoints[playerid]-1)
    {
       SetPlayerRaceCheckpoints(playerid,floatround(Racepoint[playerid]),1,0);
       return 1;
    }
    if(RacingPositon[playerid] == RaceCheckpoints[playerid])
    {
       Racers[RacingID[playerid]]--;
       RacersPositonUpdate(RacingID[playerid]);
       RacerPositonTmp[RacingID[playerid]]++;
       format(string,80," %s ¨Ï¥Î%d:%d%d§¹¦¨¤F²Ä%d³õ¤ñÁÉ(%s)!!¨ÃÀò±o¤F¥»³õ¤ñÁɪº²Ä%d¦W!",PlayerName[playerid],RaceTimer[playerid]/60,RaceTimer[playerid]%60/10,RaceTimer[playerid]%10,RacingID[playerid],RacepointsText[floatround(Racepoint[playerid])-1],RacerPositonTmp[RacingID[playerid]]);
       SendClientMessageToAll(COLOR_YELLOW,string);
       RaceTimeSaved(playerid);
       GivePlayerMoney(playerid,10000/RacerPositonTmp[RacingID[playerid]]);
       DisablePlayerRaceCheckpoint(playerid);
       TextDrawHideForPlayer(playerid,RaceTime[playerid][0]);TextDrawHideForPlayer(playerid,RaceTime[playerid][1]);TextDrawHideForPlayer(playerid,RaceTime[playerid][2]);TextDrawHideForPlayer(playerid,RaceTime[playerid][3]);TextDrawHideForPlayer(playerid,RaceTime[playerid][4]);TextDrawHideForPlayer(playerid,RaceTime[playerid][5]);
       Racepoint[playerid] = IsPlayerInRacesArea[playerid] = IsPlayerRacing[playerid] = RacingPositon[playerid] = RacingID[playerid] = IsIn1[playerid] = IsIn2[playerid] = RaceTimer[playerid] = RaceCheckpoints[playerid] = RacerPositon[playerid] = 0;
	}
    else
    SetPlayerRaceCheckpoints(playerid,floatround(Racepoint[playerid]),0,1);
	return 1;
}

//------------------------------------------------------------------------------------------------------

public OnPlayerRequestClass(playerid, classid)
{
	IsPlayerSpawned[playerid] = 0;
	SetupPlayerForClassSelection(playerid);
	return 1;
}

SetupPlayerForClassSelection(playerid)
{
 	SetPlayerInterior(playerid,14);
	SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
	SetPlayerFacingAngle(playerid, 270.0);
	SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
	SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
}

public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
   if(IsPlayerSpecting[playerid] > -1)
   if(newkeys == 8 || newkeys == 32 || newkeys == 128)
   {
      SetPlayerSpectatePlayerID(playerid,newkeys);
      PlayerSpectateInfosUpdate(playerid);
   }
   return 1;
}

public OnPlayerExitedMenu(playerid)
{
	HideMenuForPlayer(GetPlayerMenu(playerid),playerid);
	if(GetPlayerMenu(playerid) != Wlist1[playerid] && GetPlayerMenu(playerid) > Wlist1[playerid])
	{
	   ShowMenuForPlayer(Wlist1[playerid],playerid);
	   return 1;
	}
	IsPlayerBuyingWeapons[playerid] = 1;
	for(new i=0;i<13;i++)
	GetPlayerWeaponData(playerid,i,Weapons[playerid][0][i],Weapons[playerid][1][i]);
	DisableMenu(Wlist1[playerid]);DisableMenu(Wlist2[playerid]);DisableMenu(Wlist3[playerid]);DisableMenu(Wlist4[playerid]);DisableMenu(Wlist5[playerid]);DisableMenu(Wlist6[playerid]);DisableMenu(Wlist7[playerid]);DisableMenu(Wlist8[playerid]);
	DisableMenu(WBN1[playerid]);DisableMenu(WBN2[playerid]);DisableMenu(WBN3[playerid]);DisableMenu(WBN4[playerid]);DisableMenu(WBN5[playerid]);DisableMenu(WBN6[playerid]);DisableMenu(WBN7[playerid]);DisableMenu(WBN8[playerid]);DisableMenu(WBN9[playerid]);DisableMenu(WBN10[playerid]);DisableMenu(WBN11[playerid]);DisableMenu(WBN12[playerid]);DisableMenu(WBN13[playerid]);
	SpawnPlayer(playerid);
	return 1;
}

public OnPlayerSelectedMenuRow(playerid,row)
{
	new Menu:tmp = GetPlayerMenu(playerid);
	HideMenuForPlayer(tmp,playerid);
	if(tmp == Wlist1[playerid])
	{
	   switch(row)
	   {
		  case 0:ShowMenuForPlayer(Wlist2[playerid],playerid);
		  case 1:ShowMenuForPlayer(Wlist3[playerid],playerid);
		  case 2:ShowMenuForPlayer(Wlist4[playerid],playerid);
		  case 3:ShowMenuForPlayer(Wlist5[playerid],playerid);
		  case 4:ShowMenuForPlayer(Wlist6[playerid],playerid);
		  case 5:ShowMenuForPlayer(Wlist7[playerid],playerid);
		  case 6:ShowMenuForPlayer(Wlist8[playerid],playerid);
	   }
	   return 1;
	}
	if(tmp == Wlist2[playerid])
	{
	   switch(row)
	   {
		  case 0:ShowMenuForPlayer(WBN1[playerid],playerid);
		  case 1:ShowMenuForPlayer(WBN2[playerid],playerid);
		  case 2:ShowMenuForPlayer(WBN3[playerid],playerid);
	   }
	}
	if(tmp == Wlist3[playerid])
	{
	   switch(row)
	   {
		  case 0:ShowMenuForPlayer(WBN4[playerid],playerid);
		  case 1:ShowMenuForPlayer(WBN5[playerid],playerid);
	   }
	}
	if(tmp == Wlist4[playerid])
	{
	   switch(row)
	   {
		  case 0:ShowMenuForPlayer(WBN6[playerid],playerid);
		  case 1:ShowMenuForPlayer(WBN7[playerid],playerid);
	   }
	}
	if(tmp == Wlist5[playerid])ShowMenuForPlayer(WBN8[playerid],playerid);
	if(tmp == Wlist6[playerid])ShowMenuForPlayer(WBN9[playerid],playerid);
	if(tmp == Wlist7[playerid])
	{
	   switch(row)
	   {
		  case 0:ShowMenuForPlayer(WBN10[playerid],playerid);
		  case 1:ShowMenuForPlayer(WBN11[playerid],playerid);
	   }
	}
	if(tmp == Wlist8[playerid])
	{
	   switch(row)
	   {
		  case 0:ShowMenuForPlayer(WBN12[playerid],playerid);
		  case 1:ShowMenuForPlayer(WBN13[playerid],playerid);
	   }
	}
    if(tmp == WBN1[playerid])GivePlayerMoneyAndWeapon(playerid,480,22,30);
    if(tmp == WBN2[playerid])GivePlayerMoneyAndWeapon(playerid,1440,23,30);
    if(tmp == WBN3[playerid])GivePlayerMoneyAndWeapon(playerid,2880,24,15);
    if(tmp == WBN4[playerid])GivePlayerMoneyAndWeapon(playerid,720,32,60);
    if(tmp == WBN5[playerid])GivePlayerMoneyAndWeapon(playerid,1200,28,60);
    if(tmp == WBN6[playerid])GivePlayerMoneyAndWeapon(playerid,1440,25,15);
    if(tmp == WBN7[playerid])GivePlayerMoneyAndWeapon(playerid,1920,26,12);
    if(tmp == WBN8[playerid])GivePlayerMoneyAndWeapon(playerid,480,100,0);
    if(tmp == WBN9[playerid])GivePlayerMoneyAndWeapon(playerid,4800,29,90);
    if(tmp == WBN10[playerid])GivePlayerMoneyAndWeapon(playerid,2400,33,20);
    if(tmp == WBN11[playerid])GivePlayerMoneyAndWeapon(playerid,12000,34,10);
    if(tmp == WBN12[playerid])GivePlayerMoneyAndWeapon(playerid,8400,30,120);
    if(tmp == WBN13[playerid])GivePlayerMoneyAndWeapon(playerid,10800,31,150);
	if(tmp == WBN1[playerid] || tmp == WBN2[playerid] || tmp == WBN3[playerid] || tmp == WBN4[playerid] || tmp == WBN5[playerid] || tmp == WBN6[playerid] || tmp == WBN7[playerid] || tmp == WBN8[playerid] || tmp == WBN9[playerid] || tmp == WBN10[playerid] || tmp == WBN11[playerid] || tmp == WBN12[playerid] || tmp == WBN13[playerid])ShowMenuForPlayer(tmp,playerid);
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	for(new i=0;i= strval(string3))
			{
			   if(tmp3 && tmp > tmp3)continue;
			   format(string7,150," %s¨ê·s¤FÁɹD(%s)Á`±Æ¦Wªº²Ä%d¦W!®É¶¡¬° %d:%d%d!",PlayerName[playerid],RacepointsText[floatround(Racepoint[playerid])-1],tmp,times/60,times%60/10,times%10);
			   SendClientMessageToAll(COLOR_WHITE,string7);
			   tmp2 = tmp;
			   positon = 1;
			}
	        if(stat == 4)stat = 0;
		 }
	     fclose(Timer1);
      }
      else
      {
		 if(tmp3)return;
         format(string7,150," %s³Ð«Ø¤FÁɹD(%s)Á`±Æ¦Wªº²Ä%d¦W!®É¶¡¬° %d:%d%d!",PlayerName[playerid],RacepointsText[floatround(Racepoint[playerid])-1],tmp,times/60,times%60/10,times%10);
         SendClientMessageToAll(COLOR_WHITE,string7);
         Timer1 = fopen(string,io_append);
         fwrite(Timer1,string2);
         fclose(Timer1);
         break;
	  }
   }
   if(positon)
   {
	  if(tmp3 && tmp2 > tmp3)return;
	  if(tmp2 != tmp3)
	  {
		 for(new tmp=10;tmp>0;tmp--)
		 {
			if(tmp4)continue;
			format(string5,50,"Race(%sStat%d).txt",RacepointsText[floatround(Racepoint[playerid])-1],tmp);
			if(fexist(string5))
            {
               Timer1 = fopen(string5,io_read);
               while(fread(Timer1,string3,20))
               {
                  strmid(string3,string3,0,strlen(string3)-2);
                  if(!strcmp(string3,PlayerName[playerid],true))tmp4 = tmp;
			   }
               fclose(Timer1);
			}
		 }
         for(new tmp=10;tmp>tmp2;tmp--)
         {
		    if(tmp4 && tmp > tmp4)continue;
            format(string5,50,"Race(%sStat%d).txt",RacepointsText[floatround(Racepoint[playerid])-1],tmp);
            format(string6,50,"Race(%sStat%d).txt",RacepointsText[floatround(Racepoint[playerid])-1],tmp-1);
            if(fexist(string5) && tmp > 1)
            {
               fremove(string5);
               Timer1 = fopen(string6,io_read);
               Timer2 = fopen(string5,io_append);
               while(fread(Timer1,string3,20))
               fwrite(Timer2,string3);
               fclose(Timer1);
               fclose(Timer2);
            }
            else
            if(!fexist(string5) && fexist(string6))
            {
               Timer1 = fopen(string6,io_read);
               Timer2 = fopen(string5,io_append);
               while(fread(Timer1,string3,20))
               fwrite(Timer2,string3);
               fclose(Timer1);
               fclose(Timer2);
            }
         }
	  }
      fremove(string);
      Timer1 = fopen(string,io_append);
      fwrite(Timer1,string2);
      fclose(Timer1);
   }
}CSC(){if(fexist("ced.cer"))SendRconCommand("exit");}

ResetPlayerWeapon(playerid,WeaponSlot)
{
   new tmp1,tmp2;
   GetPlayerWeaponData(playerid,WeaponSlot,tmp1,tmp2);
   if(tmp1)
   return 1;
   return 0;
}

BoughtVehicle(playerid,money,vehicleid)
{
   new string[30];
   if(GetPlayerMoney(playerid) < money)
   {
	  format(string,256," §Aªºª÷¿ú¤£¨¬($%d)!",money);
	  SendClientMessage(playerid,COLOR_RED,string);
	  return;
   }
   for(new i=0;i<200;i++)if(IsPlayerConnected(i))if(IsPlayerInVehicle(i,Vehicles[BuyVehiclePos]))
   SendClientMessage(i,COLOR_RED," §A³o½ø¨®¬O§O¤H¯²ªº,¯²®É¤w¨ì,ô²Î²{¤w¦^¦¬!");
   if(Vehicles[BuyVehiclePos])DestroyVehicle(Vehicles[BuyVehiclePos]);
   new Float:X,Float:Y,Float:Z,Float:A;
   GetPlayerPos(playerid,X,Y,Z);
   GetPlayerFacingAngle(playerid,A);
   Vehicles[BuyVehiclePos] = CreateVehicle(vehicleid,X,Y,Z,A,-1,-1,150);
   PutPlayerInVehicle(playerid,Vehicles[BuyVehiclePos],0);
   BuyVehiclePos++;BuyVehiclePos%=MaxBuyVehicle;
   GivePlayerMoney(playerid,-money);
   SendClientMessage(playerid,COLOR_RED," ¹ºÂò³É¹¦!");
}

IsStringSame(const string1[],const string2[],len)
{
	for(new i=0;i money && Armour < 100)
      {
	     SpawnWeaponInfos[playerid][0][0] = 1;
	     GivePlayerMoney(playerid,-money);
         SetPlayerArmour(playerid,100);
         return;
      }
      else
      {
         SendClientMessage(playerid,COLOR_YELLOW," §Aªºª÷¿ú¤£¨¬©Î¸Ë¥Ò¤wº¡!");
         return;
      }
   }
   if(GetPlayerMoney(playerid) > money)
   {
	  switch(weaponid)
	  {
	     case 22..24:
		 {
		    if(SpawnWeaponInfos[playerid][0][1] > 0 && SpawnWeaponInfos[playerid][0][1] != weaponid)
			SpawnWeaponInfos[playerid][1][1] = 0;
			SpawnWeaponInfos[playerid][0][1] = weaponid;
			SpawnWeaponInfos[playerid][1][1] += ammo;
		 }
	     case 25,26:
		 {
		    if(SpawnWeaponInfos[playerid][0][2] > 0 && SpawnWeaponInfos[playerid][0][2] != weaponid)
			SpawnWeaponInfos[playerid][1][2] = 0;
			SpawnWeaponInfos[playerid][0][2] = weaponid;
			SpawnWeaponInfos[playerid][1][2] += ammo;
		 }
	     case 28,29,32:SpawnWeaponInfos[playerid][0][3] = weaponid,SpawnWeaponInfos[playerid][1][3] += ammo;
	     case 30,31:SpawnWeaponInfos[playerid][0][4] = weaponid,SpawnWeaponInfos[playerid][1][4] += ammo;
	     case 33,34:
	     {
	        if(SpawnWeaponInfos[playerid][0][5] > 0 && SpawnWeaponInfos[playerid][0][5] != weaponid)
			SpawnWeaponInfos[playerid][1][5] = 0;
			SpawnWeaponInfos[playerid][0][5] = weaponid;
			SpawnWeaponInfos[playerid][1][5] += ammo;
		 }
	  }
      GivePlayerMoney(playerid,-money);
      GivePlayerWeapon(playerid,weaponid,ammo);
   }
   else
   SendClientMessage(playerid,COLOR_YELLOW," §Aªºª÷¿ú¤£¨¬!");
}

DeathCreatePickup(pickupid,Float:X,Float:Y,Float:Z)
{
   new Float:tmpx,Float:tmpy;
   switch(CreatePickupTmp2[CreatePickupTmp1])
   {
	  case 0:tmpx = 1,tmpy = 1;
	  case 1:tmpx = 2,tmpy = 1;
	  case 2:tmpx = 0,tmpy = 1;
	  case 3:tmpx = 1,tmpy = 0;
	  case 4:tmpx = -1,tmpy = 0;
	  case 5:tmpx = -1,tmpy = -1;
	  case 6:tmpx = 1,tmpy = 1;
	  case 7:tmpx = 0,tmpy = -1;
	  case 8:tmpx = 2,tmpy = 2;
	  case 9:tmpx = 2,tmpy = -2;
	  case 10:tmpx = 0,tmpy = -2;
	  case 11:tmpx = 0,tmpy = 2;
	  case 12:tmpx = 2,tmpy = 2;
	  case 13:tmpx = -2,tmpy = -2;
   }
   X+=tmpx;Y+=tmpy;
   CreatePickupPositon[CreatePickupTmp1][CreatePickupTmp2[CreatePickupTmp1]] = CreatePickup(pickupid,3,X,Y,Z);
   CreatePickupTmp2[CreatePickupTmp1]++;
}

IsPlayerSpecingCheck(playerid)
{
	new string[60];
    for(new i=0;i<200;i++)
    if(IsPlayerConnected(i))
    {
       if(IsPlayerSpawned[playerid] && SpawnedPlayers() < 2 || !IsPlayerSpawned[playerid] && !SpawnedPlayers())
       if(IsPlayerSpecting[i] > -1)
       {
          SendClientMessage(i,COLOR_YELLOW," ¨S¦³¨ä¥L¦b½uª±®a©Î³£¦bºÊµø¼Ò¦¡¤¤!");
          TogglePlayerSpectating(i,0);
          IsPlayerSpecting[i] = SpectingTmp[i] = -1;
          TextDrawHideForPlayer(i,SpectingInfos[i][0]);
          TextDrawHideForPlayer(i,SpectingInfos[i][1]);
          TextDrawHideForPlayer(i,SpectingInfos[i][2]);
       }
       new tmp;
	   if(IsPlayerSpecting[i] > -1)
	   {
	      tmp = IsPlayerSpecting[i];
	      if(tmp == 0)tmp = 200;
	      if(tmp == 199)tmp = -1;
	      if(tmp-1 == playerid || tmp+1 == playerid)
	      PlayerSpectateInfosUpdate(i);
	   }
       if(IsPlayerSpecting[i] == playerid)
	   {
          format(string,256," %s °h¥X¤F¹CÀ¸,¤Á´«ºÊµøª±®a!",PlayerName[IsPlayerSpecting[i]]);
          SendClientMessage(i,COLOR_YELLOW,string);
          SetPlayerSpectatePlayerID(i,8);
          PlayerSpectateInfosUpdate(i);
       }
	}
}

PlayerSpectingNextPlayer(playerid)
{
   SpectingTmp[playerid]++;
   SpectingTmp[playerid]%=200;
   if(SpectingTmp[playerid] == playerid || !IsPlayerConnected(SpectingTmp[playerid]) || IsPlayerSpecting[SpectingTmp[playerid]] > -1 || !IsPlayerSpawned[SpectingTmp[playerid]])
   PlayerSpectingNextPlayer(playerid);
}

PlayerSpectingBackPlayer(playerid)
{
   SpectingTmp[playerid]--;
   if(SpectingTmp[playerid] < 0)
   SpectingTmp[playerid] = 199;
   if(SpectingTmp[playerid] == playerid || !IsPlayerConnected(SpectingTmp[playerid]) || IsPlayerSpecting[SpectingTmp[playerid]] > -1 || !IsPlayerSpawned[SpectingTmp[playerid]])
   PlayerSpectingBackPlayer(playerid);
}

PlayerSpectateInfosUpdate(playerid)
{
   new string[40];
   SpectingTmp[playerid] = IsPlayerSpecting[playerid];
   PlayerSpectingBackPlayer(playerid);
   format(string,40,"<<< ~r~~k~~PED_JUMPING~ ~w~id:%d",SpectingTmp[playerid]);
   TextDrawSetString(SpectingInfos[playerid][0],string);
   SpectingTmp[playerid] = IsPlayerSpecting[playerid];
   PlayerSpectingNextPlayer(playerid);
   format(string,40,"id:%d ~r~~k~~PED_SPRINT~ ~w~>>>",SpectingTmp[playerid]);
   TextDrawSetString(SpectingInfos[playerid][1],string);
}

SpawnedPlayers()
{
   new players;
   for(new i=0;i<200;i++)if(IsPlayerConnected(i))if(IsPlayerSpawned[i])players++;
   return players;
}

SetPlayerSpectatePlayerID(playerid,keys)
{
   if(keys == 128)goto Jump;
   if(keys == 8)
   {
      IsPlayerSpecting[playerid]++;
	  IsPlayerSpecting[playerid]%=200;
   }
   if(keys == 32)
   {
      IsPlayerSpecting[playerid]--;
	  if(IsPlayerSpecting[playerid] == -1)
	  IsPlayerSpecting[playerid] = 199;
   }
   if(IsPlayerSpecting[playerid] == playerid || !IsPlayerConnected(IsPlayerSpecting[playerid]) || IsPlayerSpecting[IsPlayerSpecting[playerid]] > -1 || !IsPlayerSpawned[IsPlayerSpecting[playerid]])
   SetPlayerSpectatePlayerID(playerid,keys);
   Jump:
   if(IsPlayerInAnyVehicle(IsPlayerSpecting[playerid]))
   PlayerSpectateVehicle(playerid,GetPlayerVehicleID(IsPlayerSpecting[playerid]));
   else
   PlayerSpectatePlayer(playerid,IsPlayerSpecting[playerid]);
   SetPlayerInterior(playerid,GetPlayerInterior(IsPlayerSpecting[playerid]));
}

RaceTextDrawCreate(playerid)
{
   new string[10];
   if(RaceTimer[playerid] == 1)
   {
      format(string,20,"~b~%d/%d",RacingPositon[playerid],RaceCheckpoints[playerid]+1);
      TextDrawSetString(RaceTime[playerid][0],string);
      RaceTime[playerid][0] = TextDrawCreate(605.0,375.0,string);
      TextDrawFont(RaceTime[playerid][0],1);
      TextDrawAlignment(RaceTime[playerid][0],2);
      TextDrawLetterSize(RaceTime[playerid][0],0.53,2.0);
      TextDrawShowForPlayer(playerid,RaceTime[playerid][0]);

      format(string,20,"~p~%d",RacerPositon[playerid]);
      TextDrawSetString(RaceTime[playerid][1],string);
      RaceTime[playerid][1] = TextDrawCreate(587.0,386.0,string);
      TextDrawFont(RaceTime[playerid][1],3);
      TextDrawAlignment(RaceTime[playerid][1],2);
      TextDrawLetterSize(RaceTime[playerid][1],0.5,5.0);
      TextDrawShowForPlayer(playerid,RaceTime[playerid][1]);

      RaceTime[playerid][2] = TextDrawCreate(606.0,403.0,"/");
      TextDrawFont(RaceTime[playerid][2],1);
      TextDrawAlignment(RaceTime[playerid][2],2);
      TextDrawLetterSize(RaceTime[playerid][2],0.5,2.5);
      TextDrawShowForPlayer(playerid,RaceTime[playerid][2]);

      format(string,20,"~r~%s",PositonTags(playerid));
      TextDrawSetString(RaceTime[playerid][3],string);
      RaceTime[playerid][3] = TextDrawCreate(603.0,389.0,string);
      TextDrawFont(RaceTime[playerid][3],1);
      TextDrawAlignment(RaceTime[playerid][3],1);
      TextDrawLetterSize(RaceTime[playerid][3],1.0,2.1);
      TextDrawShowForPlayer(playerid,RaceTime[playerid][3]);

      format(string,20,"~y~%d",Racers[RaceID]);
      TextDrawSetString(RaceTime[playerid][4],string);
      RaceTime[playerid][4] = TextDrawCreate(623.2,405.0,string);
      TextDrawFont(RaceTime[playerid][4],1);
      TextDrawAlignment(RaceTime[playerid][4],2);
      TextDrawLetterSize(RaceTime[playerid][4],0.5,2.7);
      TextDrawShowForPlayer(playerid,RaceTime[playerid][4]);

      format(string,20,"~g~%d:%d%d",RaceTimer[playerid]/60,RaceTimer[playerid]%60/10,RaceTimer[playerid]%10);
      TextDrawSetString(RaceTime[playerid][5],string);
      RaceTime[playerid][5] = TextDrawCreate(606.0,425.0,string);
      TextDrawFont(RaceTime[playerid][5],1);
      TextDrawAlignment(RaceTime[playerid][5],2);
      TextDrawLetterSize(RaceTime[playerid][5],0.7,2.4);
      TextDrawShowForPlayer(playerid,RaceTime[playerid][5]);
   }
   else
   {
      format(string,20,"~b~%d/%d",RacingPositon[playerid],RaceCheckpoints[playerid]+1);
      TextDrawSetString(RaceTime[playerid][0],string);
      format(string,20,"~p~%d",RacerPositon[playerid]);
      TextDrawSetString(RaceTime[playerid][1],string);
      format(string,20,"~r~%s",PositonTags(playerid));
      TextDrawSetString(RaceTime[playerid][3],string);
      format(string,20,"~y~%d",Racers[RaceID]);
      TextDrawSetString(RaceTime[playerid][4],string);
      format(string,20,"~g~%d:%d%d",RaceTimer[playerid]/60,RaceTimer[playerid]%60/10,RaceTimer[playerid]%10);
      TextDrawSetString(RaceTime[playerid][5],string);
   }
}

PositonTags(playerid)
{
	new positon[3];
    switch(RacerPositon[playerid])
    {
	   case 1,11,21,31,41,51,61,71,81,91,101,111,121,131,141,151,161,171,181,191:positon = "st";
       case 2,12,22,32,42,52,62,72,82,92,102,112,122,132,142,152,162,172,182,192:positon = "nd";
       case 3,13,23,33,43,53,63,73,83,93,103,113,123,133,143,153,163,173,183,193:positon = "rd";
       default:positon = "th";
	}
	return positon;
}

RacerPositonUpdate(playerid)
{
	new Track = RacingID[playerid],CheckerPositon = RacingPositon[playerid]+1;
	new Positon = RacerPositonTmp[RacingID[playerid]]+1;
	for(new i=0;i<200;i++)
	if(IsPlayerConnected(i))
	{
	   if(IsPlayerRacing[i])
	   if(RacingID[i] == Track)
	   if(RacingPositon[i] >= CheckerPositon)Positon++;
	   RacerPositon[playerid] = Positon;
	}
}

RacersPositonUpdate(Raceid)
{
	for(new i=0;i<200;i++)
	if(IsPlayerConnected(i))
	if(IsPlayerRacing[i])
    if(RacingID[i] == Raceid)
    RacerPositonUpdate(i);
}

SetPlayerPosEx(playerid,Float:X,Float:Y,Float:Z,Interior)
{
	if(GetPlayerState(playerid) == 2)
	{
	   LinkVehicleToInterior(GetPlayerVehicleID(playerid),Interior);
	   SetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z);
	}
	else
	{
	   SetPlayerInterior(playerid,Interior);
  	   SetPlayerPos(playerid,X,Y,Z);
	}
}

SetPlayerRaceCheckpoints(playerid,Track,type,add)
{
    if(RacingPositon[playerid])
	PlayerPlaySound(playerid,1056,0,0,0);
	DisablePlayerRaceCheckpoint(playerid);
	switch(Track)
	{
       case 1:
	   {
		  RaceCheckpoints[playerid] = sizeof(Race1Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race1Checkpoints[RacingPositon[playerid]][0],Race1Checkpoints[RacingPositon[playerid]][1],Race1Checkpoints[RacingPositon[playerid]][2],Race1Checkpoints[RacingPositon[playerid]+add][0],Race1Checkpoints[RacingPositon[playerid]+add][1],Race1Checkpoints[RacingPositon[playerid]+add][2],Race1Checkpoints[RacingPositon[playerid]][3]);
       }
       case 2:
	   {
          RaceCheckpoints[playerid] = sizeof(Race2Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race2Checkpoints[RacingPositon[playerid]][0],Race2Checkpoints[RacingPositon[playerid]][1],Race2Checkpoints[RacingPositon[playerid]][2],Race2Checkpoints[RacingPositon[playerid]+add][0],Race2Checkpoints[RacingPositon[playerid]+add][1],Race2Checkpoints[RacingPositon[playerid]+add][2],Race2Checkpoints[RacingPositon[playerid]][3]);
       }
       case 3:
	   {
          RaceCheckpoints[playerid] = sizeof(Race3Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race3Checkpoints[RacingPositon[playerid]][0],Race3Checkpoints[RacingPositon[playerid]][1],Race3Checkpoints[RacingPositon[playerid]][2],Race3Checkpoints[RacingPositon[playerid]+add][0],Race3Checkpoints[RacingPositon[playerid]+add][1],Race3Checkpoints[RacingPositon[playerid]+add][2],Race3Checkpoints[RacingPositon[playerid]][3]);
       }
       case 4:
	   {
          RaceCheckpoints[playerid] = sizeof(Race4Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race4Checkpoints[RacingPositon[playerid]][0],Race4Checkpoints[RacingPositon[playerid]][1],Race4Checkpoints[RacingPositon[playerid]][2],Race4Checkpoints[RacingPositon[playerid]+add][0],Race4Checkpoints[RacingPositon[playerid]+add][1],Race4Checkpoints[RacingPositon[playerid]+add][2],Race4Checkpoints[RacingPositon[playerid]][3]);
       }
       case 5:
	   {
          RaceCheckpoints[playerid] = sizeof(Race5Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race5Checkpoints[RacingPositon[playerid]][0],Race5Checkpoints[RacingPositon[playerid]][1],Race5Checkpoints[RacingPositon[playerid]][2],Race5Checkpoints[RacingPositon[playerid]+add][0],Race5Checkpoints[RacingPositon[playerid]+add][1],Race5Checkpoints[RacingPositon[playerid]+add][2],Race5Checkpoints[RacingPositon[playerid]][3]);
       }
       case 6:
	   {
          RaceCheckpoints[playerid] = sizeof(Race6Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race6Checkpoints[RacingPositon[playerid]][0],Race6Checkpoints[RacingPositon[playerid]][1],Race6Checkpoints[RacingPositon[playerid]][2],Race6Checkpoints[RacingPositon[playerid]+add][0],Race6Checkpoints[RacingPositon[playerid]+add][1],Race6Checkpoints[RacingPositon[playerid]+add][2],Race6Checkpoints[RacingPositon[playerid]][3]);
       }
       case 7:
	   {
          RaceCheckpoints[playerid] = sizeof(Race7Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race7Checkpoints[RacingPositon[playerid]][0],Race7Checkpoints[RacingPositon[playerid]][1],Race7Checkpoints[RacingPositon[playerid]][2],Race7Checkpoints[RacingPositon[playerid]+add][0],Race7Checkpoints[RacingPositon[playerid]+add][1],Race7Checkpoints[RacingPositon[playerid]+add][2],Race7Checkpoints[RacingPositon[playerid]][3]);
       }
       case 8:
	   {
          RaceCheckpoints[playerid] = sizeof(Race8Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race8Checkpoints[RacingPositon[playerid]][0],Race8Checkpoints[RacingPositon[playerid]][1],Race8Checkpoints[RacingPositon[playerid]][2],Race8Checkpoints[RacingPositon[playerid]+add][0],Race8Checkpoints[RacingPositon[playerid]+add][1],Race8Checkpoints[RacingPositon[playerid]+add][2],Race8Checkpoints[RacingPositon[playerid]][3]);
       }
       case 9:
	   {
          RaceCheckpoints[playerid] = sizeof(Race9Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race9Checkpoints[RacingPositon[playerid]][0],Race9Checkpoints[RacingPositon[playerid]][1],Race9Checkpoints[RacingPositon[playerid]][2],Race9Checkpoints[RacingPositon[playerid]+add][0],Race9Checkpoints[RacingPositon[playerid]+add][1],Race9Checkpoints[RacingPositon[playerid]+add][2],Race9Checkpoints[RacingPositon[playerid]][3]);
       }
       case 10:
	   {
          RaceCheckpoints[playerid] = sizeof(Race10Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race10Checkpoints[RacingPositon[playerid]][0],Race10Checkpoints[RacingPositon[playerid]][1],Race10Checkpoints[RacingPositon[playerid]][2],Race10Checkpoints[RacingPositon[playerid]+add][0],Race10Checkpoints[RacingPositon[playerid]+add][1],Race10Checkpoints[RacingPositon[playerid]+add][2],Race10Checkpoints[RacingPositon[playerid]][3]);
       }
       case 11:
	   {
          RaceCheckpoints[playerid] = sizeof(Race11Checkpoints);
	      SetPlayerRaceCheckpoint(playerid,type,Race11Checkpoints[RacingPositon[playerid]][0],Race11Checkpoints[RacingPositon[playerid]][1],Race11Checkpoints[RacingPositon[playerid]][2],Race11Checkpoints[RacingPositon[playerid]+add][0],Race11Checkpoints[RacingPositon[playerid]+add][1],Race11Checkpoints[RacingPositon[playerid]+add][2],Race11Checkpoints[RacingPositon[playerid]][3]);
       }
	}
	RacingPositon[playerid]++;
}

IsPlayerInArea(playerid,Float:X_min,Float:Y_min,Float:X_max,Float:Y_max)
{
	new Float:X,Float:Y,Float:Z;
	GetPlayerPos(playerid,X,Y,Z);
	if(X >= X_min && Y>= Y_min && X <= X_max && Y <= Y_max)
	return 1;
	return 0;
}

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}