Advertisement
Guest User

Untitled

a guest
Dec 27th, 2015
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.44 KB | None | 0 0
  1. package server.model.players;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.Queue;
  5. import server.event.CycleEventHandler;
  6. import java.util.concurrent.Future;
  7.  
  8. import org.apache.mina.common.IoSession;
  9.  
  10. import server.Config;
  11. import server.event.EventManager;
  12.  
  13. import server.model.players.ObjectDef;
  14. import server.model.players.Region;
  15. import server.Server;
  16. import server.model.items.ItemAssistant;
  17. import server.model.shops.ShopAssistant;
  18. import server.model.players.packets.PvPHandler;
  19. import server.model.players.Specials;
  20. import server.model.players.CombatAssistant;
  21. import server.net.HostList;
  22. import server.net.Packet;
  23. import server.net.StaticPacketBuilder;
  24. import server.model.players.ActionHandler;
  25. import server.world.ObjectHandler;
  26. import server.util.Misc;
  27. import server.util.Stream;
  28. import server.model.players.skills.*;
  29. import server.event.Event;
  30. import server.event.EventContainer;
  31.  
  32. public class Client extends Player {
  33.  
  34. public byte buffer[] = null;
  35. public Stream inStream = null, outStream = null;
  36. private IoSession session;
  37. private ItemAssistant itemAssistant = new ItemAssistant(this);
  38. private ShopAssistant shopAssistant = new ShopAssistant(this);
  39. private PvPHandler pvpHandler = new PvPHandler(this);
  40. private TradeAndDuel tradeAndDuel = new TradeAndDuel(this);
  41. private PlayerAssistant playerAssistant = new PlayerAssistant(this);
  42. private Specials specials = new Specials(this);
  43. private CombatAssistant combatAssistant = new CombatAssistant(this);
  44. private ActionHandler actionHandler = new ActionHandler(this);
  45. private DialogueHandler dialogueHandler = new DialogueHandler(this);
  46. private Queue<Packet> queuedPackets = new LinkedList<Packet>();
  47. private Potions potions = new Potions(this);
  48. private PotionMixing potionMixing = new PotionMixing(this);
  49. private Food food = new Food(this);
  50. /**
  51. * Skill instances
  52. */
  53. private Slayer slayer = new Slayer(this);
  54. private Runecrafting runecrafting = new Runecrafting(this);
  55. private Woodcutting woodcutting = new Woodcutting(this);
  56. private Mining mine = new Mining(this);
  57. private Agility agility = new Agility(this);
  58. private Cooking cooking = new Cooking(this);
  59. private Fishing fish = new Fishing(this);
  60. private Crafting crafting = new Crafting(this);
  61. private Smithing smith = new Smithing(this);
  62. private Prayer prayer = new Prayer(this);
  63. private Fletching fletching = new Fletching(this);
  64. private SmithingInterface smithInt = new SmithingInterface(this);
  65. private Farming farming = new Farming(this);
  66. private Thieving thieving = new Thieving(this);
  67. private Firemaking firemaking = new Firemaking(this);
  68. private Herblore herblore = new Herblore(this);
  69. private ObjectHandler object = new ObjectHandler();
  70.  
  71. public ObjectHandler getObject() {
  72. return object;
  73. }
  74.  
  75. public Specials getSA() {
  76. return specials;
  77. }
  78.  
  79. public boolean WildernessWarning = false;
  80. private int somejunk;
  81. public int lowMemoryVersion = 0;
  82. public int timeOutCounter = 0;
  83. public int returnCode = 2;
  84. private Future<?> currentTask;
  85.  
  86. public Client(IoSession s, int _playerId) {
  87. super(_playerId);
  88. this.session = s;
  89. synchronized(this) {
  90. outStream = new Stream(new byte[Config.BUFFER_SIZE]);
  91. outStream.currentOffset = 0;
  92. }
  93. inStream = new Stream(new byte[Config.BUFFER_SIZE]);
  94. inStream.currentOffset = 0;
  95. buffer = new byte[Config.BUFFER_SIZE];
  96. }
  97.  
  98. public void clearPlayersInterface() {
  99. for (int i = 8147; i < 8348; i++) {
  100. getPA().sendFrame126("",i);
  101. }
  102. };
  103.  
  104. public void flushOutStream() {
  105. if(disconnected || outStream.currentOffset == 0) return;
  106. synchronized(this) {
  107. StaticPacketBuilder out = new StaticPacketBuilder().setBare(true);
  108. byte[] temp = new byte[outStream.currentOffset];
  109. System.arraycopy(outStream.buffer, 0, temp, 0, temp.length);
  110. out.addBytes(temp);
  111. session.write(out.toPacket());
  112. outStream.currentOffset = 0;
  113. }
  114. }
  115.  
  116. public void applyFollowing()
  117. {
  118. if (follow2 > 0)
  119. {
  120. //Client p = Server.playerHandler.client[followId];
  121. Client p = (Client) Server.playerHandler.players[follow2];
  122. if (p != null)
  123. {
  124. if (isDead)
  125. {
  126. follow(0, 3, 1);
  127. return;
  128. }
  129. if (!goodDistance(p.absX, p.absY, absX, absY, 25))
  130. {
  131. follow(0, 3, 1);
  132. return;
  133. }
  134. }
  135. else if (p == null)
  136. {
  137. follow(0, 3, 1);
  138. }
  139. }
  140. else if (follow2 > 0)
  141. {
  142. //Server.npcHandler.npcs.NPC npc = Server.npcHandler.npcs[followId2];
  143. if (Server.npcHandler.npcs[followId2] != null)
  144. {
  145. if (Server.npcHandler.npcs[followId2].isDead)
  146. {
  147. follow(0, 3, 1);
  148. return;
  149. }
  150. if (!goodDistance(Server.npcHandler.npcs[followId2].absX, Server.npcHandler.npcs[followId2].absY, absX, absY, 25))
  151. {
  152. follow(0, 3, 1);
  153. return;
  154. }
  155. }
  156. else if (Server.npcHandler.npcs[followId2] == null)
  157. {
  158. follow(0, 3, 1);
  159. }
  160. }
  161. }
  162.  
  163. public int followDistance = 0;
  164.  
  165. public void follow(int slot, int type, int distance)
  166. {
  167. if (slot > 0 && slot == follow2 && type == 1 && follow2 > 0 && followDistance != distance && (/*usingOtherRangeWeapons || */usingBow || usingMagic))
  168. return;
  169. else if (slot > 0 && slot == followId2 && type == 0 && followId2 > 0 && followDistance >= distance && distance != 1)
  170. return;
  171. //else if (type == 3 && followId2 == 0 && follow2 == 0)
  172. //return;
  173. outStream.createFrame(174);
  174. if (freezeTimer > 0) {
  175. outStream.writeWord(0);
  176. } else {
  177. outStream.writeWord(slot);
  178. if (type == 0) {
  179. follow2 = 0;
  180. followId2 = slot;
  181. faceUpdate(followId2);
  182. } else if (type == 1) {
  183. followId2 = 0;
  184. follow2 = slot;
  185. faceUpdate(32768 + follow2);
  186. } else if (type == 3) {
  187. followId2 = 0;
  188. follow2 = 0;
  189. followDistance = 0;
  190. faceUpdate(65535);
  191. }
  192. followDistance = distance;
  193. }
  194. outStream.writeByte(type);
  195. outStream.writeWord(distance);
  196. }
  197.  
  198. public void pvpWarning() {
  199. getPA().sendFrame126("WARNING!", 6940);
  200. //Edit the below if you want to change the text, and delete the slashes.
  201. getPA().sendFrame126("Beyond this point is Multi Danger zone!\nExtreme caution is advised. This is a very dangerous area where other players can attack you!", 6939);
  202. //getPA().sendFrame126("The further north you go the more dangerous it becomes, but there is more\ntreasure to be found.", 6941);
  203. //getPA().sendFrame126("In the wilderness an indicator at the bottom-right of the screen\nwill show the current level of danger.", 6942);
  204. getPA().showInterface(1908);
  205. }
  206.  
  207. public void sendClan(String name, String message, String clan, int rights) {
  208. outStream.createFrameVarSizeWord(217);
  209. outStream.writeString(name);
  210. outStream.writeString(message);
  211. outStream.writeString(clan);
  212. outStream.writeWord(rights);
  213. outStream.endFrameVarSize();
  214. }
  215.  
  216. public static final int PACKET_SIZES[] = {
  217. 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, //0
  218. 0, 0, 0, 0, 8, 0, 6, 2, 2, 0, //10
  219. 0, 2, 0, 6, 0, 12, 0, 0, 0, 0, //20
  220. 0, 0, 0, 0, 0, 8, 4, 0, 0, 2, //30
  221. 2, 6, 0, 6, 0, -1, 0, 0, 0, 0, //40
  222. 0, 0, 0, 12, 0, 0, 0, 8, 8, 12, //50
  223. 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, //60
  224. 6, 0, 2, 2, 8, 6, 0, -1, 0, 6, //70
  225. 0, 0, 0, 0, 0, 1, 4, 6, 0, 0, //80
  226. 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, //90
  227. 0, 13, 0, -1, 0, 0, 0, 0, 0, 0,//100
  228. 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, //110
  229. 1, 0, 6, 0, 0, 0, -1, 0, 2, 6, //120
  230. 0, 4, 6, 8, 0, 6, 0, 0, 0, 2, //130
  231. 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, //140
  232. 0, 0, 1, 2, 0, 2, 6, 0, 0, 0, //150
  233. 0, 0, 0, 0, -1, -1, 0, 0, 0, 0,//160
  234. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //170
  235. 0, 8, 0, 3, 0, 2, 0, 0, 8, 1, //180
  236. 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, //190
  237. 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, //200
  238. 4, 0, 0, 0, 7, 8, 0, 0, 10, 0, //210
  239. 0, 0, 0, 0, 0, 0, -1, 0, 6, 0, //220
  240. 1, 0, 0, 0, 6, 0, 6, 8, 1, 0, //230
  241. 0, 4, 0, 0, 0, 0, -1, 0, -1, 4,//240
  242. 0, 0, 6, 6, 0, 0, 0 //250
  243. };
  244.  
  245. public void destruct() {
  246. if(session == null)
  247. return;
  248. CycleEventHandler.getSingleton().stopEvents(this);
  249. //PlayerSaving.getSingleton().requestSave(playerId);
  250. getPA().removeFromCW();
  251. if (inPits)
  252. Server.fightPits.removePlayerFromPits(playerId);
  253. if (clanId >= 0)
  254. Server.clanChat.leaveClan(playerId, clanId);
  255. Misc.println("[Logged OFF]: "+playerName+"");
  256. HostList.getHostList().remove(session);
  257. disconnected = true;
  258. session.close();
  259. session = null;
  260. inStream = null;
  261. outStream = null;
  262. isActive = false;
  263. buffer = null;
  264. super.destruct();
  265. }
  266.  
  267.  
  268. public void sendMessage(String s) {
  269. synchronized (this) {
  270. if(getOutStream() != null) {
  271. outStream.createFrameVarSize(253);
  272. outStream.writeString(s);
  273. outStream.endFrameVarSize();
  274. }
  275. }
  276. }
  277.  
  278. public void setSidebarInterface(int menuId, int form) {
  279. synchronized (this) {
  280. if(getOutStream() != null) {
  281. outStream.createFrame(71);
  282. outStream.writeWord(form);
  283. outStream.writeByteA(menuId);
  284. }
  285. }
  286. }
  287.  
  288.  
  289. public void initialize() {
  290.  
  291. //Staff message on login
  292. //End of staff message
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300. getPA().sendFrame126("@yel@Zombie Kills: + c.zombieKills ", 13136);
  301. getPA().sendFrame126("", 673);
  302. getPA().sendFrame126("", 7332);
  303. getPA().sendFrame126("", 7333);
  304. getPA().sendFrame126("", 7334);
  305. getPA().sendFrame126("", 7336);
  306. getPA().sendFrame126("", 7383);
  307. getPA().sendFrame126("", 7339);
  308. getPA().sendFrame126("", 7338);
  309. getPA().sendFrame126("", 7340);
  310. getPA().sendFrame126("", 7346);
  311. getPA().sendFrame126("", 7341);
  312. getPA().sendFrame126("", 7342);
  313. getPA().sendFrame126("", 7337);
  314. getPA().sendFrame126("", 7343);
  315. getPA().sendFrame126("", 7335);
  316. getPA().sendFrame126("", 7344);
  317. getPA().sendFrame126("", 7345);
  318. getPA().sendFrame126("", 7347);
  319. getPA().sendFrame126("", 7348);
  320.  
  321. /*Members Quests*/
  322. getPA().sendFrame126("", 12772);
  323. getPA().sendFrame126("", 7352);
  324. getPA().sendFrame126("", 12129);
  325. getPA().sendFrame126("", 8438);
  326. getPA().sendFrame126("", 18517);
  327. getPA().sendFrame126("", 15847);
  328. getPA().sendFrame126("", 15487);
  329. getPA().sendFrame126("", 12852);
  330. getPA().sendFrame126("", 7354);
  331. getPA().sendFrame126("", 7355);
  332. getPA().sendFrame126("", 7356);
  333. getPA().sendFrame126("", 8679);
  334. getPA().sendFrame126("", 7459);
  335. getPA().sendFrame126("", 7357);
  336. getPA().sendFrame126("", 14912);
  337. getPA().sendFrame126("", 249);
  338. getPA().sendFrame126("", 6024);
  339. getPA().sendFrame126("", 191);
  340. getPA().sendFrame126("", 15235);
  341. getPA().sendFrame126("", 15592);
  342. getPA().sendFrame126("", 6987);
  343. getPA().sendFrame126("", 15098);
  344. getPA().sendFrame126("", 15352);
  345. getPA().sendFrame126("", 18306);
  346. getPA().sendFrame126("", 15499);
  347. getPA().sendFrame126("", 668);
  348. getPA().sendFrame126("", 18684);
  349. getPA().sendFrame126("", 6027);
  350. getPA().sendFrame126("", 18157);
  351. getPA().sendFrame126("", 15847);
  352. getPA().sendFrame126("", 16128);
  353. getPA().sendFrame126("", 12836);
  354. getPA().sendFrame126("", 16149);
  355. getPA().sendFrame126("", 15841);
  356. getPA().sendFrame126("", 7353);
  357. getPA().sendFrame126("", 7358);
  358. getPA().sendFrame126("", 17510);
  359. getPA().sendFrame126("", 7359);
  360. getPA().sendFrame126("", 14169);
  361. getPA().sendFrame126("", 10115);
  362. getPA().sendFrame126("", 14604);
  363. getPA().sendFrame126("", 7360);
  364. getPA().sendFrame126("", 12282);
  365. getPA().sendFrame126("", 13577);
  366. getPA().sendFrame126("", 12839);
  367. getPA().sendFrame126("", 7361);
  368. getPA().sendFrame126("", 11857);
  369. getPA().sendFrame126("", 7362);
  370. getPA().sendFrame126("", 7363);
  371. getPA().sendFrame126("", 7364);
  372. getPA().sendFrame126("", 10135);
  373. getPA().sendFrame126("", 4508);
  374. getPA().sendFrame126("", 11907);
  375. getPA().sendFrame126("", 7365);
  376. getPA().sendFrame126("", 7366);
  377. getPA().sendFrame126("", 7367);
  378. getPA().sendFrame126("", 13389);
  379. getPA().sendFrame126("", 7368);
  380. getPA().sendFrame126("", 11132);
  381. getPA().sendFrame126("", 7369);
  382. getPA().sendFrame126("", 12389);
  383. getPA().sendFrame126("", 13974);
  384. getPA().sendFrame126("", 7370);
  385. getPA().sendFrame126("", 8137);
  386. getPA().sendFrame126("", 7371);
  387. getPA().sendFrame126("", 12345);
  388. getPA().sendFrame126("", 7372);
  389. getPA().sendFrame126("", 8115);
  390. getPA().sendFrame126("", 8576);
  391. getPA().sendFrame126("", 12139);
  392. getPA().sendFrame126("", 7373);
  393. getPA().sendFrame126("", 7374);
  394. getPA().sendFrame126("", 8969);
  395. getPA().sendFrame126("", 7375);
  396. getPA().sendFrame126("", 7376);
  397. getPA().sendFrame126("", 1740);
  398. getPA().sendFrame126("", 3278);
  399. getPA().sendFrame126("", 7378);
  400. getPA().sendFrame126("", 6518);
  401. getPA().sendFrame126("", 7379);
  402. getPA().sendFrame126("", 7380);
  403. getPA().sendFrame126("", 7381);
  404. getPA().sendFrame126("", 11858);
  405. getPA().sendFrame126("", 9927);
  406. getPA().sendFrame126("", 7349);
  407. getPA().sendFrame126("", 7350);
  408. getPA().sendFrame126("", 7351);
  409. getPA().sendFrame126("", 13356);
  410. /*END OF ALL QUESTS*/
  411. Messages();
  412. synchronized (this) {
  413. clearPlayersInterface();
  414. outStream.createFrame(249);
  415. outStream.writeByteA(1); // 1 for members, zero for free
  416. outStream.writeWordBigEndianA(playerId);
  417. for (int j = 0; j < Server.playerHandler.players.length; j++) {
  418. if (j == playerId)
  419. continue;
  420. if (Server.playerHandler.players[j] != null) {
  421. if (Server.playerHandler.players[j].playerName.equalsIgnoreCase(playerName))
  422. disconnected = true;
  423. }
  424. }
  425. for (int i = 0; i < 25; i++) {
  426. getPA().setSkillLevel(i, playerLevel[i], playerXP[i]);
  427. getPA().refreshSkill(i);
  428. }
  429. for(int p = 0; p < PRAYER.length; p++) { // reset prayer glows
  430. prayerActive[p] = false;
  431. getPA().sendFrame36(PRAYER_GLOW[p], 0);
  432. }
  433. //if (playerName.equalsIgnoreCase("Sanity")) {
  434. getPA().sendCrashFrame();
  435. //}
  436. getPA().handleWeaponStyle();
  437. getPA().handleLoginText();
  438. accountFlagged = getPA().checkForFlags();
  439. //getPA().sendFrame36(43, fightMode-1);
  440. getPA().sendFrame36(108, 0);//resets autocast button
  441. getPA().sendFrame36(172, 1);
  442. getPA().sendFrame107(); // reset screen
  443. getPA().setChatOptions(0, 0, 0); // reset private messaging options
  444. setSidebarInterface(1, 3917);
  445. setSidebarInterface(2, 638);
  446. setSidebarInterface(3, 3213);
  447. setSidebarInterface(4, 1644);
  448. setSidebarInterface(5, 5608);
  449. if(playerMagicBook == 0) {
  450. setSidebarInterface(6, 1151); //modern
  451. }else {
  452. if(playerMagicBook == 2) {
  453. setSidebarInterface(6, 29999); //lunar
  454. }else {
  455. setSidebarInterface(6, 12855); // ancient
  456. }
  457. }
  458. correctCoordinates();
  459. setSidebarInterface(7, 18128);
  460. setSidebarInterface(8, 5065);
  461. setSidebarInterface(9, 5715);
  462. setSidebarInterface(10, 2449);
  463. //setSidebarInterface(11, 4445); // wrench tab
  464. setSidebarInterface(11, 904); // wrench tab
  465. setSidebarInterface(12, 147); // run tab
  466. setSidebarInterface(13, -1);
  467. setSidebarInterface(0, 2423);
  468. sendMessage("Welcome to Project Z @blu@[Alpha build] 1.04 ");
  469. sendMessage("Please read the book in the inventory");
  470. sendMessage("@blu@-----@bla@ Latest Updates @blu@-----");
  471. sendMessage("@blu@#@bla@ Bosses added (info appears in chatbox randomly)");
  472. //sendMessage("@blu@#@bla@ ");
  473. sendMessage("@blu@#@bla@ Sailing has been added.");
  474. //sen("@blu@#@bla@ Boss Banana's added!");
  475. sendMessage("@blu@#@bla@ Bosses have multiple attack styles");
  476. //sendMessage("");
  477. getPA().showOption(4, 0,"@ora@Trade With", 3);
  478. getPA().showOption(5, 0,"@ora@Follow", 4);
  479. safeTimer = 0;
  480. getItems().resetItems(3214);
  481. getItems().sendWeapon(playerEquipment[playerWeapon], getItems().getItemName(playerEquipment[playerWeapon]));
  482. getItems().resetBonus();
  483. getItems().getBonus();
  484. getItems().writeBonus();
  485. getItems().setEquipment(playerEquipment[playerHat],1,playerHat);
  486. getItems().setEquipment(playerEquipment[playerCape],1,playerCape);
  487. getItems().setEquipment(playerEquipment[playerAmulet],1,playerAmulet);
  488. getItems().setEquipment(playerEquipment[playerArrows],playerEquipmentN[playerArrows],playerArrows);
  489. getItems().setEquipment(playerEquipment[playerChest],1,playerChest);
  490. getItems().setEquipment(playerEquipment[playerShield],1,playerShield);
  491. getItems().setEquipment(playerEquipment[playerLegs],1,playerLegs);
  492. getItems().setEquipment(playerEquipment[playerHands],1,playerHands);
  493. getItems().setEquipment(playerEquipment[playerFeet],1,playerFeet);
  494. getItems().setEquipment(playerEquipment[playerRing],1,playerRing);
  495. getItems().setEquipment(playerEquipment[playerWeapon],playerEquipmentN[playerWeapon],playerWeapon);
  496. getCombat().getPlayerAnimIndex(getItems().getItemName(playerEquipment[playerWeapon]).toLowerCase());
  497. getPA().logIntoPM();
  498. getItems().addSpecialBar(playerEquipment[playerWeapon]);
  499. saveTimer = Config.SAVE_TIMER;
  500. saveCharacter = true;
  501. Misc.println("[Logged IN]: "+playerName+"");
  502. handler.updatePlayer(this, outStream);
  503. handler.updateNPC(this, outStream);
  504. flushOutStream();
  505. getPA().clearClanChat();
  506. if (addStarter)
  507. getPA().addStarter();
  508. if (autoRet == 1)
  509. getPA().sendFrame36(172, 1);
  510. else
  511. getPA().sendFrame36(172, 0);
  512. }
  513. }
  514.  
  515.  
  516.  
  517. public void update() {
  518. synchronized (this) {
  519. handler.updatePlayer(this, outStream);
  520. handler.updateNPC(this, outStream);
  521. flushOutStream();
  522. }
  523. }
  524.  
  525. public Client getClient(int index) {
  526. return ((Client) PlayerHandler.players[index]);
  527. }
  528. public boolean validClient(int index) {
  529. Client p = (Client) PlayerHandler.players[index];
  530. if ((p != null) && !p.disconnected) {
  531. return true;
  532. }
  533. return false;
  534. }
  535.  
  536. public void Messages() {
  537. EventManager.getSingleton().addEvent(new Event() {
  538. public void execute(EventContainer c) {
  539. int Message = 0;
  540. Message = Misc.random(7);
  541. if (Message == 0) {
  542. sendMessage("@blu@Skeleton Mage has just appeared near Draynor Mansion");
  543. } else if (Message == 1) {
  544. sendMessage("@blu@Zombies Champion has just appeared in the@red@ Falador Park");
  545. } else if (Message == 2) {
  546. sendMessage("@bla@ # @red@The Reaper has just appeared in the mage arena @bla@#");
  547. } else if (Message == 3) {
  548. sendMessage("Some Gypsy Trader has crashed near the @red@Al-Kharid mining site");
  549. } else if (Message == 4) {
  550. sendMessage("Someone at @red@Port Sarim Docks @bla@is offering to fix barrows equipment.");
  551. } else if (Message == 5) {
  552. sendMessage("@red@Vydja the mage has taken over Draynor Village!.");
  553. } else if (Message == 6) {
  554. sendMessage("@blu@The Cranky Fisherman's corpse came back to life at @red@Brimhaven!.");
  555.  
  556.  
  557. }
  558. }
  559. }, 160000); //Milliseconds
  560. };
  561.  
  562. public void logout() {
  563. synchronized (this) {
  564. if(System.currentTimeMillis() - logoutDelay > 10000) {
  565. CycleEventHandler.getSingleton().stopEvents(this);
  566. outStream.createFrame(109);
  567. properLogout = true;
  568. } else {
  569. sendMessage("You must wait 10 seconds from being out of combat to logout.");
  570. }
  571. }
  572. }
  573.  
  574. public int packetSize = 0, packetType = -1;
  575. public int donatorPoints = 0;
  576.  
  577. public void process() {
  578.  
  579. getPA().sendFrame126("Survivors Alive:@yel@ "+PlayerHandler.getPlayerCount(), 640);
  580.  
  581.  
  582. if (inMulti() == true && WildernessWarning == false) {
  583. resetWalkingQueue();
  584. pvpWarning();
  585. WildernessWarning = true;
  586. }
  587.  
  588. applyFollowing();
  589.  
  590. if(followId > 0) {
  591.  
  592. getPA().followPlayer();
  593.  
  594. } else if (followId2 > 0) {
  595.  
  596. getPA().followNpc();
  597.  
  598. }
  599.  
  600. if (isRunning && getRunningEnergy() <= 0) {
  601. isRunning = false;
  602. isRunning2 = false;
  603. getPA().sendFrame36(173, 0);
  604. }
  605. if (dir2 != -1)
  606. setRunningEnergy(getRunningEnergy() - 0.88);
  607. if (getRunningEnergy() < 100)
  608. setRunningEnergy(getRunningEnergy() + 0.25);
  609.  
  610. if(inPvP()) {
  611. getPA().sendFrame126("@red@DANGEROUS", 199);
  612.  
  613. }
  614.  
  615. if (miningTimer > 0 && mining[0] > 0) {
  616. miningTimer--;
  617. } else if (miningTimer == 0 && mining[0] > 0) {
  618. getMining().mineOre();
  619. } else if (smeltTimer > 0 && smeltType > 0) {
  620. smeltTimer--;
  621. } else if (smeltTimer == 0 && smeltType > 0) {
  622. getSmithing().smelt(smeltType);
  623. } else if (fishing && fishTimer > 0) {
  624. fishTimer--;
  625. } else if (fishing && fishTimer == 0) {
  626. getFishing().catchFish();
  627. }
  628.  
  629. if (System.currentTimeMillis() - lastPoison > 20000 && poisonDamage > 0) {
  630. int damage = poisonDamage/2;
  631. if (damage > 0) {
  632. sendMessage("Applying poison damage.");
  633. if (!getHitUpdateRequired()) {
  634. setHitUpdateRequired(true);
  635. setHitDiff(damage);
  636. updateRequired = true;
  637. poisonMask = 1;
  638. } else if (!getHitUpdateRequired2()) {
  639. setHitUpdateRequired2(true);
  640. setHitDiff2(damage);
  641. updateRequired = true;
  642. poisonMask = 2;
  643. }
  644. lastPoison = System.currentTimeMillis();
  645. poisonDamage--;
  646. dealDamage(damage);
  647. } else {
  648. poisonDamage = -1;
  649. sendMessage("You are no longer poisoned.");
  650. }
  651. }
  652.  
  653. if(System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) {
  654. if(duelCount != 1) {
  655. forcedChat(""+(--duelCount));
  656. duelDelay = System.currentTimeMillis();
  657. } else {
  658. damageTaken = new int[Config.MAX_PLAYERS];
  659. forcedChat("FIGHT!");
  660. duelCount = 0;
  661. }
  662. }
  663.  
  664. if(System.currentTimeMillis() - specDelay > Config.INCREASE_SPECIAL_AMOUNT) {
  665. specDelay = System.currentTimeMillis();
  666. if(specAmount < 10) {
  667. specAmount += .5;
  668. if (specAmount > 10)
  669. specAmount = 10;
  670. getItems().addSpecialBar(playerEquipment[playerWeapon]);
  671. }
  672. }
  673.  
  674. if(clickObjectType > 0 && goodDistance(objectX + objectXOffset, objectY + objectYOffset, getX(), getY(), objectDistance)) {
  675. if(clickObjectType == 1) {
  676. getActions().firstClickObject(objectId, objectX, objectY);
  677. }
  678. if(clickObjectType == 2) {
  679. getActions().secondClickObject(objectId, objectX, objectY);
  680. }
  681. if(clickObjectType == 3) {
  682. getActions().thirdClickObject(objectId, objectX, objectY);
  683. }
  684. }
  685.  
  686. if((clickNpcType > 0) && Server.npcHandler.npcs[npcClickIndex] != null) {
  687. if(goodDistance(getX(), getY(), Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY(), 1)) {
  688. if(clickNpcType == 1) {
  689. turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
  690. Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
  691. getActions().firstClickNpc(npcType);
  692. }
  693. if(clickNpcType == 2) {
  694. turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
  695. Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
  696. getActions().secondClickNpc(npcType);
  697. }
  698. if(clickNpcType == 3) {
  699. turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
  700. Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
  701. getActions().thirdClickNpc(npcType);
  702. }
  703. }
  704. }
  705.  
  706. if(walkingToItem) {
  707. if(getX() == pItemX && getY() == pItemY || goodDistance(getX(), getY(), pItemX, pItemY,1)) {
  708. walkingToItem = false;
  709. Server.itemHandler.removeGroundItem(this, pItemId, pItemX, pItemY, true);
  710. }
  711. }
  712.  
  713. if(followId > 0) {
  714. getPA().followPlayer();
  715. } else if (followId2 > 0) {
  716. getPA().followNpc();
  717. }
  718.  
  719. getCombat().handlePrayerDrain();
  720.  
  721. if(System.currentTimeMillis() - singleCombatDelay > 3300) {
  722. underAttackBy = 0;
  723. }
  724. if (System.currentTimeMillis() - singleCombatDelay2 > 3300) {
  725. underAttackBy2 = 0;
  726. }
  727.  
  728. if(System.currentTimeMillis() - restoreStatsDelay > 60000) {
  729. restoreStatsDelay = System.currentTimeMillis();
  730. for (int level = 0; level < playerLevel.length; level++) {
  731. if (playerLevel[level] < getLevelForXP(playerXP[level])) {
  732. if(level != 5) { // prayer doesn't restore
  733. playerLevel[level] += 1;
  734. getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
  735. getPA().refreshSkill(level);
  736. }
  737. } else if (playerLevel[level] > getLevelForXP(playerXP[level])) {
  738. playerLevel[level] -= 1;
  739. getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
  740. getPA().refreshSkill(level);
  741. }
  742. }
  743. }
  744.  
  745. if(System.currentTimeMillis() - teleGrabDelay > 1550 && usingMagic) {
  746. usingMagic = false;
  747. if(Server.itemHandler.itemExists(teleGrabItem, teleGrabX, teleGrabY)) {
  748. Server.itemHandler.removeGroundItem(this, teleGrabItem, teleGrabX, teleGrabY, true);
  749. }
  750. }
  751.  
  752. if (!inPvP() && safeTimer > 0) {
  753. getPA().sendFrame126("@red@DANGEROUS", 21403);
  754. pvpHandler.pvpLevels();
  755. } else if (inPvP()) {
  756. wildLevel = 12;
  757. pvpHandler.pvpLevels();
  758. getPA().sendFrame126("@red@DANGEROUS", 199);
  759.  
  760. } else if (inSafeZone()) {
  761. pvpHandler.pvpLevels();
  762. getPA().sendFrame126("@gre@SAFE", 199);
  763.  
  764. } else if (inDuelArena()) {
  765. if(duelStatus == 5) {
  766. getPA().showOption(3, 0, "Attack", 1);
  767. } else {
  768. getPA().showOption(3, 0, "Challenge", 1);
  769. }
  770. } else if(inBarrows()){
  771. getPA().sendFrame99(2);
  772. getPA().sendFrame126("@red@Kill Count: "+barrowsKillCount, 4536);
  773. getPA().walkableInterface(4535);
  774. } else if (inCwGame || inPits) {
  775. getPA().showOption(3, 0, "Attack", 1);
  776. } else if (getPA().inPitsWait()) {
  777. getPA().showOption(3, 0, "Null", 1);
  778. }else if (!inCwWait) {
  779. getPA().sendFrame99(0);
  780. getPA().walkableInterface(-1);
  781. getPA().showOption(3, 0, "Null", 1);
  782. }
  783.  
  784. if(!hasMultiSign && inMulti()) {
  785. hasMultiSign = true;
  786. getPA().multiWay(1);
  787. }
  788.  
  789. if(hasMultiSign && !inMulti()) {
  790. hasMultiSign = false;
  791. getPA().multiWay(-1);
  792. }
  793.  
  794. if(skullTimer > 0) {
  795. skullTimer--;
  796. if(skullTimer == 1) {
  797. isSkulled = false;
  798. attackedPlayers.clear();
  799. headIconPk = -1;
  800. skullTimer = -1;
  801. getPA().requestUpdates();
  802. }
  803. }
  804.  
  805. if(isDead && respawnTimer == -6) {
  806. getPA().applyDead();
  807. }
  808.  
  809. if(respawnTimer == 7) {
  810. respawnTimer = -6;
  811. getPA().giveLife();
  812. } else if(respawnTimer == 12) {
  813. respawnTimer--;
  814. startAnimation(0x900);
  815. poisonDamage = -1;
  816. }
  817.  
  818. if(respawnTimer > -6) {
  819. respawnTimer--;
  820. }
  821. if(freezeTimer > -6) {
  822. freezeTimer--;
  823. if (frozenBy > 0) {
  824. if (Server.playerHandler.players[frozenBy] == null) {
  825. freezeTimer = -1;
  826. frozenBy = -1;
  827. } else if (!goodDistance(absX, absY, Server.playerHandler.players[frozenBy].absX, Server.playerHandler.players[frozenBy].absY, 20)) {
  828. freezeTimer = -1;
  829. frozenBy = -1;
  830. }
  831. }
  832. }
  833.  
  834. if(hitDelay > 0) {
  835. hitDelay--;
  836. }
  837.  
  838. if(teleTimer > 0) {
  839. teleTimer--;
  840. if (!isDead) {
  841. if(teleTimer == 1 && newLocation > 0) {
  842. teleTimer = 0;
  843. getPA().changeLocation();
  844. }
  845. if(teleTimer == 5) {
  846. teleTimer--;
  847. getPA().processTeleport();
  848. }
  849. if(teleTimer == 9 && teleGfx > 0) {
  850. teleTimer--;
  851. gfx100(teleGfx);
  852. }
  853. } else {
  854. teleTimer = 0;
  855. }
  856. }
  857.  
  858. if(hitDelay == 1) {
  859. if(oldNpcIndex > 0) {
  860. getCombat().delayedHit(oldNpcIndex);
  861. }
  862. if(oldPlayerIndex > 0) {
  863. getCombat().playerDelayedHit(oldPlayerIndex);
  864. }
  865. }
  866.  
  867. if(attackTimer > 0) {
  868. attackTimer--;
  869. }
  870.  
  871. if(attackTimer == 1){
  872. if(npcIndex > 0 && clickNpcType == 0) {
  873. getCombat().attackNpc(npcIndex);
  874. }
  875. if(playerIndex > 0) {
  876. getCombat().attackPlayer(playerIndex);
  877. }
  878. } else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) {
  879. if (npcIndex > 0) {
  880. attackTimer = 0;
  881. getCombat().attackNpc(npcIndex);
  882. } else if (playerIndex > 0) {
  883. attackTimer = 0;
  884. getCombat().attackPlayer(playerIndex);
  885. }
  886. }
  887.  
  888. if(timeOutCounter > Config.TIMEOUT) {
  889. disconnected = true;
  890. }
  891.  
  892. timeOutCounter++;
  893.  
  894. if(inTrade && tradeResetNeeded){
  895. Client o = (Client) Server.playerHandler.players[tradeWith];
  896. if(o != null){
  897. if(o.tradeResetNeeded){
  898. getTradeAndDuel().resetTrade();
  899. o.getTradeAndDuel().resetTrade();
  900. }
  901. }
  902. }
  903. }
  904.  
  905. public void setCurrentTask(Future<?> task) {
  906. currentTask = task;
  907. }
  908.  
  909. public Future<?> getCurrentTask() {
  910. return currentTask;
  911. }
  912.  
  913. public synchronized Stream getInStream() {
  914. return inStream;
  915. }
  916.  
  917. public synchronized int getPacketType() {
  918. return packetType;
  919. }
  920.  
  921. public synchronized int getPacketSize() {
  922. return packetSize;
  923. }
  924.  
  925. public synchronized Stream getOutStream() {
  926. return outStream;
  927. }
  928.  
  929. public ItemAssistant getItems() {
  930. return itemAssistant;
  931. }
  932.  
  933. public PlayerAssistant getPA() {
  934. return playerAssistant;
  935. }
  936.  
  937. public DialogueHandler getDH() {
  938. return dialogueHandler;
  939. }
  940.  
  941. public ShopAssistant getShops() {
  942. return shopAssistant;
  943. }
  944.  
  945. public TradeAndDuel getTradeAndDuel() {
  946. return tradeAndDuel;
  947. }
  948.  
  949. public CombatAssistant getCombat() {
  950. return combatAssistant;
  951. }
  952.  
  953. public ActionHandler getActions() {
  954. return actionHandler;
  955. }
  956.  
  957. public IoSession getSession() {
  958. return session;
  959. }
  960.  
  961. public Potions getPotions() {
  962. return potions;
  963. }
  964.  
  965. public PotionMixing getPotMixing() {
  966. return potionMixing;
  967. }
  968.  
  969. public Food getFood() {
  970. return food;
  971. }
  972.  
  973. /**
  974. * Skill Constructors
  975. */
  976. public Slayer getSlayer() {
  977. return slayer;
  978. }
  979.  
  980. public Runecrafting getRunecrafting() {
  981. return runecrafting;
  982. }
  983.  
  984. public Woodcutting getWoodcutting() {
  985. return woodcutting;
  986. }
  987.  
  988. public Mining getMining() {
  989. return mine;
  990. }
  991.  
  992. public Cooking getCooking() {
  993. return cooking;
  994. }
  995.  
  996. public Agility getAgility() {
  997. return agility;
  998. }
  999.  
  1000. public Fishing getFishing() {
  1001. return fish;
  1002. }
  1003.  
  1004. public Crafting getCrafting() {
  1005. return crafting;
  1006. }
  1007.  
  1008. public Smithing getSmithing() {
  1009. return smith;
  1010. }
  1011.  
  1012. public Farming getFarming() {
  1013. return farming;
  1014. }
  1015.  
  1016. public Thieving getThieving() {
  1017. return thieving;
  1018. }
  1019.  
  1020. public Herblore getHerblore() {
  1021. return herblore;
  1022. }
  1023.  
  1024. public Firemaking getFiremaking() {
  1025. return firemaking;
  1026. }
  1027.  
  1028. public SmithingInterface getSmithingInt() {
  1029. return smithInt;
  1030. }
  1031.  
  1032. public Prayer getPrayer() {
  1033. return prayer;
  1034. }
  1035.  
  1036. public Fletching getFletching() {
  1037. return fletching;
  1038. }
  1039.  
  1040. /**
  1041. * End of Skill Constructors
  1042. */
  1043.  
  1044. public void queueMessage(Packet arg1) {
  1045. synchronized(queuedPackets) {
  1046. //if (arg1.getId() != 41)
  1047. queuedPackets.add(arg1);
  1048. //else
  1049. //processPacket(arg1);
  1050. }
  1051. }
  1052.  
  1053. public synchronized boolean processQueuedPackets() {
  1054. Packet p = null;
  1055. synchronized(queuedPackets) {
  1056. p = queuedPackets.poll();
  1057. }
  1058. if(p == null) {
  1059. return false;
  1060. }
  1061. inStream.currentOffset = 0;
  1062. packetType = p.getId();
  1063. packetSize = p.getLength();
  1064. inStream.buffer = p.getData();
  1065. if(packetType > 0) {
  1066. //sendMessage("PacketType: " + packetType);
  1067. PacketHandler.processPacket(this, packetType, packetSize);
  1068. }
  1069. timeOutCounter = 0;
  1070. return true;
  1071. }
  1072.  
  1073. public synchronized boolean processPacket(Packet p) {
  1074. synchronized (this) {
  1075. if(p == null) {
  1076. return false;
  1077. }
  1078. inStream.currentOffset = 0;
  1079. packetType = p.getId();
  1080. packetSize = p.getLength();
  1081. inStream.buffer = p.getData();
  1082. if(packetType > 0) {
  1083. //sendMessage("PacketType: " + packetType);
  1084. PacketHandler.processPacket(this, packetType, packetSize);
  1085. }
  1086. timeOutCounter = 0;
  1087. return true;
  1088. }
  1089. }
  1090.  
  1091.  
  1092. public void correctCoordinates() {
  1093. if (inPcGame()) {
  1094. getPA().movePlayer(2657, 2639, 0);
  1095. }
  1096. if (inFightCaves()) {
  1097. getPA().movePlayer(absX, absY, playerId * 4);
  1098. sendMessage("Your wave will start in 10 seconds.");
  1099. EventManager.getSingleton().addEvent(new Event() {
  1100. public void execute(EventContainer c) {
  1101. Server.fightCaves.spawnNextWave((Client)Server.playerHandler.players[playerId]);
  1102. c.stop();
  1103. }
  1104. }, 10000);
  1105.  
  1106. }
  1107.  
  1108. }
  1109.  
  1110.  
  1111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement