Bulletje

Untitled

Feb 7th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.59 KB | None | 0 0
  1. //Race (FS)
  2. #include <a_samp>
  3. #include <crashdetect>
  4. #include <fixes2>
  5.  
  6. #include "..\MM\stuff\defines"
  7. #include "..\MM\stuff\serverkeymsg"
  8.  
  9. #define MapName "Sahara Challenge"
  10. #define VEH 568
  11. #define GHOST_MODE 30 //seconds
  12. #define MAX_MAP_OBJECTS 0 //number of objects
  13. #define CJ_WALK false
  14.  
  15. new Object[MAX_MAP_OBJECTS];
  16.  
  17. enum cp_enum
  18. {
  19. Float:cp_x,
  20. Float:cp_y,
  21. Float:cp_z,
  22. cp_type,
  23. Float:cp_size
  24. };
  25.  
  26. new cp[][cp_enum] =
  27. {
  28. {255.7703,2366.9578,16.3071,0,10.0},
  29. {255.8305,2217.2700,33.2832,0,10.0},
  30. {208.5426,2156.3083,20.2032,0,10.0},
  31. {84.6795,2041.6390,17.6371,0,10.0},
  32. {38.8430,1877.9476,17.4848,0,10.0},
  33. {57.0744,1631.3868,21.5503,0,10.0},
  34. {22.3667,1446.0742,14.0931,0,10.0},
  35. {-134.0104,1354.4915,8.3273,0,10.0},
  36. {-260.2296,1326.4637,47.5167,0,10.0},
  37. {-420.0182,1444.7107,34.7323,0,10.0},
  38. {-452.6745,1521.8611,36.1230,0,10.0},
  39. {-359.3710,1677.5210,37.0002,0,10.0},
  40. {-134.3795,1727.4076,23.4849,0,10.0},
  41. {-36.0189,1803.7070,17.4924,0,10.0},
  42. {27.9406,1957.1106,17.5054,0,10.0},
  43. {50.5279,2194.3538,35.1688,0,10.0}
  44. };
  45.  
  46. new Float:spawns[][4] =
  47. {
  48. {114.8123000,2488.1213000,16.1431000,180.0000},
  49. {114.9059000,2494.1399000,16.1431000,180.0000},
  50. {114.5195000,2507.5908000,16.1431000,180.0000},
  51. {114.7194000,2514.0605000,16.1431000,180.0000},
  52. {114.9006000,2520.9939000,16.1431000,180.0000},
  53. {114.4831000,2528.0637000,16.1431000,180.0000},
  54. {110.1465000,2487.8848000,16.1431000,180.0000},
  55. {110.3547000,2494.5837000,16.1431000,180.0000},
  56. {114.7225000,2500.7646000,16.1431000,180.0000},
  57. {110.1753000,2501.1094000,16.1431000,180.0000},
  58. {109.9659000,2507.7158000,16.1431000,180.0000},
  59. {109.6375000,2514.2554000,16.1431000,180.0000},
  60. {109.4451000,2521.0500000,16.1431000,180.0000},
  61. {109.0208000,2527.7568000,16.1431000,180.0000},
  62. {104.1741000,2488.5288000,16.1431000,180.0000},
  63. {104.3762000,2495.1111000,16.1431000,180.0000},
  64. {104.7238000,2501.8376000,16.1431000,180.0000},
  65. {104.7755000,2508.7266000,16.1431000,180.0000},
  66. {104.6189000,2515.1809000,16.1431000,180.0000},
  67. {104.6344000,2521.3088000,16.1431000,180.0000},
  68. {104.1463000,2527.8118000,16.1431000,180.0000},
  69. {98.7973000,2488.4817000,16.1431000,180.0000},
  70. {98.9169000,2495.8345000,16.1431000,180.0000},
  71. {99.2294000,2502.2749000,16.1431000,180.0000},
  72. {99.1041000,2508.6729000,16.1431000,180.0000},
  73. {99.2196000,2515.4585000,16.1431000,180.0000},
  74. {99.1650000,2521.1785000,16.1431000,180.0000},
  75. {99.3332000,2527.2046000,16.1431000,180.0000},
  76. {94.5431000,2527.3638000,16.1431000,180.0000},
  77. {94.4394000,2521.1162000,16.1431000,180.0000},
  78. {94.1872000,2515.3616000,16.1431000,180.0000},
  79. {94.5294000,2509.1726000,16.1431000,180.0000},
  80. {94.5887000,2502.6152000,16.1431000,180.0000},
  81. {94.6811000,2496.2307000,16.1431000,180.0000},
  82. {94.8076000,2488.9111000,16.1431000,180.0000},
  83. {90.1791000,2488.9883000,16.1431000,180.0000},
  84. {90.3124000,2496.4795000,16.1431000,180.0000},
  85. {90.0006000,2502.3298000,16.1431000,180.0000},
  86. {89.7138000,2508.8501000,16.1431000,180.0000},
  87. {89.5402000,2515.0657000,16.1431000,180.0000},
  88. {89.7800000,2521.3779000,16.1431000,180.0000},
  89. {90.0115000,2526.8931000,16.1431000,180.0000},
  90. {85.3873000,2526.7222000,16.1431000,180.0000},
  91. {85.4147000,2521.1362000,16.1431000,180.0000},
  92. {85.0438000,2514.9778000,16.1431000,180.0000},
  93. {85.1593000,2508.9646000,16.1431000,180.0000},
  94. {85.1963000,2502.5635000,16.1431000,180.0000},
  95. {85.6186000,2496.6362000,16.1431000,180.0000},
  96. {85.6974000,2488.9998000,16.1431000,180.0000},
  97. {80.8345000,2526.9805000,16.1431000,180.0000},
  98. {80.8954000,2521.7546000,16.1431000,180.0000},
  99. {80.7532000,2515.7710000,16.1431000,180.0000},
  100. {80.8232000,2509.5781000,16.1431000,180.0000},
  101. {80.6680000,2503.3977000,16.1431000,180.0000},
  102. {80.8206000,2496.9971000,16.1431000,180.0000},
  103. {80.8551000,2489.1218000,16.1431000,180.0000},
  104. {75.6272000,2488.9182000,16.1431000,180.0000},
  105. {75.8174000,2496.8716000,16.1431000,180.0000},
  106. {75.5007000,2503.1401000,16.1431000,180.0000},
  107. {75.6224000,2509.6279000,16.1431000,180.0000},
  108. {75.9480000,2516.4390000,16.1431000,180.0000},
  109. {75.9945000,2522.0627000,16.1431000,180.0000},
  110. {75.6553000,2527.3105000,16.1431000,180.0000},
  111. {71.1877000,2527.6963000,16.1431000,180.0000},
  112. {71.1167000,2522.4114000,16.1431000,180.0000},
  113. {71.1066000,2517.1646000,16.1431000,180.0000},
  114. {71.2062000,2509.8835000,16.1431000,180.0000},
  115. {70.9523000,2502.9644000,16.1431000,180.0000},
  116. {71.0621000,2496.8064000,16.1431000,180.0000},
  117. {70.7980000,2489.8618000,16.1431000,180.0000},
  118. {66.4464000,2490.1670000,16.1431000,180.0000},
  119. {66.7538000,2497.2390000,16.1431000,180.0000},
  120. {66.6790000,2503.0369000,16.1431000,180.0000},
  121. {67.4094000,2510.0461000,16.1431000,180.0000},
  122. {67.3922000,2517.1199000,16.1431000,180.0000},
  123. {66.9387000,2522.1348000,16.1431000,180.0000},
  124. {67.2886000,2527.6819000,16.1431000,180.0000},
  125. {63.4080000,2527.5308000,16.1431000,180.0000},
  126. {62.9306000,2521.5183000,16.1431000,180.0000},
  127. {62.9371000,2516.2039000,16.1431000,180.0000},
  128. {63.0252000,2509.6252000,16.1431000,180.0000},
  129. {62.5786000,2502.8396000,16.1431000,180.0000},
  130. {62.1974000,2496.7925000,16.1431000,180.0000},
  131. {62.1659000,2490.3774000,16.1431000,180.0000},
  132. {57.4684000,2490.5347000,16.1431000,180.0000},
  133. {57.7245000,2497.1094000,16.1431000,180.0000},
  134. {57.8794000,2502.1858000,16.1431000,180.0000},
  135. {57.7836000,2508.2354000,16.1431000,180.0000},
  136. {57.7968000,2514.8538000,16.1431000,180.0000},
  137. {58.5401000,2520.9631000,16.1431000,180.0000},
  138. {59.0142000,2527.3984000,16.1431000,180.0000},
  139. {54.6726000,2527.6108000,16.1431000,180.0000},
  140. {54.3908000,2521.8835000,16.1431000,180.0000},
  141. {54.1727000,2515.2903000,16.1431000,180.0000},
  142. {54.0048000,2508.7493000,16.1431000,180.0000},
  143. {53.8898000,2502.3418000,16.1431000,180.0000},
  144. {53.6838000,2496.2627000,16.1431000,180.0000},
  145. {53.8030000,2490.4790000,16.1431000,180.0000},
  146. {81.0383000,2481.0359000,16.1431000,180.0000},
  147. {75.9260000,2480.8369000,16.1431000,180.0000}
  148. };
  149.  
  150. enum ped_enum
  151. {
  152. TeamID,
  153. Skin,
  154. Float:SpawnX,
  155. Float:SpawnY,
  156. Float:SpawnZ,
  157. Float:SpawnAngle,
  158. SpawnInterior,
  159. VirtualWorld,
  160. Weapon1,
  161. Ammo1,
  162. Weapon2,
  163. Ammo2,
  164. Weapon3,
  165. Ammo3,
  166. };
  167.  
  168. new PedInfo[][ped_enum] = {
  169. {TEAM_DEFEND,80.8012,2492.4758,16.4844,275.4371, 0.0,0,0,0,0,0,0,0,0}
  170. };
  171.  
  172. new bool:RaceStarted= false;
  173. new MissionStarted=1;
  174. new CurrentSpawn=-1;
  175. new GMTimer;
  176. new GMSec;
  177. new TotalRacers;
  178. new CurrentRacePos;
  179. new MAX_CPs;
  180. new RaceMin,RaceSec,RaceMili;
  181. new BARRELS_ALLOWED=false;
  182.  
  183. enum playersdata
  184. {
  185. rUserName[MAX_PLAYER_NAME],
  186. rSec,
  187. rMin,
  188. rMili,
  189. rCurrentCP,
  190. rSpawnID,
  191. rVeh,
  192. rRaceFinished,
  193. rClassID,
  194. rCounted,
  195. rBestMin,
  196. rBestSec,
  197. rBestMili
  198. };
  199.  
  200. new pInfo[MAX_PLAYERS][playersdata];
  201.  
  202. new Ghost_Mode_Time;
  203. new randA;
  204.  
  205. native IsValidVehicle(vehicleid);
  206.  
  207. public OnFilterScriptInit()
  208. {
  209. print(""MapName" initialized");
  210. Object[0] = CreateObject(5333,1373.7998000,-1557.3994100,9.9900000,0.0000000,0.0000000,255.7400000); //
  211. Object[1] = CreateObject(4585,1198.6992200,-1364.0996100,36.0000000,0.0000000,79.9970000,0.0000000); //
  212. Object[2] = CreateObject(10948,909.2000100,-1445.5999800,23.0000000,0.0000000,18.0000000,20.0000000); //
  213. Object[3] = CreateObject(4602,1312.4000200,-1432.5999800,80.0000000,0.0000000,0.0000000,0.0000000); //
  214. Object[4] = CreateObject(1683,1333.0999800,-1408.6999500,61.2000000,0.0000000,24.0000000,240.0000000); //
  215. Object[5] = CreateObject(3988,1340.1992200,-1433.6992200,15.0000000,9.9980000,354.9960000,263.9960000); //
  216. Object[6] = CreateObject(4552,1310.0999800,-1347.5999800,15.0000000,0.0000000,14.0000000,74.0000000); //
  217. Object[7] = CreateObject(4552,1241.9000200,-1363.9000200,15.0000000,0.0000000,13.9970000,91.9980000); //
  218. Object[8] = CreateObject(4060,1052.8000500,-1433.0000000,17.0000000,0.0000000,8.0000000,0.0000000); //
  219. Object[9] = CreateObject(4563,1002.7000100,-1331.3000500,20.0000000,0.0000000,68.0000000,270.0000000); //
  220. Object[10] = CreateObject(12932,949.2999900,-1316.5999800,15.7000000,0.0000000,0.0000000,102.0000000); //
  221. Object[11] = CreateObject(4117,1079.5000000,-1372.5000000,20.0000000,0.0000000,0.0000000,104.0000000); //
  222. Object[12] = CreateObject(1683,798.7000100,-1338.9000200,18.3000000,0.0000000,66.0000000,250.0000000); //
  223. Object[13] = CreateObject(1681,525.9000200,-1340.0999800,32.2000000,0.0000000,0.0000000,100.0000000); //
  224. Object[14] = CreateObject(6336,773.0996100,-1289.0000000,20.0000000,14.9960000,19.9950000,339.9990000); //
  225. Object[15] = CreateObject(6364,501.8999900,-1350.4000200,30.0000000,10.0000000,310.0000000,280.0000000); //
  226. Object[16] = CreateObject(6391,490.5996100,-1325.1992200,40.0000000,0.0000000,0.0000000,29.9980000); //
  227. Object[17] = CreateObject(6288,659.7999900,-1338.9000200,18.1000000,0.0000000,12.0000000,92.0000000); //
  228. Object[18] = CreateObject(17636,344.7000100,-1425.0999800,36.0000000,0.0000000,0.0000000,49.0000000); //
  229. Object[19] = CreateObject(17546,448.8999900,-1452.1999500,40.0000000,0.0000000,352.0000000,324.0000000); //
  230. Object[20] = CreateObject(17546,411.8999900,-1507.4000200,40.0000000,0.0000000,357.9930000,221.9950000); //
  231. Object[21] = CreateObject(17546,358.3999900,-1571.5000000,40.0000000,0.0000000,9.9890000,251.9890000); //
  232. Object[22] = CreateObject(17546,354.1000100,-1603.5999800,40.0000000,0.0000000,335.9870000,277.9880000); //
  233. Object[23] = CreateObject(6404,294.3999900,-1586.0000000,35.0000000,0.0000000,0.0000000,276.0000000); //
  234. Object[24] = CreateObject(4564,315.3999900,-1779.4000200,-21.7000000,80.0000000,180.0000000,174.0000000); //
  235. Object[25] = CreateObject(11011,330.2000100,-1638.4000200,35.0000000,0.0000000,0.0000000,176.2500000); //
  236. Object[26] = CreateObject(11010,356.0000000,-1645.8994100,37.8000000,0.0000000,0.0000000,29.9980000); //
  237. Object[27] = CreateObject(11010,306.7998000,-1654.6992200,38.1000000,0.0000000,0.0000000,341.9930000); //
  238. Object[28] = CreateObject(4564,313.5000000,-1817.8000500,-21.7000000,85.0000000,179.9950000,173.9960000); //
  239. Object[29] = CreateObject(1655,315.2999900,-1896.9000200,4.4000000,0.0000000,0.0000000,174.0000000); //
  240. Object[30] = CreateObject(1655,306.7000100,-1895.9000200,4.4000000,0.0000000,0.0000000,173.9960000); //
  241. Object[31] = CreateObject(1655,298.1000100,-1895.0999800,4.4000000,0.0000000,0.0000000,173.9960000); //
  242. Object[32] = CreateObject(9585,220.2000000,-2025.4000200,-40.0000000,32.8040000,31.2170000,226.5840000); //
  243. Object[33] = CreateObject(10230,327.6000100,-1955.8000500,-5.0000000,10.0000000,350.0000000,70.0000000); //
  244. Object[34] = CreateObject(9958,299.2000100,-1931.5000000,5.2000000,0.0000000,0.0000000,60.0000000); //
  245. Object[35] = CreateObject(17026,286.8999900,-1962.5000000,-12.0000000,0.0000000,0.0000000,50.0000000); //
  246. Object[36] = CreateObject(17026,314.7000100,-1977.0000000,0.0000000,0.0000000,0.0000000,340.0000000); //
  247. Object[37] = CreateObject(17026,257.7000100,-1987.3000500,0.0000000,0.0000000,0.0000000,119.9990000); //
  248. Object[38] = CreateObject(17026,282.7999900,-2007.5000000,0.0000000,0.0000000,0.0000000,199.9980000); //
  249. Object[39] = CreateObject(17026,302.5000000,-2005.5999800,0.0000000,0.0000000,0.0000000,259.9950000); //
  250. Object[40] = CreateObject(6959,288.7999900,-1981.0000000,2.4000000,0.0000000,0.0000000,0.0000000); //
  251. Object[41] = CreateObject(17026,296.7999900,-2011.6999500,16.5000000,0.0000000,320.0000000,242.0000000); //
  252. Object[42] = CreateObject(17026,267.5000000,-1999.9000200,16.5000000,0.0000000,319.9990000,191.9960000); //
  253. Object[43] = CreateObject(17026,318.3999900,-1987.8000500,16.5000000,0.0000000,319.9930000,309.9920000); //
  254. Object[44] = CreateObject(17026,284.1000100,-1993.5000000,40.0000000,345.0000000,150.0000000,90.0000000); //
  255. Object[45] = CreateObject(17026,261.3999900,-1980.5000000,16.5000000,0.0000000,323.9930000,169.9920000); //
  256. Object[46] = CreateObject(17026,317.2999900,-1983.8000500,16.5000000,0.0000000,323.9920000,331.9910000); //
  257. Object[47] = CreateObject(17026,284.7000100,-1984.5000000,40.0000000,345.6250000,145.9120000,112.9640000); //
  258. Object[48] = CreateObject(17026,285.2000100,-1977.5000000,40.0000000,345.6240000,145.9090000,112.9610000); //
  259. Object[49] = CreateObject(17026,280.2000100,-1962.3000500,-12.0000000,0.0000000,0.0000000,49.9990000); //
  260. Object[50] = CreateObject(3361,307.7999900,-1954.0000000,5.2000000,0.0000000,0.0000000,40.0000000); //
  261. Object[51] = CreateObject(3361,312.6000100,-1950.0999800,1.0000000,0.0000000,0.0000000,39.9960000); //
  262. Object[52] = CreateObject(10230,243.7000000,-1887.4000200,-5.0000000,9.7590000,343.9110000,113.0440000); //
  263. Object[53] = CreateObject(4563,2503.0000000,-1790.5999800,20.0000000,0.0000000,68.0000000,270.0000000); //
  264. Object[54] = CreateObject(17511,2608.0000000,-1857.0999800,0.0000000,0.0000000,0.0000000,346.0000000); //
  265. Object[55] = CreateObject(5463,2293.1001000,-1879.8000500,35.0000000,0.0000000,0.0000000,0.0000000); //
  266. Object[56] = CreateObject(5463,2287.6001000,-1850.0000000,30.0000000,0.0000000,300.0000000,96.0000000); //
  267. Object[57] = CreateObject(5463,2172.3999000,-1853.5999800,12.0000000,90.0000000,0.0000000,0.0000000); //
  268. Object[58] = CreateObject(971,1368.8000500,-1698.5000000,10.0000000,0.0000000,0.0000000,300.0000000); //
  269. Object[59] = CreateObject(971,1430.4000200,-1435.1999500,15.0000000,0.0000000,0.0000000,260.0000000); //
  270. Object[60] = CreateObject(971,1427.5999800,-1443.4000200,15.0000000,0.0000000,0.0000000,241.9970000); //
  271. Object[61] = CreateObject(971,1422.0999800,-1449.8000500,15.0000000,0.0000000,2.0000000,217.9960000); //
  272. Object[62] = CreateObject(3866,2102.3000500,-1828.9000200,17.0000000,0.0000000,350.0000000,180.0000000); //
  273. Object[63] = CreateObject(3866,2126.8994100,-1829.6992200,10.8000000,0.0000000,349.9970000,158.0000000); //
  274. Object[64] = CreateObject(3887,2045.5999800,-1871.4000200,21.5000000,0.0000000,340.0000000,266.0000000); //
  275. Object[65] = CreateObject(3887,2128.8000500,-1871.6999500,21.5000000,0.0000000,339.9990000,273.9950000); //
  276. Object[66] = CreateObject(10985,1971.1999500,-1862.1999500,4.0000000,0.0000000,0.0000000,356.0000000); //
  277. Object[67] = CreateObject(10985,1967.9000200,-1863.0000000,4.0000000,0.0000000,0.0000000,125.9950000); //
  278. Object[68] = CreateObject(10985,1962.9000200,-1861.4000200,4.0000000,0.0000000,0.0000000,135.9910000); //
  279. Object[69] = CreateObject(10985,1958.4000200,-1860.5000000,4.0000000,0.0000000,0.0000000,143.9890000); //
  280. Object[70] = CreateObject(971,1975.5999800,-1856.0999800,6.0000000,0.0000000,0.0000000,180.0000000); //
  281. Object[71] = CreateObject(971,1966.6999500,-1856.0999800,6.0000000,0.0000000,0.0000000,179.9950000); //
  282. Object[72] = CreateObject(971,1957.8000500,-1856.0999800,6.0000000,0.0000000,0.0000000,179.9950000); //
  283. Object[73] = CreateObject(971,1983.5000000,-1859.0000000,6.0000000,0.0000000,0.0000000,139.9950000); //
  284. Object[74] = CreateObject(3707,1893.4000200,-1822.1999500,17.0000000,0.0000000,194.0000000,200.0000000); //
  285. Object[75] = CreateObject(4019,1391.8000500,-1753.6999500,30.0000000,0.0000000,312.0000000,272.0000000); //
  286. Object[76] = CreateObject(971,1617.0999800,-1749.1999500,6.0000000,0.0000000,0.0000000,10.0000000); //
  287. Object[77] = CreateObject(10985,1616.0999800,-1747.1999500,3.5000000,0.0000000,0.0000000,2.0000000); //
  288. Object[78] = CreateObject(10985,1625.0000000,-1746.0999800,3.5000000,0.0000000,0.0000000,2.0000000); //
  289. Object[79] = CreateObject(971,1625.9000200,-1747.6999500,6.0000000,0.0000000,0.0000000,9.9980000); //
  290. Object[80] = CreateObject(10985,1370.9000200,-1695.0000000,8.0000000,0.0000000,0.0000000,22.0000000); //
  291. Object[81] = CreateObject(10985,1373.3000500,-1698.4000200,8.0000000,0.0000000,0.0000000,39.9950000); //
  292. Object[82] = CreateObject(5313,1375.0999800,-1638.3000500,29.5000000,0.0000000,350.0000000,78.0000000); //
  293. Object[83] = CreateObject(10821,1174.6999500,-1409.4000200,50.0000000,0.0000000,0.0000000,100.0000000); //
  294. Object[84] = CreateObject(971,1201.9000200,-1429.9000200,15.0000000,0.0000000,0.0000000,180.0000000); //
  295. Object[85] = CreateObject(971,1193.0000000,-1429.9000200,15.0000000,0.0000000,0.0000000,179.9950000); //
  296. Object[86] = CreateObject(971,1184.0999800,-1429.9000200,15.0000000,0.0000000,0.0000000,179.9950000); //
  297. Object[87] = CreateObject(10985,1202.4000200,-1431.4000200,12.0000000,0.0000000,0.0000000,0.0000000); //
  298. Object[88] = CreateObject(10985,1194.9000200,-1431.1999500,12.0000000,0.0000000,0.0000000,0.0000000); //
  299. Object[89] = CreateObject(10985,1187.4000200,-1431.0000000,12.0000000,0.0000000,0.0000000,0.0000000); //
  300. Object[90] = CreateObject(4683,1213.6999500,-1454.1999500,20.0000000,5.0000000,354.0000000,196.0000000); //
  301. Object[91] = CreateObject(3722,1441.9000200,-1440.1999500,16.8000000,0.0000000,344.0000000,334.0000000); //
  302. Object[92] = CreateObject(4564,1393.0999800,-1529.5000000,50.0000000,0.0000000,282.0000000,334.0000000); //
  303. Object[93] = CreateObject(4570,1130.0000000,-1437.9000200,10.0000000,0.0000000,12.0000000,138.0000000); //
  304. Object[94] = CreateObject(971,902.7000100,-1360.6999500,16.0000000,0.0000000,0.0000000,90.0000000); //
  305. Object[95] = CreateObject(10985,901.7000100,-1361.6999500,13.0000000,0.0000000,4.0000000,12.0000000); //
  306. Object[96] = CreateObject(10985,874.7999900,-1344.6999500,13.0000000,0.0000000,3.9990000,11.9970000); //
  307. Object[97] = CreateObject(971,877.9000200,-1342.5999800,16.0000000,0.0000000,0.0000000,180.0000000); //
  308. Object[98] = CreateObject(971,869.0000000,-1342.5999800,16.0000000,0.0000000,0.0000000,179.9950000); //
  309. Object[99] = CreateObject(5767,899.7999900,-1275.3000500,50.0000000,0.0000000,10.0000000,194.0000000); //
  310. Object[100] = CreateObject(4585,579.9000200,-1288.1999500,24.0000000,0.0000000,92.0000000,16.0000000); //
  311. Object[101] = CreateObject(4585,650.7999900,-1289.4000200,10.0000000,0.0000000,91.9990000,1.9960000); //
  312. Object[102] = CreateObject(6336,780.2000100,-1359.8000500,20.0000000,15.7230000,0.0000000,343.8510000); //
  313. Object[103] = CreateObject(11260,705.9000200,-1307.6999500,25.0000000,0.0000000,0.0000000,50.0000000); //
  314. Object[104] = CreateObject(11260,548.7999900,-1337.6999500,40.0000000,0.0000000,0.0000000,71.9990000); //
  315. Object[105] = CreateObject(5142,440.8999900,-1341.6999500,28.8000000,0.0000000,0.0000000,26.0000000); //
  316. Object[106] = CreateObject(5142,446.7999900,-1488.5999800,35.7000000,0.0000000,0.0000000,221.9990000); //
  317. Object[107] = CreateObject(4894,398.6000100,-1565.0000000,36.5000000,0.0000000,0.0000000,316.0000000); //
  318. Object[108] = CreateObject(4894,412.8999900,-1553.9000200,36.5000000,0.0000000,0.0000000,300.0000000); //
  319. Object[109] = CreateObject(4894,471.0000000,-1520.9000200,36.5000000,0.0000000,0.0000000,311.9980000); //
  320. Object[110] = CreateObject(4894,296.2000100,-1644.4000200,36.5000000,0.0000000,0.0000000,273.9950000); //
  321. Object[111] = CreateObject(4894,295.7000100,-1625.4000200,36.5000000,0.0000000,0.0000000,273.9940000); //
  322. Object[112] = CreateObject(4602,384.6000100,-1449.0000000,50.0000000,0.0000000,12.0000000,30.0000000); //
  323. Object[113] = CreateObject(4603,368.2999900,-1557.1999500,73.8000000,300.0000000,0.0000000,60.0000000); //
  324. Object[114] = CreateObject(11010,359.3999900,-1423.9000200,38.3000000,0.0000000,0.0000000,109.9980000); //
  325. Object[115] = CreateObject(11010,434.7000100,-1347.0000000,33.0000000,0.0000000,0.0000000,219.9950000); //
  326. Object[116] = CreateObject(11010,856.2999900,-1292.9000200,18.6000000,0.0000000,0.0000000,159.9900000); //
  327. Object[117] = CreateObject(11010,2021.0999800,-1829.3000500,17.0000000,0.0000000,2.0000000,185.9880000); //
  328. Object[118] = CreateObject(11260,2357.3000500,-1851.9000200,32.2000000,0.0000000,0.0000000,49.9990000); //
  329. Object[119] = CreateObject(3584,1572.6999500,-1755.0000000,16.8000000,0.0000000,12.0000000,0.0000000); //
  330.  
  331. for(new i=0; i<sizeof(PedInfo); i++)
  332. {
  333. if(PedInfo[i][Skin] == -1)
  334. {
  335. for(new J=0; J < 5; J++)
  336. {
  337. back:
  338. new skin=random(312);
  339. if(skin == 74 || skin < 1) goto back;
  340. AddPlayerClassEx(PedInfo[i][TeamID],skin,PedInfo[i][SpawnX],PedInfo[i][SpawnY],PedInfo[i][SpawnZ],PedInfo[i][SpawnAngle],0,0,0,0,0,0);
  341. }
  342. }
  343. else
  344. {
  345. AddPlayerClassEx(PedInfo[i][TeamID],PedInfo[i][Skin],PedInfo[i][SpawnX],PedInfo[i][SpawnY],PedInfo[i][SpawnZ],PedInfo[i][SpawnAngle],0,0,0,0,0,0);
  346. }
  347. }
  348.  
  349. GMTimer = SetTimer("GMClock",1000,true);
  350. MAX_CPs = sizeof(cp); // to check max checkpoints
  351. if(random(4) == 1) Ghost_Mode_Time= GHOST_MODE;
  352. else Ghost_Mode_Time= -1;
  353. for(new i=0; i < MAX_PLAYERS; i++)
  354. {
  355. pInfo[i][rSpawnID]=-1;
  356. pInfo[i][rVeh]=-1;
  357. }
  358. randA=random(2);
  359. if(random(4) == 2)
  360. {
  361. CallRemoteFunction("SetUpBarrelSystem", "");
  362. BARRELS_ALLOWED = true;
  363. }
  364. CallRemoteFunction("UpdateRaceRecords","dd",INVALID_PLAYER_ID,0);
  365. #if CJ_WALK == true
  366. UsePlayerPedAnims();
  367. #endif
  368. return 1;
  369. }
  370.  
  371. public OnFilterScriptExit()
  372. {
  373. for(new i=0;i<MAX_MAP_OBJECTS;i++) DestroyObject(i);
  374. KillTimer(GMTimer);
  375. for(new i=0; i < 100; i++)
  376. {
  377. if(IsValidVehicle(i))
  378. {
  379. DestroyVehicle(i);
  380. }
  381. }
  382. return 1;
  383. }
  384.  
  385. FUNCTION GMClock()
  386. {
  387. GMSec++;
  388. switch(RaceStarted)
  389. {
  390. case false:
  391. {
  392. switch(GMSec)
  393. {
  394. case 1: CallRemoteFunction("textdraw_ShowInfoBox", "iisi", -1, -1,"The race will start in 20 seconds.",0);
  395. case 18: GameTextForAll("~r~~h~~h~ON YOUR MARKS!",1000,3);
  396. case 19: GameTextForAll("~y~GET SET!",1000,3);
  397. case 20:
  398. {
  399. GameTextForAll("~g~~h~~h~GO!",1000,3);
  400. RaceStarted= true;
  401. for(new i=0; i < MAX_PLAYERS; i++) if(CallRemoteFunction("GetAliveState","i",i)) TogglePlayerControllable(i,true);
  402. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" KA BOOM! The race has started. Good luck.");
  403. CallRemoteFunction("textdraw_ShowInfoBox", "iisi", -1, -1,"KA BOOM! The race has started. Good luck.",0);
  404. RaceMili=GetTickCount();
  405. }
  406. }
  407. if(Ghost_Mode_Time > 0 || Ghost_Mode_Time == -1)
  408. {
  409. for(new i=0; i<MAX_PLAYERS; i++) DisableRemoteVehicleCollisions(i,1);
  410. }
  411. }
  412. case true:
  413. {
  414. if(Ghost_Mode_Time > 0)
  415. {
  416. Ghost_Mode_Time--;
  417. if(Ghost_Mode_Time == 0)
  418. {
  419. for(new i=0; i<MAX_PLAYERS; i++) DisableRemoteVehicleCollisions(i,0);
  420. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" Ghost mode has been disabled by the server.");
  421. CallRemoteFunction("textdraw_ShowInfoBox", "iisi", -1, -1,"Ghost mode has been disabled by the server.",0);
  422. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" Ghost mode has been disabled by the server.",IRC_SERVER_COLOR);
  423. }
  424. }
  425. for(new i=0; i<MAX_PLAYERS; i++)
  426. {
  427. if(IsPlayerConnected(i) && CallRemoteFunction("GetAliveState","i",i) && !pInfo[i][rRaceFinished])
  428. {
  429. GetPlayerPosition(i);
  430. }
  431. }
  432. RaceSec++;
  433. if(RaceSec == 60)
  434. {
  435. RaceSec=0;
  436. RaceMin++;
  437. }
  438. }
  439. }
  440. }
  441.  
  442. GetPlayerPosition(playerid)
  443. {
  444. if(pInfo[playerid][rRaceFinished]) return GetPlayerScore(playerid);
  445. new PlayerPositon=CurrentRacePos+1;
  446. new Float:PlayerDistance=GetPlayerDistanceFromPoint(playerid,cp[pInfo[playerid][rCurrentCP]][cp_x],cp[pInfo[playerid][rCurrentCP]][cp_y],cp[pInfo[playerid][rCurrentCP]][cp_z]);
  447. new Float:OtherPlayerDistance;
  448. for(new i=0; i < MAX_PLAYERS; i++)
  449. {
  450. if(!IsPlayerConnected(i) || !CallRemoteFunction("GetAliveState","i",i) || !RaceStarted || pInfo[i][rRaceFinished]) continue;
  451. if(pInfo[playerid][rCurrentCP] < pInfo[i][rCurrentCP])
  452. {
  453. PlayerPositon++;
  454. continue;
  455. }
  456. else if(pInfo[playerid][rCurrentCP] == pInfo[i][rCurrentCP])
  457. {
  458. OtherPlayerDistance=GetPlayerDistanceFromPoint(i,cp[pInfo[i][rCurrentCP]][cp_x],cp[pInfo[i][rCurrentCP]][cp_y],cp[pInfo[i][rCurrentCP]][cp_z]);
  459. if(PlayerDistance > OtherPlayerDistance)
  460. {
  461. PlayerPositon++;
  462. continue;
  463. }
  464. }
  465. }
  466. SetPlayerScore(playerid,PlayerPositon);
  467. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,2,PlayerPositon,TotalRacers,RaceMin,RaceSec,pInfo[playerid][rCurrentCP],MAX_CPs,pInfo[playerid][rBestMin],pInfo[playerid][rBestSec],pInfo[playerid][rBestMili],Ghost_Mode_Time);
  468. return PlayerPositon;
  469. }
  470.  
  471. public OnPlayerRequestClass(playerid, classid)
  472. {
  473. TogglePlayerControllable(playerid,false);
  474. SetPlayerPos(playerid,80.3752,2452.8628,20.6340);
  475. SetPlayerFacingAngle(playerid,39.3497);
  476. SetPlayerCameraPos(playerid,78.4764,2454.5447,19.7436);
  477. SetPlayerCameraLookAt(playerid,80.3752,2452.8628,20.6340);
  478.  
  479. CallRemoteFunction("textdraw_ShowClassSelection","ddsddd",playerid, randA,"Racer", PedInfo[classid][Weapon1], PedInfo[classid][Weapon2], PedInfo[classid][Weapon3]);
  480. SetPlayerColor(playerid,COLOR_SERVER);
  481. pInfo[playerid][rClassID]=classid;
  482. return 1;
  483. }
  484.  
  485. public OnPlayerRequestSpawn(playerid)
  486. {
  487. CallRemoteFunction("UpdateRaceRecords","dd",INVALID_PLAYER_ID,0);
  488. if(pInfo[playerid][rSpawnID] == -1)
  489. {
  490. CurrentSpawn++;
  491. pInfo[playerid][rSpawnID]=CurrentSpawn;
  492. pInfo[playerid][rCurrentCP]=0;
  493. }
  494. if(!CallRemoteFunction("GetJailedStatus","d",playerid))
  495. {
  496. new Float:x,Float:y,Float:z,Float:a;
  497. x=spawns[pInfo[playerid][rSpawnID]][0];
  498. y=spawns[pInfo[playerid][rSpawnID]][1];
  499. z=spawns[pInfo[playerid][rSpawnID]][2];
  500. a=spawns[pInfo[playerid][rSpawnID]][3];
  501. if(IsValidVehicle(pInfo[playerid][rVeh])) DestroyVehicle(pInfo[playerid][rVeh]);
  502. pInfo[playerid][rVeh] = CreateVehicle(VEH,x,y,z,a,random(255),random(255),-1);
  503. }
  504. return 1;
  505. }
  506.  
  507. public OnPlayerSpawn(playerid)
  508. {
  509. new string[124];
  510. CallRemoteFunction("UpdateAliveState","ii",playerid,1);
  511. pInfo[playerid][rCurrentCP]=0;
  512. if(PedInfo[pInfo[playerid][rClassID]][Skin] == 0 ||PedInfo[pInfo[playerid][rClassID]][Skin] == 74)
  513. {
  514. back:
  515. new skin=random(312);
  516. if(skin == 74 || skin < 1) goto back;
  517. SetPlayerSkin(playerid,skin);
  518. }
  519. if(CallRemoteFunction("GetSpectateStatus","d",playerid)) return CallRemoteFunction("SpecOffAdmin","d",playerid);
  520. SetPlayerColor(playerid,(randA == TEAM_ATTACK) ? COLOR_TEAM_ATTACK : COLOR_TEAM_DEFEND);
  521. SetPlayerTeam(playerid,PedInfo[pInfo[playerid][rClassID]][TeamID]);
  522. switch(RaceStarted)
  523. {
  524. case false:
  525. {
  526. TogglePlayerControllable(playerid,false);
  527. format(string,sizeof(string),"The race will start in %d seconds. Get ready.",(GMSec-20)*-1);
  528. CallRemoteFunction("textdraw_ShowInfoBox", "iisi", playerid, -1,string,100);
  529. }
  530. case true:
  531. {
  532. TogglePlayerControllable(playerid,true);
  533. CallRemoteFunction("textdraw_ShowInfoBox", "iisi", -1, -1,"HURRY UP! The race has already started.",2000);
  534. }
  535. }
  536. if(Ghost_Mode_Time > 0)
  537. {
  538. DisableRemoteVehicleCollisions(playerid,1);
  539. format(string,sizeof(string),""SERVER_KEY_MSG" The Ghost mode will last for %d seconds.",Ghost_Mode_Time);
  540. SendClientMessage(playerid,COLOR_SERVER,string);
  541. }
  542. if(Ghost_Mode_Time == -1) DisableRemoteVehicleCollisions(playerid,1);
  543. CallRemoteFunction("textdraw_ShowInfoText", "iisi", playerid, -1,"Try to finish first!",2000);
  544. if(CallRemoteFunction("GetJailedStatus","d",playerid)) CallRemoteFunction("SetJailed","d",playerid);
  545. else
  546. {
  547. if(BARRELS_ALLOWED)
  548. {
  549. SendClientMessage(playerid, COLOR_SERVER, ""SERVER_KEY_MSG" The system has chosen that barrels are enabled in this mission.");
  550. format(string,sizeof(string),""SERVER_KEY_MSG" You can throw a barrel by pressing 'submission key (2)' on your keyboard. (Costs: $%d / barrel)",BARREL_PRICE);
  551. SendClientMessage(playerid, COLOR_SERVER, string);
  552. }
  553. else
  554. {
  555. SendClientMessage(playerid, COLOR_SERVER, ""SERVER_KEY_MSG" The system has chosen that barrels are disabled in this mission.");
  556. }
  557. SetVehicleToRespawn(pInfo[playerid][rVeh]);
  558. PutPlayerInVehicle(playerid,pInfo[playerid][rVeh],0);
  559. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[pInfo[playerid][rClassID]][Weapon1],PedInfo[pInfo[playerid][rClassID]][Ammo1]);
  560. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[pInfo[playerid][rClassID]][Weapon2],PedInfo[pInfo[playerid][rClassID]][Ammo2]);
  561. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[pInfo[playerid][rClassID]][Weapon3],PedInfo[pInfo[playerid][rClassID]][Ammo3]);
  562. }
  563. if(!pInfo[playerid][rRaceFinished])
  564. {
  565. pInfo[playerid][rMili]=0,pInfo[playerid][rMin]=0,pInfo[playerid][rSec]=0;
  566. SetVehicleVirtualWorld(pInfo[playerid][rVeh], 0);
  567. SetPlayerVirtualWorld(playerid,0);
  568. SetPlayerRaceCheckpoint(playerid,cp[pInfo[playerid][rCurrentCP]][cp_type],cp[pInfo[playerid][rCurrentCP]][cp_x],cp[pInfo[playerid][rCurrentCP]][cp_y],cp[pInfo[playerid][rCurrentCP]][cp_z],cp[pInfo[playerid][rCurrentCP]+1][cp_x],cp[pInfo[playerid][rCurrentCP]+1][cp_y],cp[pInfo[playerid][rCurrentCP]+1][cp_z],10.0);
  569. SetPlayerMapIcon(playerid, MAP_ICON_NEXT_CP,cp[pInfo[playerid][rCurrentCP]+1][cp_x],cp[pInfo[playerid][rCurrentCP]+1][cp_y],cp[pInfo[playerid][rCurrentCP]+1][cp_z], 0, 0xFF000033, MAPICON_LOCAL);
  570. }
  571. else
  572. {
  573. SetVehicleVirtualWorld(pInfo[playerid][rVeh], 2);
  574. SetPlayerVirtualWorld(playerid,2);
  575. CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
  576. }
  577. if(!pInfo[playerid][rCounted])
  578. {
  579. TotalRacers++;
  580. pInfo[playerid][rCounted]=true;
  581. }
  582. CallRemoteFunction("GetPlayerPersonalBest","d",playerid);
  583. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,2,GetPlayerPosition(playerid),TotalRacers,RaceMin,pInfo[playerid][rSec],pInfo[playerid][rCurrentCP],MAX_CPs,pInfo[playerid][rBestMin],pInfo[playerid][rBestSec],pInfo[playerid][rBestMili],Ghost_Mode_Time);
  584. EnableVehicleFriendlyFire();
  585. CallRemoteFunction("TD_PlayerRaceRecords","dd",playerid,2);
  586. return 1;
  587. }
  588.  
  589. public OnPlayerDisconnect(playerid,reason)
  590. {
  591. DestroyVehicle(pInfo[playerid][rVeh]);
  592. pInfo[playerid][rVeh]=-1;
  593. if(!pInfo[playerid][rRaceFinished])
  594. {
  595. if(pInfo[playerid][rCounted])
  596. {
  597. TotalRacers--;
  598. pInfo[playerid][rCounted]=false;
  599. }
  600. }
  601. else pInfo[playerid][rRaceFinished] = false;
  602. RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
  603. DisablePlayerRaceCheckpoint(playerid);
  604. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,1,GetPlayerPosition(playerid),TotalRacers,RaceMin,pInfo[playerid][rSec],pInfo[playerid][rCurrentCP],MAX_CPs,pInfo[playerid][rBestMin],pInfo[playerid][rBestSec],pInfo[playerid][rBestMili],Ghost_Mode_Time);
  605. CallRemoteFunction("TD_PlayerRaceRecords","dd",playerid,1);
  606. return 1;
  607. }
  608.  
  609. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  610. {
  611. if(ispassenger == 0)
  612. {
  613. for(new i=0; i<MAX_PLAYERS; i++)
  614. {
  615. if(pInfo[i][rVeh] == vehicleid && i != playerid && GetPlayerTeam(playerid) == GetPlayerTeam(i))
  616. {
  617. new Float:x,Float:y,Float:z;
  618. GetPlayerPos(playerid,x,y,z);
  619. SetPlayerPos(playerid,x,y,z+3);
  620. ClearAnimations(playerid,1);
  621. SendClientMessage(playerid,COLOR_RED,"Team jacking is not allowed.");
  622. CallRemoteFunction("textdraw_ShowInfoBox", "iisi", playerid, -1,"Team Jacking is not allowed.",2000);
  623. break;
  624. }
  625. }
  626. }
  627. return 1;
  628. }
  629.  
  630. public OnPlayerDeath(playerid,killerid,reason)
  631. {
  632. //DestroyVehicle(pInfo[playerid][rVeh]);
  633. CallRemoteFunction("UpdateAliveState","ii",playerid,0);
  634. if(!pInfo[playerid][rRaceFinished]) pInfo[playerid][rCurrentCP]=0;
  635. CallRemoteFunction("TD_PlayerRaceRecords","dd",playerid,1);
  636. CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,-1.0,-1.0,-1.0);
  637. return 1;
  638. }
  639.  
  640. public OnPlayerEnterRaceCheckpoint(playerid)
  641. {
  642. if(MissionStarted == 0) return 0;
  643. new string[124],type;
  644. PlayerPlaySound(playerid,1139,0,0,0);
  645. CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,cp[pInfo[playerid][rCurrentCP]][cp_x],cp[pInfo[playerid][rCurrentCP]][cp_y],cp[pInfo[playerid][rCurrentCP]][cp_z]);
  646. if(pInfo[playerid][rCurrentCP] != MAX_CPs-1)
  647. {
  648. type=cp[pInfo[playerid][rCurrentCP]+1][cp_type];
  649. }
  650. if(pInfo[playerid][rCurrentCP] == MAX_CPs-2)
  651. {
  652. SetPlayerRaceCheckpoint(playerid,type,cp[pInfo[playerid][rCurrentCP]+1][cp_x],cp[pInfo[playerid][rCurrentCP]+1][cp_y],cp[pInfo[playerid][rCurrentCP]+1][cp_z],0.0,0.0,0.0,cp[pInfo[playerid][rCurrentCP]+1][cp_size]);
  653. RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
  654. }
  655. else if(pInfo[playerid][rCurrentCP] == MAX_CPs-1)
  656. {
  657. pInfo[playerid][rRaceFinished]= true;
  658. DisablePlayerRaceCheckpoint(playerid);
  659. RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
  660. new Pos=GetPlayerPosition(playerid);
  661. CurrentRacePos++;
  662. pInfo[playerid][rMin]=RaceMin;
  663. pInfo[playerid][rSec]=RaceSec;
  664. new Prize=floatround(20000/Pos, floatround_round)+(1000*TotalRacers);
  665. pInfo[playerid][rMili]=(((GetTickCount()-RaceMili)-(1000*pInfo[playerid][rSec]))-((1000*60)*pInfo[playerid][rMin]));
  666. while(pInfo[playerid][rMili] >= 1000)
  667. {
  668. pInfo[playerid][rMili]-=1000;
  669. pInfo[playerid][rSec]++;
  670. if(pInfo[playerid][rSec] == 60)
  671. {
  672. pInfo[playerid][rSec]=0;
  673. pInfo[playerid][rMin]++;
  674. }
  675. }
  676. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,2,Pos,TotalRacers,pInfo[playerid][rMin],pInfo[playerid][rSec],pInfo[playerid][rCurrentCP]+1,MAX_CPs,pInfo[playerid][rBestMin],pInfo[playerid][rBestSec],pInfo[playerid][rBestMili],Ghost_Mode_Time);
  677. CallRemoteFunction("GivePlayerCash","ii",playerid,Prize);
  678. if(Pos == 1)
  679. {
  680. CallRemoteFunction("PlayerMissionStats","dd",playerid,3);
  681. format(string,sizeof(string),""SERVER_KEY_MSG" %s (%d) Has finished 1st in the race. Time Taken: %02d:%02d:%03d | Prize: $%d + Token.",pInfo[playerid][rUserName],playerid,pInfo[playerid][rMin],pInfo[playerid][rSec],pInfo[playerid][rMili],Prize);
  682. CallRemoteFunction("GivePlayerToken","dd",playerid,1);
  683. CallRemoteFunction("CheckForBetWinners","d",playerid);
  684. }
  685. else format(string,sizeof(string),""SERVER_KEY_MSG" %s (%d) Has finished %d%s in the race. Time Taken: %02d:%02d:%03d | Prize: $%d.",pInfo[playerid][rUserName],playerid,Pos,GetEndStyle(Pos),pInfo[playerid][rMin],pInfo[playerid][rSec],pInfo[playerid][rMili],Prize);
  686. if(Pos == 2) CallRemoteFunction("PlayerMissionStats","dd",playerid,4);
  687. if(Pos == 3) CallRemoteFunction("PlayerMissionStats","dd",playerid,5);
  688. CallRemoteFunction("PlayerMissionStats","dd",playerid,0);
  689. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  690. new time = ((pInfo[playerid][rMin]*60000)+(pInfo[playerid][rSec]*1000)+(pInfo[playerid][rMili]));
  691. CallRemoteFunction("CheckRaceRecord","dd",playerid,time);
  692. SetVehicleVirtualWorld(pInfo[playerid][rVeh], 2);
  693. SetPlayerVirtualWorld(playerid,2);
  694. SendClientMessageToAll(COLOR_SERVER,string);
  695. CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
  696. CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,-2.0,-2.0,-2.0);
  697. CallRemoteFunction("PlayerMissionStats","dd",playerid,9);
  698. }
  699. else if(pInfo[playerid][rCurrentCP] < MAX_CPs-1)
  700. {
  701. SetPlayerRaceCheckpoint(playerid,type,cp[pInfo[playerid][rCurrentCP]+1][cp_x],cp[pInfo[playerid][rCurrentCP]+1][cp_y],cp[pInfo[playerid][rCurrentCP]+1][cp_z],cp[pInfo[playerid][rCurrentCP]+2][cp_x],cp[pInfo[playerid][rCurrentCP]+2][cp_y],cp[pInfo[playerid][rCurrentCP]+2][cp_z],cp[pInfo[playerid][rCurrentCP]+1][cp_size]);
  702. SetPlayerMapIcon(playerid, MAP_ICON_NEXT_CP,cp[pInfo[playerid][rCurrentCP]+2][cp_x],cp[pInfo[playerid][rCurrentCP]+2][cp_y],cp[pInfo[playerid][rCurrentCP]+2][cp_z], 0, 0xFF000033, MAPICON_LOCAL);
  703. }
  704. pInfo[playerid][rCurrentCP]++;
  705. return 1;
  706. }
  707.  
  708. FUNCTION EndTheMission()
  709. {
  710. if(MissionStarted == 0) return 1;
  711. MissionStarted=0;
  712. KillTimer(GMTimer);
  713. if(RaceStarted)
  714. {
  715. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The race has ended.");
  716. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The race has ended.",IRC_SERVER_COLOR);
  717. CallRemoteFunction("textdraw_ShowInfoBox", "iisi", -1, -1,"The race has ended.",0);
  718. for(new i=0; i < MAX_PLAYERS; i++)
  719. {
  720. if(IsPlayerConnected(i) && !pInfo[i][rRaceFinished])
  721. {
  722. GameTextForPlayer(i,"~R~MISSION FAILED~w~!",3000,3);
  723. DisablePlayerCheckpoint(i);
  724. CallRemoteFunction("PlayerMissionStats","dd",i,1);
  725. }
  726. }
  727. }
  728. else
  729. {
  730. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The race has been cancelled.");
  731. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The race has been cancelled.",IRC_SERVER_COLOR);
  732. CallRemoteFunction("textdraw_ShowInfoBox", "iisi", -1, -1,"The race has been cancelled.",0);
  733. for(new i=0; i < MAX_PLAYERS; i++)
  734. {
  735. if(IsPlayerConnected(i))
  736. {
  737. GameTextForPlayer(i,"~R~MISSION CANCELLED~w~!",3000,3);
  738. DisablePlayerCheckpoint(i);
  739. RemovePlayerMapIcon(i,MAP_ICON_NEXT_CP);
  740. }
  741. }
  742. }
  743. return 1;
  744. }
  745. FUNCTION GetPlayerRaceVehicleID(playerid) return pInfo[playerid][rVeh];
  746.  
  747. FUNCTION OnPlayerNameRecieve(playerid,name[])
  748. {
  749. format(pInfo[playerid][rUserName],MAX_PLAYER_NAME,"%s",name);
  750. return 1;
  751. }
  752.  
  753. FUNCTION OnPlayerGetPersonalBest(playerid,Min,Sec,Mili)
  754. {
  755. pInfo[playerid][rBestMin]=Min;
  756. pInfo[playerid][rBestSec]=Sec;
  757. pInfo[playerid][rBestMili]=Mili;
  758. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,2,GetPlayerPosition(playerid),TotalRacers,pInfo[playerid][rMin],pInfo[playerid][rSec],pInfo[playerid][rCurrentCP]+1,MAX_CPs,pInfo[playerid][rBestMin],pInfo[playerid][rBestSec],pInfo[playerid][rBestMili],Ghost_Mode_Time);
  759. return 1;
  760. }
  761. FUNCTION MissionObjectiveStarted() return RaceStarted;
  762.  
  763.  
  764. GetEndStyle(pos)
  765. {
  766. new end[3];
  767. if(pos == 11 || pos == 12 || pos == 13) { end = "TH"; }
  768. else if(pos - (pos / 10) * 10 == 1) { end = "ST"; }
  769. else if(pos - (pos / 10) * 10 == 2) { end = "ND"; }
  770. else if(pos - (pos / 10) * 10 == 3) { end = "RD"; }
  771. else { end = "TH"; }
  772.  
  773. return end;
  774. }
Advertisement
Add Comment
Please, Sign In to add comment