Bulletje

Untitled

Feb 2nd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.15 KB | None | 0 0
  1. /*
  2. Script by: Bullet
  3. Map by: Bullet
  4. Mission Base: Parkour
  5. Mission Type: Parkour
  6. Mission Type ID: 7
  7. */
  8. //==============================================================================
  9. // Includes
  10. //==============================================================================
  11. #include <a_samp>
  12. #include <crashdetect>
  13. #include <fixes2>
  14.  
  15. #include "..\filterscripts\MM\stuff\defines"
  16. #include "..\filterscripts\MM\stuff\serverkeymsg"
  17.  
  18. //==============================================================================
  19. // Defines
  20. //==============================================================================
  21.  
  22. #define MISSION_NAME "Botanical World"
  23. #define Health Float:0x7F800000
  24. #define MAX_MAP_OBJECTS 211
  25. #define CLASS_POSTION -1357.6470,3904.8469,11.5787
  26. #define CLASS_CAMERA -1357.7566,3895.3135,11.5787
  27. #define CLASS_FACING_AGNLE 178.8214
  28. #define Z_LIMIT 2
  29. #define START_TIME 20
  30.  
  31. //==============================================================================
  32. // Per mission functions
  33. //==============================================================================
  34.  
  35. enum cp_enum
  36. {
  37. Float:cp_x,
  38. Float:cp_y,
  39. Float:cp_z,
  40. cp_type,
  41. Float:cp_size
  42. };
  43.  
  44. new const cp[][cp_enum] =
  45. {
  46. {-1552.5852,3405.2634,45.8590,0,10.0},
  47. {-1550.9156,3431.2847,66.0474,0,10.0},
  48. {-1472.0715,3477.5735,66.0474,0,10.0},
  49. {-1404.1561,3548.4412,17.0246,0,10.0},
  50. {-1371.9373,3675.0789,16.3827,0,10.0},
  51. {-1365.6281,3765.7109,10.8834,0,10.0},
  52. {-1356.7498,3817.5774,11.4913,0,10.0},
  53. {-1356.6555,3876.7078,12.5449,0,10.0},
  54. {-1358.9677,3969.1272,12.6524,0,10.0},
  55. {-1346.5157,4102.2666,13.1534,0,10.0},
  56. {-1385.7917,4216.6299,2.0918,0,10.0},
  57. {-1477.0763,4218.0093,2.0918,1,10.0}
  58. };
  59.  
  60. enum ped_enum
  61. {
  62. TeamID,
  63. Skin,
  64. Float:SpawnX,
  65. Float:SpawnY,
  66. Float:SpawnZ,
  67. Float:SpawnAngle,
  68. SpawnInterior,
  69. VirtualWorld,
  70. Weapon1,
  71. Ammo1,
  72. Weapon2,
  73. Ammo2,
  74. Weapon3,
  75. Ammo3,
  76. };
  77.  
  78. new PedInfo[][ped_enum] = {
  79.  
  80. {TEAM_DEFEND,0,-1553.1431,3381.9172,37.3405,357.2542,0,0,0,0,0,0,0,0}
  81. };
  82.  
  83. #if MAX_MAP_OBJECTS != 0
  84. new Object[MAX_MAP_OBJECTS];
  85.  
  86. CreateMap()
  87. {
  88. Object[0] = CreateObject(6037,-1578.9027100,3371.1074200,30.9810900,0.0000000,0.0000000,-270.1207900); //
  89. Object[1] = CreateObject(3565,-1545.1162100,3378.9772900,37.6885600,0.0000000,0.0000000,-90.0600100); //
  90. Object[2] = CreateObject(3565,-1545.0990000,3387.0075700,37.6885600,0.0000000,0.0000000,-90.0600100); //
  91. Object[3] = CreateObject(3565,-1550.3330100,3376.1801800,37.6886000,0.0000000,0.0000000,0.0000000); //
  92. Object[4] = CreateObject(3565,-1558.3508300,3376.1787100,37.6886000,0.0000000,0.0000000,0.0000000); //
  93. Object[5] = CreateObject(3565,-1563.6579600,3378.8691400,37.6885600,0.0000000,0.0000000,-90.0600100); //
  94. Object[6] = CreateObject(3565,-1563.6632100,3386.9331100,37.6885600,0.0000000,0.0000000,-90.0600100); //
  95. Object[7] = CreateObject(3572,-1553.3499800,3392.6333000,36.9472300,0.0000000,0.0000000,0.0000000); //
  96. Object[8] = CreateObject(3572,-1553.3096900,3395.9211400,38.0983000,0.0000000,0.0000000,0.0000000); //
  97. Object[9] = CreateObject(3572,-1553.3193400,3398.4716800,39.9528400,0.0000000,0.0000000,0.0000000); //
  98. Object[10] = CreateObject(3572,-1553.2988300,3401.0231900,41.7496100,0.0000000,0.0000000,0.0000000); //
  99. Object[11] = CreateObject(3572,-1553.2558600,3403.6235400,43.6587200,0.0000000,0.0000000,0.0000000); //
  100. Object[12] = CreateObject(3565,-1545.2453600,3392.5864300,37.6885600,0.0000000,0.0000000,0.0000100); //
  101. Object[13] = CreateObject(3565,-1561.4475100,3392.5964400,37.6885600,0.0000000,0.0000000,0.0000100); //
  102. Object[14] = CreateObject(3279,-1550.8328900,3421.8161600,44.5022700,0.0000000,0.0000000,0.0000000); //
  103. Object[15] = CreateObject(9958,-1499.5684800,3397.5832500,6.8590700,0.0000000,0.0000000,0.0000000); //
  104. Object[16] = CreateObject(19454,-1550.7978500,3426.6965300,62.5724500,30.0000000,90.0000000,0.0000000); //
  105. Object[17] = CreateObject(10779,-1516.4691200,3460.2334000,68.6177000,0.0000000,0.0000000,-88.9800000); //
  106. Object[18] = CreateObject(672,-1493.5064700,3458.6916500,59.2169600,0.0000000,0.0000000,0.0000000); //
  107. Object[19] = CreateObject(746,-1489.8713400,3446.6726100,65.3703900,0.0000000,0.0000000,0.0000000); //
  108. Object[20] = CreateObject(672,-1484.6148700,3453.4914600,59.2169600,0.0000000,0.0000000,0.0000000); //
  109. Object[21] = CreateObject(746,-1498.0074500,3448.9511700,65.2498700,0.0000000,0.0000000,0.0000000); //
  110. Object[22] = CreateObject(746,-1487.1667500,3459.7788100,65.0260200,0.0000000,0.0000000,0.0000000); //
  111. Object[23] = CreateObject(672,-1503.2657500,3469.7270500,59.2169600,0.0000000,0.0000000,0.0000000); //
  112. Object[24] = CreateObject(672,-1502.5897200,3478.3420400,59.2169600,0.0000000,0.0000000,0.0000000); //
  113. Object[25] = CreateObject(672,-1503.6514900,3486.2736800,59.2169600,0.0000000,0.0000000,0.0000000); //
  114. Object[26] = CreateObject(19551,-1422.6586900,3487.6667500,15.3409800,0.0000000,0.0000000,0.0000000); //
  115. Object[27] = CreateObject(615,-1422.3154300,3455.6159700,15.3105900,0.0000000,0.0000000,0.0000000); //
  116. Object[28] = CreateObject(655,-1381.8398400,3487.7517100,15.2972700,0.0000000,0.0000000,0.0000000); //
  117. Object[29] = CreateObject(745,-1415.6881100,3484.3918500,14.9161700,0.0000000,0.0000000,0.0000000); //
  118. Object[30] = CreateObject(746,-1398.9942600,3466.2849100,15.3060600,0.0000000,0.0000000,0.0000000); //
  119. Object[31] = CreateObject(615,-1438.0452900,3476.2585400,9.4326300,0.0000000,0.0000000,0.0000000); //
  120. Object[32] = CreateObject(615,-1422.9094200,3496.1774900,9.4326300,0.0000000,0.0000000,0.0000000); //
  121. Object[33] = CreateObject(11088,-1388.0123300,3584.1345200,21.2742000,0.0000000,0.0000000,-360.0600600); //
  122. Object[34] = CreateObject(3115,-1546.9884000,3414.1389200,44.5225900,0.0000000,0.0000000,0.0000000); //
  123. Object[35] = CreateObject(3271,-1383.0369900,3619.0341800,15.6304200,0.0000000,0.0000000,0.0000000); //
  124. Object[36] = CreateObject(3271,-1381.5444300,3649.0905800,15.6304200,0.0000000,0.0000000,81.6600000); //
  125. Object[37] = CreateObject(3271,-1377.0634800,3665.7387700,15.6304200,0.0000000,0.0000000,81.6600000); //
  126. Object[38] = CreateObject(11487,-1364.8439900,3704.6201200,-2.8048000,0.0000000,0.0000000,22.4400000); //
  127. Object[39] = CreateObject(3484,-1366.4355500,3733.1560100,14.6561000,0.0000000,0.0000000,-360.0000300); //
  128. Object[40] = CreateObject(3600,-1356.3906300,3758.8122600,2.3252600,0.0000000,0.0000000,0.0000000); //
  129. Object[41] = CreateObject(3600,-1370.2330300,3772.2077600,2.3252600,0.0000000,0.0000000,0.0000000); //
  130. Object[42] = CreateObject(3600,-1356.4074700,3786.1320800,2.3252600,0.0000000,0.0000000,0.0000000); //
  131. Object[43] = CreateObject(5126,-1356.5883800,3807.1711400,9.4790400,0.0000000,0.0000000,89.9999800); //
  132. Object[44] = CreateObject(5126,-1356.5897200,3849.8913600,9.4790400,0.0000000,0.0000000,89.9999800); //
  133. Object[45] = CreateObject(878,-1347.1389200,3897.6870100,13.3531700,0.0000000,0.0000000,0.0000000); //
  134. Object[46] = CreateObject(877,-1368.8087200,3897.6989700,13.3690400,0.0000000,0.0000000,0.0000000); //
  135. Object[47] = CreateObject(3532,-1369.3978300,3885.7202100,12.1290000,0.0000000,0.0000000,0.0000000); //
  136. Object[48] = CreateObject(3532,-1369.8602300,3881.8100600,12.2225900,0.0000000,0.0000000,0.0000000); //
  137. Object[49] = CreateObject(3532,-1369.5258800,3889.9379900,12.1290000,0.0000000,0.0000000,0.0000000); //
  138. Object[50] = CreateObject(3532,-1370.0971700,3894.5473600,12.1290000,0.0000000,0.0000000,0.0000000); //
  139. Object[51] = CreateObject(3532,-1370.2746600,3900.7377900,12.1290000,0.0000000,0.0000000,0.0000000); //
  140. Object[52] = CreateObject(3532,-1369.4816900,3905.0263700,12.1290000,0.0000000,0.0000000,0.0000000); //
  141. Object[53] = CreateObject(3532,-1369.8867200,3909.4863300,12.1290000,0.0000000,0.0000000,0.0000000); //
  142. Object[54] = CreateObject(3532,-1370.1842000,3914.1936000,12.1290000,0.0000000,0.0000000,0.0000000); //
  143. Object[55] = CreateObject(3532,-1370.2055700,3919.1774900,12.1290200,0.0000000,0.0000000,0.0000000); //
  144. Object[56] = CreateObject(3439,-1343.8493700,3881.9091800,15.9380500,0.0000000,0.0000000,0.0000000); //
  145. Object[57] = CreateObject(3439,-1368.6096200,3885.2553700,15.6479600,0.0000000,0.0000000,0.0000000); //
  146. Object[58] = CreateObject(644,-1362.6635700,3904.0634800,11.8228200,0.0000000,0.0000000,0.0000000); //
  147. Object[59] = CreateObject(645,-1343.2465800,3915.8359400,11.0576000,0.0000000,0.0000000,0.0000000); //
  148. Object[60] = CreateObject(11698,-1357.3580300,3926.2666000,11.0548600,0.0000000,0.0000000,0.0000000); //
  149. Object[61] = CreateObject(11698,-1357.3620600,3928.9953600,11.0548600,0.0000000,0.0000000,0.0000000); //
  150. Object[62] = CreateObject(3660,-1484.3629200,3539.9770500,18.0202200,0.0000000,0.0000000,-90.0600200); //
  151. Object[63] = CreateObject(3660,-1484.4188200,3520.9741200,18.0202200,0.0000000,0.0000000,-90.0600200); //
  152. Object[64] = CreateObject(3660,-1484.4381100,3501.8659700,18.0202200,0.0000000,0.0000000,-90.0600200); //
  153. Object[65] = CreateObject(3660,-1484.4763200,3482.2937000,18.0202200,0.0000000,0.0000000,-90.0600200); //
  154. Object[66] = CreateObject(3660,-1484.4906000,3462.9284700,18.0202200,0.0000000,0.0000000,-90.0600200); //
  155. Object[67] = CreateObject(3660,-1484.4293200,3443.4423800,18.0202200,0.0000000,0.0000000,-90.0600200); //
  156. Object[68] = CreateObject(3660,-1484.2474400,3435.0778800,18.0202200,0.0000000,0.0000000,-90.0600200); //
  157. Object[69] = CreateObject(3660,-1473.8298300,3425.9636200,18.0202200,0.0000000,0.0000000,-180.3601100); //
  158. Object[70] = CreateObject(3660,-1454.2379200,3425.8056600,18.0202200,0.0000000,0.0000000,-180.3601100); //
  159. Object[71] = CreateObject(3660,-1434.7576900,3425.6831100,18.0202200,0.0000000,0.0000000,-180.3601100); //
  160. Object[72] = CreateObject(3660,-1415.2249800,3425.5891100,18.0202200,0.0000000,0.0000000,-180.3601100); //
  161. Object[73] = CreateObject(3660,-1395.6385500,3425.4558100,18.0202200,0.0000000,0.0000000,-180.3601100); //
  162. Object[74] = CreateObject(3660,-1376.0361300,3425.2946800,18.0202200,0.0000000,0.0000000,-180.3601100); //
  163. Object[75] = CreateObject(3660,-1370.0047600,3425.6081500,18.0202200,0.0000000,0.0000000,-180.3601100); //
  164. Object[76] = CreateObject(3660,-1361.3767100,3436.5437000,18.0202200,0.0000000,0.0000000,-270.1800500); //
  165. Object[77] = CreateObject(3660,-1361.3522900,3455.8488800,18.0202200,0.0000000,0.0000000,-270.1800500); //
  166. Object[78] = CreateObject(3660,-1361.3236100,3475.0483400,18.0202200,0.0000000,0.0000000,-270.1800500); //
  167. Object[79] = CreateObject(3660,-1361.2550000,3494.5446800,18.0202200,0.0000000,0.0000000,-270.1800500); //
  168. Object[80] = CreateObject(3660,-1361.1884800,3513.9357900,18.0202200,0.0000000,0.0000000,-270.1800500); //
  169. Object[81] = CreateObject(3660,-1361.1580800,3533.5127000,18.0202200,0.0000000,0.0000000,-270.1800500); //
  170. Object[82] = CreateObject(3660,-1361.1427000,3542.6237800,18.0202200,0.0000000,0.0000000,-270.1800500); //
  171. Object[83] = CreateObject(3660,-1473.8734100,3548.7790500,18.0202200,0.0000000,0.0000000,-180.3601100); //
  172. Object[84] = CreateObject(3660,-1454.3701200,3548.6577100,18.0202200,0.0000000,0.0000000,-180.3601100); //
  173. Object[85] = CreateObject(3660,-1434.9150400,3548.5690900,18.0202200,0.0000000,0.0000000,-180.3601100); //
  174. Object[86] = CreateObject(3660,-1422.5031700,3548.5166000,18.0202200,0.0000000,0.0000000,-180.3601100); //
  175. Object[87] = CreateObject(615,-1411.9273700,3512.4333500,1.2737300,0.0000000,0.0000000,0.0000000); //
  176. Object[88] = CreateObject(615,-1402.9354200,3509.7168000,-0.3774800,0.0000000,0.0000000,0.0000000); //
  177. Object[89] = CreateObject(615,-1392.5671400,3508.1665000,1.2737300,0.0000000,0.0000000,0.0000000); //
  178. Object[90] = CreateObject(3532,-1379.7934600,3451.7927200,15.8232900,0.0000000,0.0000000,0.0000000); //
  179. Object[91] = CreateObject(3532,-1379.9138200,3455.5114700,15.8217900,0.0000000,0.0000000,0.0000000); //
  180. Object[92] = CreateObject(3532,-1378.4881600,3452.0749500,15.8232900,0.0000000,0.0000000,0.0000000); //
  181. Object[93] = CreateObject(3532,-1378.6911600,3455.2409700,15.8232900,0.0000000,0.0000000,0.0000000); //
  182. Object[94] = CreateObject(3532,-1377.1158400,3451.9118700,15.8232900,0.0000000,0.0000000,0.0000000); //
  183. Object[95] = CreateObject(3532,-1377.1435500,3455.5439500,15.8232900,0.0000000,0.0000000,0.0000000); //
  184. Object[96] = CreateObject(5847,-1401.1711400,3480.6689500,15.2114900,0.0000000,0.0000000,0.0000000); //
  185. Object[97] = CreateObject(615,-1427.6948200,3441.5690900,4.8191500,0.0000000,0.0000000,0.0000000); //
  186. Object[98] = CreateObject(615,-1418.4991500,3440.7231400,4.8191500,0.0000000,0.0000000,0.0000000); //
  187. Object[99] = CreateObject(615,-1437.8494900,3441.0459000,4.8191500,0.0000000,0.0000000,0.0000000); //
  188. Object[100] = CreateObject(615,-1448.5539600,3442.2036100,4.8191500,0.0000000,0.0000000,0.0000000); //
  189. Object[101] = CreateObject(615,-1440.8418000,3452.8442400,4.8191500,0.0000000,0.0000000,0.0000000); //
  190. Object[102] = CreateObject(615,-1430.2742900,3450.1447800,4.8191500,0.0000000,0.0000000,0.0000000); //
  191. Object[103] = CreateObject(615,-1419.1984900,3450.4826700,4.8191500,0.0000000,0.0000000,0.0000000); //
  192. Object[104] = CreateObject(615,-1453.7215600,3456.5908200,4.8191500,0.0000000,0.0000000,0.0000000); //
  193. Object[105] = CreateObject(653,-1471.6855500,3500.7956500,15.2595800,0.0000000,0.0000000,0.0000000); //
  194. Object[106] = CreateObject(653,-1472.5120800,3497.4714400,15.2595800,0.0000000,0.0000000,0.0000000); //
  195. Object[107] = CreateObject(653,-1473.0546900,3493.6752900,15.2595800,0.0000000,0.0000000,0.0000000); //
  196. Object[108] = CreateObject(615,-1444.4332300,3513.1552700,15.3105900,0.0000000,0.0000000,0.0000000); //
  197. Object[109] = CreateObject(615,-1458.3358200,3511.5700700,15.3105900,0.0000000,0.0000000,0.0000000); //
  198. Object[110] = CreateObject(615,-1469.6594200,3503.6616200,15.3105900,0.0000000,0.0000000,0.0000000); //
  199. Object[111] = CreateObject(615,-1387.6518600,3538.4580100,1.2737300,0.0000000,0.0000000,0.0000000); //
  200. Object[112] = CreateObject(615,-1406.2907700,3530.8952600,1.2737300,0.0000000,0.0000000,0.0000000); //
  201. Object[113] = CreateObject(11496,-1356.5440700,3931.1801800,11.4347700,0.0000000,0.0000000,0.0000000); //
  202. Object[114] = CreateObject(1608,-1341.1224400,3944.5627400,-0.4158000,0.0000000,0.0000000,0.0000000); //
  203. Object[115] = CreateObject(1608,-1367.9368900,3943.5473600,-0.5788000,0.0000000,0.0000000,-99.1799900); //
  204. Object[116] = CreateObject(1608,-1348.7891800,3955.5363800,-0.4158000,0.0000000,0.0000000,-152.6400100); //
  205. Object[117] = CreateObject(1608,-1366.3197000,3953.1269500,-0.4158000,0.0000000,0.0000000,57.6000000); //
  206. Object[118] = CreateObject(4831,-1410.4218800,4126.1367200,5.1152500,0.0000000,0.0000000,-0.0600000); //
  207. Object[119] = CreateObject(11496,-1361.4814500,3931.1767600,11.4524000,0.0000000,0.0000000,-180.0598900); //
  208. Object[120] = CreateObject(615,-1392.7999300,3555.2812500,1.2737300,0.0000000,0.0000000,0.0000000); //
  209. Object[121] = CreateObject(615,-1403.4460400,3558.0402800,1.2737300,0.0000000,0.0000000,0.0000000); //
  210. Object[122] = CreateObject(615,-1376.0347900,3569.5957000,1.2737300,0.0000000,0.0000000,0.0000000); //
  211. Object[123] = CreateObject(615,-1381.8502200,3579.3198200,1.2737300,0.0000000,0.0000000,0.0000000); //
  212. Object[124] = CreateObject(615,-1390.1398900,3587.8090800,1.2737300,0.0000000,0.0000000,0.0000000); //
  213. Object[125] = CreateObject(1597,-1406.7919900,4226.6850600,4.0875900,0.0000000,0.0000000,-90.0000200); //
  214. Object[126] = CreateObject(1597,-1416.0894800,4209.5786100,4.0875900,0.0000000,0.0000000,-90.0000200); //
  215. Object[127] = CreateObject(1597,-1431.5230700,4226.4599600,4.0875900,0.0000000,0.0000000,-90.0000200); //
  216. Object[128] = CreateObject(1597,-1443.3491200,4209.6962900,4.0875900,0.0000000,0.0000000,-90.0000200); //
  217. Object[129] = CreateObject(1597,-1461.1342800,4226.5195300,4.0875900,0.0000000,0.0000000,-90.0000200); //
  218. Object[130] = CreateObject(1597,-1474.1994600,4209.9296900,4.0875900,0.0000000,0.0000000,-90.0000200); //
  219. Object[131] = CreateObject(1597,-1491.5709200,4226.3022500,4.0875900,0.0000000,0.0000000,-90.0000200); //
  220. Object[132] = CreateObject(1597,-1504.8591300,4209.8266600,4.0875900,0.0000000,0.0000000,-97.9200600); //
  221. Object[133] = CreateObject(1597,-1394.1652800,4209.7089800,4.0875900,0.0000000,0.0000000,-90.0000200); //
  222. Object[134] = CreateObject(1597,-1385.6022900,4226.4726600,4.0875900,0.0000000,0.0000000,-90.0000200); //
  223. Object[135] = CreateObject(874,-1505.0389400,4217.6001000,1.9258000,0.0000000,0.0000000,0.0000000); //
  224. Object[136] = CreateObject(6046,-1444.5959500,4228.8906300,2.1328400,0.0000000,0.0000000,90.0600100); //
  225. Object[137] = CreateObject(6046,-1444.6546600,4207.7309600,2.1328400,0.0000000,0.0000000,90.0600100); //
  226. Object[138] = CreateObject(9153,-1346.6170700,4083.0397900,13.1275200,0.0000000,0.0000000,0.0000000); //
  227. Object[139] = CreateObject(9153,-1346.3308100,4091.0522500,13.1275200,0.0000000,0.0000000,5.3400000); //
  228. Object[140] = CreateObject(9153,-1345.1760300,4117.6044900,13.1275200,0.0000000,0.0000000,0.0000000); //
  229. Object[141] = CreateObject(9153,-1346.0026900,4126.8491200,13.1275200,0.0000000,0.0000000,0.0000000); //
  230. Object[142] = CreateObject(9153,-1345.1148700,4151.5712900,13.1275200,0.0000000,0.0000000,0.0000000); //
  231. Object[143] = CreateObject(9153,-1345.6447800,4159.9345700,13.1275200,0.0000000,0.0000000,0.0000000); //
  232. Object[144] = CreateObject(5644,-1356.1527100,3889.2111800,23.2637000,90.0000000,0.0000000,0.0000000); //
  233. Object[145] = CreateObject(5644,-1356.1267100,3914.0173300,23.2637200,90.0000000,0.0000000,0.0000000); //
  234. Object[146] = CreateObject(874,-1495.4616700,4218.0849600,1.9258000,0.0000000,0.0000000,0.0000000); //
  235. Object[147] = CreateObject(874,-1482.1245100,4218.4316400,1.9258000,0.0000000,0.0000000,0.0000000); //
  236. Object[148] = CreateObject(874,-1471.9084500,4218.3413100,1.9258000,0.0000000,0.0000000,0.0000000); //
  237. Object[149] = CreateObject(874,-1482.1245100,4218.4316400,1.9258000,0.0000000,0.0000000,0.0000000); //
  238. Object[150] = CreateObject(874,-1461.3457000,4217.4228500,1.9258000,0.0000000,0.0000000,0.0000000); //
  239. Object[151] = CreateObject(874,-1450.6683300,4217.0034200,1.9258000,0.0000000,0.0000000,0.0000000); //
  240. Object[152] = CreateObject(874,-1441.5926500,4217.7275400,1.9258000,0.0000000,0.0000000,0.0000000); //
  241. Object[153] = CreateObject(874,-1431.7117900,4217.2104500,1.9258000,0.0000000,0.0000000,0.0000000); //
  242. Object[154] = CreateObject(874,-1422.8273900,4218.9970700,1.9258000,0.0000000,0.0000000,0.0000000); //
  243. Object[155] = CreateObject(874,-1412.6637000,4218.2177700,1.9258000,0.0000000,0.0000000,0.0000000); //
  244. Object[156] = CreateObject(874,-1403.5578600,4218.6191400,1.9258000,0.0000000,0.0000000,0.0000000); //
  245. Object[157] = CreateObject(874,-1393.8363000,4218.0883800,1.9258000,0.0000000,0.0000000,0.0000000); //
  246. Object[158] = CreateObject(874,-1403.5578600,4218.6191400,1.9258000,0.0000000,0.0000000,0.0000000); //
  247. Object[159] = CreateObject(874,-1384.4337200,4218.2749000,1.9258000,0.0000000,0.0000000,0.0000000); //
  248. Object[160] = CreateObject(874,-1375.2003200,4218.3969700,1.9258000,0.0000000,0.0000000,0.0000000); //
  249. Object[161] = CreateObject(874,-1366.6366000,4218.4951200,1.9258000,0.0000000,0.0000000,0.0000000); //
  250. Object[162] = CreateObject(874,-1358.1018100,4214.9409200,1.9258000,0.0000000,0.0000000,0.0000000); //
  251. Object[163] = CreateObject(11496,-1361.5144000,3947.1870100,11.4524000,0.0000000,0.0000000,-180.0598900); //
  252. Object[164] = CreateObject(11496,-1354.4742400,3947.1699200,11.4524000,0.0000000,0.0000000,-180.0598900); //
  253. Object[165] = CreateObject(11496,-1361.4978000,3963.1814000,11.4524000,0.0000000,0.0000000,-180.0598900); //
  254. Object[166] = CreateObject(11496,-1354.4560500,3963.1445300,11.4524000,0.0000000,0.0000000,-180.0598900); //
  255. Object[167] = CreateObject(3532,-1369.9616700,3879.0317400,12.2111900,0.0000000,0.0000000,0.0000000); //
  256. Object[168] = CreateObject(2933,-1356.7017800,3922.8732900,13.1781600,0.0000000,0.0000000,0.0000000); //
  257. Object[169] = CreateObject(2933,-1365.9387200,3927.2014200,13.3226800,0.0000000,0.0000000,90.0000000); //
  258. Object[170] = CreateObject(2933,-1361.6556400,3931.5974100,13.3135100,0.0000000,0.0000000,0.0000000); //
  259. Object[171] = CreateObject(2933,-1352.3231200,3935.4987800,13.3001300,0.0000000,0.0000000,90.0000000); //
  260. Object[172] = CreateObject(2933,-1356.8371600,3939.6835900,13.3387100,0.0000000,0.0000000,0.0000000); //
  261. Object[173] = CreateObject(2933,-1365.8577900,3943.6921400,13.3231500,0.0000000,0.0000000,90.0000000); //
  262. Object[174] = CreateObject(2933,-1361.5043900,3948.0366200,13.3204700,0.0000000,0.0000000,0.0000000); //
  263. Object[175] = CreateObject(2933,-1352.2077600,3952.0478500,13.3270100,0.0000000,0.0000000,90.0000000); //
  264. Object[176] = CreateObject(2933,-1356.5892300,3956.3386200,13.3217000,0.0000000,0.0000000,0.0000000); //
  265. Object[177] = CreateObject(2933,-1365.9209000,3960.8408200,13.2881200,0.0000000,0.0000000,90.0000000); //
  266. Object[178] = CreateObject(2933,-1361.5830100,3965.2204600,13.3304600,0.0000000,0.0000000,0.0000000); //
  267. Object[179] = CreateObject(750,-1360.9493400,3923.2360800,11.4956000,0.0000000,0.0000000,0.0000000); //
  268. Object[180] = CreateObject(751,-1352.5692100,3938.4484900,11.4956000,0.0000000,0.0000000,0.0000000); //
  269. Object[181] = CreateObject(749,-1364.7110600,3947.0058600,11.4956000,0.0000000,0.0000000,0.0000000); //
  270. Object[182] = CreateObject(748,-1353.1301300,3955.1403800,11.4956000,0.0000000,0.0000000,0.0000000); //
  271. Object[183] = CreateObject(747,-1363.9439700,3963.9448200,11.4956000,0.0000000,0.0000000,0.0000000); //
  272. Object[184] = CreateObject(3489,-1358.6706500,3997.8029800,5.2231000,0.0000000,0.0000000,0.0000000); //
  273. Object[185] = CreateObject(3268,-1359.3624300,3987.0354000,7.4503800,0.0000000,0.0000000,0.0000000); //
  274. Object[186] = CreateObject(16079,-1349.8005400,4018.1186500,16.3892000,0.0000000,0.0000000,-110.8200000); //
  275. Object[187] = CreateObject(16079,-1351.0671400,4018.1125500,16.3892000,0.0000000,0.0000000,-110.8200000); //
  276. Object[188] = CreateObject(16079,-1352.3588900,4018.1364700,16.3892000,0.0000000,0.0000000,-110.8200000); //
  277. Object[189] = CreateObject(16079,-1353.6431900,4018.1562500,16.3892000,0.0000000,0.0000000,-110.8200000); //
  278. Object[190] = CreateObject(16079,-1354.9049100,4018.1865200,16.3892000,0.0000000,0.0000000,-110.8200000); //
  279. Object[191] = CreateObject(16079,-1356.1306200,4018.2204600,16.3892000,0.0000000,0.0000000,-110.8200000); //
  280. Object[192] = CreateObject(3270,-1373.6871300,4007.8613300,13.0013000,0.0000000,0.0000000,-82.4399800); //
  281. Object[193] = CreateObject(3269,-1372.7984600,4030.6528300,13.7702200,0.0000000,0.0000000,-52.9200400); //
  282. Object[194] = CreateObject(672,-1352.8981900,4028.2675800,10.8564700,0.0000000,0.0000000,0.0000000); //
  283. Object[195] = CreateObject(672,-1353.0488300,4021.7297400,8.6231100,0.0000000,0.0000000,0.0000000); //
  284. Object[196] = CreateObject(672,-1353.0120800,4016.0915500,6.9999800,0.0000000,0.0000000,0.0000000); //
  285. Object[197] = CreateObject(672,-1352.8359400,4008.5329600,5.1328600,0.0000000,0.0000000,0.0000000); //
  286. Object[198] = CreateObject(672,-1353.0867900,4035.4118700,12.7210600,0.0000000,0.0000000,0.0000000); //
  287. Object[199] = CreateObject(2900,-1357.8192100,3931.0087900,11.6263500,0.0000000,0.0000000,0.0000000); //
  288. Object[200] = CreateObject(2900,-1357.8139600,3930.0131800,11.6263500,0.0000000,0.0000000,0.0000000); //
  289. Object[201] = CreateObject(2900,-1357.8139600,3930.0131800,12.8057900,0.0000000,0.0000000,0.0000000); //
  290. Object[202] = CreateObject(2900,-1357.8190900,3931.0061000,12.8057900,0.0000000,0.0000000,0.0000000); //
  291. Object[203] = CreateObject(967,-1360.4776600,3938.8859900,11.6294600,0.0000000,0.0000000,0.0000000); //
  292. Object[204] = CreateObject(2991,-1359.1179200,3946.9602100,12.2428300,0.0000000,0.0000000,0.0000000); //
  293. Object[205] = CreateObject(2991,-1359.1179200,3946.9602100,13.3775000,0.0000000,0.0000000,0.0000000); //
  294. Object[206] = CreateObject(2991,-1359.1179200,3946.9602100,14.5412600,0.0000000,0.0000000,0.0000000); //
  295. Object[207] = CreateObject(3384,-1360.3664600,3955.5546900,13.0714800,0.0000000,0.0000000,90.0000000); //
  296. Object[208] = CreateObject(3384,-1360.3891600,3954.6596700,13.0714800,0.0000000,0.0000000,90.0000000); //
  297. Object[209] = CreateObject(3384,-1360.3706100,3953.7470700,13.0714800,0.0000000,0.0000000,90.0000000); //
  298. Object[210] = CreateObject(3798,-1358.2606200,3964.1647900,11.6624500,0.0000000,0.0000000,0.0000000); //
  299. }
  300. #endif
  301.  
  302.  
  303. //==============================================================================
  304. // Basic vars
  305. //==============================================================================
  306.  
  307. new bool:MissionStarted;
  308. new bool:ObjectiveStarted;
  309. new bool:MissionCancelled;
  310.  
  311. new GMTimer;
  312. new GMSec;
  313. new TotalPlayers;
  314. new CurrentRacePos;
  315. new MAX_CPs;
  316. new RaceMin,RaceSec,RaceMili;
  317. new randA;
  318.  
  319. native IsValidVehicle(vehicleid);
  320.  
  321. enum playersdata
  322. {
  323. UserName[MAX_PLAYER_NAME],
  324. rSec,
  325. rMin,
  326. rMili,
  327. CurrentCheckpoint,
  328. MissionFinished,
  329. PlayerClassID,
  330. PlayerCounted,
  331. rBestMin,
  332. rBestSec,
  333. rBestMili
  334. };
  335.  
  336. new PlayerMissionInfo[MAX_PLAYERS][playersdata];
  337.  
  338. //==============================================================================
  339. // Basic script
  340. //==============================================================================
  341.  
  342. main()
  343. {
  344. print("----------------------------------");
  345. print(" Mission: "MISSION_NAME" started.");
  346. print("----------------------------------\n");
  347. }
  348.  
  349. public OnGameModeInit()
  350. {
  351. MissionStarted= true;
  352.  
  353. #if MAX_MAP_OBJECTS != 0
  354. CreateMap();
  355. #endif
  356.  
  357. for(new i=0; i<sizeof(PedInfo); i++)
  358. {
  359. 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);
  360. }
  361.  
  362. if(CallRemoteFunction("GetCurrentMissionCJWalk","")) UsePlayerPedAnims();
  363.  
  364. GMTimer = SetTimer("GMClock",1000,true);
  365. MAX_CPs = sizeof(cp);
  366. randA=random(2);
  367. CallRemoteFunction("UpdateRaceRecordsFunc","dd",INVALID_PLAYER_ID,0);
  368. return 1;
  369. }
  370.  
  371. public OnGameModeExit()
  372. {
  373. #if MAX_MAP_OBJECTS != 0
  374. for(new i=0;i<MAX_MAP_OBJECTS;i++) DestroyObject(Object[i]);
  375. #endif
  376. KillTimer(GMTimer);
  377. return 1;
  378. }
  379.  
  380. FUNCTION GMClock()
  381. {
  382. GMSec++;
  383. switch(ObjectiveStarted)
  384. {
  385. case false:
  386. {
  387. switch(GMSec)
  388. {
  389. case 1:
  390. {
  391. new string[40];
  392. format(string,sizeof(string),"The parkour will start in %d seconds.",START_TIME);
  393. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1, string,0);
  394. }
  395. case START_TIME-4:
  396. {
  397. GameTextForAll("~r~~h~GET READY!",1000,3);
  398. PlaySoundForAll(1056);
  399. }
  400. case START_TIME-3:
  401. {
  402. GameTextForAll("~r~~h~~h~3",1000,3);
  403. PlaySoundForAll(1056);
  404. }
  405. case START_TIME-2:
  406. {
  407. GameTextForAll("~r~~h~~h~~h~2",1000,3);
  408. PlaySoundForAll(1056);
  409. }
  410. case START_TIME-1:
  411. {
  412. GameTextForAll("~y~1",1000,3);
  413. PlaySoundForAll(1056);
  414. }
  415. case START_TIME:
  416. {
  417. PlaySoundForAll(1057);
  418. CallRemoteFunction("StartMission","");
  419. GameTextForAll("~g~~h~~h~RUN!",1000,3);
  420. ObjectiveStarted= true;
  421. ToggleControllable(true);
  422. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" DAZZZ! The parkour has started. Good luck.");
  423. CallRemoteFunction("ShowInfoText", "iisi", -1, -1,"DAZZZ! The parkour has started. Good luck.",0);
  424. RaceMili=GetTickCount();
  425. }
  426. }
  427. }
  428. case true:
  429. {
  430. for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
  431. {
  432. if(IsPlayerConnected(i) && CallRemoteFunction("GetAliveState","i",i) && !PlayerMissionInfo[i][MissionFinished])
  433. {
  434. GetPlayerPosition(i);
  435. new Float:x,Float:y,Float:z;
  436. GetPlayerPos(i,x,y,z);
  437. if(z <= Z_LIMIT)
  438. {
  439. SpawnPlayer(i);
  440. CallRemoteFunction("UpdateAliveState","ii",i,0);
  441. CallRemoteFunction("UpdateLastCheckpoint","dfff",i,-1.0,-1.0,-1.0);
  442. }
  443. }
  444. }
  445. RaceSec++;
  446. if(RaceSec == 60)
  447. {
  448. RaceSec=0;
  449. RaceMin++;
  450. }
  451.  
  452. }
  453. }
  454. }
  455.  
  456. public OnPlayerDisconnect(playerid,reason)
  457. {
  458. if(!PlayerMissionInfo[playerid][MissionFinished])
  459. {
  460. if(PlayerMissionInfo[playerid][PlayerCounted])
  461. {
  462. TotalPlayers--;
  463. PlayerMissionInfo[playerid][PlayerCounted]= false;
  464. }
  465. }
  466. else PlayerMissionInfo[playerid][MissionFinished] = false;
  467.  
  468. RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
  469. DisablePlayerRaceCheckpoint(playerid);
  470. CallRemoteFunction("PlayerRaceRecords","dd",playerid,1);
  471. return 1;
  472. }
  473.  
  474. public OnPlayerRequestClass(playerid, classid)
  475. {
  476. SetPlayerPos(playerid,CLASS_POSTION);
  477. SetPlayerCameraPos(playerid,CLASS_CAMERA);
  478. SetPlayerCameraLookAt(playerid,CLASS_POSTION);
  479. SetPlayerFacingAngle(playerid,CLASS_FACING_AGNLE);
  480.  
  481. CallRemoteFunction("ShowClassSelection","ddsddd",playerid, 2,"Parkour Artist", PedInfo[classid][Weapon1], PedInfo[classid][Weapon2], PedInfo[classid][Weapon3]);
  482. SetPlayerColor(playerid,COLOR_SERVER);
  483. PlayerMissionInfo[playerid][PlayerClassID]=classid;
  484. return 1;
  485. }
  486.  
  487. public OnPlayerRequestSpawn(playerid)
  488. {
  489. CallRemoteFunction("UpdateRaceRecordsFunc","dd",INVALID_PLAYER_ID,0);
  490. return 1;
  491. }
  492.  
  493. public OnPlayerSpawn(playerid)
  494. {
  495. new string[124];
  496. CallRemoteFunction("UpdateAliveState","ii",playerid,1);
  497. SetPlayerHealth(playerid,Health);
  498.  
  499. if(PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Skin] == 0)
  500. {
  501. back:
  502. new skin=random(312);
  503. if(skin == 74 || skin < 1) goto back;
  504. SetPlayerSkin(playerid,skin);
  505. }
  506.  
  507. if(CallRemoteFunction("GetSpectateStatus","d",playerid)) return CallRemoteFunction("SpecOffAdmin","d",playerid);
  508. SetPlayerColor(playerid,(randA == TEAM_ATTACK) ? COLOR_TEAM_ATTACK : COLOR_TEAM_DEFEND);
  509. SetPlayerTeam(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][TeamID]);
  510. switch(ObjectiveStarted)
  511. {
  512. case false:
  513. {
  514. TogglePlayerControllable(playerid,false);
  515. format(string,sizeof(string),"The parkour will start in %d seconds. Get ready.",(GMSec-START_TIME)*-1);
  516. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,string,100);
  517. }
  518. case true:
  519. {
  520. TogglePlayerControllable(playerid,true);
  521. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,"HURRY UP! The parkour has already started.",2000);
  522. }
  523. }
  524. CallRemoteFunction("ShowInfoText", "iisi", playerid, -1,"Try to finish first!",2000);
  525. if(CallRemoteFunction("GetJailedStatus","d",playerid)) CallRemoteFunction("SetJailed","d",playerid);
  526. else
  527. {
  528. SetPlayerInterior(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnInterior]);
  529. SetPlayerPos(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnX]-(random(3)),PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnY],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnZ]+5);
  530. SetPlayerFacingAngle(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnAngle]);
  531. SetPlayerVirtualWorld(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][VirtualWorld]);
  532. SetCameraBehindPlayer(playerid);
  533. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon1],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo1]);
  534. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon2],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo2]);
  535. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon3],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo3]);
  536. if(!PlayerMissionInfo[playerid][MissionFinished])
  537. {
  538. PlayerMissionInfo[playerid][CurrentCheckpoint]= 0;
  539. SetPlayerVirtualWorld(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][VirtualWorld]);
  540. SetPlayerRaceCheckpoint(playerid,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_type],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_z],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z],10.0);
  541. SetPlayerMapIcon(playerid, MAP_ICON_NEXT_CP,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z], 0, 0xFF000033, MAPICON_LOCAL);
  542. }
  543. else
  544. {
  545. SetPlayerVirtualWorld(playerid,2);
  546. CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
  547. }
  548. if(!PlayerMissionInfo[playerid][PlayerCounted])
  549. {
  550. TotalPlayers++;
  551. PlayerMissionInfo[playerid][PlayerCounted]= true;
  552. }
  553. }
  554.  
  555. CallRemoteFunction("GetPlayerPersonalBest","d",playerid);
  556. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,4,GetPlayerPosition(playerid),TotalPlayers,RaceMin,PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][CurrentCheckpoint],MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],-1);
  557. CallRemoteFunction("PlayerRaceRecords","dd",playerid,2);
  558. return 1;
  559. }
  560.  
  561. public OnPlayerDeath(playerid,killerid,reason)
  562. {
  563. CallRemoteFunction("UpdateAliveState","ii",playerid,0);
  564. if(!PlayerMissionInfo[playerid][MissionFinished]) PlayerMissionInfo[playerid][CurrentCheckpoint]= 0;
  565. CallRemoteFunction("PlayerRaceRecords","dd",playerid,1);
  566. CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,-1.0,-1.0,-1.0);
  567. return 1;
  568. }
  569.  
  570. public OnPlayerEnterRaceCheckpoint(playerid)
  571. {
  572. if(!MissionStarted || !ObjectiveStarted) return 0;
  573. new string[124],type;
  574. PlayerPlaySound(playerid,1139,0,0,0);
  575. CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_z]);
  576. if(PlayerMissionInfo[playerid][CurrentCheckpoint] != MAX_CPs-1)
  577. {
  578. type=cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_type];
  579. }
  580. if(PlayerMissionInfo[playerid][CurrentCheckpoint] == MAX_CPs-2)
  581. {
  582. SetPlayerRaceCheckpoint(playerid,type,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z],0.0,0.0,0.0,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_size]);
  583. RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
  584. }
  585. else if(PlayerMissionInfo[playerid][CurrentCheckpoint] == MAX_CPs-1)
  586. {
  587. PlaySoundForAll(1058);
  588. PlayerMissionInfo[playerid][MissionFinished]= true;
  589. DisablePlayerRaceCheckpoint(playerid);
  590. RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
  591. new Pos=GetPlayerPosition(playerid);
  592. CurrentRacePos++;
  593. PlayerMissionInfo[playerid][rMin]=RaceMin;
  594. PlayerMissionInfo[playerid][rSec]=RaceSec;
  595. new Prize=floatround(20000/Pos, floatround_round)+(1000*TotalPlayers);
  596. PlayerMissionInfo[playerid][rMili]=(((GetTickCount()-RaceMili)-(1000*PlayerMissionInfo[playerid][rSec]))-((1000*60)*PlayerMissionInfo[playerid][rMin]));
  597. while(PlayerMissionInfo[playerid][rMili] >= 1000)
  598. {
  599. PlayerMissionInfo[playerid][rMili]-=1000;
  600. PlayerMissionInfo[playerid][rSec]++;
  601. if(PlayerMissionInfo[playerid][rSec] == 60)
  602. {
  603. PlayerMissionInfo[playerid][rSec]=0;
  604. PlayerMissionInfo[playerid][rMin]++;
  605. }
  606. }
  607. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,4,Pos,TotalPlayers,PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][CurrentCheckpoint]+1,MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],-1);
  608. CallRemoteFunction("GivePlayerCash","ii",playerid,Prize);
  609. if(Pos == 1)
  610. {
  611. CallRemoteFunction("PlayerMissionStats","dd",playerid,3);
  612. format(string,sizeof(string),""SERVER_KEY_MSG" %s (%d) has finished 1st in the parkour. Time Taken: %02d:%02d:%03d | Prize: $%d + Token.",PlayerMissionInfo[playerid][UserName],playerid,PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][rMili],Prize);
  613. CallRemoteFunction("GivePlayerToken","dd",playerid,1);
  614. CallRemoteFunction("CheckForBetWinners","d",playerid);
  615. }
  616. else format(string,sizeof(string),""SERVER_KEY_MSG" %s (%d) has finished %d%s in the parkour. Time Taken: %02d:%02d:%03d | Prize: $%d.",PlayerMissionInfo[playerid][UserName],playerid,Pos,GetEndStyle(Pos),PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][rMili],Prize);
  617. if(Pos == 2) CallRemoteFunction("PlayerMissionStats","dd",playerid,4);
  618. if(Pos == 3) CallRemoteFunction("PlayerMissionStats","dd",playerid,5);
  619. CallRemoteFunction("PlayerMissionStats","dd",playerid,0);
  620. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  621. new time = ((PlayerMissionInfo[playerid][rMin]*60000)+(PlayerMissionInfo[playerid][rSec]*1000)+(PlayerMissionInfo[playerid][rMili]));
  622. CallRemoteFunction("CheckRaceRecord","dd",playerid,time);
  623. SetPlayerVirtualWorld(playerid,2);
  624. SendClientMessageToAll(COLOR_SERVER,string);
  625. CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
  626. CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,-2.0,-2.0,-2.0);
  627. CallRemoteFunction("PlayerMissionStats","dd",playerid,11);
  628. }
  629. else if(PlayerMissionInfo[playerid][CurrentCheckpoint] < MAX_CPs-1)
  630. {
  631. SetPlayerRaceCheckpoint(playerid,type,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_z],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_size]);
  632. SetPlayerMapIcon(playerid, MAP_ICON_NEXT_CP,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_z], 0, 0xFF000033, MAPICON_LOCAL);
  633. }
  634. PlayerMissionInfo[playerid][CurrentCheckpoint]++;
  635. return 1;
  636. }
  637.  
  638.  
  639. FUNCTION EndTheMission()
  640. {
  641. if(!MissionStarted) return 1;
  642. MissionStarted= false;
  643. KillTimer(GMTimer);
  644. if(!MissionCancelled && ObjectiveStarted)
  645. {
  646. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The parkour has ended.");
  647. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The parkour has ended.",IRC_SERVER_COLOR);
  648. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The parkour has ended.",0);
  649. for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
  650. {
  651. if(IsPlayerConnected(i) && !PlayerMissionInfo[i][MissionFinished])
  652. {
  653. PlayerPlaySound(i,17004,0,0,0);
  654. GameTextForPlayer(i,"~R~MISSION FAILED~w~!",3000,3);
  655. DisablePlayerCheckpoint(i);
  656. CallRemoteFunction("PlayerMissionStats","dd",i,1);
  657. }
  658. }
  659. }
  660. else
  661. {
  662. PlaySoundForAll(1058);
  663. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The mission has been cancelled.");
  664. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The mission has been cancelled.",IRC_SERVER_COLOR);
  665. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The mission has been cancelled.",0);
  666. for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
  667. {
  668. if(IsPlayerConnected(i))
  669. {
  670. GameTextForPlayer(i,"~R~MISSION CANCELLED~w~!",3000,3);
  671. DisablePlayerCheckpoint(i);
  672. RemovePlayerMapIcon(i,MAP_ICON_NEXT_CP);
  673. }
  674. }
  675. }
  676. return 1;
  677. }
  678.  
  679. //==============================================================================
  680. // Mission functions
  681. //==============================================================================
  682.  
  683. GetPlayerPosition(playerid)
  684. {
  685. if(!IsPlayerConnected(playerid)) return 0;
  686. if(PlayerMissionInfo[playerid][MissionFinished]) return GetPlayerScore(playerid);
  687. new PlayerPositon=CurrentRacePos+1;
  688. new Float:PlayerDistance=GetPlayerDistanceFromPoint(playerid,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_z]);
  689. new Float:OtherPlayerDistance;
  690. for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
  691. {
  692. if(!IsPlayerConnected(i)) continue;
  693. if(!CallRemoteFunction("GetAliveState","i",i) || !ObjectiveStarted || PlayerMissionInfo[i][MissionFinished]) continue;
  694. if(PlayerMissionInfo[playerid][CurrentCheckpoint] < PlayerMissionInfo[i][CurrentCheckpoint])
  695. {
  696. PlayerPositon++;
  697. continue;
  698. }
  699. else if(PlayerMissionInfo[playerid][CurrentCheckpoint] == PlayerMissionInfo[i][CurrentCheckpoint])
  700. {
  701. OtherPlayerDistance=GetPlayerDistanceFromPoint(i,cp[PlayerMissionInfo[i][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[i][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[i][CurrentCheckpoint]][cp_z]);
  702. if(PlayerDistance > OtherPlayerDistance)
  703. {
  704. PlayerPositon++;
  705. continue;
  706. }
  707. }
  708. }
  709. SetPlayerScore(playerid,PlayerPositon);
  710. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,4,PlayerPositon,TotalPlayers,RaceMin,RaceSec,PlayerMissionInfo[playerid][CurrentCheckpoint],MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],-1);
  711. return PlayerPositon;
  712. }
  713.  
  714. GetEndStyle(pos)
  715. {
  716. new end[3];
  717. if(pos == 11 || pos == 12 || pos == 13) { end = "TH"; }
  718. else if(pos - (pos / 10) * 10 == 1) { end = "ST"; }
  719. else if(pos - (pos / 10) * 10 == 2) { end = "ND"; }
  720. else if(pos - (pos / 10) * 10 == 3) { end = "RD"; }
  721. else { end = "TH"; }
  722.  
  723. return end;
  724. }
  725.  
  726. PlaySoundForAll(sound)
  727. {
  728. for (new i=0,j=GetPlayerPoolSize(); i <=j ; i++)
  729. {
  730. if(IsPlayerConnected(i)) PlayerPlaySound(i,sound,0,0,0);
  731. }
  732. }
  733.  
  734.  
  735. ToggleControllable(control)
  736. {
  737. for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
  738. {
  739. if(IsPlayerConnected(i))
  740. {
  741. if(CallRemoteFunction("GetAliveState","i",i)) TogglePlayerControllable(i,control);
  742. }
  743. }
  744. return 1;
  745. }
  746.  
  747. //==============================================================================
  748. // Important functions required
  749. //==============================================================================
  750.  
  751. FUNCTION OnPlayerGetPersonalBest(playerid,Min,Sec,Mili)
  752. {
  753. PlayerMissionInfo[playerid][rBestMin]=Min;
  754. PlayerMissionInfo[playerid][rBestSec]=Sec;
  755. PlayerMissionInfo[playerid][rBestMili]=Mili;
  756. CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,2,GetPlayerPosition(playerid),TotalPlayers,PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][CurrentCheckpoint]+1,MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],0);
  757. return 1;
  758. }
  759.  
  760. FUNCTION CancelTheMission()
  761. {
  762. MissionCancelled= true;
  763. return 1;
  764. }
  765.  
  766. FUNCTION OnPlayerNameRecieve(playerid,name[])
  767. {
  768. format(PlayerMissionInfo[playerid][UserName],MAX_PLAYER_NAME,"%s",name);
  769. return 1;
  770. }
  771.  
  772. FUNCTION MissionObjectiveStarted() return ObjectiveStarted;
Advertisement
Add Comment
Please, Sign In to add comment