Advertisement
Guest User

Untitled

a guest
Oct 31st, 2013
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.64 KB | None | 0 0
  1. package server.model.minigames.clanwars;
  2.  
  3. import static server.model.minigames.clanwars.ClanWarConstants.CLAN1X;
  4. import static server.model.minigames.clanwars.ClanWarConstants.CLAN1Y;
  5. import static server.model.minigames.clanwars.ClanWarConstants.CLAN2X;
  6. import static server.model.minigames.clanwars.ClanWarConstants.CLAN2Y;
  7. import static server.model.minigames.clanwars.ClanWarConstants.DEATHX;
  8. import static server.model.minigames.clanwars.ClanWarConstants.DEATHY;
  9. import static server.model.minigames.clanwars.ClanWarConstants.MESSAGE1;
  10. import static server.model.minigames.clanwars.ClanWarConstants.MESSAGE2;
  11. import static server.model.minigames.clanwars.ClanWarConstants.MESSAGE3;
  12. import static server.model.minigames.clanwars.ClanWarConstants.WALL_ID;
  13. import static server.model.minigames.clanwars.ClanWarConstants.OWNERS_ONLY;
  14. import server.Server;
  15. import server.event.CycleEvent;
  16. import server.event.CycleEventContainer;
  17. import server.event.CycleEventHandler;
  18. import server.model.objects.Object;
  19. import server.model.players.Client;
  20. import server.model.players.PlayerHandler;
  21. import server.util.Misc;
  22.  
  23. /**
  24. * @author Women/asshole_rule
  25. */
  26.  
  27. public class ClanWarHandler {
  28.  
  29. public ClanWarHandler(Client c) {}
  30.  
  31. public static ClanWar[] clanWars = new ClanWar[100];
  32.  
  33. public void wallTimer(final ClanWar c) {
  34.  
  35. CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
  36.  
  37. @Override
  38. public void execute(CycleEventContainer container) {
  39. if(c.getWallTime() >= 0) {
  40. c.setWallTime(c.getWallTime() - 1);
  41. }
  42. if(c.getWallTime() == 117) {
  43. walls(c, WALL_ID, c.getHeight());
  44. }
  45. if(c.getWallTime() == 0) {
  46. walls(c, -1, c.getHeight());
  47. this.stop();
  48. }
  49. }
  50.  
  51. @Override
  52. public void stop() {
  53. }
  54.  
  55. }, 2);
  56. }
  57.  
  58. public void requestChallenge(Client c, int otherPlayerId) throws NullPointerException {
  59. Client c2 = (Client) PlayerHandler.players[otherPlayerId];
  60. if(OWNERS_ONLY) {
  61. if (!Server.clanChat.clans[c.clanId].owner.equalsIgnoreCase(c.playerName)) {
  62. System.out.println("You are not the owner of the Clan Chat.");
  63. return;
  64. }
  65. if (!Server.clanChat.clans[c2.clanId].owner.equalsIgnoreCase(c.playerName)) {
  66. System.out.println("This player is not a high enough rank to accept matches.");
  67. return;
  68. }
  69. }
  70. if(c == null && c2 == null) {
  71. System.out.println("[Clan Wars] An error has occured");
  72. return;
  73. }
  74. if(c.clanId == c2.clanId) {
  75. c.sendMessage("You cannot challenge someone in your Clan Chat to a Clan War.");
  76. return;
  77. }
  78. if(c.clanId <= 0) {
  79. c.sendMessage("You must be in a Clan Chat to start a Clan War.");
  80. return;
  81. }
  82. if(c2.clanId <= 0) {
  83. c.sendMessage("This player is not in a Clan Chat.");
  84. return;
  85. }
  86. if(c.chalAccepted) {
  87. c.sendMessage("You already have a match in progress.");
  88. return;
  89. }
  90. if(c2.chalAccepted) {
  91. c.sendMessage("This player already has a match in progress.");
  92. return;
  93. }
  94. if(c2.chalInterface) {
  95. c.sendMessage("This player is currently busy.");
  96. return;
  97. }
  98. if(c.chalInterface) {
  99. return;
  100. }
  101. if(c.inClanWarsLobby() && c2.inClanWarsLobby()) {
  102. c2.clanWarOpponent = c.playerId;
  103. c.clanWarOpponent = otherPlayerId;
  104. c2.sendMessage(c.playerName+":clanwarreq:");
  105. c.sendMessage("Sending "+Misc.formatPlayerName(c2.playerName)+" challenge request.");
  106. }
  107. }
  108.  
  109. public void handleKill(Client c, Client c2) {
  110. ClanWar clanWar = clanWars[c.clanWarId];
  111. c.sendMessage(" "+c.playerName+", "+c2.playerName+" ");
  112. if(clanWar == null) {
  113. c.sendMessage("clan war null");
  114. }
  115. if(clanWar.clan2Players.contains(c)) {
  116. clanWar.setClan1Kills(clanWar.getClan1Kills() + 1);
  117. /*if(clanWar.getClan1Kills() >= MAX_KILLS) {
  118. c.sendMessage("called");
  119. handleWin("clan1", clanWar);
  120. }*/
  121. } else if (clanWar.clan1Players.contains(c)) {
  122. clanWar.setClan2Kills(clanWar.getClan2Kills() + 1);
  123. /*if(clanWar.getClan2Kills() >= MAX_KILLS) {
  124. c.sendMessage("called");
  125. handleWin("clan2", clanWar);
  126. }*/
  127. }
  128. }
  129.  
  130. public void handleWin(String clan, ClanWar c) {
  131. if(clan.equals("clan1")) {
  132. for(Client clan1 : c.clan1Players) {
  133. clan1.sendMessage("Congratulations, you have defeated "+c.getClan2());
  134. clan1.getPA().movePlayer(DEATHX, DEATHY, 0);
  135. clan1.clanWarId = -1;
  136. clan1.getPA().walkableInterface(-1);
  137. }
  138. for(Client clan2 : c.clan2Players) {
  139. clan2.sendMessage("You were defeated by "+c.getClan1());
  140. clan2.getPA().movePlayer(DEATHX, DEATHY, 0);
  141. clan2.clanWarId = -1;
  142. clan2.getPA().walkableInterface(-1);
  143. }
  144. } else if (clan.equals("clan2")) {
  145. for(Client clan2 : c.clan2Players) {
  146. clan2.sendMessage("Congratulations, you have defeated "+c.getClan1());
  147. clan2.getPA().movePlayer(DEATHX, DEATHY, 0);
  148. clan2.clanWarId = -1;
  149. clan2.getPA().walkableInterface(-1);
  150. }
  151. for(Client clan1 : c.clan1Players) {
  152. clan1.sendMessage("You were defeated by "+c.getClan2());
  153. clan1.getPA().movePlayer(DEATHX, DEATHY, 0);
  154. clan1.clanWarId = -1;
  155. clan1.getPA().walkableInterface(-1);
  156. }
  157. }
  158. c = null;
  159. }
  160.  
  161. public void handleDeath(Client c) {
  162. if(c != null) {
  163. ClanWar clanWar = clanWars[c.clanWarId];
  164. if(clanWar.deadPlayers.contains(c)) {
  165. c.sendMessage("Tell a moderator about this.");
  166. return;
  167. }
  168. clanWar.deadPlayers.add(c);
  169. //removePlayer(c, clanWar);
  170. }
  171. }
  172.  
  173. public void challengeClicked(Client c) {
  174. Client c2 = (Client) PlayerHandler.players[c.clanWarOpponent];
  175. c.getPA().showInterface(9000);
  176. c.getPA().sendFrame126(Misc.formatPlayerName(c2.playerName)+" is inviting your clan to a war.", 9002);
  177. c2.getPA().showInterface(9000);
  178. c2.getPA().sendFrame126(Misc.formatPlayerName(c.playerName)+" is inviting your clan to a war.", 9002);
  179. c.chalInterface = c2.chalInterface = true;
  180. }
  181.  
  182. public boolean handleButtons(Client c, int actionButtonId) {
  183. Client c2 = (Client) PlayerHandler.players[c.clanWarOpponent];
  184. switch(actionButtonId) {
  185. case 35043:
  186. if(c2 == null) {
  187. return false;
  188. }
  189. if(c.chalAccepted && c2.chalAccepted) {
  190. startMatch(c, c2);
  191. }
  192. c.chalInterface = false;
  193. c2.chalInterface = false;
  194. c.chalAccepted = true;
  195. c2.chalAccepted = true;
  196. return false;
  197. case 35047:
  198. if(c2 == null) {
  199. return false;
  200. }
  201. c.getPA().closeAllWindows();
  202. c2.getPA().closeAllWindows();
  203. c.sendMessage("You have declined the clan war requestion.");
  204. c2.sendMessage("The other player has declined the request.");
  205. c.clanWarOpponent = 0;
  206. c2.clanWarOpponent = 0;
  207. resetChallengeVariables(c);
  208. resetChallengeVariables(c2);
  209. c.chalInterface = false;
  210. c2.chalInterface = false;
  211. return false;
  212. }
  213. return false;
  214. }
  215.  
  216. public boolean handleObjects(Client c, int objectType) {
  217. if(objectType == 28213) {
  218. if(c.clanWarId == -1) {
  219. c.sendMessage("You don't have a Clan War scheduled.");
  220. return false;
  221. }
  222. }
  223. if(c.clanWarId == -1) {
  224. return false;
  225. }
  226. ClanWar clanWar = clanWars[c.clanWarId];
  227. switch(objectType) {
  228. case 38697:
  229. c.getPA().movePlayer(DEATHX + Misc.random(3), DEATHY + Misc.random(3), 0);
  230. if(clanWar.deadPlayers.contains(c)) {
  231. clanWar.deadPlayers.remove(c);
  232. }
  233. //removePlayer(c, clanWar);
  234. return false;
  235. case 28213:
  236. int x = 0;
  237. int y = 0;
  238. if(c.clanWarId == -1) {
  239. c.sendMessage("You are not in a Clan.");
  240. return false;
  241. }
  242. if(clanWar.deadPlayers.contains(c)) {
  243. clanWar.deadPlayers.remove(c);
  244. }
  245. if(Server.clanChat.clans[c.clanId].name == clanWar.getClan1()) {
  246. x = CLAN1X;
  247. y = CLAN1Y;
  248. if(!clanWar.clan1Players.contains(c)) {
  249. clanWar.clan1Players.add(c);
  250. }
  251. }
  252. if(Server.clanChat.clans[c.clanId].name == clanWar.getClan2()) {
  253. x = CLAN2X;
  254. y = CLAN2Y;
  255. if(!clanWar.clan2Players.contains(c)) {
  256. clanWar.clan2Players.add(c);
  257. }
  258. }
  259. enterMatch(c, x, y);
  260. return false;
  261.  
  262. }
  263. return false;
  264. }
  265.  
  266. public void removePlayer(Client c, ClanWar c2) {
  267. if(c2.clan1Players.contains(c)) {
  268. c2.clan1Players.remove(c);
  269. } else if(c2.clan2Players.contains(c)) {
  270. c2.clan2Players.remove(c);
  271. }
  272. if(c.inClanWars()) {
  273. c.getPA().movePlayer(DEATHX, DEATHY, 0);
  274. }
  275. }
  276.  
  277. public void startMatch(Client c, Client c2) {
  278. int clanWarId = openSlot();
  279. clanWars[clanWarId] = new ClanWar(c.playerId, c2.playerId, ((c.playerId + c2.playerId) * 4), clanWarId, 120);
  280. for (int j = 0; j < Server.clanChat.clans[c.clanId].members.length; j++) {
  281. if (Server.clanChat.clans[c.clanId].members[j] <= 0)
  282. continue;
  283. if (PlayerHandler.players[Server.clanChat.clans[c.clanId].members[j]] != null) {
  284. Client clan = (Client)PlayerHandler.players[Server.clanChat.clans[c.clanId].members[j]];
  285. clan.clanWarId = clanWarId;
  286. clan.sendMessage(MESSAGE1);
  287. clan.sendMessage(MESSAGE2);
  288. clan.sendMessage(MESSAGE3);
  289. clan.clanWarId = c.clanWarId = c2.clanWarId = clanWarId;
  290. clan.sendMessage(" "+clan.playerName+":"+clan.clanWarId);
  291. }
  292. }
  293. for (int j = 0; j < Server.clanChat.clans[c2.clanId].members.length; j++) {
  294. if (Server.clanChat.clans[c2.clanId].members[j] <= 0)
  295. continue;
  296. if (PlayerHandler.players[Server.clanChat.clans[c2.clanId].members[j]] != null) {
  297. Client clan = (Client)PlayerHandler.players[Server.clanChat.clans[c2.clanId].members[j]];
  298. clan.clanWarId = clanWarId;
  299. clan.sendMessage(MESSAGE1);
  300. clan.sendMessage(MESSAGE2);
  301. clan.sendMessage(MESSAGE3);
  302. clan.clanWarId = c.clanWarId = c2.clanWarId = clanWarId;
  303. clan.sendMessage(" "+clan.playerName+":"+clan.clanWarId);
  304. }
  305. }
  306. if(c != null) {
  307. c.sendMessage("Clan Wars request accepted.");
  308. enterMatch(c, CLAN1X, CLAN1Y);
  309. clanWars[clanWarId].clan1Players.add(c);
  310. }
  311. if(c2 != null) {
  312. c2.sendMessage("Clan Wars request accepted.");
  313. enterMatch(c2, CLAN2X, CLAN2Y);
  314. clanWars[clanWarId].clan2Players.add(c2);
  315. }
  316. clanWars[clanWarId].setClan1(Server.clanChat.clans[c.clanId].name);
  317. clanWars[clanWarId].setClan2(Server.clanChat.clans[c2.clanId].name);
  318. clanWars[clanWarId].setWallTime(120);
  319. wallTimer(clanWars[clanWarId]);
  320. walls(clanWars[clanWarId], WALL_ID, clanWars[clanWarId].getHeight());
  321. c.sendMessage("Height level is gonna be: "+clanWars[c.clanWarId].getHeight());
  322. c2.sendMessage("Height level is gonna be: "+clanWars[c.clanWarId].getHeight());
  323. }
  324.  
  325. public void enterMatch(Client c, int x, int y) {
  326. ClanWar clanWar = clanWars[c.clanWarId];
  327. c.getPA().movePlayer(x, y, clanWar.getHeight());
  328. c.getPA().closeAllWindows();
  329. if(!wallDown(clanWar)) {
  330. walls(clanWar, WALL_ID, clanWar.getHeight());
  331. }
  332. }
  333.  
  334. public int openSlot() {
  335. for (int j = 0; j < clanWars.length; j++) {
  336. if (clanWars[j] == null || clanWars[j].getId() == -1)
  337. return j;
  338. }
  339. return -1;
  340. }
  341.  
  342. public void walls(ClanWar c, int id, int height) {
  343. if(height == c.getHeight()) {
  344. for (int i = 2884; i < 2925; i++) {
  345. new Object(id, i, 5666, height, -1, 10, id, 0);
  346. }
  347. for (int i = 2935; i < 2940; i++) {
  348. new Object(id, i, 5666, height, -1, 10, id, 0);
  349. }
  350. }
  351. System.out.println("Spawning walls at height: "+c.getHeight());
  352. }
  353.  
  354.  
  355. public void resetChallengeVariables(Client c) {
  356. Client c2 = (Client) PlayerHandler.players[c.clanWarOpponent];
  357. if(c != null && c2 != null) {
  358. c2.chalAccepted = false;
  359. c.chalAccepted = false;
  360. c2.chalInterface = false;
  361. c.chalInterface = false;
  362. }
  363. }
  364.  
  365. public void checkLeave(Client c, ClanWar c2) {
  366. if(Server.clanChat.clans[c.clanId].owner.equalsIgnoreCase(c.playerName)) {
  367. Server.clanChat.messageToClan("The other team's leader has forfeited.", PlayerHandler.players[c.clanWarOpponent].clanId, true);
  368. Server.clanChat.messageToClan("Your owner left the Clan Chat. The match was forfeited.", c.clanId, true);
  369. if(c2.clan1Players.contains(c))
  370. handleWin("clan2", c2);
  371. else if(c2.clan2Players.contains(c))
  372. handleWin("clan1", c2);
  373. }
  374. removePlayer(c, c2);
  375. }
  376.  
  377. public void updateInterface(Client c, ClanWar c2) {
  378. try {
  379. Client clan1 = (Client) PlayerHandler.players[c2.getOtherId()];
  380. Client clan2 = (Client) PlayerHandler.players[c2.getId()];
  381. if (c.inClanWars()) {
  382. if(!wallDown(c2)) {
  383. //if(Server.clanChat.clans[c.clanId].name.equals(c2.getClan1())) {
  384. /*c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[c.clanId].name)+"", 3502);
  385. c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[clan1.clanId].name)+"", 3503);
  386. c.getPA().sendFrame126("Size: "+Server.clanChat.getClanSize(c.clanId), 3505);
  387. c.getPA().sendFrame126("Size: "+Server.clanChat.getClanSize(clan1.clanId), 3506);*/
  388. c.getPA().sendFrame126("My Clan", 3502);
  389. c.getPA().sendFrame126("Opposing", 3503);
  390. c.getPA().sendFrame126(" ", 3505);
  391. c.getPA().sendFrame126(" ", 3506);
  392. //}
  393. //if(Server.clanChat.clans[c.clanId].name.equals(c2.getClan2())) {
  394. /*c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[clan1.clanId].name)+"", 3502);
  395. c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[clan2.clanId].name)+"", 3503);
  396. c.getPA().sendFrame126("Size: "+Server.clanChat.getClanSize(clan1.clanId), 3505);
  397. c.getPA().sendFrame126("Size: "+Server.clanChat.getClanSize(c.clanId), 3506);*/
  398. c.getPA().sendFrame126("My Clan", 3502);
  399. c.getPA().sendFrame126("Opposing", 3503);
  400. c.getPA().sendFrame126(" ", 3505);
  401. c.getPA().sendFrame126(" ", 3506);
  402. //}
  403. c.getPA().sendFrame126(Misc.formatTime(c2.getWallTime())+"", 3507);
  404. if (c2.getWallTime() <= 3) {
  405. c.getPA().sendFrame126("@red@GET READY!", 3507);
  406. }
  407. } else {
  408. //if(Server.clanChat.clans[c.clanId].name.equals(c2.getClan1())) {
  409. if(c2.clan1Players.contains(c)) {
  410. if(c.clanId > 0) {
  411. c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[c.clanId].name)+"", 3502);
  412. c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[clan1.clanId].name)+"", 3503);
  413. } else {
  414. c.getPA().sendFrame126("My Clan", 3502);
  415. c.getPA().sendFrame126("Opposing", 3503);
  416. }
  417. c.getPA().sendFrame126(" Currently:", 3504);
  418. c.getPA().sendFrame126("Kills: "+c2.getClan1Kills(), 3505);
  419. c.getPA().sendFrame126("Kills: "+c2.getClan2Kills(), 3506);
  420. if(c2.getClan1Kills() > c2.getClan2Kills()) {
  421. c.getPA().sendFrame126("Winning!", 3507);
  422. } else if(c2.getClan1Kills() == c2.getClan2Kills()) {
  423. c.getPA().sendFrame126("Tied!", 3507);
  424. } else {
  425. c.getPA().sendFrame126("@red@Losing!", 3507);
  426. }
  427. }
  428. if(c2.clan2Players.contains(c)) {
  429. if(c.clanId > 0) {
  430. c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[clan1.clanId].name)+"", 3502);
  431. c.getPA().sendFrame126(Misc.formatPlayerName(Server.clanChat.clans[clan2.clanId].name)+"", 3503);
  432. } else {
  433. c.getPA().sendFrame126("My Clan", 3502);
  434. c.getPA().sendFrame126("Opposing", 3503);
  435. }
  436. c.getPA().sendFrame126(" Currently:", 3504);
  437. c.getPA().sendFrame126("Kills: "+c2.getClan2Kills(), 3505);
  438. c.getPA().sendFrame126("Kills: "+c2.getClan1Kills(), 3506);
  439. if(c2.getClan2Kills() > c2.getClan1Kills()) {
  440. c.getPA().sendFrame126("Winning!", 3507);
  441. } else if(c2.getClan1Kills() == c2.getClan2Kills()) {
  442. c.getPA().sendFrame126("Tied!", 3507);
  443. } else {
  444. c.getPA().sendFrame126("@red@Losing!", 3507);
  445. }
  446. }
  447. }
  448.  
  449. }
  450. }catch(Exception e) {
  451. e.printStackTrace();
  452. }
  453. }
  454.  
  455. public boolean wallDown(ClanWar c) {
  456. if(c == null) {
  457. return false;
  458. }
  459. return c.getWallTime() == -1;
  460. }
  461.  
  462. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement