private void handleFirstClickNPC(Player player, Packet packet) { int npcIndex = packet.readLEShortA(); if (npcIndex < 0 || npcIndex > Constants.MAX_NPCS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } Npc npc = Server.getNpcList()[npcIndex]; if (npc == null || npc.isDestroyed()) { return; } Console.WriteLine("First click NPC " + npc.getId()); SkillHandler.resetAllSkills(player); Combat.newAttack(player, npc); }
private void handleMagicOnNPC(Player player, Packet packet) { int childId = packet.readLEShort(); int interfaceId = packet.readLEShort(); int junk = packet.readShortA(); int npcIndex = packet.readLEShortA(); if (npcIndex < 0 || npcIndex > Constants.MAX_NPCS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } Npc npc = Server.getNpcList()[npcIndex]; if (npc == null || npc.isDestroyed()) { return; } SkillHandler.resetAllSkills(player); player.setTarget(npc); MagicCombat.newMagicAttack(player, npc, childId, interfaceId == 193); Console.WriteLine(childId); }
private void handleItemOnNPC(Player player, Packet packet) { int interfaceId = packet.readInt(); int slot = packet.readLEShort(); int npcIndex = packet.readLEShort(); int item = packet.readLEShortA(); if (npcIndex < 0 || npcIndex > Constants.MAX_NPCS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } Npc npc = Server.getNpcList()[npcIndex]; if (npc == null || npc.isDestroyed()) { return; } SkillHandler.resetAllSkills(player); player.getPackets().closeInterfaces(); Console.WriteLine("Item on NPC " + npc.getId()); if (player.getInventory().getItemInSlot(slot) == item) { switch(npc.getId()) { case 519: // Bob BrokenBarrows.talkToBob(player, npc, player.getInventory().getItemInSlot(slot), 0); break; } } }
private void handleRightClickOne(Player player, Packet packet) { int childId = packet.readLEShort(); int interfaceId = packet.readLEShort(); int item = packet.readLEShortA(); int slot = packet.readLEShortA(); if (slot > 28 || slot < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); if (player.getInventory().getItemInSlot(slot) == item) { player.getPackets().closeInterfaces(); if (interfaceId == 149 && childId == 0) { if (Herblore.emptyPotion(player, player.getInventory().getItemInSlot(slot), slot)) { return; } else if (JewelleryTeleport.useJewellery(player, player.getInventory().getItemInSlot(slot), slot, false)) { return; } } } }
private void handleExamineItem(Player player, Packet packet) { int item = packet.readLEShortA(); if (item < 0 || item > Constants.MAX_ITEMS) { return; } string examine = ItemData.forId(item).getExamine(); player.getPackets().sendMessage(examine); }
private void handleItemOnGroundItem(Player player, Packet packet) { int objectX = packet.readLEShortA(); int itemSlot = packet.readLEShort(); int itemIdInInventory = packet.readLEShort(); int itemIdOnGround = packet.readLEShort(); int objectY = packet.readLEShortA(); int interfaceId = packet.readLEShort(); int child = packet.readUShort(); if (itemSlot > 28 || itemSlot < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) return; if (Firemaking.isFiremaking(player, itemIdInInventory, itemIdOnGround, itemSlot, -1)) return; else player.getPackets().sendMessage("Nothing interesting happens."); }
private void handlePickupItem(Player player, Packet packet) { int x = packet.readLEShort(); int id = packet.readUShort(); int y = packet.readLEShortA(); Location l = new Location(x, y, player.getLocation().getZ()); SkillHandler.resetAllSkills(player); if (x < 1000 || y < 1000 | id < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } player.getPackets().closeInterfaces(); if(player.getLocation().Equals(l)) { Server.getGroundItems().pickupItem(player, id, player.getLocation()); return; } CoordinateEvent pickupItemCoordinateEvent = new CoordinateEvent(player, l); pickupItemCoordinateEvent.setAction(() => { Server.getGroundItems().pickupItem(player, id, player.getLocation()); }); Server.registerCoordinateEvent(pickupItemCoordinateEvent); }
private void handleItemOnItem(Player player, Packet packet) { int itemSlot = packet.readUShort(); int unused = packet.readInt(); int withSlot = packet.readLEShort(); int unused2 = packet.readInt(); int itemUsed = packet.readLEShortA(); int usedWith = packet.readLEShortA(); if (itemSlot > 28 || itemSlot < 0 || withSlot > 28 || withSlot < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); player.getPackets().closeInterfaces(); if (player.getInventory().getSlot(itemSlot).getItemId() == itemUsed && player.getInventory().getSlot(withSlot).getItemId() == usedWith) { if (Fletching.isFletching(player, itemUsed, usedWith)) { return; } else if (Herblore.doingHerblore(player, itemUsed, usedWith)) { return; } else if (Herblore.mixDoses(player, itemUsed, usedWith, itemSlot, withSlot)) { return; } else if (Crafting.wantsToCraft(player, itemUsed, usedWith)) { return; } else if (Firemaking.isFiremaking(player, itemUsed, usedWith, itemSlot, withSlot)) { return; } else if (Farming.plantSapling(player, itemUsed, usedWith)) { return; } else { player.getPackets().sendMessage("Nothing interesting happens."); } } }
private void handleInvenClickItem(Player player, Packet packet) { int slot = packet.readLEShortA(); int item = packet.readShortA(); int childId = packet.readLEShort(); int interfaceId = packet.readLEShort(); if (slot > 28 || slot < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); if (player.getInventory().getItemInSlot(slot) == item) { player.getPackets().closeInterfaces(); if (Consumables.isEating(player, player.getInventory().getItemInSlot(slot), slot)) return; else if (Herblore.idHerb(player, player.getInventory().getItemInSlot(slot))) return; else if (RuneCraft.fillPouch(player, (RuneCraftData.POUCHES)player.getInventory().getItemInSlot(slot))) return; else if (Prayer.wantToBury(player, player.getInventory().getItemInSlot(slot), slot)) return; else if (Teleport.useTeletab(player, player.getInventory().getItemInSlot(slot), slot)) return; else if (FarmingAmulet.showOptions(player, player.getInventory().getItemInSlot(slot))) return; switch(item) { case 4155: // Slayer gem Slayer.doDialogue(player, 1051); break; case 6: // Dwarf multicannon if (player.getCannon() != null) { player.getPackets().sendMessage("You already have a cannon set up!"); break; } player.setCannon(new DwarfCannon(player)); break; case 5073: // Nest with seeds. case 5074: // Nest with jewellery. Woodcutting.randomNestItem(player, item); break; case 952: // Spade player.setLastAnimation(new Animation(830)); if (Barrows.enterCrypt(player)) { player.getPackets().sendMessage("You've broken into a crypt!"); break; } player.getPackets().sendMessage("You find nothing."); break; } } }
private void handleMagicOnPlayer(Player player, Packet packet) { int junk = packet.readShortA(); int id = packet.readLEShort(); int interfaceId = packet.readLEShort(); int index = packet.readLEShortA(); if(index < 0 || index >= Constants.MAX_PLAYERS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); Player p2 = Server.getPlayerList()[index]; if (p2 == null) { return; } player.getPackets().closeInterfaces(); player.setTarget(p2); MagicCombat.newMagicAttack(player, p2, id, interfaceId == 193); }
private void handleAttackPlayer(Player player, Packet packet) { int index = packet.readLEShortA(); if(index < 0 || index >= Constants.MAX_PLAYERS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); Player p2 = Server.getPlayerList()[index]; if (p2 == null) return; player.setFaceLocation(p2.getLocation()); player.getPackets().closeInterfaces(); if (Location.atDuelArena(player.getLocation())) { if(player.getDuel() != null) { if (player.getDuel().getStatus() < 4) { player.getDuel().declineDuel(); return; } else if (player.getDuel().getStatus() == 5 && player.getDuel().getPlayer2().Equals(p2)) { player.getPackets().sendMessage("The duel has not yet started!"); return; } else if ((player.getDuel().getStatus() == 5 || player.getDuel().getStatus() == 6) && !player.getDuel().getPlayer2().Equals(p2)) { return; } else if (player.getDuel().getStatus() == 6) { Combat.newAttack(player, p2); return; } } if (!player.getLocation().withinDistance(p2.getLocation(), 1)) { int x = p2.getLocation().getX(); int y = p2.getLocation().getY(); AreaEvent attackAreaEvent = new AreaEvent(player, x-1, y-1, x+1, y+1); attackAreaEvent.setAction(() => { player.getWalkingQueue().resetWalkingQueue(); player.getPackets().clearMapFlag(); if (p2.getGESession() != null || (p2.getDuel() != null && !p2.getDuel().getPlayer2().Equals(player)) || p2.getTrade() != null || p2.getShopSession() != null || p2.getBank().isBanking()) { player.getPackets().sendMessage("That player is busy at the moment."); return; } if (p2.wantsToDuel(player)) { p2.setFaceLocation(player.getLocation()); player.getPackets().closeInterfaces(); p2.getPackets().closeInterfaces(); player.setDuelSession(new DuelSession(player, p2)); p2.setDuelSession(new DuelSession(p2, player)); return; } player.setFaceLocation(p2.getLocation()); p2.getPackets().sendMessage(player.getLoginDetails().getUsername() + ":duelstake:"); player.getPackets().sendMessage("Sending duel request..."); player.newDuelRequest(p2); }); Server.registerCoordinateEvent(attackAreaEvent); return; } if (p2.getGESession() != null || (p2.getDuel() != null && !p2.getDuel().getPlayer2().Equals(player)) || p2.getTrade() != null || p2.getShopSession() != null || p2.getBank().isBanking()) { player.getPackets().sendMessage("That player is busy at the moment."); return; } if (p2.wantsToDuel(player)) { player.getPackets().closeInterfaces(); p2.getPackets().closeInterfaces(); p2.setFaceLocation(player.getLocation()); player.setDuelSession(new DuelSession(player, p2)); p2.setDuelSession(new DuelSession(p2, player)); return; } player.newDuelRequest(p2); p2.getPackets().sendMessage(player.getLoginDetails().getUsername() + ":duelstake:"); player.getPackets().sendMessage("Sending duel request..."); return; } Combat.newAttack(player, p2); }
private void handleTradePlayer(Player player, Packet packet) { int index = packet.readLEShortA(); if(index < 0 || index >= Constants.MAX_PLAYERS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); Player p2 = Server.getPlayerList()[index]; if (p2 == null) { return; } player.setFaceLocation(p2.getLocation()); if(player.getTrade() != null) { player.getTrade().decline(); return; } player.getPackets().closeInterfaces(); if (!player.getLocation().withinDistance(p2.getLocation(), 1)) { int x = p2.getLocation().getX(); int y = p2.getLocation().getY(); AreaEvent tradePlayerAreaEvent = new AreaEvent(player, x-1, y-1, x+1, y+1); tradePlayerAreaEvent.setAction(() => { player.getWalkingQueue().resetWalkingQueue(); player.getPackets().clearMapFlag(); if (p2.getGESession() != null || p2.getTrade() != null || p2.getDuel() != null || p2.getShopSession() != null || p2.getBank().isBanking()) { player.getPackets().sendMessage("That player is busy at the moment."); return; } if (p2.wantsToTrade(player)) { player.getPackets().closeInterfaces(); p2.getPackets().closeInterfaces(); p2.setFaceLocation(player.getLocation()); player.setTrade(new TradeSession(player, p2)); p2.setTrade(new TradeSession(p2, player)); return; } player.setFaceLocation(p2.getLocation()); p2.getPackets().sendMessage(player.getLoginDetails().getUsername() + ":tradereq:"); player.getPackets().sendMessage("Sending trade offer..."); player.newTradeRequest(p2); }); Server.registerCoordinateEvent(tradePlayerAreaEvent); return; } if (p2.getGESession() != null || p2.getTrade() != null || p2.getDuel() != null || p2.getShopSession() != null || p2.getBank().isBanking()) { player.getPackets().sendMessage("That player is busy at the moment."); return; } if (p2.wantsToTrade(player)) { player.getPackets().closeInterfaces(); p2.getPackets().closeInterfaces(); p2.setFaceLocation(player.getLocation()); player.setTrade(new TradeSession(player, p2)); p2.setTrade(new TradeSession(p2, player)); return; } player.newTradeRequest(p2); p2.getPackets().sendMessage(player.getLoginDetails().getUsername() + ":tradereq:"); player.getPackets().sendMessage("Sending trade offer..."); }
private void handleFollowPlayer(Player player, Packet packet) { int index = packet.readLEShortA(); if(index < 0 || index >= Constants.MAX_PLAYERS || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); Player p2 = Server.getPlayerList()[index]; if (p2 == null) { return; } player.getFollow().setFollowing(p2); }
private void handleExamineObject(Player player, Packet packet) { ushort id = (ushort)packet.readLEShortA(); if (player.getTemporaryAttribute("unmovable") != null) { return; } SkillHandler.resetAllSkills(player); player.getPackets().closeInterfaces(); player.getPackets().sendMessage("[Id: " + id + "] " + ObjectData.forId(id).getExamine()); }
private void handleFifthClickObject(Player player, Packet packet) { short id = packet.readLEShortA(); short x = packet.readLEShortA(); short y = packet.readLEShortA(); if (player.getTemporaryAttribute("unmovable") != null) { return; } if (x < 1000 || id < 0 || y < 1000 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); player.getPackets().closeInterfaces(); player.setFaceLocation(new Location(x, y, player.getLocation().getZ())); Console.WriteLine("Fifth object click = " + id + " " + x + " " + y); switch (id) { case 28089: // GE desk Server.getGrandExchange().clickDesk(player, x, y, 5); break; } }
private void handleSecondClickObject(Player player, Packet packet) { int objectY = packet.readLEShortA(); int objectX = packet.readLEShort(); ushort objectId = packet.readUShort(); Console.WriteLine("Second object click = " + objectId + " " + objectX + " " + objectY); if (player.getTemporaryAttribute("unmovable") != null) { return; } if (objectX < 1000 || objectY < 1000 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null) { return; } SkillHandler.resetAllSkills(player); player.getPackets().closeInterfaces(); player.setFaceLocation(new Location(objectX, objectY, player.getLocation().getZ())); if (Thieving.wantToThieveStall(player, objectId, objectX, objectY)) { return; } else if (Farming.interactWithPatch(player, objectId, objectX, objectY, -1)) { return; } else if (LaddersAndStairs.useObject(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 2)) { return; } switch(objectId) { case 28089: // GE desk Server.getGrandExchange().clickDesk(player, objectX, objectY, 2); break; case 25824: // Spinning wheel (Seers) case 36970: // Spinning wheel (Lumbridge Spinning.displaySpinningInterface(player); break; case 6: // Dwarf multicannon DwarfCannon cannon = player.getCannon(); Location l = new Location(objectX, objectY, player.getLocation().getZ()); if (cannon == null || (cannon != null & !l.Equals(cannon.getLocation()))) { player.getPackets().sendMessage("This isn't your cannon!"); break; } cannon.pickupCannon(); break; case 11666: // Falador furnace case 36956: // Lumbridge furnace Smelting.displaySmeltOptions(player); break; case 11959: // Tin rocks case 11958: case 11957: case 11933: case 11934: case 11935: case 31077: case 31078: case 31079: Mining.prospectRock(player, objectX, objectY, "tin"); break; case 11960: // Copper rocks case 11961: case 11962: case 11936: case 11937: case 11938: case 31080: case 31081: case 31082: Mining.prospectRock(player, objectX, objectY, "copper"); break; case 15504: // Clay rocks case 15503: case 15505: case 11189: case 11190: case 11191: case 31062: case 31063: case 31064: case 32429: case 32430: case 32431: Mining.prospectRock(player, objectX, objectY, "clay"); break; case 11948: // Silver rocks case 11949: case 11950: case 11165: case 11186: case 11187: case 11188: case 31074: case 31075: case 31076: case 32444: case 32445: case 32446: case 15579: case 15580: case 15581: Mining.prospectRock(player, objectX, objectY, "silver"); break; case 11930: // Coal rocks case 11931: case 11932: case 14850: case 14851: case 14852: case 31068: case 31069: case 31070: case 32426: case 32427: case 32428: Mining.prospectRock(player, objectX, objectY, "coal"); break; case 11945: // Mithril rocks case 11946: case 11947: case 11942: case 11943: case 11944: case 14853: case 14854: case 14855: case 31086: case 31087: case 31088: case 32438: case 32439: case 32440: Mining.prospectRock(player, objectX, objectY, "mithril"); break; case 11954: // Iron rocks case 11955: case 11956: case 14856: case 14857: case 14858: case 31071: case 31072: case 31073: case 32441: case 32442: case 32443: Mining.prospectRock(player, objectX, objectY, "iron"); break; case 14859: // Rune rocks case 14860: case 14861: Mining.prospectRock(player, objectX, objectY, "runite"); break; case 11951: // Gold rocks case 11952: case 11953: case 11183: case 11184: case 11185: case 31065: case 31066: case 31067: case 32432: case 32433: case 32434: case 15576: case 15577: case 15578: Mining.prospectRock(player, objectX, objectY, "gold"); break; case 11963: // Adamant rocks case 11964: case 11965: case 11939: case 11940: case 11941: case 14862: case 14863: case 14864: case 31083: case 31084: case 31085: case 32435: case 32436: case 32437: Mining.prospectRock(player, objectX, objectY, "adamantite"); break; case 11552: // Empty rocks case 11553: case 11554: case 11555: case 11556: case 31059: case 31060: case 31061: case 14832: case 14833: case 14834: case 33400: case 33401: case 33402: case 15582: case 15583: case 15584: Mining.displayEmptyRockMessage(player, new Location(objectX, objectY, player.getLocation().getZ())); break; case 2491: // Rune essence Mining.prospectRock(player, objectX, objectY, "Rune essence"); break; case 27663: // Duel arena bank chest. case 2213: // Catherby bank booth. case 11402: // Varrock bank booth. case 11758: // Falador bank booth. case 36786: // Lumbridge bank booth. case 35647: // Al-Kharid bank booth. case 25808: // Seers bank booth. case 34752: // Ardougne bank booth. case 26972: // Edgeville bank booth. case 29085: // Ooglog bank booth. player.getBank().openBank(false, objectX, objectY); break; } }