Bulletje

Untitled

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