Guest User

Kill The President

a guest
Mar 21st, 2019
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.26 KB | None | 0 0
  1. /*
  2. Kill The President Event @ SiaReyes
  3.  
  4. Description:
  5. Kill The President will have a president and 3 guards with him protecting him from getting killed.
  6. Others that join the event will try to kill the president and once the president gets killed,
  7. the murderer will receive his/her prize.
  8.  
  9. Vehicles : Presidents Team = Sultan , Killer team = Rancher
  10. (Vehicles can only be operated by their respective teams)
  11.  
  12. Map: Las venturas
  13. */
  14.  
  15. #include <a_samp>
  16. #include <sscanf2>
  17. #include <foreach>
  18. #include <zcmd>
  19.  
  20.  
  21. #define RED "{FF0000}"
  22. #define WHITE "{FFFFFF}"
  23.  
  24. new Float:PR_Pos[3], // President Position
  25. Float:kl_Pos[3], // Killers Position
  26. IsKTP[MAX_PLAYERS], // Check Player Team ( 1 = killers , 2 = Guards and President, 0 = None)
  27. KTPTickCount, // Time taken to kill the president.
  28. President, // The one who going be president
  29. KTPStarted, // Checks if event is started
  30. KTPActive, // Checks if event is active to join.
  31. KTPPlayers, // Count Players who all are joined!
  32. ktpstr[500], // String
  33. P_veh[2], // President vehicles
  34. K_veh[2], // Killers Vehicle
  35. KTP_WORLD = 100, // KTP world
  36. OldColor[MAX_PLAYERS] = -1, // Stores the player color.
  37. Guards[3]; // 3 Gards
  38.  
  39.  
  40.  
  41. public OnFilterScriptInit()
  42. {
  43. PR_Pos[0] = 1501.3701;
  44. PR_Pos[1] = 2862.2419;
  45. PR_Pos[2] = 10.8247;
  46.  
  47. kl_Pos[0] = 1488.6240;
  48. kl_Pos[1] = 1513.7963;
  49. kl_Pos[2] = 10.8203;
  50.  
  51. KTPStarted = 0;
  52. KTPActive = 0;
  53. KTPPlayers = 0;
  54. KTPTickCount = 0;
  55. President = INVALID_PLAYER_ID;
  56. for(new i = 0; i < 3; i++) Guards[i] = INVALID_PLAYER_ID;
  57.  
  58.  
  59. // === President and his Guards veh ==============
  60. P_veh[0] = AddStaticVehicleEx(560, 1500.2139,2876.3992,10.8203,180.2151, -1, -1, 30, KTP_WORLD);
  61. P_veh[1] = AddStaticVehicleEx(560, 1509.1561,2876.4739,10.8203,181.4684, -1, -1, 30, KTP_WORLD);
  62. //==== Killers and their vehs ====================
  63. K_veh[0] = AddStaticVehicleEx(489, 1505.9078,1526.8363,10.8304,89.3475, -1, -1, 30, KTP_WORLD);
  64. K_veh[1] = AddStaticVehicleEx(489, 1504.1432,1517.1107,10.8327,92.4809, -1, -1, 30, KTP_WORLD);
  65. return 1;
  66. }
  67.  
  68. public OnPlayerConnect(playerid)
  69. {
  70. IsKTP[playerid] = 0;
  71. return 1;
  72. }
  73.  
  74. public OnPlayerDisconnect(playerid, reason)
  75. {
  76. if(IsKTP[playerid] != 0 && KTPStarted == 1)
  77. {
  78. if(playerid == President)
  79. {
  80. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"Event has been finished.");
  81. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"The president has disconnected from the event!");
  82. IsKTP[playerid] = 0;
  83. new found = 0;
  84. foreach(new ii : Player) if(IsKTP[ii] == 1) found++;
  85. if(found == 0)
  86. {
  87. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"The killers has won the round");
  88. foreach(new ii : Player)
  89. {
  90. if(IsKTP[ii] == 2) GivePlayerMoney(ii, 20000*((GetTickCount() - KTPTickCount) / 2000)), SetPlayerScore(ii, GetPlayerScore(ii)+20);
  91. if(IsKTP[ii] != 0)
  92. {
  93. ResetPlayerWeapons(ii);
  94. SetPlayerVirtualWorld(ii, 0);
  95. IsKTP[ii] = 0;
  96. SpawnPlayer(ii);
  97. SetPlayerColor(ii, OldColor[ii]);
  98. }
  99. }
  100. KTPStarted = 0;
  101. KTPActive = 0;
  102. KTPPlayers = 0;
  103. KTPTickCount = 0;
  104. President = INVALID_PLAYER_ID;
  105. for(new i = 0; i < 3; i++) Guards[i] = INVALID_PLAYER_ID;
  106. }
  107. }
  108. else
  109. {
  110. IsKTP[playerid] = 0;
  111. KTPPlayers--;
  112. SetPlayerColor(playerid, OldColor[playerid]);
  113. format(ktpstr, sizeof(ktpstr), ""RED"[EVENT KTP]: "WHITE"%s(%d) has left the event", GetName(playerid), playerid);
  114. SendClientMessageToAll(-1, ktpstr);
  115. }
  116. }
  117. return 1;
  118. }
  119.  
  120. public OnPlayerCommandReceived(playerid, cmdtext[])
  121. {
  122. if(IsKTP[playerid] != 0 && strfind(cmdtext,"exitktp",true) == -1)
  123. {
  124. SendClientMessage(playerid,0xFF0000FF, "ERROR: {FFFFFF}You can not use any command here, type /exitktp to unblock them.");
  125. return 0;
  126. }
  127. return 1;
  128. }
  129.  
  130. public OnPlayerDeath(playerid, killerid, reason)
  131. {
  132. if(IsKTP[playerid] != 0 && KTPStarted == 1)
  133. {
  134. if(playerid == President)
  135. {
  136. if(killerid != INVALID_PLAYER_ID)
  137. {
  138. // If the Playerid is the president and he is killed by a killer.
  139. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"Event has been finished.");
  140. format(ktpstr, sizeof(ktpstr), ""RED"[EVENT KTP]: "WHITE"%s (ID: %d) has won the event in %d seconds.", GetName(killerid), killerid, (KTPTickCount - GetTickCount()) / 1000);
  141. SendClientMessageToAll(-1, ktpstr);
  142. foreach(new ii : Player)
  143. {
  144. if(IsKTP[ii] != 0)
  145. {
  146. ResetPlayerWeapons(ii);
  147. SetPlayerVirtualWorld(ii, 0);
  148. SetPlayerColor(ii, OldColor[ii]);
  149. IsKTP[ii] = 0;
  150. KTPPlayers = 0;
  151. SpawnPlayer(ii);
  152. }
  153. }
  154. GivePlayerMoney(killerid, 20000*((GetTickCount() - KTPTickCount) / 2000));
  155. KTPStarted = 0;
  156. KTPActive = 0;
  157. KTPPlayers = 0;
  158. KTPTickCount = 0;
  159. President = INVALID_PLAYER_ID;
  160. for(new i = 0; i < 3; i++) Guards[i] = INVALID_PLAYER_ID;
  161. }
  162. else
  163. {
  164. // If the Playerid is the president and he is not killed by any killer but he was dead by any collision
  165. SpawnPlayer(playerid);
  166. SetPlayerPos(playerid, PR_Pos[0], PR_Pos[1], PR_Pos[2]);
  167. SetPlayerVirtualWorld(playerid, KTP_WORLD);
  168. ResetPlayerWeapons(playerid);
  169. switch(random(2))
  170. {
  171. case 0:
  172. {
  173. GivePlayerWeapon(playerid, 31, 1000);
  174. GivePlayerWeapon(playerid, 24, 1000);
  175. GivePlayerWeapon(playerid, 27, 8);
  176. GivePlayerWeapon(playerid, 29, 1000);
  177. }
  178. case 1:
  179. {
  180. GivePlayerWeapon(playerid, 30, 1000);
  181. GivePlayerWeapon(playerid, 23, 1000);
  182. GivePlayerWeapon(playerid, 26, 8);
  183. GivePlayerWeapon(playerid, 28, 1000);
  184. }
  185. }
  186. }
  187. }
  188. else
  189. {
  190. // if the Player is not the President but the playerid is a Guard or a Killer, he will removed from the event.
  191. ResetPlayerWeapons(playerid);
  192. SetPlayerVirtualWorld(playerid, 0);
  193. IsKTP[playerid] = 0;
  194. SpawnPlayer(playerid);
  195. KTPPlayers--;
  196. SetPlayerColor(playerid, OldColor[playerid]);
  197. new found = 0;
  198. foreach(new ii : Player) if(IsKTP[ii] == 1) found++;
  199. // Check for total killers
  200. if(found == 0)
  201. {
  202. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"Event has been finished.");
  203. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"The president escaped.");
  204. foreach(new ii : Player)
  205. {
  206. if(IsKTP[ii] == 2) GivePlayerMoney(ii, 20000*((GetTickCount() - KTPTickCount) / 2000)), SetPlayerScore(ii, GetPlayerScore(ii)+20);
  207. if(IsKTP[ii] != 0)
  208. {
  209. ResetPlayerWeapons(ii);
  210. SetPlayerVirtualWorld(ii, 0);
  211. SetPlayerColor(ii, OldColor[ii]);
  212. IsKTP[ii] = 0;
  213. SpawnPlayer(ii);
  214. }
  215. }
  216. KTPStarted = 0;
  217. KTPActive = 0;
  218. KTPPlayers = 0;
  219. KTPTickCount = 0;
  220. President = INVALID_PLAYER_ID;
  221. for(new i = 0; i < 3; i++) Guards[i] = INVALID_PLAYER_ID;
  222. }
  223. }
  224. }
  225. return 1;
  226. }
  227.  
  228. CMD:exitktp(playerid)
  229. {
  230. if(KTPStarted == 0 && KTPActive == 0) return SendClientMessage(playerid, -1, ""RED"There is no KTP event going on!");
  231. if(IsKTP[playerid] == 0) return SendClientMessage(playerid, -1, ""RED" You are not in the event");
  232. if(playerid == President) return SendClientMessage(playerid, -1, ""RED"You are not allowed to exit the event, until it ends!");
  233. for(new i = 0; i < 3; i++) if(playerid == Guards[i]) return SendClientMessage(playerid, -1, ""RED"You are not allowed to exit the event, until it ends!");
  234.  
  235. ResetPlayerWeapons(playerid);
  236. SetPlayerVirtualWorld(playerid, 0);
  237. IsKTP[playerid] = 0;
  238. SpawnPlayer(playerid);
  239. KTPPlayers--;
  240. SetPlayerColor(playerid, OldColor[playerid]);
  241. new found = 0;
  242. foreach(new ii : Player) if(IsKTP[ii] == 1) found++;
  243.  
  244. if(found == 0)
  245. {
  246. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"Event has been finished.");
  247. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: "WHITE"The president escaped.");
  248. foreach(new ii : Player)
  249. {
  250. if(IsKTP[ii] == 2) GivePlayerMoney(ii, 20000*((GetTickCount() - KTPTickCount) / 2000)), SetPlayerScore(ii, GetPlayerScore(ii)+20);
  251. if(IsKTP[ii] != 0)
  252. {
  253. ResetPlayerWeapons(ii);
  254. SetPlayerVirtualWorld(ii, 0);
  255. SetPlayerColor(ii, OldColor[ii]);
  256. IsKTP[ii] = 0;
  257. SpawnPlayer(ii);
  258. }
  259. }
  260. KTPStarted = 0;
  261. KTPActive = 0;
  262. KTPPlayers = 0;
  263. KTPTickCount = 0;
  264. President = INVALID_PLAYER_ID;
  265. for(new i = 0; i < 3; i++) Guards[i] = INVALID_PLAYER_ID;
  266. }
  267. return 1;
  268. }
  269. public OnPlayerSpawn(playerid)
  270. {
  271. return 1;
  272. }
  273.  
  274.  
  275. CMD:startktp(playerid, params[])
  276. {
  277. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, ""RED" You need to be an admin to start an event!");
  278. if(KTPActive == 1) return SendClientMessage(playerid, -1, ""RED" KTP event is already started");
  279. new otherid, guard1 , guard2, guard3;
  280. if(sscanf(params, "dddd", otherid, guard1 , guard2, guard3)) return SendClientMessage(playerid, -1, "Don't put same players ID"), SendClientMessage(playerid, -1, "Usage: /startktp <president> <guard 1> <guard 2> <guard 3>");
  281. if(!IsPlayerConnected(otherid) || !IsPlayerConnected(guard1) || !IsPlayerConnected(guard2) || !IsPlayerConnected(guard3))
  282. return SendClientMessage(playerid, -1, ""RED" One of the selected player is not connected, Please enter a valid player id!");
  283. President = otherid;
  284. Guards[0] = guard1;
  285. Guards[1] = guard2;
  286. Guards[2] = guard3;
  287. KTPActive = 1;
  288. SendClientMessage(playerid, -1, "Okay, Announcing it....");
  289. SendClientMessageToAll(-1, ""RED"[KTP]"WHITE" Kill the president is starting in 20 seconds! Use /ktp to join the event!");
  290. SetTimer("OnKTPStart", 20*1000, false);
  291. return 1;
  292. }
  293.  
  294. CMD:ktp(playerid)
  295. {
  296. if(KTPActive == 0 && KTPStarted == 0) return SendClientMessage(playerid, -1, ""RED"There is no KTP event going on!");
  297. if(playerid == President) return SendClientMessage(playerid, -1, ""RED"You are already signed to the KTP event! 'President'");
  298. for(new i = 0; i < 3; i++) if(playerid == Guards[i]) return SendClientMessage(playerid, -1, ""RED"You are already signed to the KTP event! 'Guard'");
  299. if(KTPPlayers >= 20)
  300. {
  301. SendClientMessage(playerid, -1, ""RED"Sorry you can no longer join the event, it has reached its max players!");
  302. return 1;
  303. }
  304. if(IsKTP[playerid] != 0) return SendClientMessage(playerid, -1, ""RED" You are already in the event");
  305. KTPPlayers++;
  306. IsKTP[playerid] = 1;
  307. SendClientMessage(playerid, -1, ""RED"[EVENT KTP] "WHITE"You have joined the ktp event, you target is the president, so be reay.");
  308. format(ktpstr, sizeof(ktpstr), ""RED"[EVENT KTP] "WHITE" %s(%i) has signed up to Kill the president event, type /ktp ingame to join.", GetName(playerid), playerid);
  309. SendClientMessageToAll(-1, ktpstr);
  310. return 1;
  311. }
  312.  
  313. forward OnKTPStart();
  314. public OnKTPStart()
  315. {
  316. if(KTPPlayers <= 3)
  317. {
  318. KTPStarted = 0;
  319. KTPActive = 0;
  320. KTPPlayers = 0;
  321. KTPTickCount = 0;
  322. President = INVALID_PLAYER_ID;
  323. for(new i = 0; i < 3; i++) Guards[i] = INVALID_PLAYER_ID;
  324. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: The event has ended, Max Players : 4");
  325. return 1;
  326. }
  327. foreach(new ii : Player)
  328. {
  329. if(IsKTP[ii] != 0)
  330. {
  331. SetCameraBehindPlayer(ii);
  332. if(ii == President) SetPlayerPos(ii, PR_Pos[0], PR_Pos[1], PR_Pos[2]);
  333. if(ii == Guards[0] || ii == Guards[1] || ii == Guards[2])
  334. {
  335. new Float: x = PR_Pos[0] + float(random(10));
  336. new Float: y = PR_Pos[1] + float(random(5));
  337. SetPlayerPos(ii, x, y, PR_Pos[2]);
  338. }
  339. else
  340. {
  341. new Float: x = kl_Pos[0] + float(random(10));
  342. new Float: y = kl_Pos[1] + float(random(5));
  343. SetPlayerPos(ii, x, y, kl_Pos[2]);
  344. }
  345. ResetPlayerWeapons(ii);
  346. switch(random(2))
  347. {
  348. case 0:
  349. {
  350. GivePlayerWeapon(ii, 31, 1000);
  351. GivePlayerWeapon(ii, 24, 1000);
  352. GivePlayerWeapon(ii, 27, 8);
  353. GivePlayerWeapon(ii, 29, 1000);
  354. }
  355. case 1:
  356. {
  357. GivePlayerWeapon(ii, 30, 1000);
  358. GivePlayerWeapon(ii, 23, 1000);
  359. GivePlayerWeapon(ii, 26, 8);
  360. GivePlayerWeapon(ii, 28, 1000);
  361. }
  362. }
  363. SetPlayerVirtualWorld(ii, KTP_WORLD);
  364. GameTextForPlayer(ii, "~r~Kill the president.", 5000, 0);
  365. SetPlayerColor(ii, -1);
  366. SetPlayerHealth(ii, 100);
  367. OldColor[ii] = GetPlayerColor(ii);
  368. if(ii == President) SetPlayerColor(ii, 1), IsKTP[ii] = 2;
  369. if(ii == Guards[0] || ii == Guards[1] || ii == Guards[2]) SetPlayerColor(ii, 0x0000BBAA), IsKTP[ii] = 2;
  370. }
  371. }
  372. KTPStarted = 1;
  373. KTPTickCount = GetTickCount();
  374. SendClientMessageToAll(-1, ""RED"[EVENT KTP]: The event has started, Good luck");
  375. return true;
  376. }
  377.  
  378.  
  379. GetName(playerid)
  380. {
  381. new name[MAX_PLAYER_NAME];
  382. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  383. return name;
  384. }
  385.  
  386.  
  387. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  388. {
  389. new Float:POS[3];
  390. for(new i; i < 2; i++)
  391. {
  392. if(vehicleid == P_veh[i] && IsKTP[playerid] == 1 && KTPStarted == 1)
  393. {
  394. GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
  395. SetPlayerPos(playerid, POS[0], POS[1], POS[2]);
  396. SendClientMessage(playerid ,-1, ""RED"This vehicle can only be operated by President and his guards!");
  397. }
  398. if(vehicleid == K_veh[i] && IsKTP[playerid] == 2 && KTPStarted == 1)
  399. {
  400. GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
  401. SetPlayerPos(playerid, POS[0], POS[1], POS[2]);
  402. SendClientMessage(playerid , -1, ""RED"This vehicle can only be operated by killers!");
  403. }
  404. }
  405. return 1;
  406. }
Add Comment
Please, Sign In to add comment