Bulletje

Untitled

Jan 21st, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.53 KB | None | 0 0
  1. /*
  2. Script by: Bullet
  3. Map by: Bullet
  4. Mission Base: Last team standing
  5. Mission Type: Last team standing
  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 "Fray in the Hood"
  23. #define Health 25.0
  24. #define TEAM_DEFEND_NAME "Groves"
  25. #define TEAM_ATTACK_NAME "Ballas"
  26. #define MAX_MAP_OBJECTS 9
  27. #define VEHICLE_HEALTH 0
  28. #define CLASS_POSTION 2467.9666,-1659.0470,13.3114
  29. #define CLASS_CAMERA 2464.6279,-1658.4977,13.2959
  30. #define CLASS_FACING_AGNLE 79.5403
  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,103,2467.7278,-1658.5833,13.3005,254.8167,0,0,0,0,WEAPON_BAT,0,0,0},
  57. {TEAM_DEFEND,105, 2511.9343,-1671.3613,13.4689,79.0585,0,0,0,0,WEAPON_BAT,0,0,0}
  58. };
  59.  
  60. #if MAX_MAP_OBJECTS != 0
  61. new Object[MAX_MAP_OBJECTS];
  62.  
  63. CreateMap()
  64. {
  65. Object[0] = CreateObject(8661,2463.9038100,-1653.3634000,12.4572000,90.0000000,90.0000000,180.0000000); //
  66. Object[1] = CreateObject(8661,2473.2016600,-1690.7700200,12.4572000,90.0000000,90.0000000,208.0199900); //
  67. Object[2] = CreateObject(8661,2491.9177200,-1688.2888200,12.4572000,90.0000000,90.0000000,270.2396500); //
  68. Object[3] = CreateObject(8661,2518.7148400,-1681.7840600,12.4572000,90.0000000,90.0000000,289.2597700); //
  69. Object[4] = CreateObject(8661,2515.4755900,-1673.9218800,12.4572000,90.0000000,90.0000000,319.0795900); //
  70. Object[5] = CreateObject(8661,2513.4118700,-1663.0034200,12.4572000,90.0000000,90.0000000,372.2391100); //
  71. Object[6] = CreateObject(8661,2505.4245600,-1649.1261000,12.4572000,90.0000000,90.0000000,419.2788700); //
  72. Object[7] = CreateObject(8661,2485.9069800,-1649.4702100,12.4572000,90.0000000,90.0000000,450.1786500); //
  73. Object[8] = CreateObject(8661,2483.1350100,-1649.4552000,12.4572000,90.0000000,90.0000000,450.1786500); //
  74. }
  75. #endif
  76.  
  77. //==============================================================================
  78. // Basic vars
  79. //==============================================================================
  80.  
  81. new bool:MissionStarted;
  82. new bool:ObjectiveStarted;
  83. new bool:MissionCancelled;
  84.  
  85. native IsValidVehicle(vehicleid);
  86.  
  87. enum teamdata
  88. {
  89. Kills,
  90. Name[32],
  91. Members
  92. };
  93.  
  94. enum playerdata
  95. {
  96. UserName[MAX_PLAYER_NAME],
  97. bool:TeamChosen,
  98. TeamSelection,
  99. PlayerClassID,
  100. Counted,
  101. AllowedToSpawn
  102. };
  103.  
  104. new Team[2][teamdata];
  105. new PlayerMissionInfo[MAX_PLAYERS][playerdata];
  106.  
  107. //==============================================================================
  108. // Basic script
  109. //==============================================================================
  110.  
  111. main()
  112. {
  113. print("----------------------------------");
  114. print(" Mission: "MISSION_NAME" started.");
  115. print("----------------------------------\n");
  116. }
  117.  
  118. public OnGameModeInit()
  119. {
  120. MissionStarted= true;
  121.  
  122. format(Team[TEAM_DEFEND][Name],32,"%s",TEAM_DEFEND_NAME);
  123. format(Team[TEAM_ATTACK][Name],32,"%s",TEAM_ATTACK_NAME);
  124.  
  125. if(CallRemoteFunction("GetCurrentMissionCJWalk","")) UsePlayerPedAnims();
  126.  
  127. #if MAX_MAP_OBJECTS != 0
  128. CreateMap();
  129. #endif
  130.  
  131. 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);
  132.  
  133. for(new i=0; i<MAX_VEHICLES; i++) if(IsValidVehicle(i)) SetVehicleHealth(i,VEHICLE_HEALTH);
  134. for(new i=0; i<MAX_PLAYERS; i++) PlayerMissionInfo[i][TeamSelection]= NO_TEAM;
  135.  
  136. SetTimer("StartMissionFunc",3000,false);
  137. return 1;
  138. }
  139.  
  140. FUNCTION StartMissionFunc()
  141. {
  142. CallRemoteFunction("StartMission","");
  143. SetTimer("CloseSpawns",1000*(START_TIME-3),false);
  144. ObjectiveStarted= true;
  145. return 1;
  146. }
  147.  
  148. FUNCTION CloseSpawns()
  149. {
  150. PlaySoundForAll(1057);
  151. if(Team[TEAM_DEFEND][Members] >= 1 && Team[TEAM_ATTACK][Members] >= 1)
  152. {
  153. GameTextForAll("~r~START THE BLOOD WAR!",1000,3);
  154. ObjectiveStarted= true;
  155. ToggleControllable(true);
  156. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The last team standing deathmatch has started. KILL THE OTHER TEAM!");
  157. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The last team standing deathmatch has started. KILL THE OTHER TEAM!",0);
  158. }
  159. else CallRemoteFunction("EndMission","");
  160. }
  161.  
  162. public OnGameModeExit()
  163. {
  164. #if MAX_MAP_OBJECTS != 0
  165. for(new i=0;i<MAX_MAP_OBJECTS;i++) DestroyObject(Object[i]);
  166. #endif
  167. return 1;
  168. }
  169.  
  170. public OnPlayerDisconnect(playerid)
  171. {
  172. if(PlayerMissionInfo[playerid][TeamSelection] != NO_TEAM && PlayerMissionInfo[playerid][Counted])
  173. {
  174. Team[PlayerMissionInfo[playerid][TeamSelection]][Members] --;
  175. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  176. if(Team[PlayerMissionInfo[playerid][TeamSelection]][Members] == 0 && ObjectiveStarted) CallRemoteFunction("EndMission","");
  177. }
  178. return 1;
  179. }
  180.  
  181. public OnPlayerRequestClass(playerid,classid)
  182. {
  183. SetPlayerPos(playerid,CLASS_POSTION);
  184. SetPlayerCameraPos(playerid,CLASS_CAMERA);
  185. SetPlayerCameraLookAt(playerid,CLASS_POSTION);
  186. SetPlayerFacingAngle(playerid,CLASS_FACING_AGNLE);
  187.  
  188. CallRemoteFunction("TdmHide","i",playerid);
  189. CallRemoteFunction("ShowClassSelection","iisiii",playerid, PedInfo[classid][TeamID],Team[PedInfo[classid][TeamID]][Name], PedInfo[classid][Weapon1], PedInfo[classid][Weapon2], PedInfo[classid][Weapon3]);
  190.  
  191. if(PlayerMissionInfo[playerid][Counted] && PlayerMissionInfo[playerid][TeamSelection] != NO_TEAM)
  192. {
  193. Team[PlayerMissionInfo[playerid][TeamSelection]][Members]--;
  194. PlayerMissionInfo[playerid][Counted] = false;
  195. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  196. }
  197.  
  198. PlayerMissionInfo[playerid][TeamSelection] = PedInfo[classid][TeamID];
  199. PlayerMissionInfo[playerid][PlayerClassID]=classid;
  200.  
  201. return 1;
  202. }
  203.  
  204. public OnPlayerRequestSpawn(playerid)
  205. {
  206. new opp_team = (PlayerMissionInfo[playerid][TeamSelection] == 1)? 0:1;
  207. if(Team[PlayerMissionInfo[playerid][TeamSelection]][Members] > Team[opp_team][Members])
  208. {
  209. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,"This Team is full, choose another!",0);
  210. return 0;
  211. }
  212. return 1;
  213. }
  214.  
  215. public OnPlayerSpawn(playerid)
  216. {
  217. CallRemoteFunction("TdmShow","i",playerid);
  218. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  219. new string[124];
  220. if(CallRemoteFunction("GetSpectateStatus","d",playerid)) return CallRemoteFunction("SpecOffAdmin","d",playerid);
  221. if(!CallRemoteFunction("GetJailedStatus","d",playerid))
  222. {
  223. SetPlayerPos(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnX],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnY],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnZ]);
  224. SetPlayerFacingAngle(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnAngle]);
  225. SetPlayerInterior(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnInterior]);
  226. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon1],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo1]);
  227. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon2],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo2]);
  228. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon3],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo3]);
  229.  
  230. if(ObjectiveStarted && !PlayerMissionInfo[playerid][AllowedToSpawn])
  231. {
  232. SetPlayerVirtualWorld(playerid,2);
  233. SetPlayerInterior(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnInterior]);
  234. SetPlayerColor(playerid,COLOR_GREY);
  235. CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
  236. }
  237. else
  238. {
  239. if(!ObjectiveStarted) TogglePlayerControllable(playerid,false);
  240. SetPlayerVirtualWorld(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][VirtualWorld]);
  241. if(!PlayerMissionInfo[playerid][Counted])
  242. {
  243. Team[PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][TeamID]][Members]++;
  244. PlayerMissionInfo[playerid][Counted]= true;
  245. }
  246.  
  247. CallRemoteFunction("updateLTS","dd",Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  248. PlayerMissionInfo[playerid][TeamChosen] = true;
  249. new opp_team = (PlayerMissionInfo[playerid][TeamSelection] == 1)? 0:1;
  250. format(string,sizeof(string),"You have chosen team %s, your mission is to kill %s.",Team[PlayerMissionInfo[playerid][TeamSelection]][Name],Team[opp_team][Name]);
  251. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,string,0);
  252. format(string,sizeof(string),"~r~~h~Eliminate ~w~%s.",Team[opp_team][Name]);
  253. CallRemoteFunction("ShowInfoText", "iisi", playerid, -1,string,0);
  254. PlayerMissionInfo[playerid][AllowedToSpawn]= false;
  255. SetPlayerTeam(playerid,PlayerMissionInfo[playerid][TeamSelection]);
  256. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK) SetPlayerColor(playerid,COLOR_TEAM_ATTACK);
  257. else SetPlayerColor(playerid,COLOR_TEAM_DEFEND);
  258. CallRemoteFunction("UpdateAliveState","ii",playerid,1);
  259. }
  260. }
  261.  
  262.  
  263. SetPlayerHealth(playerid,Health);
  264. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  265. return 1;
  266. }
  267.  
  268. public OnPlayerDeath(playerid, killerid, reason)
  269. {
  270. if(!MissionStarted)
  271. {
  272. PlayerMissionInfo[playerid][AllowedToSpawn]= true;
  273. return 1;
  274. }
  275. if(killerid != INVALID_PLAYER_ID && PlayerMissionInfo[killerid][TeamSelection] != NO_TEAM)
  276. {
  277. Team[PlayerMissionInfo[killerid][TeamSelection]][Kills]++;
  278. SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
  279. }
  280. if(PlayerMissionInfo[playerid][Counted] && PlayerMissionInfo[playerid][TeamSelection] != NO_TEAM)
  281. {
  282. Team[PlayerMissionInfo[playerid][TeamSelection]][Members]--;
  283. PlayerMissionInfo[playerid][Counted]= false;
  284. if(Team[PlayerMissionInfo[playerid][TeamSelection]][Members] == 0) CallRemoteFunction("EndMission","");
  285. }
  286. CallRemoteFunction("UpdateAliveState","ii",playerid,0);
  287. CallRemoteFunction("TdmUpdate","sssdd","Players Alive",Team[TEAM_DEFEND][Name],Team[TEAM_ATTACK][Name],Team[TEAM_DEFEND][Members],Team[TEAM_ATTACK][Members]);
  288. return 1;
  289. }
  290.  
  291. FUNCTION EndTheMission()
  292. {
  293. if(!MissionStarted) return 1;
  294. MissionStarted= false;
  295. if(!MissionCancelled && !ObjectiveStarted)
  296. {
  297. new string[128];
  298. new amount= 10000;
  299. new winning_team;
  300. if(Team[TEAM_DEFEND][Members] == Team[TEAM_ATTACK][Members]) { winning_team = 2; }
  301. else if(Team[TEAM_DEFEND][Members] > Team[TEAM_ATTACK][Members]) { winning_team = 0; }
  302. else { winning_team = 1; }
  303.  
  304. if(winning_team != 2 && ObjectiveStarted)
  305. {
  306. amount +=Team[winning_team][Kills]*100;
  307. format(string,sizeof(string),""SERVER_KEY_MSG" %s has won the last team standing deathmatch! Reward: $%d",Team[winning_team][Name],amount);
  308. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  309. SendClientMessageToAll(COLOR_SERVER,string);
  310. for(new i=0,j=GetPlayerPoolSize(); i <= j; i++)
  311. {
  312. if(PlayerMissionInfo[i][TeamSelection] == winning_team && PlayerMissionInfo[i][TeamChosen])
  313. {
  314. PlayerPlaySound(i,3200,0,0,0);
  315. CallRemoteFunction("GivePlayerCash","ii",i,amount);
  316. CallRemoteFunction("PlayerMissionStats","dd",i,0);
  317. }
  318. if(PlayerMissionInfo[i][TeamSelection] != winning_team && PlayerMissionInfo[i][TeamChosen])
  319. {
  320. PlayerPlaySound(i,17004,0,0,0);
  321. GameTextForPlayer(i,"~R~MISSION FAILED~w~!",3000,3);
  322. CallRemoteFunction("PlayerMissionStats","dd",i,1);
  323. }
  324. }
  325. }
  326. else
  327. {
  328. PlaySoundForAll(1058);
  329. format(string,sizeof(string),""SERVER_KEY_MSG" IT'S A DRAW! No team has won the last team standing deathmatch.");
  330. SendClientMessageToAll(COLOR_SERVER,string);
  331. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  332. for(new i=0,j=GetPlayerPoolSize(); i <= j; i++)
  333. {
  334. if(PlayerMissionInfo[i][TeamChosen])
  335. {
  336. CallRemoteFunction("PlayerMissionStats","dd",i,2);
  337. }
  338. }
  339. }
  340. }
  341. else
  342. {
  343. PlaySoundForAll(1058);
  344. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The mission has been cancelled.");
  345. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The mission has been cancelled.",IRC_SERVER_COLOR);
  346. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The mission has been cancelled.",0);
  347. GameTextForAll("~R~MISSION CANCELLED~w~!",3000,3);
  348. }
  349.  
  350. return 1;
  351. }
  352.  
  353. //==============================================================================
  354. // Mission functions
  355. //==============================================================================
  356.  
  357. PlaySoundForAll(sound)
  358. {
  359. for (new i=0,j=GetPlayerPoolSize(); i <=j ; i++)
  360. {
  361. if(IsPlayerConnected(i)) PlayerPlaySound(i,sound,0,0,0);
  362. }
  363. }
  364.  
  365.  
  366. ToggleControllable(control)
  367. {
  368. for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
  369. {
  370. if(IsPlayerConnected(i))
  371. {
  372. if(CallRemoteFunction("GetAliveState","i",i)) TogglePlayerControllable(i,control);
  373. }
  374. }
  375. return 1;
  376. }
  377.  
  378. //==============================================================================
  379. // Important functions required
  380. //==============================================================================
  381.  
  382. FUNCTION CancelTheMission()
  383. {
  384. MissionCancelled= true;
  385. return 1;
  386. }
  387.  
  388. FUNCTION OnPlayerNameRecieve(playerid,name[])
  389. {
  390. format(PlayerMissionInfo[playerid][UserName],MAX_PLAYER_NAME,"%s",name);
  391. return 1;
  392. }
  393.  
  394. FUNCTION MissionObjectiveStarted() return ObjectiveStarted;
  395.  
  396. FUNCTION OnPlayerRespawned(playerid)
  397. {
  398. if(PlayerMissionInfo[playerid][Counted])
  399. {
  400. Team[PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][TeamID]][Members]--;
  401. PlayerMissionInfo[playerid][Counted]= false;
  402. }
  403. PlayerMissionInfo[playerid][AllowedToSpawn]= true;
  404. return 1;
  405. }
Advertisement
Add Comment
Please, Sign In to add comment