Advertisement
Guest User

Protect The Prime Minister

a guest
Mar 9th, 2014
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.64 KB | None | 0 0
  1. #include <a_samp>
  2. #include <dini>
  3.  
  4.  
  5. //CONFIGURATION
  6. #define RoundTime 10 //(number of minutes)
  7. new AllowPrimeMinisterToDriveCars = 1;
  8. #define StartMoney 10000
  9. //END OF CONFIGURATION
  10.  
  11. #define TEAMLESS 0
  12. #define BODYGUARD 1
  13. #define TERRORIST 2
  14. #define PM 3
  15. #define POLICE 4
  16. #define PSYCHO 5
  17.  
  18. //TEAMCOLORS:
  19. #define TEAMCOLOR_TEAMLESS 0xA9A9A9AA //grey
  20. #define TEAMCOLOR_BODYGUARD 0x87CEEBAA //Lightblue
  21. #define TEAMCOLOR_TERRORIST 0xFF0000AA //Red
  22. #define TEAMCOLOR_PM 0xFFFF00AA //Yellow
  23. #define TEAMCOLOR_POLICE 0x0000FFAA //DarkBlue
  24. #define TEAMCOLOR_PSYCHO 0x32CD32AA //Limegreen
  25.  
  26. #define CARFILE "Protect The PM/Vehicles.txt"
  27.  
  28. static gTeam[MAX_PLAYERS];
  29. new IsPMChosen;
  30. new RoundTimer;
  31. new PMscore, TerroristScore;
  32. new Muted[MAX_PLAYERS];
  33. new Text:Textdraw;
  34. new TimeLeft;
  35. new TextdrawString[128];
  36. new IsDeadPM = -1;
  37.  
  38. new TeamNames[6][15] =
  39. {
  40. "No Team",
  41. "Bodyguard",
  42. "Terrorist",
  43. "Prime Minister",
  44. "PoliceOfficer",
  45. "Psycho"
  46. };
  47.  
  48. main()
  49. {
  50. print(" -------------------------------------- ");
  51. print("| Protect The Prime Minister |");
  52. print("| by |");
  53. print("| =>Diti<= |");
  54. print(" -------------------------------------- ");
  55. if(dini_Exists("Protect The PM/Scores.txt"))
  56. {
  57. print("| Current Score: |");
  58. printf("| Prime Minister %02d - %02d Terrorists |", dini_Int("Protect The PM/Scores.txt", "PMSCORE"), dini_Int("Protect The PM/Scores.txt", "TERRORISTSCORE"));
  59. print(" -------------------------------------- ");
  60. }
  61. }
  62.  
  63.  
  64. public OnGameModeInit()
  65. {
  66. SetGameModeText("Protect The PM");
  67. SetWorldTime(3);
  68.  
  69. //SKINS:
  70.  
  71. //BodyGuards:
  72. AddPlayerClass(163, 0.0, 0.0, 0.0, 0.0, 23, 500, 28, 750, 30, 500);
  73. AddPlayerClass(164, 0.0, 0.0, 0.0, 0.0, 23, 500, 28, 750, 30, 500);
  74. AddPlayerClass(165, 0.0, 0.0, 0.0, 0.0, 23, 500, 28, 750, 30, 500);
  75. AddPlayerClass(166, 0.0, 0.0, 0.0, 0.0, 23, 500, 28, 750, 30, 500);
  76.  
  77. //Terrorists:
  78. AddPlayerClass(121, 0.0, 0.0, 0.0, 0.0, 4, 1, 25, 100, 0, 0);
  79. AddPlayerClass(122, 0.0, 0.0, 0.0, 0.0, 4, 1, 25, 100, 0, 0);
  80. AddPlayerClass(181, 0.0, 0.0, 0.0, 0.0, 4, 1, 25, 100, 0, 0);
  81.  
  82. //Prime Minister:
  83. AddPlayerClass(147, 0.0, 0.0, 0.0, 0.0, 15, 1, 0, 0, 0, 0);
  84.  
  85. //Police:
  86. AddPlayerClass(280, 0.0, 0.0, 0.0, 0.0, 22, 500, 25, 100, 33, 50);
  87. AddPlayerClass(281, 0.0, 0.0, 0.0, 0.0, 22, 500, 25, 100, 33, 50);
  88. AddPlayerClass(282, 0.0, 0.0, 0.0, 0.0, 22, 500, 25, 100, 33, 50);
  89. AddPlayerClass(283, 0.0, 0.0, 0.0, 0.0, 22, 500, 25, 100, 33, 50);
  90. AddPlayerClass(284, 0.0, 0.0, 0.0, 0.0, 22, 500, 25, 100, 33, 50);
  91. AddPlayerClass(285, 0.0, 0.0, 0.0, 0.0, 22, 500, 25, 100, 33, 50);
  92. AddPlayerClass(288, 0.0, 0.0, 0.0, 0.0, 22, 500, 25, 100, 33, 50);
  93.  
  94. //Psycho's:
  95. AddPlayerClass(79, 0.0, 0.0, 0.0, 0.0, 6, 1, 28, 500, 0, 0);
  96. AddPlayerClass(137, 0.0, 0.0, 0.0, 0.0, 6, 1, 28, 500, 0, 0);
  97. AddPlayerClass(213, 0.0, 0.0, 0.0, 0.0, 6, 1, 28, 500, 0, 0);
  98. AddPlayerClass(230, 0.0, 0.0, 0.0, 0.0, 6, 1, 28, 500, 0, 0);
  99. AddPlayerClass(239, 0.0, 0.0, 0.0, 0.0, 6, 1, 28, 500, 0, 0);
  100.  
  101. //Vehicle and object for ClassSelection-Screen:
  102. AddStaticVehicle(484, 4498.3254,-2517.7302,-0.4128,138.2467, -1, -1);
  103. CreateObject(12990, 4495.664063, -2510.759155, 2.373306, 0.0000, 0.0000, 270.0000);
  104.  
  105. //Pickups
  106. AddStaticPickup(1242, 2, -2723.0383,-320.7197,7.8438); //Armor @ PM-spawn
  107. AddStaticPickup(1242, 2, -2718.2517,-315.0976,7.8438); //Armor @ PM-spawn
  108.  
  109. //Load other Vehicles:
  110. LoadVehicles();
  111.  
  112. if(!dini_Exists("Protect The PM/Scores.txt"))
  113. {
  114. dini_Create("Protect The PM/Scores.txt");
  115. dini_IntSet("Protect The PM/Scores.txt", "PMSCORE", 0);
  116. dini_IntSet("Protect The PM/Scores.txt", "TERRORISTSCORE", 0);
  117. }
  118. PMscore = dini_Int("Protect The PM/Scores.txt", "PMSCORE");
  119. TerroristScore = dini_Int("Protect The PM/Scores.txt", "TERRORISTSCORE");
  120. format(TextdrawString, 128, " ");
  121. Textdraw = TextDrawCreate(480, 420, TextdrawString);
  122. TextDrawLetterSize(Textdraw,0.40,1.10);
  123. TextDrawSetShadow(Textdraw, 0);
  124. TextDrawSetOutline(Textdraw, 1);
  125.  
  126. return 1;
  127. }
  128.  
  129. public OnGameModeExit()
  130. {
  131. return 1;
  132. }
  133.  
  134. public OnPlayerRequestClass(playerid, classid)
  135. {
  136. SetPlayerWeather(playerid, 9);
  137. SetPlayerPos(playerid, 4480.9756,-2510.5552,3.6747);
  138. SetPlayerCameraPos(playerid, 4475.0513,-2508.5028,4.1533);
  139. SetPlayerCameraLookAt(playerid, 4480.9756,-2510.5552,3.6747);
  140. SetPlayerFacingAngle(playerid, 91.9195);
  141. switch(classid)
  142. {
  143. case 0..3:
  144. {
  145. GameTextForPlayer(playerid, "~b~Bodyguard", 999999, 6);
  146. gTeam[playerid] = BODYGUARD;
  147. }
  148. case 4..6:
  149. {
  150. GameTextForPlayer(playerid, "~r~Terrorist", 999999, 6);
  151. gTeam[playerid] = TERRORIST;
  152. }
  153. case 7:
  154. {
  155. GameTextForPlayer(playerid, "~y~Prime Minister", 999999, 6);
  156. if(IsPMChosen == 1)
  157. {
  158. GameTextForPlayer(playerid, "~y~Prime Minister~n~~r~Not Available", 999999, 6);
  159. }
  160. gTeam[playerid] = PM;
  161. }
  162. case 8..14:
  163. {
  164. GameTextForPlayer(playerid, "~b~Police", 999999, 6);
  165. gTeam[playerid] = POLICE;
  166. }
  167. case 15..19:
  168. {
  169. GameTextForPlayer(playerid, "~r~Psycho", 999999, 6);
  170. gTeam[playerid] = PSYCHO;
  171. }
  172. }
  173. return 1;
  174. }
  175.  
  176. public OnPlayerRequestSpawn(playerid)
  177. {
  178. new pName[MAX_PLAYER_NAME], str[128];
  179. GetPlayerName(playerid, pName, sizeof(pName));
  180.  
  181. if(IsPMChosen == 1 && gTeam[playerid] == PM)
  182. {
  183. return 0;
  184. }
  185. else if(IsPMChosen == 0 && gTeam[playerid] == PM)
  186. {
  187. IsPMChosen = 1;
  188. }
  189. format(str, sizeof(str), "%s is now a %s", pName, TeamNames[gTeam[playerid]]);
  190. SendClientMessageToAll(0xFFFFFFAA, str);
  191. return 1;
  192. }
  193.  
  194. public OnPlayerConnect(playerid)
  195. {
  196. new pName[MAX_PLAYER_NAME], str[128];
  197. GetPlayerName(playerid, pName, sizeof(pName));
  198. format(str, sizeof(str), "%s has joined the server!", pName);
  199. SendClientMessageToAll(0xA9A9A9AA, str);
  200. SendDeathMessage(playerid, playerid, 200);
  201. gTeam[playerid] = TEAMLESS;
  202. Muted[playerid] = 0;
  203. SetPlayerColor(playerid, TEAMCOLOR_TEAMLESS);
  204. PlayerPlaySound(playerid, 1188, 0.0, 0.0, 0.0);
  205. GivePlayerMoney(playerid, StartMoney);
  206. return 1;
  207. }
  208.  
  209. public OnPlayerDisconnect(playerid, reason)
  210. {
  211. new pName[MAX_PLAYER_NAME], str[128];
  212. GetPlayerName(playerid, pName, sizeof(pName));
  213. format(str, sizeof(str), "%s has left the server.", pName);
  214. SendClientMessageToAll(0xA9A9A9AA, str);
  215. SendDeathMessage(playerid, playerid, 201);
  216. if(gTeam[playerid] == PM)
  217. {
  218. format(str, sizeof(str), "%s is no longer the Prime Minister", pName);
  219. SendClientMessageToAll(0xFFA500AA, str);
  220. TextDrawHideForAll(Textdraw);
  221. IsPMChosen = 0;
  222. KillTimer(RoundTimer);
  223. }
  224. return 1;
  225. }
  226.  
  227. public OnPlayerSpawn(playerid)
  228. {
  229. GameTextForPlayer(playerid, " ", 10, 3);
  230. SetPlayerWeather(playerid, 1);
  231. if(playerid == IsDeadPM)
  232. {
  233. TogglePlayerControllable(playerid, 0);
  234. }
  235. switch(gTeam[playerid])
  236. {
  237. case BODYGUARD:
  238. {
  239. SetPlayerPos(playerid, (-2787.6155+random(66)), (-294.2365+random(8)), 7.04);
  240. SetPlayerFacingAngle(playerid, random(360));
  241. SetPlayerColor(playerid, TEAMCOLOR_BODYGUARD);
  242. }
  243. case TERRORIST:
  244. {
  245. SetPlayerPos(playerid, (1672.6182+random(23)), (1440.2610+random(15)), 10.7791);
  246. SetPlayerFacingAngle(playerid, random(360));
  247. SetPlayerColor(playerid, TEAMCOLOR_TERRORIST);
  248. }
  249. case PM:
  250. {
  251. SetPlayerPos(playerid, -2721.3049,-317.2299,7.8438);
  252. SetPlayerFacingAngle(playerid, 45.857);
  253. SetPlayerColor(playerid, TEAMCOLOR_PM);
  254. if(playerid != IsDeadPM)
  255. {
  256. RoundTimer = SetTimer("EndRound", 1000, 1);
  257. TimeLeft = RoundTime*60;
  258. }
  259. }
  260. case POLICE:
  261. {
  262. SetPlayerPos(playerid, (-1639.0775+random(66)), (655.8917+random(14)), 7.1901);
  263. SetPlayerFacingAngle(playerid, random(360));
  264. SetPlayerColor(playerid, TEAMCOLOR_POLICE);
  265. }
  266. case PSYCHO:
  267. {
  268. SetPlayerPos(playerid, (2471.2419+random(36)), (-1684.1920+random(30)), 13.546);
  269. SetPlayerFacingAngle(playerid, random(360));
  270. SetPlayerColor(playerid, TEAMCOLOR_PSYCHO);
  271. }
  272.  
  273. }
  274.  
  275. SetCameraBehindPlayer(playerid);
  276.  
  277. return 1;
  278. }
  279.  
  280. public OnPlayerDeath(playerid, killerid, reason)
  281. {
  282. SendDeathMessage(killerid, playerid, reason);
  283. SetPlayerScore(playerid, GetPlayerScore(playerid)-1);
  284. if(killerid != INVALID_PLAYER_ID)
  285. {
  286. SetPlayerScore(killerid, GetPlayerScore(killerid)+1);
  287. }
  288. if(gTeam[playerid] == PM)
  289. {
  290. //The Prime Minister Died!
  291. IsDeadPM = playerid;
  292. IsPMChosen = 0;
  293. KillTimer(RoundTimer);
  294. TerroristScore++;
  295. new str[128];
  296. format(str, 128, "The Prime Minister is killed!", RoundTime);
  297. SendClientMessageToAll(0xFFFF00AA, " ");
  298. SendClientMessageToAll(0xFFFF00AA, " ");
  299. SendClientMessageToAll(0xFFFF00AA, str);
  300. SendClientMessageToAll(0xFFFF00AA, " ");
  301. SendClientMessageToAll(0xFFFF00AA, "A new round will start soon! Please Wait!");
  302. SendClientMessageToAll(0xFFFF00AA, " ");
  303. SendClientMessageToAll(0xFFFF00AA, "Scores:");
  304. format(str, 128, "-- Prime Minister/Bodyguards & Police: %d", PMscore);
  305. SendClientMessageToAll(0xFFFF00AA, str);
  306. format(str, 128, "-- Terrorists & Psycho's: %d", TerroristScore);
  307. SendClientMessageToAll(0xFFFF00AA, str);
  308. SendClientMessageToAll(0xFFFF00AA, " ");
  309. TextDrawHideForAll(Textdraw);
  310. for(new i; i<MAX_PLAYERS; i++)
  311. {
  312. if(IsPlayerConnected(i))
  313. {
  314. PlayerPlaySound(i, 1187, 0.0, 0.0, 0.0);
  315. if(gTeam[i] == TERRORIST || gTeam[i] == PSYCHO)
  316. {
  317. GameTextForPlayer(i, "~y~Congratulations!", 8000, 3);
  318. }
  319. if(gTeam[i] == PM || gTeam[i] == BODYGUARD || gTeam[i] == POLICE)
  320. {
  321. GameTextForPlayer(i, "~r~Game Over", 8000, 3);
  322. }
  323. }
  324. }
  325. SetTimer("StartNewGame", 8000, 0);
  326. TogglePlayerControllable(playerid, 0);
  327.  
  328. }
  329. return 1;
  330. }
  331.  
  332. public OnPlayerText(playerid, text[])
  333. {
  334. if(Muted[playerid] == 1)
  335. {
  336. SendClientMessage(playerid, 0xFF0000AA, "You're muted!");
  337. return 0;
  338. }
  339. if(text[0] == '#')
  340. {
  341. //TeamChat
  342. new str[128], pn[24];
  343. GetPlayerName(playerid, pn, 24);
  344. format(str, 128, "[TEAM]%s: %s", pn, text[1]);
  345. if(gTeam[playerid] == PM || gTeam[playerid] == BODYGUARD || gTeam[playerid] == POLICE)
  346. {
  347. for(new i; i<MAX_PLAYERS; i++)
  348. {
  349. if(IsPlayerConnected(i))
  350. {
  351. if(gTeam[i] == PM || gTeam[i] == BODYGUARD || gTeam[i] == POLICE)
  352. {
  353. SendClientMessage(i, 0xFFFF00AA, str);
  354. }
  355. }
  356. }
  357. }
  358. if(gTeam[playerid] == TERRORIST)
  359. {
  360. for(new i; i<MAX_PLAYERS; i++)
  361. {
  362. if(IsPlayerConnected(i))
  363. {
  364. if(gTeam[i] == TERRORIST)
  365. {
  366. SendClientMessage(i, 0xFFFF00AA, str);
  367. }
  368. }
  369. }
  370. }
  371. if(gTeam[playerid] == PSYCHO)
  372. {
  373. for(new i; i<MAX_PLAYERS; i++)
  374. {
  375. if(IsPlayerConnected(i))
  376. {
  377. if(gTeam[i] == PSYCHO)
  378. {
  379. SendClientMessage(i, 0xFFFF00AA, str);
  380. }
  381. }
  382. }
  383. }
  384. return 0;
  385. }
  386. return 1;
  387. }
  388.  
  389. public OnPlayerPrivmsg(playerid, recieverid, text[])
  390. {
  391. if(Muted[playerid] == 1)
  392. {
  393. SendClientMessage(playerid, 0xFF0000AA, "You're muted!");
  394. return 0;
  395. }
  396. return 1;
  397. }
  398.  
  399. public OnPlayerCommandText(playerid, cmdtext[])
  400. {
  401. if(strcmp("/help", cmdtext, true) == 0)
  402. {
  403. SendClientMessage(playerid, 0x90EE90AA, "Commands: /kill ** /score ** /duty");
  404. if(IsPlayerAdmin(playerid))
  405. {
  406. SendClientMessage(playerid, 0x90EE90AA, "AdminCommands: /kick ** /ban ** /(un)mute ** /(un)freeze ** /resetscores");
  407. }
  408. SendClientMessage(playerid, 0x90EE90AA, "Teamchat: #[text] **Example: #Hello Team");
  409. return 1;
  410. }
  411.  
  412. if(strcmp("/kill", cmdtext, true) == 0)
  413. {
  414. SetPlayerHealth(playerid, 0.0);
  415. return 1;
  416. }
  417.  
  418. if(strcmp("/score", cmdtext, true) == 0)
  419. {
  420. new str[45];
  421. SendClientMessage(playerid, 0xFFFFFFAA, "Scores:");
  422. format(str, 128, "Prime Minister/Bodyguards & Police: %d", PMscore);
  423. SendClientMessage(playerid, 0xFFFFFFAA, str);
  424. format(str, 128, "Terrorists & Psycho's: %d", TerroristScore);
  425. SendClientMessage(playerid, 0xFFFFFFAA, str);
  426. return 1;
  427. }
  428.  
  429. if(strcmp("/duty", cmdtext, true) == 0)
  430. {
  431. new str[128];
  432. switch(gTeam[playerid])
  433. {
  434. case TEAMLESS:
  435. {
  436. SendClientMessage(playerid, 0x6495EDAA, "Please choose a character first!");
  437. }
  438. case BODYGUARD:
  439. {
  440. SendClientMessage(playerid, 0x6495EDAA, "You are a Bodyguard, your duty is to protect the Prime Minister (Yellow)");
  441. SendClientMessage(playerid, 0x6495EDAA, "You work together with the Police (Dark-Blue)");
  442. SendClientMessage(playerid, 0x6495EDAA, "Your enemies are the Terrorists (Red) and Psycho's (Green)");
  443. }
  444. case TERRORIST:
  445. {
  446. SendClientMessage(playerid, 0x6495EDAA, "You are a Terrorist, your duty is to kill the Prime Minister (Yellow)");
  447. SendClientMessage(playerid, 0x6495EDAA, "Your enemies are the Psycho's (Green), Bodyguards and the Police (Blue)");
  448. }
  449. case PM:
  450. {
  451. format(str, 128, "You are the Prime Minister, your duty is to survive for %d minutes", RoundTime);
  452. SendClientMessage(playerid, 0x6495EDAA, str);
  453. SendClientMessage(playerid, 0x6495EDAA, "You will be protected by your bodyguards and the Police (Blue)");
  454. SendClientMessage(playerid, 0x6495EDAA, "Your enemies are the Terrorists (Red) and Psycho's (Green)");
  455. }
  456. case POLICE:
  457. {
  458. SendClientMessage(playerid, 0x6495EDAA, "You are a Policeofficer, your duty is to kill the Psycho's and Terrorists (Red and Green)");
  459. SendClientMessage(playerid, 0x6495EDAA, "You work together with the Bodyguards (Dark-Blue) protecting the Prime Minister");
  460. }
  461. case PSYCHO:
  462. {
  463. SendClientMessage(playerid, 0x6495EDAA, "You are a Psycho, your duty is to kill everybody. Everybody is your enemy.");
  464. }
  465. }
  466. return 1;
  467. }
  468.  
  469.  
  470. //AdminCommands
  471.  
  472. if(strcmp("/resetscores", cmdtext, true) == 0)
  473. {
  474. if(IsPlayerAdmin(playerid))
  475. {
  476. PMscore = 0;
  477. TerroristScore = 0;
  478. dini_IntSet("Protect The PM/Scores.txt", "PMSCORE", 0);
  479. dini_IntSet("Protect The PM/Scores.txt", "TERRORISTSCORE", 0);
  480. SendClientMessageToAll(0xA9A9A9AA, "An admin has set the scores to 0");
  481. return 1;
  482. }
  483. }
  484.  
  485. if(strcmp("/kick", cmdtext, true, 5) == 0)
  486. {
  487. if(IsPlayerAdmin(playerid))
  488. {
  489. if(!strlen(cmdtext[6])) return SendClientMessage(playerid, 0xFF0000AA, "Use: /kick [playerid]");
  490. new gp = strval(cmdtext[6]);
  491. if(!IsPlayerConnected(gp)) return SendClientMessage(playerid, 0xFF0000AA, "Invalid Playerid");
  492. new pn[24], an[24], str[70];
  493. GetPlayerName(playerid, an, 24); GetPlayerName(gp, pn, 24);
  494. format(str, sizeof(str), "%s is kicked by admin %s", pn, an);
  495. SendClientMessageToAll(0xA9A9A9AA, str);
  496. GameTextForPlayer(gp, "~r~Kicked", 999999, 6);
  497. Kick(gp);
  498. return 1;
  499. }
  500. }
  501. if(strcmp("/ban", cmdtext, true, 4) == 0)
  502. {
  503. if(IsPlayerAdmin(playerid))
  504. {
  505. if(!strlen(cmdtext[5])) return SendClientMessage(playerid, 0xFF0000AA, "Use: /ban [playerid]");
  506. new gp = strval(cmdtext[5]);
  507. if(!IsPlayerConnected(gp)) return SendClientMessage(playerid, 0xFF0000AA, "Invalid Playerid");
  508. new pn[24], an[24], str[70];
  509. GetPlayerName(playerid, an, 24); GetPlayerName(gp, pn, 24);
  510. format(str, sizeof(str), "%s is banned by admin %s", pn, an);
  511. SendClientMessageToAll(0xA9A9A9AA, str);
  512. GameTextForPlayer(gp, "~r~Banned", 999999, 6);
  513. Kick(gp);
  514. return 1;
  515. }
  516. }
  517. if(strcmp("/mute", cmdtext, true, 5) == 0)
  518. {
  519. if(IsPlayerAdmin(playerid))
  520. {
  521. if(!strlen(cmdtext[6])) return SendClientMessage(playerid, 0xFF0000AA, "Use: /mute [playerid]");
  522. new gp = strval(cmdtext[6]);
  523. if(!IsPlayerConnected(gp)) return SendClientMessage(playerid, 0xFF0000AA, "Invalid Playerid");
  524. new pn[24], an[24], str[70];
  525. GetPlayerName(playerid, an, 24); GetPlayerName(gp, pn, 24);
  526. format(str, sizeof(str), "%s is muted by admin %s", pn, an);
  527. SendClientMessageToAll(0xA9A9A9AA, str);
  528. Muted[gp] = 1;
  529. return 1;
  530. }
  531. }
  532.  
  533. if(strcmp("/unmute", cmdtext, true, 7) == 0)
  534. {
  535. if(IsPlayerAdmin(playerid))
  536. {
  537. if(!strlen(cmdtext[8])) return SendClientMessage(playerid, 0xFF0000AA, "Use: /unmute [playerid]");
  538. new gp = strval(cmdtext[8]);
  539. if(!IsPlayerConnected(gp)) return SendClientMessage(playerid, 0xFF0000AA, "Invalid Playerid");
  540. new pn[24], an[24], str[70];
  541. GetPlayerName(playerid, an, 24); GetPlayerName(gp, pn, 24);
  542. format(str, sizeof(str), "%s is unmuted by admin %s", pn, an);
  543. SendClientMessageToAll(0xA9A9A9AA, str);
  544. Muted[gp] = 0;
  545. return 1;
  546. }
  547. }
  548.  
  549. if(strcmp("/freeze", cmdtext, true, 7) == 0)
  550. {
  551. if(IsPlayerAdmin(playerid))
  552. {
  553. if(!strlen(cmdtext[8])) return SendClientMessage(playerid, 0xFF0000AA, "Use: /freeze [playerid]");
  554. new gp = strval(cmdtext[8]);
  555. if(!IsPlayerConnected(gp)) return SendClientMessage(playerid, 0xFF0000AA, "Invalid Playerid");
  556. new pn[24], an[24], str[70];
  557. GetPlayerName(playerid, an, 24); GetPlayerName(gp, pn, 24);
  558. format(str, sizeof(str), "%s is frozen by admin %s", pn, an);
  559. SendClientMessageToAll(0xA9A9A9AA, str);
  560. TogglePlayerControllable(gp, 0);
  561. return 1;
  562. }
  563. }
  564. if(strcmp("/unfreeze", cmdtext, true, 9) == 0)
  565. {
  566. if(IsPlayerAdmin(playerid))
  567. {
  568. if(!strlen(cmdtext[10])) return SendClientMessage(playerid, 0xFF0000AA, "Use: /unfreeze [playerid]");
  569. new gp = strval(cmdtext[10]);
  570. if(!IsPlayerConnected(gp)) return SendClientMessage(playerid, 0xFF0000AA, "Invalid Playerid");
  571. new pn[24], an[24], str[70];
  572. GetPlayerName(playerid, an, 24); GetPlayerName(gp, pn, 24);
  573. format(str, sizeof(str), "%s is unfrozen by admin %s", pn, an);
  574. SendClientMessageToAll(0xA9A9A9AA, str);
  575. TogglePlayerControllable(gp, 1);
  576. return 1;
  577. }
  578. }
  579. return 0;
  580. }
  581.  
  582. public OnPlayerStateChange(playerid, newstate, oldstate)
  583. {
  584. if(AllowPrimeMinisterToDriveCars == 0)
  585. {
  586. if(newstate == 2)
  587. {
  588. if(gTeam[playerid] == PM)
  589. {
  590. SendClientMessage(playerid, 0xFF0000AA, "You're not allowed to drive!");
  591. RemovePlayerFromVehicle(playerid);
  592. }
  593. }
  594. }
  595. return 1;
  596. }
  597.  
  598. stock LoadVehicles()
  599. {
  600. if(fexist(CARFILE))
  601. {
  602. new TotalVehicles = CountVehicles();
  603. new Argument[7][70];
  604. new entry[256];
  605. new File:carfile = fopen(CARFILE, io_read);
  606. if (carfile)
  607. {
  608. for(new id; id<TotalVehicles; id++)
  609. {
  610. fread(carfile, entry);
  611. strdel(entry, 0, 17);
  612. new end = strfind(entry, ")", true);
  613. strdel(entry, end, strlen(entry));
  614. split(entry, Argument, ',');
  615. AddStaticVehicle(strval(Argument[0]), floatstr(Argument[1]), floatstr(Argument[2]), floatstr(Argument[3]), floatstr(Argument[4]), strval(Argument[5]), strval(Argument[6]));
  616. }
  617. fclose(carfile);
  618. printf("Loaded %d vehicles!", TotalVehicles);
  619. }
  620. }
  621. else
  622. {
  623. print("===============================");
  624. print("Warning:");
  625. print("There is no vehicle-file found!");
  626. print("No vehicles added to game!");
  627. print("===============================");
  628. }
  629. }
  630.  
  631. stock CountVehicles()
  632. {
  633. new entry[256], count;
  634. new File: carfile = fopen(CARFILE, io_read);
  635. while(fread(carfile, entry, 256))
  636. {
  637. count++;
  638. }
  639. fclose(carfile);
  640. return count;
  641. }
  642.  
  643. forward EndRound();
  644. public EndRound()
  645. {
  646. if(TimeLeft != 0)
  647. {
  648. TimeLeft--;
  649. format(TextdrawString, 128, "~y~Seconds Left: %d", TimeLeft);
  650. TextDrawHideForAll(Textdraw);
  651. TextDrawSetString(Textdraw, TextdrawString);
  652. TextDrawShowForAll(Textdraw);
  653. }
  654. else
  655. {
  656. PMscore++;
  657. KillTimer(RoundTimer);
  658. new str[128];
  659. format(str, 128, "The Prime Minister survived for %d minutes!", RoundTime);
  660. SendClientMessageToAll(0xFFFF00AA, " ");
  661. SendClientMessageToAll(0xFFFF00AA, " ");
  662. SendClientMessageToAll(0xFFFF00AA, str);
  663. SendClientMessageToAll(0xFFFF00AA, " ");
  664. SendClientMessageToAll(0xFFFF00AA, "A new round will start soon! Please Wait!");
  665. SendClientMessageToAll(0xFFFF00AA, " ");
  666. SendClientMessageToAll(0xFFFF00AA, "Scores:");
  667. format(str, 128, "-- Prime Minister/Bodyguards & Police: %d", PMscore);
  668. SendClientMessageToAll(0xFFFF00AA, str);
  669. format(str, 128, "-- Terrorists & Psycho's: %d", TerroristScore);
  670. SendClientMessageToAll(0xFFFF00AA, str);
  671. SendClientMessageToAll(0xFFFF00AA, " ");
  672. for(new i; i<MAX_PLAYERS; i++)
  673. {
  674. if(IsPlayerConnected(i))
  675. {
  676. PlayerPlaySound(i, 1187, 0.0, 0.0, 0.0);
  677. if(gTeam[i] == TERRORIST || gTeam[i] == PSYCHO)
  678. {
  679. GameTextForPlayer(i, "~r~Game Over", 8000, 3);
  680. }
  681. if(gTeam[i] == PM || gTeam[i] == BODYGUARD || gTeam[i] == POLICE)
  682. {
  683. GameTextForPlayer(i, "~y~Congratulations!", 8000, 3);
  684. }
  685. }
  686. }
  687.  
  688. SetTimer("StartNewGame", 8000, 0);
  689. }
  690. }
  691.  
  692. forward StartNewGame();
  693. public StartNewGame()
  694. {
  695. dini_IntSet("Protect The PM/Scores.txt", "PMSCORE", PMscore);
  696. dini_IntSet("Protect The PM/Scores.txt", "TERRORISTSCORE", TerroristScore);
  697. TextDrawHideForAll(Textdraw);
  698. TextDrawDestroy(Textdraw);
  699. GameModeExit();
  700. }
  701.  
  702. //Credits to the one who made this split-function!
  703. forward split(const strsrc[], strdest[][], delimiter);
  704. public split(const strsrc[], strdest[][], delimiter)
  705. {
  706. new i, li;
  707. new aNum;
  708. new len;
  709. while(i <= strlen(strsrc)){
  710. if(strsrc[i]==delimiter || i==strlen(strsrc)){
  711. len = strmid(strdest[aNum], strsrc, li, i, 128);
  712. strdest[aNum][len] = 0;
  713. li = i+1;
  714. aNum++;
  715. }
  716. i++;
  717. }
  718. return 1;
  719. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement