Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.06 KB | None | 0 0
  1. /*
  2. Script by: Bullet
  3. Map by: jimmy
  4. Mission Base: Last team standing
  5. Mission Type: Deathrun
  6. Mission Type ID: 5
  7. */
  8. //==============================================================================
  9. // Includes
  10. //==============================================================================
  11. #include <a_samp>
  12. #include <crashdetect>
  13. #include <float>
  14.  
  15. #include "..\filterscripts\MM\stuff\defines"
  16. #include "..\filterscripts\MM\stuff\serverkeymsg"
  17.  
  18. //==============================================================================
  19. // Defines
  20. //==============================================================================
  21.  
  22. #define MISSION_NAME "Stunt Zone Escape"
  23. #define Health 99.0
  24. #define TEAM_DEFEND_NAME "Runners"
  25. #define TEAM_ATTACK_NAME "Gunners"
  26. #define MAX_MAP_OBJECTS 121
  27. #define VEHICLE_HEALTH 0
  28. #define CLASS_POSTION 996.8776,293.4838,213.5000
  29. #define CLASS_CAMERA 997.1612,289.0013,213.5000
  30. #define CLASS_FACING_AGNLE 181.0141
  31. #define START_TIME 20
  32.  
  33. //==============================================================================
  34. // Per mission functions
  35. //============================================================================== 20
  36.  
  37. enum ped_enum
  38. {
  39. TeamID,
  40. Skin,
  41. Float:SpawnX,
  42. Float:SpawnY,
  43. Float:SpawnZ,
  44. Float:SpawnAngle,
  45. SpawnInterior,
  46. VirtualWorld,
  47. Weapon1,
  48. Ammo1,
  49. Weapon2,
  50. Ammo2,
  51. Weapon3,
  52. Ammo3,
  53. };
  54.  
  55. new const PedInfo[][ped_enum] = {
  56. {TEAM_ATTACK, 21, 1049.7133,298.4508,212.7320,357.8810,0,0,WEAPON_AK47,300,0,0,0,0},
  57. {TEAM_DEFEND, 0,999.3862,270.1404,213.4312,356.9409,0,0,0,0,0,0,0,0}
  58. };
  59.  
  60. #if MAX_MAP_OBJECTS != 0
  61. new Object[MAX_MAP_OBJECTS];
  62.  
  63. CreateMap()
  64. {
  65.  
  66. Object[0] = CreateObject(4550,1044.4000200,292.0000000,0.0000000,0.0000000,0.0000000,0.0000000); //
  67. Object[1] = CreateObject(4726,1044.4000200,291.5000000,210.3999900,0.0000000,0.0000000,0.0000000); //
  68. Object[2] = CreateObject(14416,1100.8000500,255.3999900,210.8000000,0.0000000,0.0000000,90.0000000); //
  69. Object[3] = CreateObject(11496,999.2999900,287.1000100,212.3000000,0.0000000,0.0000000,0.0000000); //
  70. Object[4] = CreateObject(11496,994.5000000,287.1000100,212.3000000,0.0000000,0.0000000,180.0000000); //
  71. Object[5] = CreateObject(11496,994.5000000,302.7999900,212.3000000,0.0000000,0.0000000,179.9950000); //
  72. Object[6] = CreateObject(11496,999.4000200,302.7999900,212.3000000,0.0000000,0.0000000,0.0000000); //
  73. Object[7] = CreateObject(16409,997.7999900,272.0000000,212.3999900,0.0000000,0.0000000,270.0000000); //
  74. Object[8] = CreateObject(14414,992.7999900,316.7000100,215.3999900,0.0000000,0.0000000,180.0000000); //
  75. Object[9] = CreateObject(14414,996.7999900,316.7000100,215.3999900,0.0000000,0.0000000,179.9950000); //
  76. Object[10] = CreateObject(14414,1000.7999900,316.7000100,215.3999900,0.0000000,0.0000000,179.9950000); //
  77. Object[11] = CreateObject(1655,996.5000000,323.2000100,220.5000000,10.0000000,0.0000000,0.0000000); //
  78. Object[12] = CreateObject(980,1003.5000000,285.1000100,215.1000100,0.0000000,0.0000000,270.0000000); //
  79. Object[13] = CreateObject(11496,998.7000100,340.7999900,220.2000000,0.0000000,0.0000000,270.0000000); //
  80. Object[14] = CreateObject(11496,998.7000100,345.7000100,220.2000000,0.0000000,0.0000000,90.0000000); //
  81. Object[15] = CreateObject(11496,1014.5999800,345.7000100,220.2000000,0.0000000,0.0000000,90.0000000); //
  82. Object[16] = CreateObject(11496,1014.5999800,340.7999900,220.2000000,0.0000000,0.0000000,270.0000000); //
  83. Object[17] = CreateObject(980,1016.7000100,336.7000100,222.8999900,0.0000000,0.0000000,180.0000000); //
  84. Object[18] = CreateObject(11496,1029.1999500,345.7999900,214.0000000,0.0000000,0.0000000,90.0000000); //
  85. Object[19] = CreateObject(11496,1029.1999500,340.8999900,214.0000000,0.0000000,0.0000000,270.0000000); //
  86. Object[20] = CreateObject(980,1021.9000200,343.2000100,216.8999900,0.0000000,0.0000000,269.9950000); //
  87. Object[21] = CreateObject(11496,1039.6999500,343.2999900,214.0000000,0.0000000,0.0000000,0.0000000); //
  88. Object[22] = CreateObject(3865,1048.5999800,343.2999900,215.6000100,0.0000000,0.0000000,90.0000000); //
  89. Object[23] = CreateObject(3865,1057.1999500,343.2000100,215.6000100,0.0000000,0.0000000,90.0000000); //
  90. Object[24] = CreateObject(3865,1048.5000000,338.2000100,215.6000100,0.0000000,0.0000000,90.0000000); //
  91. Object[25] = CreateObject(3865,1057.1999500,338.1000100,215.6000100,0.0000000,0.0000000,90.0000000); //
  92. Object[26] = CreateObject(3865,1048.5999800,348.3999900,215.6000100,0.0000000,0.0000000,90.0000000); //
  93. Object[27] = CreateObject(11102,1061.4000200,343.0000000,215.5000000,0.0000000,0.0000000,0.0000000); //
  94. Object[28] = CreateObject(11496,1069.3000500,340.7000100,214.0000000,0.0000000,0.0000000,270.0000000); //
  95. Object[29] = CreateObject(11496,1069.3000500,345.6000100,214.0000000,0.0000000,0.0000000,90.0000000); //
  96. Object[30] = CreateObject(2780,1053.5999800,348.5000000,211.0000000,0.0000000,0.0000000,0.0000000); //
  97. Object[31] = CreateObject(2780,1053.6999500,343.2999900,211.0000000,0.0000000,0.0000000,0.0000000); //
  98. Object[32] = CreateObject(2780,1053.8000500,338.2000100,211.0000000,0.0000000,0.0000000,0.0000000); //
  99. Object[33] = CreateObject(3374,1084.6999500,243.3999900,208.3999900,0.0000000,0.0000000,0.0000000); //
  100. Object[34] = CreateObject(3743,1082.0000000,343.8999900,218.0000000,0.0000000,0.0000000,90.0000000); //
  101. Object[35] = CreateObject(980,1067.3000500,336.2999900,216.6000100,0.0000000,0.0000000,179.9950000); //
  102. Object[36] = CreateObject(11496,1092.8000500,343.8999900,220.8000000,0.0000000,0.0000000,180.0000000); //
  103. Object[37] = CreateObject(11496,1097.6999500,343.8999900,220.8000000,0.0000000,0.0000000,359.9950000); //
  104. Object[38] = CreateObject(11496,1092.8000500,327.8999900,214.0000000,0.0000000,0.0000000,179.9950000); //
  105. Object[39] = CreateObject(11496,1092.8000500,311.8999900,214.0000000,0.0000000,0.0000000,179.9950000); //
  106. Object[40] = CreateObject(11496,1092.8000500,295.8999900,214.0000000,0.0000000,0.0000000,180.0000000); //
  107. Object[41] = CreateObject(11496,1105.4000200,344.1000100,218.0000000,0.0000000,0.0000000,179.9890000); //
  108. Object[42] = CreateObject(16501,1088.3994100,339.3994100,223.1000100,0.0000000,0.0000000,0.0000000); //
  109. Object[43] = CreateObject(11496,1110.3000500,344.1000100,218.0000000,0.0000000,0.0000000,359.9840100); //
  110. Object[44] = CreateObject(11496,1106.9000200,333.8999900,218.0000000,0.0000000,0.0000000,269.9780000); //
  111. Object[45] = CreateObject(16501,1092.0000000,336.0000000,223.1000100,0.0000000,0.0000000,90.0000000); //
  112. Object[46] = CreateObject(16501,1098.5999800,336.0000000,223.1000100,0.0000000,0.0000000,90.0000000); //
  113. Object[47] = CreateObject(16501,1088.4000200,332.2999900,216.3000000,0.0000000,0.0000000,0.0000000); //
  114. Object[48] = CreateObject(16501,1102.5000000,329.5000000,220.3000000,0.0000000,0.0000000,90.0000000); //
  115. Object[49] = CreateObject(16501,1109.5999800,329.5000000,220.3000000,0.0000000,0.0000000,90.0000000); //
  116. Object[50] = CreateObject(16501,1088.4000200,291.5000000,216.3000000,0.0000000,0.0000000,0.0000000); //
  117. Object[51] = CreateObject(7516,1098.3000500,270.2999900,210.0000000,0.0000000,0.0000000,0.0000000); //
  118. Object[52] = CreateObject(16501,1088.4000200,305.7000100,216.3000000,0.0000000,0.0000000,0.0000000); //
  119. Object[53] = CreateObject(14416,1042.6992200,282.0996100,208.5000000,0.0000000,0.0000000,90.0000000); //
  120. Object[54] = CreateObject(987,1104.4000200,257.2999900,209.8000000,270.0000000,0.0000000,270.0000000); //
  121. Object[55] = CreateObject(987,1110.5000000,245.3999900,209.8000000,270.0000000,180.0000000,0.0000000); //
  122. Object[56] = CreateObject(987,1098.5000000,245.3999900,209.8000000,270.0000000,179.9950000,0.0000000); //
  123. Object[57] = CreateObject(987,1082.6999500,245.3999900,209.8000000,270.0000000,179.9950000,0.0000000); //
  124. Object[58] = CreateObject(3374,1084.6999500,241.2000000,208.3999900,0.0000000,0.0000000,0.0000000); //
  125. Object[59] = CreateObject(16501,1088.5000000,256.3999900,215.5000000,0.0000000,0.0000000,0.0000000); //
  126. Object[60] = CreateObject(16501,1092.0999800,252.8999900,215.5000000,0.0000000,0.0000000,90.0000000); //
  127. Object[61] = CreateObject(16501,1110.4000200,253.7000000,212.1000100,0.0000000,0.0000000,0.0000000); //
  128. Object[62] = CreateObject(16501,1070.1999500,245.3999900,212.0000000,0.0000000,0.0000000,270.0000000); //
  129. Object[63] = CreateObject(987,1070.6999500,245.3999900,209.8000000,270.0000000,179.9950000,0.0000000); //
  130. Object[64] = CreateObject(1225,996.7000100,315.2999900,213.8000000,0.0000000,0.0000000,0.0000000); //
  131. Object[65] = CreateObject(987,1058.6999500,245.3999900,209.8000000,270.0000000,179.9950000,0.0000000); //
  132. Object[66] = CreateObject(3374,1044.6999500,241.2000000,208.3999900,0.0000000,0.0000000,0.0000000); //
  133. Object[67] = CreateObject(3374,1044.6999500,243.3999900,208.3999900,0.0000000,0.0000000,0.0000000); //
  134. Object[68] = CreateObject(16501,1035.1999500,245.3000000,212.0000000,0.0000000,0.0000000,270.0000000); //
  135. Object[69] = CreateObject(3374,1040.6999500,243.3999900,208.3999900,0.0000000,0.0000000,0.0000000); //
  136. Object[70] = CreateObject(3374,1040.6999500,241.2000000,208.3999900,0.0000000,0.0000000,0.0000000); //
  137. Object[71] = CreateObject(987,1038.6999500,245.3999900,209.8000000,270.0000000,179.9950000,0.0000000); //
  138. Object[72] = CreateObject(16501,1028.0999800,245.3000000,212.0000000,0.0000000,0.0000000,270.0000000); //
  139. Object[73] = CreateObject(987,1026.6999500,245.3999900,209.8000000,270.0000000,179.9950000,0.0000000); //
  140. Object[74] = CreateObject(11496,998.7000100,337.6000100,220.2000000,0.0000000,0.0000000,270.0000000); //
  141. Object[75] = CreateObject(16501,1011.5116600,244.9452800,212.0000000,0.0000000,0.0000000,270.0000000); //
  142. Object[76] = CreateObject(16501,1004.4755900,244.9367700,212.0000000,0.0000000,0.0000000,270.0000000); //
  143. Object[77] = CreateObject(16501,997.4755900,244.9368000,212.0000000,0.0000000,0.0000000,270.0000000); //
  144. Object[78] = CreateObject(16501,990.4755900,244.9368000,212.0000000,0.0000000,0.0000000,270.0000000); //
  145. Object[79] = CreateObject(16501,990.8943500,213.0276900,212.0000000,0.0000000,0.0000000,270.0000000); //
  146. Object[80] = CreateObject(16501,997.9619100,213.0519000,212.0000000,0.0000000,0.0000000,270.0000000); //
  147. Object[81] = CreateObject(16501,1004.9151000,213.0633500,212.0000000,0.0000000,0.0000000,270.0000000); //
  148. Object[82] = CreateObject(16501,1011.1902500,213.0453500,212.0000000,0.0000000,0.0000000,270.0000000); //
  149. Object[83] = CreateObject(16501,1015.1421500,221.6691700,212.0000000,0.0000000,0.0000000,180.0000000); //
  150. Object[84] = CreateObject(16501,1015.1167000,228.7147400,212.0000000,0.0000000,0.0000000,180.0000000); //
  151. Object[85] = CreateObject(16501,1015.1187700,235.7870300,212.0000000,0.0000000,0.0000000,180.0000000); //
  152. Object[86] = CreateObject(16501,1015.1779800,216.5229900,211.9406000,0.0000000,0.0000000,180.0600300); //
  153. Object[87] = CreateObject(16501,1018.1195700,243.7204000,212.0000000,0.0000000,0.0000000,249.3000900); //
  154. Object[88] = CreateObject(11496,991.8997800,236.7794200,209.8560900,0.0000000,0.0000000,179.9950000); //
  155. Object[89] = CreateObject(11496,991.8439900,220.9085800,209.8560900,0.0000000,0.0000000,179.9950000); //
  156. Object[90] = CreateObject(11496,998.9062500,220.9254500,209.8560900,0.0000000,0.0000000,179.9950000); //
  157. Object[91] = CreateObject(11496,998.9182700,236.7947500,209.8560900,0.0000000,0.0000000,179.9950000); //
  158. Object[92] = CreateObject(11496,1005.8292800,220.9652400,209.8560900,0.0000000,0.0000000,179.9950000); //
  159. Object[93] = CreateObject(11496,1005.8018200,237.0542300,209.8560900,0.0000000,0.0000000,179.9950000); //
  160. Object[94] = CreateObject(11496,1012.8113400,236.8276200,209.8560900,0.0000000,0.0000000,179.9950000); //
  161. Object[95] = CreateObject(11496,1012.8637700,220.7364000,209.8560900,0.0000000,0.0000000,179.9950000); //
  162. Object[96] = CreateObject(11496,984.9606900,220.5729400,209.8560900,0.0000000,0.0000000,179.9950000); //
  163. Object[97] = CreateObject(11496,984.9309700,236.6140100,209.8560900,0.0000000,0.0000000,179.9950000); //
  164. Object[98] = CreateObject(11496,977.9081400,236.6252100,209.8560900,0.0000000,0.0000000,179.9950000); //
  165. Object[99] = CreateObject(11496,977.9575200,220.5302600,209.8560900,0.0000000,0.0000000,179.9950000); //
  166. Object[100] = CreateObject(11496,970.8906900,220.4146000,209.8560900,0.0000000,0.0000000,179.9950000); //
  167. Object[101] = CreateObject(11496,970.9239500,236.5000900,209.8560900,0.0000000,0.0000000,179.9950000); //
  168. Object[102] = CreateObject(11496,963.9099100,236.4794500,209.8560900,0.0000000,0.0000000,179.9950000); //
  169. Object[103] = CreateObject(11496,963.8640100,220.3161600,209.8560900,0.0000000,0.0000000,179.9950000); //
  170. Object[104] = CreateObject(11496,956.8830600,220.3127600,209.8560900,0.0000000,0.0000000,179.9950000); //
  171. Object[105] = CreateObject(11496,956.8916000,236.4564700,209.8560900,0.0000000,0.0000000,179.9950000); //
  172. Object[106] = CreateObject(16501,984.0153800,213.0416100,212.0000000,0.0000000,0.0000000,270.0000000); //
  173. Object[107] = CreateObject(16501,977.1630900,213.0468900,212.0000000,0.0000000,0.0000000,270.0000000); //
  174. Object[108] = CreateObject(16501,970.1453200,213.0297400,212.0000000,0.0000000,0.0000000,270.0000000); //
  175. Object[109] = CreateObject(16501,963.0684800,213.0558000,212.0000000,0.0000000,0.0000000,270.0000000); //
  176. Object[110] = CreateObject(16501,956.0080000,213.0591100,212.0000000,0.0000000,0.0000000,270.0000000); //
  177. Object[111] = CreateObject(16501,983.5692700,244.9139900,212.0000000,0.0000000,0.0000000,270.0000000); //
  178. Object[112] = CreateObject(16501,976.5088500,244.8978900,212.0000000,0.0000000,0.0000000,270.0000000); //
  179. Object[113] = CreateObject(16501,969.4762000,244.8558300,212.0000000,0.0000000,0.0000000,270.0000000); //
  180. Object[114] = CreateObject(16501,962.6214600,244.8478900,212.0000000,0.0000000,0.0000000,270.0000000); //
  181. Object[115] = CreateObject(16501,955.7142900,244.7284400,212.0000000,0.0000000,0.0000000,270.0000000); //
  182. Object[116] = CreateObject(16501,952.5050000,216.8451400,211.9406000,0.0000000,0.0000000,180.0600300); //
  183. Object[117] = CreateObject(16501,952.4976200,223.9305700,211.9406000,0.0000000,0.0000000,180.0600300); //
  184. Object[118] = CreateObject(16501,952.4764400,230.7962000,211.9406000,0.0000000,0.0000000,180.0600300); //
  185. Object[119] = CreateObject(16501,952.4691800,237.5923200,211.9406000,0.0000000,0.0000000,180.0600300); //
  186. Object[120] = CreateObject(16501,952.4545900,241.1903100,211.9406000,0.0000000,0.0000000,180.0600300); //
  187.  
  188.  
  189. CreateVehicle(425, 989.0122, 228.2376, 210.0484, -180.0602, -1, -1, 100);
  190. CreateVehicle(447, 999.0698, 236.2542, 211.6155, -179.9999, -1, -1, 100);
  191. CreateVehicle(447, 999.6901, 223.0693, 211.6155, -179.9999, -1, -1, 100);
  192. CreateVehicle(425, 1007.5801, 227.8850, 210.0484, -180.0602, -1, -1, 100);
  193. CreateVehicle(447, 979.0840, 222.8335, 211.6155, -179.9999, -1, -1, 100);
  194. CreateVehicle(447, 978.2503, 235.2344, 211.6155, -179.9999, -1, -1, 100);
  195. CreateVehicle(425, 968.9548, 227.4397, 210.0484, -180.0602, -1, -1, 100);
  196. CreateVehicle(447, 959.0433, 233.8758, 211.6155, -179.9999, -1, -1, 100);
  197. CreateVehicle(447, 959.8760, 222.0387, 211.6155, -179.9999, -1, -1, 100);
  198. }
  199. #endif
  200.  
  201. //==============================================================================
  202. // Basic vars
  203. //==============================================================================
  204.  
  205. new bool:MissionStarted;
  206. new bool:ObjectiveStarted;
  207. new bool:MissionCancelled;
  208.  
  209. native IsValidVehicle(vehicleid);
  210.  
  211. enum teamdata
  212. {
  213. Kills,
  214. Name[32],
  215. Members
  216. };
  217.  
  218. enum playerdata
  219. {
  220. UserName[MAX_PLAYER_NAME],
  221. bool:TeamChosen,
  222. TeamSelection,
  223. PlayerClassID,
  224. Counted,
  225. AllowedToSpawn
  226. };
  227.  
  228. new Team[2][teamdata];
  229. new PlayerMissionInfo[MAX_PLAYERS][playerdata];
  230.  
  231. //==============================================================================
  232. // Basic script
  233. //==============================================================================
  234.  
  235. main()
  236. {
  237. print("----------------------------------");
  238. print(" Mission: "MISSION_NAME" started.");
  239. print("----------------------------------\n");
  240. }
  241.  
  242. public OnGameModeInit()
  243. {
  244. MissionStarted= true;
  245.  
  246. format(Team[TEAM_DEFEND][Name],32,"%s",TEAM_DEFEND_NAME);
  247. format(Team[TEAM_ATTACK][Name],32,"%s",TEAM_ATTACK_NAME);
  248.  
  249. if(CallRemoteFunction("GetCurrentMissionCJWalk","")) UsePlayerPedAnims();
  250.  
  251. #if MAX_MAP_OBJECTS != 0
  252. CreateMap();
  253. #endif
  254.  
  255. for(new i=0; i<sizeof(PedInfo); i++)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);
  256.  
  257. for(new i=0; i<MAX_VEHICLES; i++) if(IsValidVehicle(i)) SetVehicleHealth(i,VEHICLE_HEALTH);
  258. for(new i=0; i<MAX_PLAYERS; i++) PlayerMissionInfo[i][TeamSelection]= NO_TEAM;
  259.  
  260. SetTimer("StartMissionFunc",3000,false);
  261. return 1;
  262. }
  263.  
  264. FUNCTION StartMissionFunc()
  265. {
  266. CallRemoteFunction("StartMission","");
  267. SetTimer("CloseSpawns",1000*(START_TIME-3),false);
  268. ObjectiveStarted= true;
  269. return 1;
  270. }
  271.  
  272. FUNCTION CloseSpawns()
  273. {
  274. PlaySoundForAll(1057);
  275. if(Team[TEAM_DEFEND][Members] >= 1 && Team[TEAM_ATTACK][Members] >= 1)
  276. {
  277. GameTextForAll("~r~START THE BLOOD WAR!",1000,3);
  278. ObjectiveStarted= true;
  279. ToggleControllable(true);
  280. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The last team standing deathmatch has started. KILL THE OTHER TEAM!");
  281. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The last team standing deathmatch has started. KILL THE OTHER TEAM!",0);
  282. }
  283. else CallRemoteFunction("EndMission","");
  284. }
  285.  
  286. public OnGameModeExit()
  287. {
  288. #if MAX_MAP_OBJECTS != 0
  289. for(new i=0;i<MAX_MAP_OBJECTS;i++) DestroyObject(Object[i]);
  290. #endif
  291. return 1;
  292. }
  293.  
  294. public OnPlayerDisconnect(playerid)
  295. {
  296. if(PlayerMissionInfo[playerid][TeamSelection] != NO_TEAM && PlayerMissionInfo[playerid][Counted])
  297. {
  298. Team[PlayerMissionInfo[playerid][TeamSelection]][Members] --;
  299. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  300. if(Team[PlayerMissionInfo[playerid][TeamSelection]][Members] == 0 && ObjectiveStarted) CallRemoteFunction("EndMission","");
  301. }
  302. return 1;
  303. }
  304.  
  305. public OnPlayerRequestClass(playerid,classid)
  306. {
  307. SetPlayerPos(playerid,CLASS_POSTION);
  308. SetPlayerCameraPos(playerid,CLASS_CAMERA);
  309. SetPlayerCameraLookAt(playerid,CLASS_POSTION);
  310. SetPlayerFacingAngle(playerid,CLASS_FACING_AGNLE);
  311.  
  312. CallRemoteFunction("TdmHide","i",playerid);
  313. CallRemoteFunction("ShowClassSelection","iisiii",playerid, PedInfo[classid][TeamID],Team[PedInfo[classid][TeamID]][Name], PedInfo[classid][Weapon1], PedInfo[classid][Weapon2], PedInfo[classid][Weapon3]);
  314.  
  315. if(PlayerMissionInfo[playerid][Counted] && PlayerMissionInfo[playerid][TeamSelection] != NO_TEAM)
  316. {
  317. Team[PlayerMissionInfo[playerid][TeamSelection]][Members]--;
  318. PlayerMissionInfo[playerid][Counted] = false;
  319. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  320. }
  321.  
  322. PlayerMissionInfo[playerid][TeamSelection] = PedInfo[classid][TeamID];
  323. PlayerMissionInfo[playerid][PlayerClassID]=classid;
  324.  
  325. return 1;
  326. }
  327.  
  328. public OnPlayerRequestSpawn(playerid)
  329. {
  330. new opp_team = (PlayerMissionInfo[playerid][TeamSelection] == 1)? 0:1;
  331. if(Team[PlayerMissionInfo[playerid][TeamSelection]][Members] > Team[opp_team][Members])
  332. {
  333. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,"This Team is full, choose another!",0);
  334. return 0;
  335. }
  336. return 1;
  337. }
  338.  
  339. public OnPlayerSpawn(playerid)
  340. {
  341. if(PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Skin] == 0)
  342. {
  343. back:
  344. new skin=random(312);
  345. if(skin == 74 || skin < 1) goto back;
  346. SetPlayerSkin(playerid,skin);
  347. }
  348. CallRemoteFunction("TdmShow","i",playerid);
  349. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  350. new string[124];
  351. if(CallRemoteFunction("GetSpectateStatus","d",playerid)) return CallRemoteFunction("SpecOffAdmin","d",playerid);
  352. if(!CallRemoteFunction("GetJailedStatus","d",playerid))
  353. {
  354. SetPlayerPos(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnX],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnY],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnZ]);
  355. SetPlayerFacingAngle(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnAngle]);
  356. SetPlayerInterior(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnInterior]);
  357. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon1],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo1]);
  358. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon2],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo2]);
  359. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon3],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo3]);
  360.  
  361. if(ObjectiveStarted && !PlayerMissionInfo[playerid][AllowedToSpawn])
  362. {
  363. SetPlayerVirtualWorld(playerid,2);
  364. SetPlayerInterior(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnInterior]);
  365. SetPlayerColor(playerid,COLOR_GREY);
  366. CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
  367. }
  368. else
  369. {
  370. if(!ObjectiveStarted) TogglePlayerControllable(playerid,false);
  371. SetPlayerVirtualWorld(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][VirtualWorld]);
  372. if(!PlayerMissionInfo[playerid][Counted])
  373. {
  374. Team[PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][TeamID]][Members]++;
  375. PlayerMissionInfo[playerid][Counted]= true;
  376. }
  377.  
  378. CallRemoteFunction("updateLTS","dd",Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  379. PlayerMissionInfo[playerid][TeamChosen] = true;
  380. new opp_team = (PlayerMissionInfo[playerid][TeamSelection] == 1)? 0:1;
  381. format(string,sizeof(string),"You have chosen team %s, your mission is to kill %s.",Team[PlayerMissionInfo[playerid][TeamSelection]][Name],Team[opp_team][Name]);
  382. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,string,0);
  383. format(string,sizeof(string),"~r~~h~Eliminate ~w~%s.",Team[opp_team][Name]);
  384. CallRemoteFunction("ShowInfoText", "iisi", playerid, -1,string,0);
  385. PlayerMissionInfo[playerid][AllowedToSpawn]= false;
  386. SetPlayerTeam(playerid,PlayerMissionInfo[playerid][TeamSelection]);
  387. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK) SetPlayerColor(playerid,COLOR_TEAM_ATTACK);
  388. else SetPlayerColor(playerid,COLOR_TEAM_DEFEND);
  389. CallRemoteFunction("UpdateAliveState","ii",playerid,1);
  390. }
  391. }
  392.  
  393.  
  394. SetPlayerHealth(playerid,Health);
  395. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  396. return 1;
  397. }
  398.  
  399. public OnPlayerDeath(playerid, killerid, reason)
  400. {
  401. if(!MissionStarted)
  402. {
  403. PlayerMissionInfo[playerid][AllowedToSpawn]= true;
  404. return 1;
  405. }
  406. if(killerid != INVALID_PLAYER_ID && PlayerMissionInfo[killerid][TeamSelection] != NO_TEAM)
  407. {
  408. Team[PlayerMissionInfo[killerid][TeamSelection]][Kills]++;
  409. SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
  410. }
  411. if(PlayerMissionInfo[playerid][Counted] && PlayerMissionInfo[playerid][TeamSelection] != NO_TEAM)
  412. {
  413. Team[PlayerMissionInfo[playerid][TeamSelection]][Members]--;
  414. PlayerMissionInfo[playerid][Counted]= false;
  415. if(Team[PlayerMissionInfo[playerid][TeamSelection]][Members] == 0) CallRemoteFunction("EndMission","");
  416. }
  417. CallRemoteFunction("UpdateAliveState","ii",playerid,0);
  418. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  419. return 1;
  420. }
  421.  
  422. FUNCTION EndTheMission()
  423. {
  424. if(!MissionStarted) return 1;
  425. MissionStarted= false;
  426. if(!MissionCancelled && !ObjectiveStarted)
  427. {
  428. new string[128];
  429. new amount= 10000;
  430. new winning_team;
  431. if(Team[TEAM_DEFEND][Members] == Team[TEAM_ATTACK][Members]) { winning_team = 2; }
  432. else if(Team[TEAM_DEFEND][Members] > Team[TEAM_ATTACK][Members]) { winning_team = 0; }
  433. else { winning_team = 1; }
  434.  
  435. if(winning_team != 2 && ObjectiveStarted)
  436. {
  437. amount +=Team[winning_team][Kills]*100;
  438. format(string,sizeof(string),""SERVER_KEY_MSG" %s has won the last team standing deathmatch! Reward: $%d",Team[winning_team][Name],amount);
  439. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  440. SendClientMessageToAll(COLOR_SERVER,string);
  441. for(new i=0,j=GetPlayerPoolSize(); i <= j; i++)
  442. {
  443. if(PlayerMissionInfo[i][TeamSelection] == winning_team && PlayerMissionInfo[i][TeamChosen])
  444. {
  445. PlayerPlaySound(i,3200,0,0,0);
  446. CallRemoteFunction("GivePlayerCash","ii",i,amount);
  447. CallRemoteFunction("PlayerMissionStats","dd",i,0);
  448. }
  449. if(PlayerMissionInfo[i][TeamSelection] != winning_team && PlayerMissionInfo[i][TeamChosen])
  450. {
  451. PlayerPlaySound(i,17004,0,0,0);
  452. GameTextForPlayer(i,"~R~MISSION FAILED~w~!",3000,3);
  453. CallRemoteFunction("PlayerMissionStats","dd",i,1);
  454. }
  455. }
  456. }
  457. else
  458. {
  459. PlaySoundForAll(1058);
  460. format(string,sizeof(string),""SERVER_KEY_MSG" IT'S A DRAW! No team has won the last team standing deathmatch.");
  461. SendClientMessageToAll(COLOR_SERVER,string);
  462. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  463. for(new i=0,j=GetPlayerPoolSize(); i <= j; i++)
  464. {
  465. if(PlayerMissionInfo[i][TeamChosen])
  466. {
  467. CallRemoteFunction("PlayerMissionStats","dd",i,2);
  468. }
  469. }
  470. }
  471. }
  472. else
  473. {
  474. PlaySoundForAll(1058);
  475. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The mission has been cancelled.");
  476. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The mission has been cancelled.",IRC_SERVER_COLOR);
  477. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The mission has been cancelled.",0);
  478. GameTextForAll("~R~MISSION CANCELLED~w~!",3000,3);
  479. }
  480.  
  481. return 1;
  482. }
  483.  
  484. //==============================================================================
  485. // Mission functions
  486. //==============================================================================
  487.  
  488. PlaySoundForAll(sound)
  489. {
  490. for (new i=0,j=GetPlayerPoolSize(); i <=j ; i++)
  491. {
  492. if(IsPlayerConnected(i)) PlayerPlaySound(i,sound,0,0,0);
  493. }
  494. }
  495.  
  496.  
  497. ToggleControllable(control)
  498. {
  499. for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
  500. {
  501. if(IsPlayerConnected(i))
  502. {
  503. if(CallRemoteFunction("GetAliveState","i",i)) TogglePlayerControllable(i,control);
  504. }
  505. }
  506. return 1;
  507. }
  508.  
  509. //==============================================================================
  510. // Important functions required
  511. //==============================================================================
  512.  
  513. FUNCTION CancelTheMission()
  514. {
  515. MissionCancelled= true;
  516. return 1;
  517. }
  518.  
  519. FUNCTION OnPlayerNameRecieve(playerid,name[])
  520. {
  521. format(PlayerMissionInfo[playerid][UserName],MAX_PLAYER_NAME,"%s",name);
  522. return 1;
  523. }
  524.  
  525. FUNCTION MissionObjectiveStarted() return ObjectiveStarted;
  526.  
  527. FUNCTION OnPlayerRespawned(playerid)
  528. {
  529. if(PlayerMissionInfo[playerid][Counted])
  530. {
  531. Team[PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][TeamID]][Members]--;
  532. PlayerMissionInfo[playerid][Counted]= false;
  533. }
  534. PlayerMissionInfo[playerid][AllowedToSpawn]= true;
  535. return 1;
  536. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement