Advertisement
Guest User

Untitled

a guest
Nov 16th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.64 KB | None | 0 0
  1. package org.rscemulation.server.packethandler;
  2.  
  3. import org.apache.mina.common.IoSession;
  4. import org.rscemulation.server.Config;
  5. import org.rscemulation.server.event.DelayedEvent;
  6. import org.rscemulation.server.logging.Logger;
  7. import org.rscemulation.server.logging.model.DropLog;
  8. import org.rscemulation.server.logging.model.ExploitLog;
  9. import org.rscemulation.server.model.InvItem;
  10. import org.rscemulation.server.model.Item;
  11. import org.rscemulation.server.model.Npc;
  12. import org.rscemulation.server.model.Player;
  13. import org.rscemulation.server.model.Quest;
  14. import org.rscemulation.server.model.World;
  15. import org.rscemulation.server.net.Packet;
  16. import org.rscemulation.server.npchandler.NpcHandler;
  17. //import org.rscemulation.server.npchandler.Merlins_Crystal.Thrantax;
  18. import org.rscemulation.server.states.Action;
  19. import org.rscemulation.server.util.DataConversions;
  20. public class DropHandler implements PacketHandler {
  21.  
  22. //private final static NpcHandler thrantax = new Thrantax();
  23. public void handlePacket(Packet p, IoSession session) throws Exception {
  24. Player player = (Player)session.getAttachment();
  25. if (player != null) {
  26. if (player.isBusy()) {
  27. player.resetPath();
  28. return;
  29. }
  30. if (player.getCancelBatch()) {
  31. player.setCancelBatch(false);
  32. return;
  33. }
  34. player.resetAllExceptDMing();
  35. int idx = (int)p.readShort();
  36. if (idx < 0 || idx >= player.getInventory().size()) {
  37. Logger.log(new ExploitLog(player.getUsernameHash(), player.getAccount(), player.getIP(), "DropHandler (1)", DataConversions.getTimeStamp()));
  38. return;
  39. }
  40. InvItem item = player.getInventory().get(idx);
  41. boolean all = false;
  42. long amount = p.readLong();
  43. if (amount == 0)
  44. all = true;
  45.  
  46. if (item == null) {
  47. Logger.log(new ExploitLog(player.getUsernameHash(), player.getAccount(), player.getIP(), "DropHandler (2)", DataConversions.getTimeStamp()));
  48. return;
  49. }
  50.  
  51. if (player.getLocation().isInDMArena())
  52. {
  53. player.sendMessage(Config.PREFIX + "You cannot drop items in the DM arena");
  54. return;
  55. }
  56.  
  57. if (player.getX() == 1 && player.getY() == 3456)
  58. {
  59. player.sendMessage(Config.PREFIX + "You cannot drop items here");
  60. return;
  61. }
  62.  
  63. if (amount > item.getAmount())
  64. amount = -1;
  65.  
  66. if (amount < -1)
  67. amount = -1;
  68.  
  69. dropItem(player, item, amount, all);
  70. }
  71. }
  72.  
  73. private void dropItem(Player player, final InvItem item, final long amount, final boolean all) {
  74. /*
  75. * Biohazard
  76. * Quest Shit.
  77. */
  78. if (item.getID() == 809)
  79. {
  80. player.getInventory().remove(809, -1);
  81. player.sendInventory();
  82. player.sendMessage("The vial breaks, you are going to have to get more.");
  83. return;
  84. }
  85. else
  86. if (item.getID() == 810)
  87. {
  88. player.getInventory().remove(810, -1);
  89. player.sendInventory();
  90. player.sendMessage("The vial breaks, you are going to have to get more.");
  91. return;
  92. }
  93. else
  94. if (item.getID() == 811)
  95. {
  96. player.getInventory().remove(809, -1);
  97. player.sendInventory();
  98. player.sendMessage("The vial breaks, you are going to have to get more.");
  99. return;
  100. }
  101.  
  102. /*
  103. * End Biohazard
  104. * Quest Shit.
  105. */
  106. if (all)
  107. player.cancelBatch = true;
  108. player.setStatus(Action.DROPPING_GITEM);
  109. World.getDelayedEventHandler().add(new DelayedEvent(player, 500) {
  110. public void run() {
  111. if (owner.isBusy() || !owner.getInventory().contains(item) || owner.getStatus() != Action.DROPPING_GITEM) {
  112. running = false;
  113. owner.cancelBatch = false;
  114. return;
  115. }
  116. if (owner.hasMoved())
  117. return;
  118. if (owner.getInventory().get(item).isWielded()) {
  119. owner.getInventory().get(item).setWield(false);
  120. owner.updateWornItems(item.getWieldableDef().getWieldPos(), owner.getPlayerAppearance().getSprite(item.getWieldableDef().getWieldPos()));
  121. owner.sendEquipmentStats();
  122. }
  123. if (!owner.isRemoved()) {
  124. owner.sendSound("dropobject", false);
  125.  
  126. if (amount < 1) {
  127. owner.sendMessage("Dropping " + item.getDef().getName());
  128. owner.getInventory().remove(item);
  129. owner.sendInventory();
  130. World.registerEntity(new Item(item.getID(), owner.getX(), owner.getY(), item.getAmount(), owner));
  131. } else {
  132. if (owner.getInventory().remove(item.getID(), amount) > -1) {
  133. owner.sendMessage("Dropping " + item.getDef().getName() + " (" + DataConversions.insertCommas("" + amount) + ")");
  134. owner.sendInventory();
  135. World.registerEntity(new Item(item.getID(), owner.getX(), owner.getY(), amount, owner));
  136. }
  137. }
  138. /** Let's try here... */
  139. /** Quest Merlins Crystal **/
  140.  
  141. if(owner.getX() == 448 && owner.getY() == 435)
  142. {
  143. Quest q22 = owner.getQuest(22);
  144. if (q22 != null) {
  145. if (q22.getStage() == 4) {
  146. if(item.getID() == 604 && owner.getInventory().countId(602) > 0)
  147. {
  148. // start / min / max ===
  149. Npc npc = new Npc(288, 447, 435, 447, 447, 435, 435);
  150. npc.setRespawn(false);
  151. World.registerEntity(npc, 35000);
  152. try
  153. {
  154. //thrantax.handleNpc(npc, owner);
  155. }
  156. catch(Exception e) { /** API makes me do this (interfaces...) */ }
  157. }
  158. }
  159. }
  160. }
  161.  
  162. Logger.log(new DropLog(owner.getUsernameHash(), owner.getAccount(), owner.getIP(), owner.getX(), owner.getY(), item.getID(), amount < 0 ? item.getAmount() : amount, DataConversions.getTimeStamp()));
  163. }
  164.  
  165. running = false;
  166.  
  167. if (all && owner.getInventory().contains(item))
  168. dropItem(owner, item, 0, true);
  169. else
  170. owner.cancelBatch = false;
  171.  
  172. }
  173. });
  174. }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement