Guest User

client.java

a guest
Apr 26th, 2014
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.25 KB | None | 0 0
  1. package server.model.players;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.Queue;
  5. import java.util.concurrent.Future;
  6.  
  7. import org.apache.mina.common.IoSession;
  8.  
  9. import server.Config;
  10. import server.Server;
  11. import server.model.minigames.WarriorsGuild;
  12. import server.model.items.ItemAssistant;
  13. import server.model.shops.ShopAssistant;
  14. import server.net.HostList;
  15. import server.net.Packet;
  16. import server.model.npcs.NPC;
  17. import server.net.StaticPacketBuilder;
  18. import server.util.Misc;
  19. import server.util.Stream;
  20. import server.model.players.skills.*;
  21. import server.event.EventManager;
  22. import server.event.Event;
  23. import server.event.CycleEventHandler;
  24. import server.event.EventContainer;
  25.  
  26. public class Client extends Player {
  27.  
  28. public byte buffer[] = null;
  29. public Stream inStream = null, outStream = null;
  30. private IoSession session;
  31. private Curse curse = new Curse(this);
  32. private TradeLog tradeLog = new TradeLog(this);
  33. private ItemAssistant itemAssistant = new ItemAssistant(this);
  34. private ShopAssistant shopAssistant = new ShopAssistant(this);
  35. private TradeAndDuel tradeAndDuel = new TradeAndDuel(this);
  36. private PlayerAssistant playerAssistant = new PlayerAssistant(this);
  37. private CombatAssistant combatAssistant = new CombatAssistant(this);
  38. private ActionHandler actionHandler = new ActionHandler(this);
  39. private DialogueHandler dialogueHandler = new DialogueHandler(this);
  40. private Queue<Packet> queuedPackets = new LinkedList<Packet>();
  41. private Potions potions = new Potions(this);
  42. private PotionMixing potionMixing = new PotionMixing(this);
  43. private Food food = new Food(this);
  44. /**
  45. * Skill instances
  46. */
  47. private Slayer slayer = new Slayer(this);
  48. private Runecrafting runecrafting = new Runecrafting(this);
  49. private Woodcutting woodcutting = new Woodcutting(this);
  50. private Mining mine = new Mining(this);
  51. private Agility agility = new Agility(this);
  52. private Cooking cooking = new Cooking(this);
  53. private Fishing fish = new Fishing(this);
  54. private Crafting crafting = new Crafting(this);
  55. private Smithing smith = new Smithing(this);
  56. private Fletching fletching = new Fletching(this);
  57. private SmithingInterface smithInt = new SmithingInterface(this);
  58. private Farming farming = new Farming(this);
  59. private Thieving thieving = new Thieving(this);
  60. private Firemaking firemaking = new Firemaking(this);
  61. private Herblore herblore = new Herblore(this);
  62.  
  63. private int somejunk;
  64. public int lowMemoryVersion = 0;
  65. public int timeOutCounter = 0;
  66. public int returnCode = 2;
  67. private Future<?> currentTask;
  68.  
  69. public Client(IoSession s, int _playerId) {
  70. super(_playerId);
  71. this.session = s;
  72. synchronized(this) {
  73. outStream = new Stream(new byte[Config.BUFFER_SIZE]);
  74. outStream.currentOffset = 0;
  75. }
  76. inStream = new Stream(new byte[Config.BUFFER_SIZE]);
  77. inStream.currentOffset = 0;
  78. buffer = new byte[Config.BUFFER_SIZE];
  79. }
  80.  
  81. public void flushOutStream() {
  82. if(disconnected || outStream.currentOffset == 0) return;
  83. synchronized(this) {
  84. StaticPacketBuilder out = new StaticPacketBuilder().setBare(true);
  85. byte[] temp = new byte[outStream.currentOffset];
  86. System.arraycopy(outStream.buffer, 0, temp, 0, temp.length);
  87. out.addBytes(temp);
  88. session.write(out.toPacket());
  89. outStream.currentOffset = 0;
  90. }
  91. }
  92.  
  93. public void Messages() {
  94. EventManager.getSingleton().addEvent(new Event() {
  95. public void execute(EventContainer c) {
  96. int Message = 0;
  97. Message = Misc.random(5);
  98. if (Message == 0) {
  99. sendMessage("[@red@SERVER NOTICE@bla@]@Vist our forums at www.DimeScape.com");
  100. } else if (Message == 1) {
  101. sendMessage("[@red@SERVER NOTICE@bla@]Dont forget to ::vote Dailey");
  102. } else if (Message == 2) {
  103. sendMessage("[@red@SERVER NOTICE@bla@]Need Help? Contact a [MOD] or a [ADMIN]");
  104. } else if (Message == 3) {
  105. sendMessage("[@red@SERVER NOTICE@bla@]The Developer is Banter");
  106. } else if (Message == 4) {
  107. sendMessage("[@red@SERVER NOTICE@bla@]Donate to support the server!");
  108. }
  109. }
  110. }, 160000); //Milliseconds
  111. };
  112.  
  113. public void sendClan(String name, String message, String clan, int rights) {
  114. outStream.createFrameVarSizeWord(217);
  115. outStream.writeString(name);
  116. outStream.writeString(message);
  117. outStream.writeString(clan);
  118. outStream.writeWord(rights);
  119. outStream.endFrameVarSize();
  120. }
  121.  
  122. public static final int PACKET_SIZES[] = {
  123. 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, //0
  124. 0, 0, 0, 0, 8, 0, 6, 2, 2, 0, //10
  125. 0, 2, 0, 6, 0, 12, 0, 0, 0, 0, //20
  126. 0, 0, 0, 0, 0, 8, 4, 0, 0, 2, //30
  127. 2, 6, 0, 6, 0, -1, 0, 0, 0, 0, //40
  128. 0, 0, 0, 12, 0, 0, 0, 8, 8, 12, //50
  129. 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, //60
  130. 6, 0, 2, 2, 8, 6, 0, -1, 0, 6, //70
  131. 0, 0, 0, 0, 0, 1, 4, 6, 0, 0, //80
  132. 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, //90
  133. 0, 13, 0, -1, 0, 0, 0, 0, 0, 0,//100
  134. 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, //110
  135. 1, 0, 6, 0, 0, 0, -1, 0, 2, 6, //120
  136. 0, 4, 6, 8, 0, 6, 0, 0, 0, 2, //130
  137. 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, //140
  138. 0, 0, 1, 2, 0, 2, 6, 0, 0, 0, //150
  139. 0, 0, 0, 0, -1, -1, 0, 0, 0, 0,//160
  140. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //170
  141. 0, 8, 0, 3, 0, 2, 0, 0, 8, 1, //180
  142. 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, //190
  143. 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, //200
  144. 4, 0, 0, 0, 7, 8, 0, 0, 10, 0, //210
  145. 0, 0, 0, 0, 0, 0, -1, 0, 6, 0, //220
  146. 1, 0, 0, 0, 6, 0, 6, 8, 1, 0, //230
  147. 0, 4, 0, 0, 0, 0, -1, 0, -1, 4,//240
  148. 0, 0, 6, 6, 0, 0, 0 //250
  149. };
  150.  
  151. public void destruct() {
  152. if(session == null)
  153. return;
  154. Server.panel.removeEntity(playerName);
  155. //PlayerSaving.getSingleton().requestSave(playerId);
  156. getPA().removeFromCW();
  157. if (inPits)
  158. Server.fightPits.removePlayerFromPits(playerId);
  159. if (clanId >= 0)
  160. Server.clanChat.leaveClan(playerId, clanId);
  161. Misc.println("[DEREGISTERED]: "+playerName+"");
  162. HostList.getHostList().remove(session);
  163. disconnected = true;
  164. session.close();
  165. session = null;
  166. inStream = null;
  167. outStream = null;
  168. isActive = false;
  169. buffer = null;
  170. super.destruct();
  171. }
  172.  
  173.  
  174. public void sendMessage(String s) {
  175. synchronized (this) {
  176. if(getOutStream() != null) {
  177. outStream.createFrameVarSize(253);
  178. outStream.writeString(s);
  179. outStream.endFrameVarSize();
  180. }
  181. }
  182. }
  183.  
  184. public Client getClient(String name) {
  185. name = name.toLowerCase();
  186. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  187. if(validClient(i)) {
  188. Client client = getClient(i);
  189. if(client.playerName.toLowerCase().equalsIgnoreCase(name)) {
  190. return client;
  191. }
  192. }
  193. }
  194. return null;
  195. }
  196. public Client getClient(int index) {
  197. return ((Client) PlayerHandler.players[index]);
  198. }
  199. public boolean validClient(int index) {
  200. Client p = (Client) PlayerHandler.players[index];
  201. if ((p != null) && !p.disconnected) {
  202. return true;
  203. }
  204. return false;
  205. }
  206.  
  207. public void clearPlayersInterface() {
  208. for (int i = 8147; i < 8348; i++) {
  209. getPA().sendFrame126("",i);
  210. }
  211. };
  212.  
  213. public boolean validClient(String name) {
  214. return validClient(getClient(name));
  215. }
  216. public boolean validClient(Client client) {
  217. return (client != null && !client.disconnected);
  218. }
  219. public boolean validNpc(int index) {
  220. if (index < 0 || index >= Config.MAX_NPCS) {
  221. return false;
  222. }
  223. NPC n = getNpc(index);
  224. if (n != null) {
  225. return true;
  226. }
  227. return false;
  228. }
  229. public NPC getNpc(int index) {
  230. return ((NPC) Server.npcHandler.npcs[index]);
  231. }
  232. public void yell(String s) {
  233. for (int i = 0; i < Config.MAX_PLAYERS; i++) {
  234. if (validClient(i)) {
  235. getClient(i).sendMessage(s);
  236. }
  237. }
  238. }
  239.  
  240. public void setSidebarInterface(int menuId, int form) {
  241. synchronized (this) {
  242. if(getOutStream() != null) {
  243. outStream.createFrame(71);
  244. outStream.writeWord(form);
  245. outStream.writeByteA(menuId);
  246. }
  247. }
  248. }
  249.  
  250. public void initialize() {
  251. synchronized (this) {
  252. Messages();
  253. clearPlayersInterface();
  254. Server.panel.addEntity(playerName);
  255. switch(playerRights) {
  256. case 3:
  257. modHeadIcon = 3;
  258. break;
  259. case 2:
  260. modHeadIcon = 2;
  261. break;
  262. case 4:
  263. modHeadIcon = 4;
  264. break;
  265. case 5:
  266. modHeadIcon = 5;
  267. break;
  268. case 1:
  269. modHeadIcon = 1;
  270. break;
  271. }
  272. outStream.createFrame(249);
  273. outStream.writeByteA(1); // 1 for members, zero for free
  274. outStream.writeWordBigEndianA(playerId);
  275. for (int j = 0; j < Server.playerHandler.players.length; j++) {
  276. if (j == playerId)
  277. continue;
  278. if (Server.playerHandler.players[j] != null) {
  279. if (Server.playerHandler.players[j].playerName.equalsIgnoreCase(playerName))
  280. disconnected = true;
  281. }
  282. }
  283. for (int i = 0; i < 25; i++) {
  284. getPA().setSkillLevel(i, playerLevel[i], playerXP[i]);
  285. getPA().refreshSkill(i);
  286. }
  287. for(int p = 0; p < PRAYER.length; p++) { // reset prayer glows
  288. prayerActive[p] = false;
  289. getPA().sendFrame36(PRAYER_GLOW[p], 0);
  290. }
  291. //if (playerName.equalsIgnoreCase("Sanity")) {
  292. //getPA().sendCrashFrame();
  293. //}
  294. getPA().handleWeaponStyle();
  295. getPA().handleLoginText();
  296. accountFlagged = getPA().checkForFlags();
  297. //getPA().sendFrame36(43, fightMode-1);
  298. getPA().sendFrame36(108, 0);//resets autocast button
  299. getPA().sendFrame36(172, 1);
  300. getPA().sendFrame107(); // reset screen
  301. getPA().setChatOptions(0, 0, 0); // reset private messaging options
  302. setSidebarInterface(1, 3917);
  303. setSidebarInterface(2, 638);
  304. setSidebarInterface(3, 3213);
  305. setSidebarInterface(4, 1644);
  306. setSidebarInterface(5, 22500);
  307. if(playerMagicBook == 0) {
  308. setSidebarInterface(6, 1151); //modern
  309. }else {
  310. if(playerMagicBook == 2) {
  311. setSidebarInterface(6, 29999); //lunar
  312. }else {
  313. setSidebarInterface(6, 12855); // ancient
  314. }
  315. }
  316. correctCoordinates();
  317. setSidebarInterface(7, 18128);
  318. setSidebarInterface(8, 5065);
  319. setSidebarInterface(9, 5715);
  320. setSidebarInterface(10, 2449);
  321. //setSidebarInterface(11, 4445); // wrench tab
  322. setSidebarInterface(11, 904); // wrench tab
  323. setSidebarInterface(12, 147); // run tab
  324. setSidebarInterface(13, -1);
  325. setSidebarInterface(0, 2423);
  326. sendMessage("@red@Welcome to "+Config.SERVER_NAME);
  327. //sendMessage("@blu@Beta will begin tonight, and continue until next wednesday (when I return)");
  328. //sendMessage("@blu@At which point, I will fix up bugs and hopefully release it publicly next weekend.");
  329. //sendMessage("@blu@ALL BETA ACCOUNTS WILL BE RESET - EXP is at 10x it will be @ normal release.");
  330. getPA().showOption(4, 0,"Trade With", 3);
  331. getPA().showOption(5, 0,"Follow", 4);
  332. getItems().resetItems(3214);
  333. getItems().sendWeapon(playerEquipment[playerWeapon], getItems().getItemName(playerEquipment[playerWeapon]));
  334. getItems().resetBonus();
  335. getItems().getBonus();
  336. getItems().writeBonus();
  337. getItems().setEquipment(playerEquipment[playerHat],1,playerHat);
  338. getItems().setEquipment(playerEquipment[playerCape],1,playerCape);
  339. getItems().setEquipment(playerEquipment[playerAmulet],1,playerAmulet);
  340. getItems().setEquipment(playerEquipment[playerArrows],playerEquipmentN[playerArrows],playerArrows);
  341. getItems().setEquipment(playerEquipment[playerChest],1,playerChest);
  342. getItems().setEquipment(playerEquipment[playerShield],1,playerShield);
  343. getItems().setEquipment(playerEquipment[playerLegs],1,playerLegs);
  344. getItems().setEquipment(playerEquipment[playerHands],1,playerHands);
  345. getItems().setEquipment(playerEquipment[playerFeet],1,playerFeet);
  346. getItems().setEquipment(playerEquipment[playerRing],1,playerRing);
  347. getItems().setEquipment(playerEquipment[playerWeapon],playerEquipmentN[playerWeapon],playerWeapon);
  348. getCombat().getPlayerAnimIndex(getItems().getItemName(playerEquipment[playerWeapon]).toLowerCase());
  349. getPA().logIntoPM();
  350. getItems().addSpecialBar(playerEquipment[playerWeapon]);
  351. saveTimer = Config.SAVE_TIMER;
  352. saveCharacter = true;
  353. Misc.println("[REGISTERED]: "+playerName+"");
  354. handler.updatePlayer(this, outStream);
  355. handler.updateNPC(this, outStream);
  356. flushOutStream();
  357. getPA().clearClanChat();
  358. getPA().resetFollow();
  359. if (addStarter)
  360. getPA().addStarter();
  361. if (autoRet == 1)
  362. getPA().sendFrame36(172, 1);
  363. else
  364. getPA().sendFrame36(172, 0);
  365. if(bankpin != 0) {
  366. sendMessage("@red@To Access Your bank for This session.");
  367. sendMessage("@red@Type ::enterpin <yourpin>");
  368. } else {
  369. sendMessage("@blu@You have no bankpin yet! Type ::newpin <yourpin> to set!");
  370. }
  371. pinset = 0;
  372. }
  373. }
  374.  
  375.  
  376.  
  377. public void update() {
  378. synchronized (this) {
  379. handler.updatePlayer(this, outStream);
  380. handler.updateNPC(this, outStream);
  381. flushOutStream();
  382. }
  383. }
  384.  
  385. public void logout() {
  386. synchronized (this) {
  387. if(System.currentTimeMillis() - logoutDelay > 10000) {
  388. CycleEventHandler.getSingleton().stopEvents(this);
  389. outStream.createFrame(109);
  390. properLogout = true;
  391. } else {
  392. sendMessage("You must wait a few seconds from being out of combat to logout.");
  393. }
  394. }
  395. }
  396.  
  397. public int packetSize = 0, packetType = -1;
  398. public int donatorPoints = 0;
  399.  
  400. public void process() {
  401. getPA().sendFrame126("@or1@Players: @gre@"+PlayerHandler.getPlayerCount()+ "", 663);
  402.  
  403. if (wcTimer > 0 && woodcut[0] > 0) {
  404. wcTimer--;
  405. } else if (wcTimer == 0 && woodcut[0] > 0) {
  406. getWoodcutting().cutWood();
  407. } else if (miningTimer > 0 && mining[0] > 0) {
  408. miningTimer--;
  409. } else if (miningTimer == 0 && mining[0] > 0) {
  410. getMining().mineOre();
  411. } else if (smeltTimer > 0 && smeltType > 0) {
  412. smeltTimer--;
  413. } else if (smeltTimer == 0 && smeltType > 0) {
  414. getSmithing().smelt(smeltType);
  415. } else if (fishing && fishTimer > 0) {
  416. fishTimer--;
  417. } else if (fishing && fishTimer == 0) {
  418. getFishing().catchFish();
  419. }
  420.  
  421. if (System.currentTimeMillis() - lastPoison > 20000 && poisonDamage > 0) {
  422. int damage = poisonDamage/2;
  423. if (damage > 0) {
  424. sendMessage("Applying poison damage.");
  425. if (!getHitUpdateRequired()) {
  426. setHitUpdateRequired(true);
  427. setHitDiff(damage);
  428. updateRequired = true;
  429. poisonMask = 1;
  430. } else if (!getHitUpdateRequired2()) {
  431. setHitUpdateRequired2(true);
  432. setHitDiff2(damage);
  433. updateRequired = true;
  434. poisonMask = 2;
  435. }
  436. lastPoison = System.currentTimeMillis();
  437. poisonDamage--;
  438. dealDamage(damage);
  439. } else {
  440. poisonDamage = -1;
  441. sendMessage("You are no longer poisoned.");
  442. }
  443. }
  444.  
  445. if(System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) {
  446. if(duelCount != 1) {
  447. forcedChat(""+(--duelCount));
  448. duelDelay = System.currentTimeMillis();
  449. } else {
  450. damageTaken = new int[Config.MAX_PLAYERS];
  451. forcedChat("FIGHT!");
  452. duelCount = 0;
  453. }
  454. }
  455.  
  456. if(System.currentTimeMillis() - specDelay > Config.INCREASE_SPECIAL_AMOUNT) {
  457. specDelay = System.currentTimeMillis();
  458. if(specAmount < 10) {
  459. specAmount += .5;
  460. if (specAmount > 10)
  461. specAmount = 10;
  462. getItems().addSpecialBar(playerEquipment[playerWeapon]);
  463. }
  464. }
  465.  
  466. if(clickObjectType > 0 && goodDistance(objectX + objectXOffset, objectY + objectYOffset, getX(), getY(), objectDistance)) {
  467. if(clickObjectType == 1) {
  468. getActions().firstClickObject(objectId, objectX, objectY);
  469. }
  470. if(clickObjectType == 2) {
  471. getActions().secondClickObject(objectId, objectX, objectY);
  472. }
  473. if(clickObjectType == 3) {
  474. getActions().thirdClickObject(objectId, objectX, objectY);
  475. }
  476. }
  477.  
  478.  
  479.  
  480. if((clickNpcType > 0) && Server.npcHandler.npcs[npcClickIndex] != null) {
  481. if(goodDistance(getX(), getY(), Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY(), 1)) {
  482. if(clickNpcType == 1) {
  483. turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
  484. Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
  485. getActions().firstClickNpc(npcType);
  486. }
  487. if(clickNpcType == 2) {
  488. turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
  489. Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
  490. getActions().secondClickNpc(npcType);
  491. }
  492. if(clickNpcType == 3) {
  493. turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
  494. Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
  495. getActions().thirdClickNpc(npcType);
  496. }
  497. }
  498. }
  499.  
  500. if(walkingToItem) {
  501. if(getX() == pItemX && getY() == pItemY || goodDistance(getX(), getY(), pItemX, pItemY,1)) {
  502. walkingToItem = false;
  503. Server.itemHandler.removeGroundItem(this, pItemId, pItemX, pItemY, true);
  504. }
  505. }
  506.  
  507. if(followId > 0) {
  508. getPA().followPlayer();
  509. } else if (followId2 > 0) {
  510. getPA().followNpc();
  511. }
  512.  
  513. getCombat().handlePrayerDrain();
  514.  
  515. if(System.currentTimeMillis() - singleCombatDelay > 3300) {
  516. underAttackBy = 0;
  517. }
  518. if (System.currentTimeMillis() - singleCombatDelay2 > 3300) {
  519. underAttackBy2 = 0;
  520. }
  521.  
  522. if(System.currentTimeMillis() - restoreStatsDelay > 60000) {
  523. restoreStatsDelay = System.currentTimeMillis();
  524. for (int level = 0; level < playerLevel.length; level++) {
  525. if (playerLevel[level] < getLevelForXP(playerXP[level])) {
  526. if(level != 5) { // prayer doesn't restore
  527. playerLevel[level] += 1;
  528. getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
  529. getPA().refreshSkill(level);
  530. }
  531. } else if (playerLevel[level] > getLevelForXP(playerXP[level])) {
  532. playerLevel[level] -= 1;
  533. getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
  534. getPA().refreshSkill(level);
  535. }
  536. }
  537. }
  538.  
  539. if(System.currentTimeMillis() - teleGrabDelay > 1550 && usingMagic) {
  540. usingMagic = false;
  541. if(Server.itemHandler.itemExists(teleGrabItem, teleGrabX, teleGrabY)) {
  542. Server.itemHandler.removeGroundItem(this, teleGrabItem, teleGrabX, teleGrabY, true);
  543. }
  544. }
  545.  
  546. if(inWild()) {
  547. int modY = absY > 6400 ? absY - 6400 : absY;
  548. wildLevel = (((modY - 3520) / 8) + 1);
  549. getPA().walkableInterface(197);
  550. if(Config.SINGLE_AND_MULTI_ZONES) {
  551. if(inMulti()) {
  552. getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
  553. } else {
  554. getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
  555. }
  556. } else {
  557. getPA().multiWay(-1);
  558. getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
  559. }
  560. getPA().showOption(3, 0, "Attack", 1);
  561. } else if (inDuelArena()) {
  562. getPA().walkableInterface(201);
  563. if(duelStatus == 5) {
  564. getPA().showOption(3, 0, "Attack", 1);
  565. } else {
  566. getPA().showOption(3, 0, "Challenge", 1);
  567. }
  568. } else if(inBarrows()){
  569. getPA().sendFrame99(2);
  570. getPA().sendFrame126("Kill Count: "+barrowsKillCount, 4536);
  571. getPA().walkableInterface(4535);
  572. } else if (inCwGame || inPits) {
  573. getPA().showOption(3, 0, "Attack", 1);
  574. } else if (getPA().inPitsWait()) {
  575. getPA().showOption(3, 0, "Null", 1);
  576. }else if (!inCwWait) {
  577. getPA().sendFrame99(0);
  578. getPA().walkableInterface(-1);
  579. getPA().showOption(3, 0, "Null", 1);
  580. }
  581.  
  582. if(!hasMultiSign && inMulti()) {
  583. hasMultiSign = true;
  584. getPA().multiWay(1);
  585. }
  586.  
  587. if(hasMultiSign && !inMulti()) {
  588. hasMultiSign = false;
  589. getPA().multiWay(-1);
  590. }
  591.  
  592. if(skullTimer > 0) {
  593. skullTimer--;
  594. if(skullTimer == 1) {
  595. isSkulled = false;
  596. attackedPlayers.clear();
  597. headIconPk = -1;
  598. skullTimer = -1;
  599. getPA().requestUpdates();
  600. }
  601. }
  602.  
  603. if(isDead && respawnTimer == -6) {
  604. getPA().applyDead();
  605. }
  606.  
  607. if(respawnTimer == 7) {
  608. respawnTimer = -6;
  609. getPA().giveLife();
  610. } else if(respawnTimer == 12) {
  611. respawnTimer--;
  612. startAnimation(0x900);
  613. poisonDamage = -1;
  614. }
  615.  
  616. if(respawnTimer > -6) {
  617. respawnTimer--;
  618. }
  619. if(freezeTimer > -6) {
  620. freezeTimer--;
  621. if (frozenBy > 0) {
  622. if (Server.playerHandler.players[frozenBy] == null) {
  623. freezeTimer = -1;
  624. frozenBy = -1;
  625. } else if (!goodDistance(absX, absY, Server.playerHandler.players[frozenBy].absX, Server.playerHandler.players[frozenBy].absY, 20)) {
  626. freezeTimer = -1;
  627. frozenBy = -1;
  628. }
  629. }
  630. }
  631.  
  632. if(hitDelay > 0) {
  633. hitDelay--;
  634. }
  635.  
  636. if(teleTimer > 0) {
  637. teleTimer--;
  638. if (!isDead) {
  639. if(teleTimer == 1 && newLocation > 0) {
  640. teleTimer = 0;
  641. getPA().changeLocation();
  642. }
  643. if(teleTimer == 5) {
  644. teleTimer--;
  645. getPA().processTeleport();
  646. }
  647. if(teleTimer == 9 && teleGfx > 0) {
  648. teleTimer--;
  649. gfx100(teleGfx);
  650. }
  651. } else {
  652. teleTimer = 0;
  653. }
  654. }
  655.  
  656. if(hitDelay == 1) {
  657. if(oldNpcIndex > 0) {
  658. getCombat().delayedHit(oldNpcIndex);
  659. }
  660. if(oldPlayerIndex > 0) {
  661. getCombat().playerDelayedHit(oldPlayerIndex);
  662. }
  663. }
  664.  
  665. if(attackTimer > 0) {
  666. attackTimer--;
  667. }
  668.  
  669. if(attackTimer == 1){
  670. if(npcIndex > 0 && clickNpcType == 0) {
  671. getCombat().attackNpc(npcIndex);
  672. }
  673. if(playerIndex > 0) {
  674. getCombat().attackPlayer(playerIndex);
  675. }
  676. } else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) {
  677. if (npcIndex > 0) {
  678. attackTimer = 0;
  679. getCombat().attackNpc(npcIndex);
  680. } else if (playerIndex > 0) {
  681. attackTimer = 0;
  682. getCombat().attackPlayer(playerIndex);
  683. }
  684. }
  685.  
  686. if(timeOutCounter > Config.TIMEOUT) {
  687. disconnected = true;
  688. }
  689.  
  690. timeOutCounter++;
  691.  
  692. if(inTrade && tradeResetNeeded){
  693. Client o = (Client) Server.playerHandler.players[tradeWith];
  694. if(o != null){
  695. if(o.tradeResetNeeded){
  696. getTradeAndDuel().resetTrade();
  697. o.getTradeAndDuel().resetTrade();
  698. }
  699. }
  700. }
  701. }
  702.  
  703. public void setCurrentTask(Future<?> task) {
  704. currentTask = task;
  705. }
  706.  
  707. public Future<?> getCurrentTask() {
  708. return currentTask;
  709. }
  710.  
  711. public synchronized Stream getInStream() {
  712. return inStream;
  713. }
  714.  
  715. public synchronized int getPacketType() {
  716. return packetType;
  717. }
  718.  
  719. public synchronized int getPacketSize() {
  720. return packetSize;
  721. }
  722.  
  723. public synchronized Stream getOutStream() {
  724. return outStream;
  725. }
  726.  
  727. public ItemAssistant getItems() {
  728. return itemAssistant;
  729. }
  730.  
  731. public PlayerAssistant getPA() {
  732. return playerAssistant;
  733. }
  734.  
  735. public DialogueHandler getDH() {
  736. return dialogueHandler;
  737. }
  738.  
  739. public TradeLog getTradeLog() {
  740. return tradeLog;
  741. }
  742.  
  743. public ShopAssistant getShops() {
  744. return shopAssistant;
  745. }
  746.  
  747. public TradeAndDuel getTradeAndDuel() {
  748. return tradeAndDuel;
  749. }
  750.  
  751. public CombatAssistant getCombat() {
  752. return combatAssistant;
  753. }
  754.  
  755. public ActionHandler getActions() {
  756. return actionHandler;
  757. }
  758.  
  759. public IoSession getSession() {
  760. return session;
  761. }
  762.  
  763. public Curse getCurse() {
  764. return curse;
  765. }
  766.  
  767. public Potions getPotions() {
  768. return potions;
  769. }
  770.  
  771. public PotionMixing getPotMixing() {
  772. return potionMixing;
  773. }
  774.  
  775. public Food getFood() {
  776. return food;
  777. }
  778.  
  779. /**
  780. * Skill Constructors
  781. */
  782. public Slayer getSlayer() {
  783. return slayer;
  784. }
  785.  
  786. public Runecrafting getRunecrafting() {
  787. return runecrafting;
  788. }
  789.  
  790. public Woodcutting getWoodcutting() {
  791. return woodcutting;
  792. }
  793.  
  794. public Mining getMining() {
  795. return mine;
  796. }
  797.  
  798. public Cooking getCooking() {
  799. return cooking;
  800. }
  801.  
  802. public Agility getAgility() {
  803. return agility;
  804. }
  805.  
  806. public Fishing getFishing() {
  807. return fish;
  808. }
  809.  
  810. public Crafting getCrafting() {
  811. return crafting;
  812. }
  813.  
  814. public Smithing getSmithing() {
  815. return smith;
  816. }
  817.  
  818. public Farming getFarming() {
  819. return farming;
  820. }
  821.  
  822. public Thieving getThieving() {
  823. return thieving;
  824. }
  825.  
  826. public Herblore getHerblore() {
  827. return herblore;
  828. }
  829.  
  830. public Firemaking getFiremaking() {
  831. return firemaking;
  832. }
  833.  
  834. public SmithingInterface getSmithingInt() {
  835. return smithInt;
  836. }
  837.  
  838. /*public Prayer getPrayer() {
  839. return getPrayer();
  840. }*/
  841.  
  842. public Fletching getFletching() {
  843. return fletching;
  844. }
  845.  
  846. /**
  847. * End of Skill Constructors
  848. */
  849.  
  850. public void queueMessage(Packet arg1) {
  851. //synchronized(queuedPackets) {
  852. //if (arg1.getId() != 41)
  853. queuedPackets.add(arg1);
  854. //else
  855. //processPacket(arg1);
  856. //}
  857. }
  858.  
  859. public synchronized boolean processQueuedPackets() {
  860. Packet p = null;
  861. synchronized(queuedPackets) {
  862. p = queuedPackets.poll();
  863. }
  864. if(p == null) {
  865. return false;
  866. }
  867. inStream.currentOffset = 0;
  868. packetType = p.getId();
  869. packetSize = p.getLength();
  870. inStream.buffer = p.getData();
  871. if(packetType > 0) {
  872. //sendMessage("PacketType: " + packetType);
  873. PacketHandler.processPacket(this, packetType, packetSize);
  874. }
  875. timeOutCounter = 0;
  876. return true;
  877. }
  878. public boolean slayerHelmetEffect;
  879. public boolean kamfreenaDone;
  880. public boolean inCyclops;
  881. public boolean spawned;
  882. public boolean skillCapeEquipped() {
  883. int capes[] = {
  884. 9747, 9748, 9750, 9751,
  885. 9753, 9754, 9756, 9757,
  886. 9759, 9760, 9762, 9763,
  887. 9765, 9766, 9768, 9769,
  888. 9771, 9772, 9774, 9775,
  889. 9777, 9778, 9780, 9781,
  890. 9783, 9784, 9786, 9787,
  891. 9789, 9790, 9792, 9793,
  892. 9795, 9796, 9798, 9799,
  893. 9801, 9802, 9804, 9805,
  894. 9807, 9808, 9810, 9811,
  895. 9813
  896. };
  897. for(int i=0;i<capes.length;i++) {
  898. if(playerEquipment[playerCape] == capes[i])
  899. return true;
  900. }
  901. return false;
  902. }
  903.  
  904. public synchronized boolean processPacket(Packet p) {
  905. synchronized (this) {
  906. if(p == null) {
  907. return false;
  908. }
  909. inStream.currentOffset = 0;
  910. packetType = p.getId();
  911. packetSize = p.getLength();
  912. inStream.buffer = p.getData();
  913. if(packetType > 0) {
  914. //sendMessage("PacketType: " + packetType);
  915. PacketHandler.processPacket(this, packetType, packetSize);
  916. }
  917. timeOutCounter = 0;
  918. return true;
  919. }
  920. }
  921.  
  922.  
  923. public void correctCoordinates() {
  924. if (inPcGame()) {
  925. getPA().movePlayer(2657, 2639, 0);
  926. }
  927. if (inFightCaves()) {
  928. getPA().movePlayer(absX, absY, playerId * 4);
  929. sendMessage("Your wave will start in 10 seconds.");
  930. EventManager.getSingleton().addEvent(new Event() {
  931. public void execute(EventContainer c) {
  932. Server.fightCaves.spawnNextWave((Client)Server.playerHandler.players[playerId]);
  933. c.stop();
  934. }
  935. }, 10000);
  936.  
  937. }
  938.  
  939. }
  940.  
  941. }
Advertisement
Add Comment
Please, Sign In to add comment