Bulletje

Untitled

Jan 21st, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.39 KB | None | 0 0
  1. /*
  2. Script by: Bullet
  3. Map by: MiD
  4. Mission Base: Stealing
  5. Mission Type: Vehicle stealing
  6. Mission Type ID: 3
  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 "Gone In Seconds"
  23. #define Health 99.0
  24. #define TEAM_DEFEND_NAME "Security"
  25. #define TEAM_ATTACK_NAME "Robber"
  26. #define MAX_MAP_OBJECTS 37
  27. #define VEHICLE_HEALTH 999.0
  28. #define CLASS_POSTION 414.1389,2535.3748,19.1484
  29. #define CLASS_CAMERA 416.1389,2537.3748,19.1484
  30. #define CLASS_FACING_AGNLE 175.9721
  31. #define OBJ_POS -1954.8777,303.5036,40.7530,180.0000000
  32. #define OBJ_ID 451
  33. #define OBJ_NAME "Sport Car"
  34. #define CP_POS -2046.7501,-237.5858,35.3203
  35. #define SPAWN_PROTECTION true
  36.  
  37. //==============================================================================
  38. // Per mission functions
  39. //==============================================================================
  40.  
  41. enum skindata
  42. {
  43. TeamID,
  44. SkinID,
  45. Float:SpawnX,
  46. Float:SpawnY,
  47. Float:SpawnZ,
  48. Float:SpawnAngle,
  49. SpawnInterior,
  50. VirtualWorld,
  51. Weapon1,
  52. Ammo1,
  53. Weapon2,
  54. Ammo2,
  55. Weapon3,
  56. Ammo3,
  57. };
  58.  
  59. new const SkinData[][skindata] = {
  60. {TEAM_ATTACK,124, -2091.5039, -275.3531, 35.3203, 343.0164,0,0,WEAPON_DEAGLE,100,WEAPON_MP5,200,WEAPON_M4,250},
  61. {TEAM_DEFEND,73,-1928.1935,275.7250,41.0469,172.4459,0,0,WEAPON_SHOTGSPA,200,WEAPON_AK47,250,WEAPON_COLT45,250}
  62.  
  63. };
  64.  
  65. #if MAX_MAP_OBJECTS != 0
  66. new Object[MAX_MAP_OBJECTS];
  67.  
  68. CreateMap()
  69. {
  70. Object[0] = CreateObject(1634,-2040.7939000,-105.9988000,35.2578000,0.0000000,0.0000000,0.0000000); //
  71. Object[1] = CreateObject(1634,-2044.9318000,-106.0025000,35.2513000,0.0000000,0.0000000,0.0000000); //
  72. Object[2] = CreateObject(1634,-2049.0347000,-106.0049000,35.2675000,0.0000000,0.0000000,0.0000000); //
  73. Object[3] = CreateObject(1634,-2053.1612000,-106.0040000,35.2820000,0.0000000,0.0000000,0.0000000); //
  74. Object[4] = CreateObject(1634,-2040.8254000,-98.7535000,35.2113000,0.0000000,0.0000000,180.0000000); //
  75. Object[5] = CreateObject(1634,-2044.9373000,-98.7111000,35.1940000,0.0000000,0.0000000,180.0000000); //
  76. Object[6] = CreateObject(1634,-2049.0267000,-98.7214000,35.1940000,0.0000000,0.0000000,180.0000000); //
  77. Object[7] = CreateObject(1634,-2053.1307000,-98.7739000,35.2113000,0.0000000,0.0000000,180.0000000); //
  78. Object[8] = CreateObject(969,-1893.0123000,247.4494000,40.2137000,0.0000000,0.0000000,258.7500000); //
  79. Object[9] = CreateObject(975,-1892.1238000,251.9661000,41.7215000,0.0000000,0.0000000,258.7500000); //
  80. Object[10] = CreateObject(975,-1890.3895000,260.7105000,41.7215000,0.0000000,0.0000000,258.7500000); //
  81. Object[11] = CreateObject(975,-1888.5888000,269.4495000,41.7215000,0.0000000,0.0000000,258.7500000); //
  82. Object[12] = CreateObject(975,-1886.8320000,278.1831000,41.7215000,0.0000000,0.0000000,258.7500000); //
  83. Object[13] = CreateObject(975,-1885.0732000,286.9045000,41.7215000,0.0000000,0.0000000,258.7500000); //
  84. Object[14] = CreateObject(969,-1882.4771000,299.8583000,40.2137000,0.0000000,0.0000000,258.7500000); //
  85. Object[15] = CreateObject(969,-1890.5918000,303.4466000,40.2137000,0.0000000,0.0000000,337.5000000); //
  86. Object[16] = CreateObject(975,-1894.8262000,305.2325000,41.7215000,0.0000000,0.0000000,337.5000000); //
  87. Object[17] = CreateObject(969,-1907.7289000,306.9239000,40.2137000,0.0000000,0.0000000,0.0000000); //
  88. Object[18] = CreateObject(1424,-1895.6689000,239.8876000,40.5603000,0.0000000,0.0000000,359.9999000); //
  89. Object[19] = CreateObject(1424,-1897.7046000,239.8904000,40.5603000,0.0000000,0.0000000,359.9999000); //
  90. Object[20] = CreateObject(1424,-1899.8117000,239.9165000,40.5603000,0.0000000,0.0000000,359.9999000); //
  91. Object[21] = CreateObject(969,-1990.4964000,300.1333000,34.3462000,0.0000000,0.0000000,90.0000000); //
  92. Object[22] = CreateObject(969,-1990.0817000,309.2105000,34.3387000,0.0000000,0.0000000,0.0000000); //
  93. Object[23] = CreateObject(969,-1992.5593000,268.5641000,34.3387000,0.0000000,0.0000000,78.7500000); //
  94. Object[24] = CreateObject(975,-1986.1559000,277.2025000,35.8540000,0.0000000,0.0000000,0.0000000); //
  95. Object[25] = CreateObject(975,-1985.8464000,299.9063000,35.8465000,0.0000000,0.0000000,180.0000000); //
  96. Object[26] = CreateObject(975,-1992.6287000,263.9050000,35.8540000,0.0000000,0.0000000,90.0000000); //
  97. Object[27] = CreateObject(975,-1993.5073000,255.0361000,35.8465000,0.0000000,0.0000000,78.7500000); //
  98. Object[28] = CreateObject(975,-1994.3864000,246.1780000,35.8465000,0.0000000,0.0000000,90.0000000); //
  99. Object[29] = CreateObject(975,-1989.8406000,241.6533000,35.8465000,0.0000000,0.0000000,180.0000000); //
  100. Object[30] = CreateObject(1424,-1984.1900000,241.2887000,34.6853000,0.0000000,0.0000000,337.4999000); //
  101. Object[31] = CreateObject(1424,-1981.9886000,240.2049000,34.6853000,0.0000000,0.0000000,326.2500000); //
  102. Object[32] = CreateObject(969,-1904.0733000,237.3343000,34.2888000,0.0000000,0.0000000,180.0000000); //
  103. Object[33] = CreateObject(1424,-1903.1176000,237.2002000,34.6447000,0.0000000,0.0000000,44.9999000); //
  104. Object[34] = CreateObject(1424,-1913.3563000,237.3944000,34.6447000,0.0000000,0.0000000,315.0000000); //
  105. Object[35] = CreateObject(969,-1980.3606000,277.5171000,34.3387000,0.0000000,0.0000000,90.0000000); //
  106. Object[36] = CreateObject(969,-1980.3377000,290.5290000,34.3387000,0.0000000,0.0000000,90.0000000); //
  107. for(new i; i < 10; i++) AddStaticVehicle(487,floatadd(-2090.2080,floatmul(8.2, i)),-268.5651,34.9982,0.0,-1,-1); // helicopters
  108. for(new i; i < 20; i++) AddStaticVehicle(479,floatadd(-2090.3660,floatmul(3.85, i)),-257.5562,34.6133,0.0,-1,-1); // cars
  109. }
  110. #endif
  111.  
  112.  
  113. //==============================================================================
  114. // Basic vars
  115. //==============================================================================
  116.  
  117. new bool:MissionStarted;
  118. new bool:ObjectiveStarted;
  119. new bool:MissionCancelled;
  120.  
  121. new bool:ObjectiveStolen;
  122. new ObjectiveStolenBy;
  123.  
  124. native IsValidVehicle(vehicleid);
  125.  
  126. enum obj
  127. {
  128. ObjectiveVeh,
  129. ObjectiveName[30],
  130. ObjectiveMarker,
  131. Float:ObjectiveEndX,
  132. Float:ObjectiveEndY,
  133. Float:ObjectiveEndZ
  134. };
  135.  
  136. enum teamdata
  137. {
  138. Name[32],
  139. Members,
  140. Kills
  141. };
  142.  
  143. enum playerdata
  144. {
  145. UserName[MAX_PLAYER_NAME],
  146. bool:TeamChosen,
  147. TeamSelection,
  148. PlayerClassID
  149. };
  150. new Team[2][teamdata];
  151. new PlayerMissionInfo[MAX_PLAYERS][playerdata];
  152. new ObjectiveInfo[obj];
  153.  
  154. //==============================================================================
  155. // Basic script
  156. //==============================================================================
  157.  
  158. main()
  159. {
  160. print("----------------------------------");
  161. print(" Mission: "MISSION_NAME" started.");
  162. print("----------------------------------\n");
  163. }
  164.  
  165. public OnGameModeInit()
  166. {
  167. MissionStarted= true;
  168. format(Team[TEAM_DEFEND][Name],32,"%s",TEAM_DEFEND_NAME);
  169. format(Team[TEAM_ATTACK][Name],32,"%s",TEAM_ATTACK_NAME);
  170.  
  171. format(ObjectiveInfo[ObjectiveName],sizeof(ObjectiveInfo[ObjectiveName]),"%s",OBJ_NAME);
  172.  
  173. ObjectiveInfo[ObjectiveVeh] = CreateVehicle(OBJ_ID,OBJ_POS,random(225),random(225),3);
  174. SetVehicleHealth(ObjectiveInfo[ObjectiveVeh],1100);
  175.  
  176. new iEngine, iLights, iAlarm, iDoors, iBonnet, iBoot, iObjective;
  177. GetVehicleParamsEx(ObjectiveInfo[ObjectiveVeh], iEngine, iLights, iAlarm, iDoors, iBonnet, iBoot, iObjective);
  178. SetVehicleParamsEx(ObjectiveInfo[ObjectiveVeh], iEngine, iLights, iAlarm, iDoors, iBonnet, iBoot, 1);
  179.  
  180. AddStaticVehicleEx(476,290.5000000,2539.1001000,18.0000000,180.0000000,170,157,15); //Rustler
  181. AddStaticVehicleEx(476,324.7000100,2538.8000500,18.0000000,180.0000000,170,157,15); //Rustler
  182. AddStaticVehicleEx(476,274.7999900,2522.1001000,17.9000000,270.0000000,170,157,15); //Rustler
  183. AddStaticVehicleEx(476,274.7000100,2509.0000000,17.7000000,270.0000000,170,157,15); //Rustler
  184. AddStaticVehicleEx(476,263.5000000,2522.1001000,17.9000000,270.0000000,170,157,15); //Rustler
  185. AddStaticVehicleEx(476,274.8999900,2482.3000500,17.7000000,270.0000000,170,157,15); //Rustler
  186. AddStaticVehicleEx(476,274.7998000,2495.2998000,17.7000000,270.0000000,170,157,15); //Rustler
  187. AddStaticVehicleEx(476,252.7000000,2522.1999500,17.9000000,270.0000000,170,157,15); //Rustler
  188. AddStaticVehicleEx(476,242.3999900,2522.1999500,17.9000000,270.0000000,170,157,15); //Rustler
  189. AddStaticVehicleEx(476,231.3999900,2522.1999500,17.9000000,270.0000000,170,157,15); //Rustler
  190. AddStaticVehicleEx(476,263.6000100,2509.3999000,17.7000000,270.0000000,170,157,15); //Rustler
  191. AddStaticVehicleEx(476,252.6000100,2509.6999500,17.7000000,270.0000000,170,157,15); //Rustler
  192. AddStaticVehicleEx(476,242.3000000,2510.1001000,17.7000000,270.0000000,170,157,15); //Rustler
  193. AddStaticVehicleEx(476,231.3000000,2510.3000500,17.7000000,270.0000000,170,157,15); //Rustler
  194. AddStaticVehicleEx(476,231.3999900,2496.8000500,17.7000000,270.0000000,170,157,15); //Rustler
  195. AddStaticVehicleEx(476,231.6000100,2483.3999000,17.7000000,270.0000000,170,157,15); //Rustler
  196. AddStaticVehicleEx(476,242.0000000,2483.8000500,17.7000000,270.0000000,170,157,15); //Rustler
  197. AddStaticVehicleEx(476,252.2000000,2483.8000500,17.7000000,270.0000000,170,157,15); //Rustler
  198. AddStaticVehicleEx(476,263.2999900,2483.6999500,17.7000000,270.0000000,170,157,15); //Rustler
  199. AddStaticVehicleEx(476,263.3999900,2495.8999000,17.7000000,270.0000000,170,157,15); //Rustler
  200. AddStaticVehicleEx(476,252.5000000,2496.1001000,17.7000000,270.0000000,170,157,15); //Rustler
  201. AddStaticVehicleEx(476,242.0000000,2496.5000000,17.7000000,270.0000000,170,157,15); //Rustler
  202. AddStaticVehicleEx(405,341.0000000,2530.1999500,16.8000000,270.0000000,34,25,15); //Sentinel
  203. AddStaticVehicleEx(405,340.8999900,2533.3000500,16.8000000,270.0000000,34,25,15); //Sentinel
  204. AddStaticVehicleEx(405,340.8999900,2536.6001000,16.8000000,270.0000000,34,25,15); //Sentinel
  205. AddStaticVehicleEx(405,341.0000000,2540.0000000,16.8000000,270.0000000,34,25,15); //Sentinel
  206. AddStaticVehicleEx(405,340.8999900,2543.5000000,16.8000000,270.0000000,34,25,15); //Sentinel
  207. AddStaticVehicleEx(405,342.0000000,2547.3999000,16.8000000,230.0000000,34,25,15); //Sentinel
  208. AddStaticVehicleEx(405,347.3999900,2547.0000000,16.7000000,179.9990000,34,25,15); //Sentinel
  209. AddStaticVehicleEx(405,350.8999900,2546.8000500,16.7000000,179.9950000,34,25,15); //Sentinel
  210. AddStaticVehicleEx(405,354.1000100,2546.8000500,16.6000000,179.9950000,34,25,15); //Sentinel
  211. AddStaticVehicleEx(405,357.5000000,2546.6999500,16.6000000,179.9950000,34,25,15); //Sentinel
  212. AddStaticVehicleEx(405,360.7999900,2546.6001000,16.6000000,179.9950000,34,25,15); //Sentinel
  213. AddStaticVehicleEx(405,364.5000000,2546.6001000,16.5000000,179.9950000,34,25,15); //Sentinel
  214. AddStaticVehicleEx(405,368.2000100,2546.8000500,16.5000000,179.9950000,34,25,15); //Sentinel
  215. AddStaticVehicleEx(405,371.6000100,2546.8000500,16.5000000,179.9950000,34,25,15); //Sentinel
  216. AddStaticVehicleEx(405,375.3999900,2546.6001000,16.5000000,179.9950000,34,25,15); //Sentinel
  217. AddStaticVehicleEx(405,379.0000000,2546.6999500,16.5000000,179.9950000,34,25,15); //Sentinel
  218. AddStaticVehicleEx(405,383.0000000,2546.8000500,16.5000000,179.9950000,34,25,15); //Sentinel
  219. AddStaticVehicleEx(405,387.1000100,2546.8999000,16.5000000,179.9950000,34,25,15); //Sentinel
  220. AddStaticVehicleEx(405,387.1000100,2534.6001000,16.5000000,179.9950000,34,25,15); //Sentinel
  221. AddStaticVehicleEx(405,383.7999900,2534.5000000,16.5000000,179.9950000,34,25,15); //Sentinel
  222. AddStaticVehicleEx(405,379.3999900,2534.8000500,16.6000000,179.9950000,34,25,15); //Sentinel
  223. AddStaticVehicleEx(405,375.1000100,2534.8999000,16.6000000,179.9950000,34,25,15); //Sentinel
  224. AddStaticVehicleEx(405,371.3999900,2535.1001000,16.6000000,179.9950000,34,25,15); //Sentinel
  225. AddStaticVehicleEx(405,367.8999900,2535.1999500,16.7000000,179.9950000,34,25,15); //Sentinel
  226. AddStaticVehicleEx(405,364.5000000,2535.1001000,16.7000000,179.9950000,34,25,15); //Sentinel
  227. AddStaticVehicleEx(405,361.1000100,2535.3000500,16.7000000,179.9950000,34,25,15); //Sentinel
  228. AddStaticVehicleEx(405,357.3999900,2535.1001000,16.7000000,179.9950000,34,25,15); //Sentinel
  229. AddStaticVehicleEx(405,353.7000100,2535.1999500,16.7000000,179.9950000,34,25,15); //Sentinel
  230. AddStaticVehicleEx(405,350.7000100,2535.1999500,16.7000000,179.9950000,34,25,15); //Sentinel
  231. AddStaticVehicleEx(574,1339.0000000,1550.6999500,10.6000000,0.0000000,255,255,15); //Sweeper
  232. AddStaticVehicleEx(574,1336.5000000,1550.6999500,10.6000000,0.0000000,255,255,15); //Sweeper
  233. AddStaticVehicleEx(552,1346.5000000,1632.1999500,10.6000000,270.0000000,255,255,15); //Utility
  234. AddStaticVehicleEx(552,1346.5000000,1628.1999500,10.6000000,270.0000000,255,255,15); //Utility
  235. AddStaticVehicleEx(552,1346.5000000,1624.3000500,10.6000000,270.0000000,255,255,15); //Utility
  236. AddStaticVehicleEx(407,1292.6999500,1565.5000000,11.2000000,270.0000000,185,-1,15); //Firetruck
  237. AddStaticVehicleEx(416,1294.0000000,1560.3000500,11.1000000,270.0000000,255,255,15); //Ambulance
  238. AddStaticVehicleEx(417,1326.5999800,1406.6999500,11.0000000,0.0000000,-1,-1,15); //Leviathan
  239. AddStaticVehicleEx(487,1328.0999800,1505.3000500,11.1000000,270.0000000,93,126,15); //Maverick
  240. AddStaticVehicleEx(487,1334.5000000,1692.1999500,11.1000000,270.0000000,93,126,15); //Maverick
  241. AddStaticVehicleEx(563,1341.9000200,1407.3000500,11.7000000,0.0000000,255,255,15); //Raindance
  242. AddStaticVehicleEx(511,1285.0999800,1323.9000200,12.3000000,270.0000000,189,190,15); //Beagle
  243. AddStaticVehicleEx(553,1521.5000000,1171.8000500,13.0000000,0.0000000,147,163,15); //Nevada
  244. AddStaticVehicleEx(593,1398.1999500,1768.1999500,11.4000000,180.0000000,48,79,15); //Dodo
  245. AddStaticVehicleEx(593,1380.5999800,1768.1999500,11.4000000,180.0000000,48,79,15); //Dodo
  246. AddStaticVehicleEx(577,1601.1999500,1264.0000000,9.8000000,40.0000000,189,190,15); //AT-400
  247.  
  248. #if MAX_MAP_OBJECTS != 0
  249. CreateMap();
  250. #endif
  251.  
  252. for(new i=0; i<sizeof(SkinData); i++)
  253. {
  254. AddPlayerClassEx(SkinData[i][TeamID],SkinData[i][SkinID],SkinData[i][SpawnX],SkinData[i][SpawnY],SkinData[i][SpawnZ],SkinData[i][SpawnAngle],0,0,0,0,0,0);
  255. }
  256.  
  257. for(new i=0; i<MAX_PLAYERS; i++) PlayerMissionInfo[i][TeamSelection]= NO_TEAM;
  258.  
  259. for(new i=0; i<MAX_VEHICLES; i++) if(IsValidVehicle(i)) SetVehicleHealth(i,VEHICLE_HEALTH);
  260.  
  261. if(CallRemoteFunction("GetCurrentMissionCJWalk","")) UsePlayerPedAnims();
  262. SetTimer("StartMissionFunc",3000,false);
  263. return 1;
  264. }
  265.  
  266. FUNCTION StartMissionFunc()
  267. {
  268. CallRemoteFunction("StartMission","");
  269. ObjectiveStarted= true;
  270. return 1;
  271. }
  272.  
  273. public OnGameModeExit()
  274. {
  275. #if MAX_MAP_OBJECTS != 0
  276. for(new i=0;i<MAX_MAP_OBJECTS;i++) DestroyObject(Object[i]);
  277. #endif
  278. for(new i=0; i<MAX_VEHICLES; i++)
  279. {
  280. DestroyVehicle(i);
  281. }
  282. return 1;
  283. }
  284.  
  285. public OnPlayerDisconnect(playerid)
  286. {
  287. if(PlayerMissionInfo[playerid][TeamChosen] && PlayerMissionInfo[playerid][TeamSelection] != NO_TEAM)
  288. {
  289. Team[PlayerMissionInfo[playerid][TeamSelection]][Members] --;
  290. PlayerMissionInfo[playerid][TeamChosen]=false;
  291. }
  292. return 1;
  293. }
  294.  
  295. public OnPlayerRequestClass(playerid,classid)
  296. {
  297. SetPlayerPos(playerid,CLASS_POSTION);
  298. SetPlayerCameraPos(playerid,CLASS_CAMERA);
  299. SetPlayerCameraLookAt(playerid,CLASS_POSTION);
  300. SetPlayerFacingAngle(playerid,CLASS_FACING_AGNLE);
  301.  
  302. CallRemoteFunction("ShowClassSelection","iisiii",playerid, SkinData[classid][TeamID],Team[SkinData[classid][TeamID]][Name], SkinData[classid][Weapon1], SkinData[classid][Weapon2], SkinData[classid][Weapon3]);
  303.  
  304. if(PlayerMissionInfo[playerid][TeamChosen])
  305. {
  306. PlayerMissionInfo[playerid][TeamChosen] = false;
  307. Team[PlayerMissionInfo[playerid][TeamSelection]][Members]--;
  308. }
  309.  
  310. PlayerMissionInfo[playerid][TeamSelection] = SkinData[classid][TeamID];
  311. PlayerMissionInfo[playerid][PlayerClassID]=classid;
  312. return 1;
  313. }
  314.  
  315. public OnPlayerRequestSpawn(playerid)
  316. {
  317. new opp_team = (PlayerMissionInfo[playerid][TeamSelection] == 1)? 0:1;
  318. if(Team[PlayerMissionInfo[playerid][TeamSelection]][Members] > Team[opp_team][Members])
  319. {
  320. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1, "This Team is full, choose another!",0);
  321. return 0;
  322. }
  323. return 1;
  324. }
  325.  
  326.  
  327.  
  328. public OnPlayerSpawn(playerid)
  329. {
  330. SetPlayerHealth(playerid,Health);
  331. new string[124];
  332. CallRemoteFunction("UpdateAliveState","ii",playerid,1);
  333. if(CallRemoteFunction("GetSpectateStatus","d",playerid)) return CallRemoteFunction("SpecOffAdmin","d",playerid);
  334. if(CallRemoteFunction("GetJailedStatus","d",playerid)) CallRemoteFunction("SetJailed","d",playerid);
  335. else
  336. {
  337. SetPlayerPos(playerid,SkinData[PlayerMissionInfo[playerid][PlayerClassID]][SpawnX],SkinData[PlayerMissionInfo[playerid][PlayerClassID]][SpawnY],SkinData[PlayerMissionInfo[playerid][PlayerClassID]][SpawnZ]);
  338. SetPlayerInterior(playerid,SkinData[PlayerMissionInfo[playerid][PlayerClassID]][SpawnInterior]);
  339. SetPlayerFacingAngle(playerid,SkinData[PlayerMissionInfo[playerid][PlayerClassID]][SpawnAngle]);
  340. SetPlayerVirtualWorld(playerid,SkinData[PlayerMissionInfo[playerid][PlayerClassID]][VirtualWorld]);
  341. if(!PlayerMissionInfo[playerid][TeamChosen])
  342. {
  343. Team[PlayerMissionInfo[playerid][TeamSelection]][Members]++;
  344. PlayerMissionInfo[playerid][TeamChosen] = true;
  345. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK)
  346. {
  347. format(string,sizeof(string),"You are a %s, your mission is to steal the %s.",Team[TEAM_ATTACK][Name],ObjectiveInfo[ObjectiveName]);
  348. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,string,2000);
  349. format(string,sizeof(string),"%s will try to stop you, eliminate them!.",Team[TEAM_DEFEND][Name]);
  350. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1, string,4000);
  351. format(string,sizeof(string),"Steal the ~y~%s~w~!",ObjectiveInfo[ObjectiveName]);
  352. CallRemoteFunction("ShowInfoText", "iisi", playerid, -1, string,1000);
  353. }
  354. else
  355. {
  356. format(string,sizeof(string),"You are a %s, your mission is to protect the %s from %s.",Team[TEAM_DEFEND][Name],ObjectiveInfo[ObjectiveName],Team[TEAM_ATTACK][Name]);
  357. CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,string,2000);
  358. format(string,sizeof(string),"Protect the ~y~%s~w~!.",ObjectiveInfo[ObjectiveName]);
  359. CallRemoteFunction("ShowInfoText", "iisi", playerid, -1, string,1000);
  360. }
  361. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,SkinData[PlayerMissionInfo[playerid][PlayerClassID]][Weapon1],SkinData[PlayerMissionInfo[playerid][PlayerClassID]][Ammo1]);
  362. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,SkinData[PlayerMissionInfo[playerid][PlayerClassID]][Weapon2],SkinData[PlayerMissionInfo[playerid][PlayerClassID]][Ammo2]);
  363. CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,SkinData[PlayerMissionInfo[playerid][PlayerClassID]][Weapon3],SkinData[PlayerMissionInfo[playerid][PlayerClassID]][Ammo3]);
  364. }
  365. }
  366. SetPlayerTeam(playerid,PlayerMissionInfo[playerid][TeamSelection]);
  367. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK) SetPlayerColor(playerid,COLOR_TEAM_ATTACK);
  368. else SetPlayerColor(playerid,COLOR_TEAM_DEFEND);
  369. #if SPAWN_PROTECTION == true
  370. CallRemoteFunction("SetSpawnProtection","df",playerid,Health);
  371. #endif
  372.  
  373. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_DEFEND) SetVehicleParamsForPlayer(ObjectiveInfo[ObjectiveVeh],playerid,1,1);
  374. else SetVehicleParamsForPlayer(ObjectiveInfo[ObjectiveVeh],playerid,1,0);
  375. return 1;
  376. }
  377.  
  378. public OnPlayerDeath(playerid, killerid, reason)
  379. {
  380. if(killerid != INVALID_PLAYER_ID)
  381. {
  382. SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
  383. Team[PlayerMissionInfo[killerid][TeamSelection]][Kills]++;
  384. }
  385. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK)
  386. {
  387. if(GetPlayerVehicleID(playerid) == ObjectiveInfo[ObjectiveVeh])
  388. {
  389. new string[124];
  390. format(string,sizeof(string),"%s has died and left the %s's %s.",PlayerMissionInfo[playerid][UserName],Team[TEAM_DEFEND][Name],ObjectiveInfo[ObjectiveName]);
  391. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1, string,0);
  392. DisablePlayerRaceCheckpoint(playerid);
  393. }
  394. }
  395. CallRemoteFunction("UpdateAliveState","ii",playerid,0);
  396. return 1;
  397. }
  398.  
  399. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  400. {
  401. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK)
  402. {
  403. if(vehicleid == ObjectiveInfo[ObjectiveVeh])
  404. {
  405. new string[124];
  406. format(string,sizeof(string),"%s is stealing the %s's %s.",PlayerMissionInfo[playerid][UserName],Team[TEAM_DEFEND][Name],ObjectiveInfo[ObjectiveName]);
  407. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1, string,0);
  408. SetPlayerCheckpoint(playerid,CP_POS,10.0);
  409. }
  410. }
  411. else
  412. {
  413. if(vehicleid == ObjectiveInfo[ObjectiveVeh])
  414. {
  415. new Float:x,Float:y,Float:z;
  416. GetPlayerPos(playerid,x,y,z);
  417. SetPlayerPos(playerid,x,y,z+3);
  418. ClearAnimations(playerid);
  419. }
  420. }
  421. return 1;
  422. }
  423.  
  424. public OnPlayerExitVehicle(playerid, vehicleid)
  425. {
  426. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK)
  427. {
  428. if(vehicleid == ObjectiveInfo[ObjectiveVeh])
  429. {
  430. new string[124];
  431. format(string,sizeof(string),"%s has left the %s's %s.",PlayerMissionInfo[playerid][UserName],Team[TEAM_DEFEND][Name],ObjectiveInfo[ObjectiveName]);
  432. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1, string,0);
  433. DisablePlayerCheckpoint(playerid);
  434. }
  435. }
  436. }
  437.  
  438. public OnPlayerEnterCheckpoint(playerid)
  439. {
  440. if(!MissionStarted || ObjectiveStolen) return 1;
  441. if(PlayerMissionInfo[playerid][TeamSelection] == TEAM_ATTACK)
  442. {
  443. if(GetPlayerVehicleID(playerid) == ObjectiveInfo[ObjectiveVeh])
  444. {
  445. new string[124];
  446. format(string,sizeof(string),"%s has stolen the %s's %s.",PlayerMissionInfo[playerid][UserName],Team[TEAM_DEFEND][Name],ObjectiveInfo[ObjectiveName]);
  447. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1, string,0);
  448. for(new i=0,j=GetPlayerPoolSize(); i <= j; i++) if(IsPlayerConnected(i)) DisablePlayerCheckpoint(i);
  449. DestroyVehicle(ObjectiveInfo[ObjectiveVeh]);
  450. ObjectiveStolen= true;
  451. ObjectiveStolenBy=playerid;
  452. CallRemoteFunction("EndMission","");
  453. PlayerPlaySound(playerid,1097,0,0,0);
  454. }
  455. }
  456. return 1;
  457. }
  458.  
  459.  
  460.  
  461. public OnVehicleStreamIn(vehicleid, forplayerid)
  462. {
  463. if(vehicleid == ObjectiveInfo[ObjectiveVeh])
  464. {
  465.  
  466. if(PlayerMissionInfo[forplayerid][TeamSelection] == TEAM_DEFEND) SetVehicleParamsForPlayer(ObjectiveInfo[ObjectiveVeh],forplayerid,1,1);
  467. else SetVehicleParamsForPlayer(ObjectiveInfo[ObjectiveVeh],forplayerid,1,0);
  468. }
  469. return 1;
  470. }
  471.  
  472. public OnVehicleSpawn(vehicleid)
  473. {
  474. SetVehicleHealth(vehicleid,VEHICLE_HEALTH);
  475. if(vehicleid == ObjectiveInfo[ObjectiveVeh]) SetVehicleHealth(ObjectiveInfo[ObjectiveVeh],VEHICLE_HEALTH + (100*Team[TEAM_DEFEND][Members]));
  476. return 1;
  477. }
  478.  
  479.  
  480. FUNCTION EndTheMission()
  481. {
  482. if(!MissionStarted) return 1;
  483. MissionStarted= false;
  484. if(!MissionCancelled)
  485. {
  486. new string[128];
  487. new amount= 10000;
  488. if(!ObjectiveStolen)
  489. {
  490. amount+=Team[TEAM_DEFEND][Kills]*100;
  491. format(string,sizeof(string),""SERVER_KEY_MSG" %s has won the mission, by successfully defending the %s. Reward: $%d",Team[TEAM_DEFEND][Name],ObjectiveInfo[ObjectiveName],amount);
  492. SendClientMessageToAll(COLOR_SERVER,string);
  493. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  494. format(string,sizeof(string),""SERVER_KEY_MSG" You have received $%i because your team has won the mission!",amount);
  495. for(new i=0,j=GetPlayerPoolSize(); i <= j; i++)
  496. {
  497. if(!PlayerMissionInfo[i][TeamChosen]) continue;
  498. if(PlayerMissionInfo[i][TeamSelection] == TEAM_DEFEND)
  499. {
  500. PlayerPlaySound(i,3200,0,0,0);
  501. SendClientMessage(i,COLOR_TEAM_DEFEND,string);
  502. CallRemoteFunction("GivePlayerCash","ii",i,amount);
  503. CallRemoteFunction("PlayerMissionStats","dd",i,0);
  504. }
  505. if(PlayerMissionInfo[i][TeamSelection] != TEAM_DEFEND)
  506. {
  507. PlayerPlaySound(i,17004,0,0,0);
  508. GameTextForPlayer(i,"~R~MISSION FAILED~w~!",3000,3);
  509. CallRemoteFunction("PlayerMissionStats","dd",i,1);
  510. }
  511. }
  512. }
  513. else
  514. {
  515. amount+=Team[TEAM_ATTACK][Kills]*100;
  516. format(string,sizeof(string),""SERVER_KEY_MSG" %s (%d) has stolen %s for %s to win the mission. Reward: $%d + Token",PlayerMissionInfo[ObjectiveStolenBy][UserName],ObjectiveInfo[ObjectiveName],ObjectiveStolenBy,Team[TEAM_ATTACK][Name],amount);
  517. SendClientMessageToAll(COLOR_SERVER,string);
  518. CallRemoteFunction("PlayerMissionStats","dd",ObjectiveStolenBy,7);
  519. CallRemoteFunction("GivePlayerToken","dd",ObjectiveStolenBy,1);
  520. CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
  521. format(string,sizeof(string),""SERVER_KEY_MSG" You have received $%i because your team has won the mission!",amount);
  522. for(new i=0,j=GetPlayerPoolSize(); i <= j; i++)
  523. {
  524. if(!PlayerMissionInfo[i][TeamChosen]) continue;
  525. if(PlayerMissionInfo[i][TeamSelection] == TEAM_ATTACK)
  526. {
  527. PlayerPlaySound(i,3200,0,0,0);
  528. SendClientMessage(i,COLOR_TEAM_ATTACK,string);
  529. CallRemoteFunction("GivePlayerCash","ii",i,amount);
  530. CallRemoteFunction("PlayerMissionStats","dd",i,0);
  531. }
  532. if(PlayerMissionInfo[i][TeamSelection] != TEAM_ATTACK)
  533. {
  534. PlayerPlaySound(i,17004,0,0,0);
  535. GameTextForPlayer(i,"~R~MISSION FAILED~w~!",3000,3);
  536. CallRemoteFunction("PlayerMissionStats","dd",i,1);
  537. }
  538. }
  539. }
  540. }
  541. else
  542. {
  543. PlaySoundForAll(1058);
  544. SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The mission has been cancelled.");
  545. CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The mission has been cancelled.",IRC_SERVER_COLOR);
  546. CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The mission has been cancelled.",0);
  547. GameTextForAll("~R~MISSION CANCELLED~w~!",3000,3);
  548. }
  549. return 1;
  550. }
  551.  
  552. //==============================================================================
  553. // Mission functions
  554. //==============================================================================
  555.  
  556. PlaySoundForAll(sound)
  557. {
  558. for (new i=0,j=GetPlayerPoolSize(); i <=j ; i++)
  559. {
  560. if(IsPlayerConnected(i)) PlayerPlaySound(i,sound,0,0,0);
  561. }
  562. }
  563.  
  564. //==============================================================================
  565. // Important functions required
  566. //==============================================================================
  567.  
  568. FUNCTION OnPlayerNameRecieve(playerid,name[])
  569. {
  570. format(PlayerMissionInfo[playerid][UserName],MAX_PLAYER_NAME,"%s",name);
  571. return 1;
  572. }
  573.  
  574. FUNCTION CancelTheMission()
  575. {
  576. MissionCancelled= true;
  577. return 1;
  578. }
  579.  
  580. FUNCTION MissionObjectiveStarted() return ObjectiveStarted;
Add Comment
Please, Sign In to add comment