protected static void createdAnimatedArmour(Player p, int index) { if (p.getTemporaryAttribute("warriorGuildAnimator") == null) { return; } p.setLastAnimation(new Animation(827)); p.setTemporaryAttribute("unmovable", true); for (int i = 0; i < ARMOUR_SETS[index].Length; i++) { p.getInventory().deleteItem(ARMOUR_SETS[index][i]); } p.getPackets().sendChatboxInterface(211); p.getPackets().modifyText("You place the armour onto the platform where it", 211, 1); p.getPackets().modifyText("dissapears...", 211, 2); int animatorIndex = (int) p.getTemporaryAttribute("warriorGuildAnimator"); Event createAnimatedArmourEvent = new Event(1500); int createAnimatedArmourCounter = 0; Npc npc = null; createAnimatedArmourEvent.setAction(() => { if (createAnimatedArmourCounter == 0) { p.getPackets().sendChatboxInterface(211); p.getPackets().modifyText("The animator hums, something appears to be working.", 211, 1); p.getPackets().modifyText("You stand back.", 211, 2); createAnimatedArmourEvent.setTick(500); } else if (createAnimatedArmourCounter == 1) { p.getWalkingQueue().forceWalk(0, + 3); createAnimatedArmourEvent.setTick(2000); } else if (createAnimatedArmourCounter == 2) { createAnimatedArmourEvent.setTick(500); Location minCoords = new Location(2849, 3534, 0); Location maxCoords = new Location(2861, 3545, 0); npc = new Npc(ANIMATED_ARMOUR[index]); npc.setMinimumCoords(minCoords); npc.setMaximumCoords(maxCoords); npc.setLocation(new Location(ANIMATOR_LOCATIONS[animatorIndex][0], ANIMATOR_LOCATIONS[animatorIndex][1], 0)); npc.setWalkType(WalkType.STATIC); npc.setForceText("I'm ALIVE!"); npc.setLastAnimation(new Animation(4166)); npc.setEntityFocus(p.getClientIndex()); npc.setOwner(p); npc.setTarget(p); p.getPackets().setArrowOnEntity(1, npc.getClientIndex()); Server.getNpcList().Add(npc); } else { p.setEntityFocus(npc.getClientIndex()); p.getPackets().softCloseInterfaces(); createAnimatedArmourEvent.stop(); p.removeTemporaryAttribute("unmovable"); npc.getFollow().setFollowing(p); } createAnimatedArmourCounter++; }); Server.registerEvent(createAnimatedArmourEvent); }
public void displayEquipmentScreen() { player.getWalkingQueue().resetWalkingQueue(); player.getPackets().clearMapFlag(); object[] opts = new object[] { "", "", "", "", "Wear<col=ff9040>", -1, 0, 7, 4, 93, 43909120 }; player.getPackets().displayInterface(667); refreshBonuses(); player.getPackets().displayInventoryInterface(149); player.getPackets().sendClientScript(149, opts, "IviiiIsssss"); player.getPackets().setRightClickOptions(1278, (667 * 65536) + 14, 0, 13); }
public void handlePacket(Player player, Packet packet) { int size = packet.getLength(); if(packet.getPacketId() == PacketHandlers.PacketId.WALK_2) { size -= 14; } player.getWalkingQueue().resetWalkingQueue(); int steps = (size - 5) / 2; if (steps > WalkingQueue.MAX_WALKING_WAYPOINTS) { misc.WriteError("Warning: Walk command contains too many steps (" + steps + ") currently set to 50 [maybe need increase?]"); return; } player.getWalkingQueue().setIsRunning(packet.readByteA() == 1); bool following = false; if (!canWalk(player, packet, following)) { player.getPackets().clearMapFlag(); player.getWalkingQueue().resetWalkingQueue(); return; } int firstX = packet.readUShort() - (player.getLocation().getRegionX() - 6) * 8; int firstY = packet.readShortA() - (player.getLocation().getRegionY() - 6) * 8; player.getWalkingQueue().addToWalkingQueue(firstX, firstY); for (int i = 0; i < steps; i++) //all the waypoints. player.getWalkingQueue().addToWalkingQueue((packet.readByteA() + firstX), (packet.readByteS() + firstY)); if (player.getTeleportTo() != null) //is teleporting? player.getWalkingQueue().resetWalkingQueue(); if (player.getTemporaryAttribute("homeTeleporting") != null) { player.removeTemporaryAttribute("homeTeleporting"); } SkillHandler.resetAllSkills(player); if (player.getTrade() != null) player.getTrade().decline(); if (player.getDuel() != null) { if (player.getDuel().getStatus() < 4) player.getDuel().declineDuel(); else if (player.getDuel().getStatus() == 8) player.getDuel().recieveWinnings(player); } if (player.getTarget() != null) { if (!following && player.getTarget().getAttacker() != null && player.getTarget().getAttacker().Equals(player)) player.getTarget().setAttacker(null); } if (!following) { player.getFollow().setFollowing(null); player.setTarget(null); player.removeTemporaryAttribute("autoCasting"); if (player.getEntityFocus() != 65535) player.setEntityFocus(65535); } player.getPackets().closeInterfaces(); }
public static void leverTeleport(Player p, int option) { p.getPackets().closeInterfaces(); Location teleLocation = new Location(LEVER_COORDINATES[option][0], LEVER_COORDINATES[option][1], LEVER_COORDINATES[option][2]); Event leverTeleportEvent = new Event(200); leverTeleportEvent.setAction(() => { leverTeleportEvent.stop(); if (p.getTemporaryAttribute("teleblocked") != null) { p.getPackets().sendMessage("A magical force prevents you from teleporting!"); return; } else if ((p.getTemporaryAttribute("teleporting") != null )) { return; } p.setLastAnimation(new Animation(2140)); p.getPackets().closeInterfaces(); p.setTemporaryAttribute("teleporting", true); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); SkillHandler.resetAllSkills(p); Event levelTeleportStartEvent = new Event(700); levelTeleportStartEvent.setAction(() => { levelTeleportStartEvent.stop(); p.setLastAnimation(new Animation(8939, 0)); p.setLastGraphics(new Graphics(1576, 0)); Event levelTeleportFinishEvent = new Event(1800); levelTeleportFinishEvent.setAction(() => { levelTeleportFinishEvent.stop(); p.teleport(teleLocation); p.setLastAnimation(new Animation(8941, 0)); p.setLastGraphics(new Graphics(1577, 0)); Teleport.resetTeleport(p); }); Server.registerEvent(levelTeleportFinishEvent); }); Server.registerEvent(levelTeleportStartEvent); }); Server.registerEvent(leverTeleportEvent); }
public void openBank() { player.getWalkingQueue().resetWalkingQueue(); player.getPackets().clearMapFlag(); //int items = 20 * 1024^0 + 3 * 1024^1 + 4 * 1024^2; // Used with config2 1246 if (!banking) { if (!pinCorrect && bankPin != null) { if (isPinPending()) { verifyPin(false); return; } if (!isPinPending()) { pinStatus = 0; tempPin1 = new int[4]; openEnterPin(); return; } } player.getPackets().sendConfig(563, 0x400000); player.getPackets().sendConfig(1248, -0x78000000); player.getPackets().sendConfig(1249, lastXAmount); player.getPackets().sendBankOptions(); refreshBank(); player.getPackets().displayInventoryInterface(763); player.getPackets().displayInterface(762); player.getPackets().showChildInterface(762, 18, false); player.getPackets().showChildInterface(762, 19, false); player.getPackets().showChildInterface(762, 23, false); //setTabConfig(); banking = true; } }
public static void crossDitch(Player p, int x, int y) { if (p.getTemporaryAttribute("unmovable") != null) { return; } AreaEvent crossDitchAreaEvent = new AreaEvent(p, x, y - 1, x, y + 2); crossDitchAreaEvent.setAction(() => { p.getPackets().closeInterfaces(); p.getWalkingQueue().resetWalkingQueue(); p.setTemporaryAttribute("unmovable", true); int newY = p.getLocation().getY() >= 3523 ? p.getLocation().getY()-3 : p.getLocation().getY()+3; int dir = newY == 3 ? 0 : 4; Location faceLocation = new Location(p.getLocation().getX(), dir == 3 ? 3523 : 3520, 0); p.setFaceLocation(faceLocation); Event crossDitchMoveEvent = new Event(500); crossDitchMoveEvent.setAction(() => { crossDitchMoveEvent.stop(); p.setLastAnimation(new Animation(6132)); int regionX = p.getUpdateFlags().getLastRegion().getRegionX(); int regionY = p.getUpdateFlags().getLastRegion().getRegionY(); int lX = (p.getLocation().getX() - ((regionX - 6) * 8)); int lY = (p.getLocation().getY() - ((regionY - 6) * 8)); ForceMovement movement = new ForceMovement(lX, lY, lX, newY, 33, 60, dir); p.setForceMovement(movement); p.setFaceLocation(new Location(x, y, 0)); Event crossDitchTeleportEvent = new Event(1250); crossDitchTeleportEvent.setAction(() => { crossDitchTeleportEvent.stop(); int playerY = p.getLocation().getY(); int nY = playerY >= 3523 ? 3520 : 3523; p.teleport(new Location(p.getLocation().getX(), nY, 0)); p.removeTemporaryAttribute("unmovable"); }); Server.registerEvent(crossDitchTeleportEvent); }); Server.registerEvent(crossDitchMoveEvent); }); Server.registerCoordinateEvent(crossDitchAreaEvent); }
public void useDoor(Player p, int doorId) { bool running = p.getWalkingQueue().isRunToggled(); if (doorId == 9369) { // main entrance int y = p.getLocation().getY() >= 5177 ? 5177 : 5175; CoordinateEvent mainEntranceCoordinateEvent = new CoordinateEvent(p, new Location(2399, y, 0)); mainEntranceCoordinateEvent.setAction(() => { p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("unmovable", true); p.getWalkingQueue().forceWalk(0, y == 5177 ? -2 : +2); Event useMainDoorEvent = new Event(1000); useMainDoorEvent.setAction(() => { useMainDoorEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getWalkingQueue().setRunToggled(running); }); Server.registerEvent(useMainDoorEvent); }); Server.registerCoordinateEvent(mainEntranceCoordinateEvent); } else if (doorId == 9368) { // game door int y = p.getLocation().getY() >= 5169 ? 5169 : 5167; CoordinateEvent gameDoorCoordinateEvent = new CoordinateEvent(p, new Location(2399, y, 0)); gameDoorCoordinateEvent.setAction(() => { if (playersPlaying.Count == 1) { sendNPCMessage(p, "Here is some TokKul, as a reward."); p.getInventory().addItemOrGround(6529, tokkulReward); } removePlayingPlayer(p); p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); if (y == 5167) { p.getWalkingQueue().forceWalk(0, +2); } else { p.getPackets().sendMessage("You are unable to bypass the hot barrier."); return; } p.setTemporaryAttribute("unmovable", true); Event gameDoorEvent = new Event(1000); gameDoorEvent.setAction(() => { gameDoorEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getWalkingQueue().setRunToggled(running); p.getPackets().sendMessage("You leave the fight pit."); resetVariables(p); }); Server.registerEvent(gameDoorEvent); }); Server.registerCoordinateEvent(gameDoorCoordinateEvent); } }
public static bool openTunnelDoor(Player player, int doorId, int x, int y) { if (doorId < 6716 || (doorId > 6731 && doorId < 6735) || doorId > 6750) { return false; } int index = getDoorIndex(doorId, x, y); int index2 = getOtherDoor(x, y); // index of the door next to the one you clicked. if (index == -1 || index2 == -1) { return false; } bool betweenDoors = player.getTemporaryAttribute("betweenDoors") != null; Location clickedDoor = new Location(DOOR_LOCATION[index][0], DOOR_LOCATION[index][1], 0); Location otherDoor = new Location(DOOR_LOCATION[index2][0], DOOR_LOCATION[index2][1], 0); int openDoorId = DOOR_OPEN_DIRECTION[index][0]; int openDoorId2 = DOOR_OPEN_DIRECTION[index2][0]; int openDirection = DOOR_OPEN_DIRECTION[index][2]; int newX = openDirection == 1 ? x+1 : openDirection == 2 ? x : openDirection == 3 ? x-1 : openDirection == 4 ? x : x; int newY = openDirection == 1 ? y : openDirection == 2 ? y+1 : openDirection == 3 ? y : openDirection == 4 ? y-1 : y; int newX2 = openDirection == 1 ? DOOR_LOCATION[index2][0] + 1 : openDirection == 2 ? DOOR_LOCATION[index2][0] : openDirection == 3 ? DOOR_LOCATION[index2][0] - 1 : openDirection == 4 ? DOOR_LOCATION[index2][0] : DOOR_LOCATION[index2][0]; int newY2 = openDirection == 1 ? DOOR_LOCATION[index2][1] : openDirection == 2 ? DOOR_LOCATION[index2][1] + 1 : openDirection == 3 ? DOOR_LOCATION[index2][1] : openDirection == 4 ? DOOR_LOCATION[index2][1] - 1 : DOOR_LOCATION[index2][1]; int[] doorStandCoordinates = getDoorCoordinates(player, index, index2, betweenDoors); int[] walkDirections = getWalkDirections(player, index, index2, betweenDoors); player.setFaceLocation(clickedDoor); AreaEvent doorsWalkAreaEvent = new AreaEvent(player, doorStandCoordinates[0], doorStandCoordinates[1], doorStandCoordinates[2] + 1, doorStandCoordinates[3] + 1); doorsWalkAreaEvent.setAction(() => { player.setTemporaryAttribute("unmovable", true); Event forceWalkDoorEvent = new Event(800); forceWalkDoorEvent.setAction(() => { player.getWalkingQueue().resetWalkingQueue(); foreach(Player p in Server.getPlayerList()) { //change door for all logged in players? uhh what? p.getPackets().removeObject(clickedDoor, openDoorId == 6713 ? 4 : 3, 0); p.getPackets().removeObject(otherDoor, openDoorId2 == 6732 ? 3 : 4, 0); p.getPackets().createObject(openDoorId, new Location(newX, newY, 0), DOOR_OPEN_DIRECTION[index][1], 0); p.getPackets().createObject(openDoorId2, new Location(newX2, newY2, 0), DOOR_OPEN_DIRECTION[index2][1], 0); } player.getWalkingQueue().forceWalk(walkDirections[0], walkDirections[1]); forceWalkDoorEvent.stop(); }); Server.registerEvent(forceWalkDoorEvent); Event betweenDoorsEvent = new Event(betweenDoors ? 2200 : 1900); betweenDoorsEvent.setAction(() => { int face = openDirection == 3 ? 0 : openDirection == 4 ? 3 : openDirection == 2 ? 1 : 2; foreach(Player p in Server.getPlayerList()) { p.getPackets().removeObject(new Location(newX, newY, 0), openDoorId == 6713 ? 4 : 3, 0); p.getPackets().removeObject(new Location(newX2, newY2, 0), openDoorId2 == 6732 ? 3 : 4, 0); p.getPackets().createObject(DOORS[index], clickedDoor, face, 0); p.getPackets().createObject(DOORS[index2], otherDoor, face, 0); } player.removeTemporaryAttribute("unmovable"); if (!betweenDoors) { player.getPackets().sendConfig(1270, 1); player.setTemporaryAttribute("betweenDoors", true); } else { player.getPackets().sendConfig(1270, 0); player.removeTemporaryAttribute("betweenDoors"); } betweenDoorsEvent.stop(); }); Server.registerEvent(betweenDoorsEvent); }); Server.registerCoordinateEvent(doorsWalkAreaEvent); return true; }
public static void doObstacle(Player p, int index) { if (p.getTemporaryAttribute("unmovable") != null) { return; } switch (index) { case 0: // 3 planks, northern (east side) case 1: // 3 planks, middle (east side) case 2: // 3 planks, southern (east side) case 3: // 3 planks, northern (west side) case 4: // 3 planks, middle (west side) case 5: // 3 planks, southern (west side) int logXCoord = index <= 2 ? (int)AGILITY_ARENA_OBJECTS[index][1] + 1 : (int)AGILITY_ARENA_OBJECTS[index][1] - 1; int logDirectionX = index <= 2 ? -7 : +7; CoordinateEvent plankObstaclesCoordinateEvent = new CoordinateEvent(p, new Location(logXCoord, (int)AGILITY_ARENA_OBJECTS[index][2], 3)); plankObstaclesCoordinateEvent.setAction(() => { bool running = p.getWalkingQueue().isRunToggled(); p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("unmovable", true); p.getAppearance().setWalkAnimation(155); p.getUpdateFlags().setAppearanceUpdateRequired(true); p.getWalkingQueue().forceWalk(logDirectionX, 0); Event plankObstaclesEvent = new Event(4300); plankObstaclesEvent.setAction(() => { plankObstaclesEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getAppearance().setWalkAnimation(-1); p.getUpdateFlags().setAppearanceUpdateRequired(true); p.getSkills().addXp(Skills.SKILL.AGILITY, (double)AGILITY_ARENA_OBJECTS[index][3]); p.getWalkingQueue().setRunToggled(running); }); Server.registerEvent(plankObstaclesEvent); }); Server.registerCoordinateEvent(plankObstaclesCoordinateEvent); break; case 6: //Handholds obstacle east of planks. case 7: //Handholds obstacle west of planks. int handHoldsDirectionX = 1; int handHoldsDirectionY = 1; if (index == 6) { handHoldsDirectionX = -1; handHoldsDirectionY = +1; } else if (index == 7) { handHoldsDirectionX = +1; handHoldsDirectionY = -1; } CoordinateEvent handholdsObstacleCoordinateEvent = new CoordinateEvent(p, new Location((int)AGILITY_ARENA_OBJECTS[index][1], (int)AGILITY_ARENA_OBJECTS[index][2], 3)); handholdsObstacleCoordinateEvent.setAction(() => { bool running = p.getWalkingQueue().isRunToggled(); p.getWalkingQueue().setRunToggled(false); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("unmovable", true); p.setLastAnimation(new Animation(1121)); p.setFaceLocation(new Location(p.getLocation().getX(), p.getLocation().getY() + handHoldsDirectionY, 3)); Event handholdsObstaclesEvent = new Event(700); int handholdsObstaclesCounter = 0; handholdsObstaclesEvent.setAction(() => { p.setLastAnimation(new Animation(1122)); int regionX = p.getUpdateFlags().getLastRegion().getRegionX(); int regionY = p.getUpdateFlags().getLastRegion().getRegionY(); int lX = (p.getLocation().getX() - ((regionX - 6) * 8)); int lY = (p.getLocation().getY() - ((regionY - 6) * 8)); p.setForceMovement(new ForceMovement(lX, lY, lX + handHoldsDirectionX, lY, 0, 5, 0)); if (handholdsObstaclesCounter++ >= 7) { p.setLastAnimation(new Animation(65535)); handholdsObstaclesEvent.stop(); p.removeTemporaryAttribute("unmovable"); p.getSkills().addXp(Skills.SKILL.AGILITY, (double)AGILITY_ARENA_OBJECTS[index][3]); p.getWalkingQueue().setRunToggled(running); return; } Event teleportEvent = new Event(500); teleportEvent.setAction(() => { teleportEvent.stop(); p.teleport(new Location(p.getLocation().getX() + handHoldsDirectionX, p.getLocation().getY(), 3)); }); Server.registerEvent(teleportEvent); }); Server.registerEvent(handholdsObstaclesEvent); }); Server.registerCoordinateEvent(handholdsObstacleCoordinateEvent); break; } }
public static bool teleport(Player p, int opt, JewellerySlot js) { if (js == null) { return false; } if (js.index == -1 || js.index > 3 || opt > 6) { return false; } if (!canTeleport(p, js)) { p.getPackets().closeInterfaces(); return true; } if ((js.index == 2 && opt == 4) || (js.index != 2 && opt == 6)) { p.getPackets().sendMessage("You stay where you are."); p.getPackets().closeInterfaces(); return true; } opt -= 2; // Used to get the 'index' from the button id. p.setLastGraphics(new Graphics(1684)); p.setLastAnimation(new Animation(9603)); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); p.setTemporaryAttribute("teleporting", true); p.setTemporaryAttribute("unmovable", true); p.removeTemporaryAttribute("autoCasting"); p.removeTemporaryAttribute("lootedBarrowChest"); p.setTarget(null); changeJewellery(p, js); int option = opt; p.getPackets().closeInterfaces(); Event teleportEvent = new Event(2000); teleportEvent.setAction(() => { teleportEvent.stop(); p.teleport(new Location(TELEPORT_COORDINATES[js.index][option][0], TELEPORT_COORDINATES[js.index][option][1], 0)); p.setLastAnimation(new Animation(65535)); Teleport.resetTeleport(p); p.removeTemporaryAttribute("unmovable"); }); Server.registerEvent(teleportEvent); return true; }
private void handleActionButton(Player player, Packet packet) { int interfaceId = packet.readUShort(); ushort buttonId = packet.readUShort(); ushort buttonId2 = 0; if(packet.getLength() >= 6) { buttonId2 = packet.readUShort(); } if(buttonId2 == 65535) { buttonId2 = 0; } Console.WriteLine("button = " + interfaceId + " " +buttonId + " " +buttonId2); switch(interfaceId) { case 751: switch(buttonId) { case 27: // Report Abuse button click //This is just a test. (you need to code a Static Handler for ReportAbuse. player.getPackets().displayInterface(553); //Opens Report Abuse box break; } break; case 374: // Tzhaar fight pits viewing orb Server.getMinigames().getFightPits().useOrb(player, buttonId); break; case 389: // GE Item Search "X" for closing it. player.getPackets().sendInterface(0, 752, 6, 137); // Removes the item search break; case 107: // GE Sell inventory. if (player.getGESession() == null) { break; } switch(buttonId) { case 18: // Offer player.getGESession().offerSellItem(buttonId2); break; } break; case 105: // GE interface if (player.getGESession() == null) { break; } switch(buttonId) { case 209: // Collect-notes player.getGESession().collectSlot1(true); break; case 203: // Abort offer player.getGESession().abortOffer(); break; case 31: // Sell, box 1 player.getGESession().newSellOffer(0); break; case 30: // Buy, box 1 player.getGESession().newBuyOffer(0); break; case 18: // Check status, box 1 player.getGESession().checkOffer(0); break; case 46: // Buy, box 2 player.getGESession().newBuyOffer(1); break; case 47: // Sell, box 2 player.getGESession().newSellOffer(1); break; case 34: // Check status, box 2 player.getGESession().checkOffer(1); break; case 62: // Buy, box 3 player.getGESession().newBuyOffer(2); break; case 63: // Sell, box 3 player.getGESession().newSellOffer(2); break; case 50: // Check status, box 3 player.getGESession().checkOffer(2); break; case 81: // Buy, box 4 player.getGESession().newBuyOffer(3); break; case 82: // Sell, box 4 player.getGESession().newSellOffer(3); break; case 69: // Check status, box 4 player.getGESession().checkOffer(3); break; case 100: // Buy, box 5 player.getGESession().newBuyOffer(4); break; case 101: // Sell, box 5 player.getGESession().newSellOffer(4); break; case 88: // Check status, box 5 player.getGESession().checkOffer(4); break; case 119: // Buy, box 6 player.getGESession().newBuyOffer(5); break; case 120: // Sell, box 6 player.getGESession().newSellOffer(5); break; case 107: // Check status, box 6 player.getGESession().checkOffer(5); break; case 127: // The "back" button player.getGESession().goBackToGrandExchange(); break; case 194: // Search for item player.getGESession().openItemSearch(); break; case 159: // Increment amount by 1 player.getGESession().incrementAmount(1, false); break; case 157: // Decrease amount by 1 player.getGESession().decreaseAmount(1); break; case 162: // Increase amount by +1 player.getGESession().incrementAmount(1, true); break; case 164: // Increase amount by +10 player.getGESession().incrementAmount(10, true); break; case 166: // Increase amount by +100 player.getGESession().incrementAmount(100, true); break; case 168: // Increase amount by +1k (or All if selling) player.getGESession().incrementAmount(1000, true); break; case 170: //custom enter quantity player.getPackets().displayEnterAmount(); player.setTemporaryAttribute("interfaceVariable", new EnterVariable(105, 0)); break; case 185: //custom enter per price player.getPackets().displayEnterAmount(); player.setTemporaryAttribute("interfaceVariable", new EnterVariable(105, 1)); break; case 177: // Set price to minimum player.getGESession().setPrice(0); break; case 180: // Set price to medium player.getGESession().setPrice(1); break; case 183: // Set price to maximum player.getGESession().setPrice(2); break; case 171: // Set price -1 player.getGESession().setPrice(3); break; case 173: // Set price +1 player.getGESession().setPrice(4); break; case 190: // Confirm offer player.getGESession().confirmOffer(); break; } break; case 161: // Slayer points interfaces case 163: case 164: Slayer.handlePointsInterface(player, interfaceId, buttonId); break; case 675: // Craft jewellery: player.getPackets().displayEnterAmount(); player.setTemporaryAttribute("interfaceVariable", new EnterVariable(675, buttonId)); break; case 154: // Craft normal leather. Leather.craftNormalLeather(player, buttonId, 1, true); break; case 542: // Craft glass. switch (buttonId) { case 40: // Make 1 beer glass. Glass.craftGlass(player, 1, 0, true); break; case 41: // Make 1 candle lantern. Glass.craftGlass(player, 1, 1, true); break; case 42: // Make 1 oil lamp. Glass.craftGlass(player, 1, 2, true); break; case 38: // Make 1 vial. Glass.craftGlass(player, 1, 3, true); break; case 44: // Make 1 Fishbowl Glass.craftGlass(player, 1, 4, true); break; case 39: // Make 1 orb. Glass.craftGlass(player, 1, 5, true); break; case 43: // Make 1 lantern lens Glass.craftGlass(player, 1, 6, true); break; case 45: // Make 1 dorgeshuun light orb. Glass.craftGlass(player, 1, 7, true); break; } break; case 271 : // Prayer tab. if (!Prayer.canUsePrayer(player, buttonId)) { Prayer.deactivateAllPrayers(player); break; } switch(buttonId) { case 5: // Thick skin. Prayer.togglePrayer(player, PrayerData.Prayer.THICK_SKIN); break; case 15: // Rock skin. Prayer.togglePrayer(player, PrayerData.Prayer.ROCK_SKIN); break; case 31: // Steel skin. Prayer.togglePrayer(player, PrayerData.Prayer.STEEL_SKIN); break; case 7: // Burst of strength. Prayer.togglePrayer(player, PrayerData.Prayer.BURST_OF_STRENGTH); break; case 17: // Superhuman strength. Prayer.togglePrayer(player, PrayerData.Prayer.SUPERHUMAN_STRENGTH); break; case 33: // Ultimate strength. Prayer.togglePrayer(player, PrayerData.Prayer.ULTIMATE_STRENGTH); break; case 9: // Clarity of thought. Prayer.togglePrayer(player, PrayerData.Prayer.CLARITY_OF_THOUGHT); break; case 19: // Improved reflexes. Prayer.togglePrayer(player, PrayerData.Prayer.IMPROVED_REFLEXES); break; case 35: // Incredible reflexes. Prayer.togglePrayer(player, PrayerData.Prayer.INCREDIBLE_REFLEXES); break; case 37: // Magic protect. Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_FROM_MAGIC); break; case 39: // Ranged protect. Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_FROM_RANGED); break; case 41: // Melee protect. Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_FROM_MELEE); break; case 47: // Retribution. Prayer.togglePrayer(player, PrayerData.Prayer.RETRIBUTION); break; case 49: // Redemption. Prayer.togglePrayer(player, PrayerData.Prayer.REDEMPTION); break; case 51: // Smite. Prayer.togglePrayer(player, PrayerData.Prayer.SMITE); break; case 55: // Chivalry. Prayer.togglePrayer(player, PrayerData.Prayer.CHIVALRY); break; case 57: // Piety. Prayer.togglePrayer(player, PrayerData.Prayer.PIETY); break; case 25: // Protect item. Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_ITEM); break; case 21: // Rapid restore Prayer.togglePrayer(player, PrayerData.Prayer.RAPID_RESTORE); break; case 23: // Rapid heal. Prayer.togglePrayer(player, PrayerData.Prayer.RAPID_HEAL); break; case 11: // Sharp eye. Prayer.togglePrayer(player, PrayerData.Prayer.SHARP_EYE); break; case 27: // Hawk Eye. Prayer.togglePrayer(player, PrayerData.Prayer.HAWK_EYE); break; case 43: // Eagle Eye. Prayer.togglePrayer(player, PrayerData.Prayer.EAGLE_EYE); break; case 13: // Mystic will. Prayer.togglePrayer(player, PrayerData.Prayer.MYSTIC_WILL); break; case 29: // Mystic Lore. Prayer.togglePrayer(player, PrayerData.Prayer.MYSTIC_LORE); break; case 45: // Mystic Might. Prayer.togglePrayer(player, PrayerData.Prayer.MYSTIC_MIGHT); break; } break; case 90: // Staff attack interface. switch(buttonId) { case 5: // Select spell (Magic XP) MagicData.configureSelectSpellInterface(player); break; case 9: // Auto retaliate. player.toggleAutoRetaliate(); break; default: MagicData.cancelAutoCast(player, true); AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 388: // Ancient magic autocast select spell. switch(buttonId) { case 0: // Smoke rush. MagicData.setAutoCastSpell(player, 16, 8, true); break; case 1: // Shadow rush. MagicData.setAutoCastSpell(player, 17, 12, true); break; case 2: // Blood rush. MagicData.setAutoCastSpell(player, 18, 4, true); break; case 3: // Ice rush. MagicData.setAutoCastSpell(player, 19, 0, true); break; case 4: // Smoke burst. MagicData.setAutoCastSpell(player, 20, 10, true); break; case 5: // Shadow burst. MagicData.setAutoCastSpell(player, 21, 14, true); break; case 6: // Blood burst. MagicData.setAutoCastSpell(player, 22, 6, true); break; case 7: // Ice burst. MagicData.setAutoCastSpell(player, 23, 2, true); break; case 8: // Smoke blitz. MagicData.setAutoCastSpell(player, 24, 9, true); break; case 9: // Shadow blitz. MagicData.setAutoCastSpell(player, 25, 13, true); break; case 10: // Blood blitz. MagicData.setAutoCastSpell(player, 26, 5, true); break; case 11: // Ice blitz. MagicData.setAutoCastSpell(player, 27, 1, true); break; case 12: // Smoke barrage. MagicData.setAutoCastSpell(player, 28, 11, true); break; case 13: // Shadow barrage. MagicData.setAutoCastSpell(player, 29, 15, true); break; case 14: // Blood barrage. MagicData.setAutoCastSpell(player, 30, 7, true); break; case 15: // Ice barrage. MagicData.setAutoCastSpell(player, 31, 3, true); break; case 16: // Cancel. MagicData.cancelAutoCast(player, false); break; } break; case 406: // Void knight mace autocast select spell. switch(buttonId) { case 0: // Crumble undead. MagicData.setAutoCastSpell(player, 32, 22, false); break; case 1: // Guthix claws. MagicData.setAutoCastSpell(player, 34, 42, false); break; case 2: // Wind wave. MagicData.setAutoCastSpell(player, 12, 45, false); break; case 3: // Water wave. MagicData.setAutoCastSpell(player, 13, 48, false); break; case 4: // Earth wave. MagicData.setAutoCastSpell(player, 14, 52, false); break; case 5: // Fire wave. MagicData.setAutoCastSpell(player, 15, 55, false); break; case 6: // Cancel. MagicData.cancelAutoCast(player, false); break; } break; case 310: // Slayer staff autocast select spell. switch(buttonId) { case 0: // Crumble undead. MagicData.setAutoCastSpell(player, 32, 22, false); break; case 1: // Slayer dart. MagicData.setAutoCastSpell(player, 33, 31, false); break; case 2: // Wind wave. MagicData.setAutoCastSpell(player, 12, 45, false); break; case 3: // Water wave. MagicData.setAutoCastSpell(player, 13, 48, false); break; case 4: // Earth wave. MagicData.setAutoCastSpell(player, 14, 52, false); break; case 5: // Fire wave. MagicData.setAutoCastSpell(player, 15, 55, false); break; case 6: // Cancel. MagicData.cancelAutoCast(player, false); break; } break; case 319: // Normal magic autocast select spell. switch(buttonId) { case 0: // Wind strike. MagicData.setAutoCastSpell(player, 0, 1, false); break; case 1: // Water strike. MagicData.setAutoCastSpell(player, 1, 4, false); break; case 2: // Earth strike. MagicData.setAutoCastSpell(player, 2, 6, false); break; case 3: // Fire strike. MagicData.setAutoCastSpell(player, 3, 8, false); break; case 4: // Wind bolt. MagicData.setAutoCastSpell(player, 4, 10, false); break; case 5: // Water bolt. MagicData.setAutoCastSpell(player, 5, 14, false); break; case 6: // Earth bolt. MagicData.setAutoCastSpell(player, 6, 17, false); break; case 7: // Fire bolt. MagicData.setAutoCastSpell(player, 7, 20, false); break; case 8: // Wind blast. MagicData.setAutoCastSpell(player, 8, 24, false); break; case 9: // Water blast. MagicData.setAutoCastSpell(player, 9, 27, false); break; case 10: // Earth blast. MagicData.setAutoCastSpell(player, 10, 33, false); break; case 11: // Fire blast. MagicData.setAutoCastSpell(player, 11, 38, false); break; case 12: // Wind wave. MagicData.setAutoCastSpell(player, 12, 45, false); break; case 13: // Water wave. MagicData.setAutoCastSpell(player, 13, 48, false); break; case 14: // Earth wave. MagicData.setAutoCastSpell(player, 14, 52, false); break; case 15: // Fire wave. MagicData.setAutoCastSpell(player, 15, 55, false); break; case 16: // Cancel. MagicData.cancelAutoCast(player, false); break; } break; case 182: // Logout tab. player.getPackets().logout(); break; case 261: // Settings tab. switch(buttonId) { case 16: // Display settings. player.getPackets().displayInterface(742); break; case 18: // Audio settings. player.getPackets().displayInterface(743); break; case 3: // Run toggle. if(!player.getWalkingQueue().isRunToggled()) { player.getWalkingQueue().setRunToggled(true); player.getPackets().sendConfig(173, 1); } else { player.getWalkingQueue().setRunToggled(false); player.getPackets().sendConfig(173, 0); } break; case 4: // Chat effect toggle. if(!player.isChatEffectsEnabled()) { player.setChatEffectsEnabled(true); player.getPackets().sendConfig(171, 0); } else { player.setChatEffectsEnabled(false); player.getPackets().sendConfig(171, 1); } break; case 5: // Split private chat toggle. if(!player.isPrivateChatSplit()) { player.setPrivateChatSplit(true); player.getPackets().sendConfig(287, 1); } else { player.setPrivateChatSplit(false); player.getPackets().sendConfig(287, 0); } break; case 7: // Accept aid toggle. if(!player.isAcceptAidEnabled()) { player.setAcceptAidEnabled(true); player.getPackets().sendConfig(427, 1); } else { player.setAcceptAidEnabled(false); player.getPackets().sendConfig(427, 0); } break; case 6: // Mouse buttons toggle. if(!player.isMouseTwoButtons()) { player.setMouseTwoButtons(true); player.getPackets().sendConfig(170, 0); } else { player.setMouseTwoButtons(false); player.getPackets().sendConfig(170, 1); } break; } break; case 589: // Clan chat if (buttonId == 9) { foreach(long friend in player.getFriends().getFriendsList()) { player.getPackets().sendFriend(friend, player.getFriends().getWorld(friend)); } Server.getClanManager().openClanSetup(player); break; } break; case 590: // Clan chat setup Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername()); if (clan == null) { break; } switch(buttonId) { case 22: // Clan name player.getPackets().displayEnterText("Enter clan name :"); player.setTemporaryAttribute("interfaceVariable", new EnterVariable(590, 0)); break; case 23: // "Who can enter chat" - anyone. clan.setEnterRights(Clan.ClanRank.NO_RANK); player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23); break; case 24: // "Who can talk in chat" - anyone. clan.setTalkRights(Clan.ClanRank.NO_RANK); player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24); break; case 26: // "Who can share loot" - anyone. clan.setLootRights(Clan.ClanRank.NO_RANK); player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26); break; } break; case 763: // Bank inventory switch(buttonId) { case 0: // Deposit 1. player.getBank().deposit(buttonId2, 1); player.getBank().refreshBank(); break; } break; case 762: // Bank switch(buttonId) { case 73: // withdraw 1. player.getBank().withdraw(buttonId2, 1); player.getBank().refreshBank(); break; case 16: // Note item. player.getBank().asNote(); break; case 41: // first (main) bank tab player.getBank().setCurrentTab(10); break; case 39: // first bank tab player.getBank().setCurrentTab(2); break; case 37: // second bank tab player.getBank().setCurrentTab(3); break; case 35: // third bank tab player.getBank().setCurrentTab(4); break; case 33: // fourth bank tab player.getBank().setCurrentTab(5); break; case 31: // fifth bank tab player.getBank().setCurrentTab(6); break; case 29: // sixth bank tab player.getBank().setCurrentTab(7); break; case 27: // seventh bank tab player.getBank().setCurrentTab(8); break; case 25: // eighth bank tab player.getBank().setCurrentTab(9); break; } break; case 626: // Stake duel confirmation interface. if (buttonId == 53) { if (player.getDuel() != null) { player.getDuel().acceptDuel(); break; } } break; case 631: // Stake duel first interface. if (player.getDuel() != null) { if (buttonId == 103) { player.getDuel().removeItem(buttonId2, 1); break; } else { player.getDuel().toggleDuelRules(buttonId); break; } } break; case 387: // Equipment tab. switch(buttonId) { case 55: // Character display. player.getEquipment().displayEquipmentScreen(); break; case 52: // Items kept on death. ProtectedItems.displayItemsInterface(player); break; } break; case 274: // Quest tab. switch(buttonId) { case 3: // Achievment diary toggle. player.getPackets().sendTab(85, 259); player.setAchievementDiaryTab(true); break; } break; case 259: // Achievment diary tab. switch(buttonId) { case 8: // Quest tab toggle. player.getPackets().sendTab(85, 274); player.setAchievementDiaryTab(false); break; } break; case 620: // Shop interface. if (player.getShopSession() == null) { return; } switch(buttonId) { case 26: // Player stock tab. player.getShopSession().openPlayerShop(); break; case 25: // Main stock tab. player.getShopSession().openMainShop(); break; case 23: // Value (main stock) case 24: // Value (player stock) player.getShopSession().valueItem(buttonId2, false); break; } break; case 621: // Shop inventory. if (player.getShopSession() == null) { return; } switch(buttonId) { case 0: // Value (player stock) player.getShopSession().valueItem(buttonId2, true); break; } break; case 192: // Normal Magic tab. switch(buttonId) { case 0: // Home Teleport. Teleport.homeTeleport(player); break; case 15: // Varrock teleport. Teleport.teleport(player, 0); break; case 18: // Lumbridge teleport. Teleport.teleport(player, 1); break; case 21: // Falador teleport. Teleport.teleport(player, 2); break; case 23: // POH teleport. player.getPackets().sendMessage("This teleport is unavailable."); break; case 26: // Camelot teleport. Teleport.teleport(player, 3); break; case 32: // Ardougne teleport. Teleport.teleport(player, 4); break; case 37: // Watchtower teleport. player.getPackets().sendMessage("This teleport is unavailable."); //Teleport.teleport(player, 5); break; case 44: // Trollheim teleport. Teleport.teleport(player, 6); break; case 47: // Ape Atoll teleport. player.getPackets().sendMessage("This teleport is unavailable."); break; case 58: // Charge. MagicCombat.castCharge(player); break; } break; case 193: // Ancient magic tab. switch(buttonId) { case 20: // Paddewwa teleport. Teleport.teleport(player, 7); break; case 21: // Senntisten teleport. Teleport.teleport(player, 8); break; case 22: // Kharyrll teleport. Teleport.teleport(player, 9); break; case 23: // Lassar teleport. Teleport.teleport(player, 10); break; case 24: // Dareeyak teleport. Teleport.teleport(player, 11); break; case 25: // Carrallanger teleport. Teleport.teleport(player, 12); break; case 27: // Ghorrock teleport. Teleport.teleport(player, 14); break; case 26: // Annakarl teleport. Teleport.teleport(player, 13); break; case 28: // Ancients Home teleport. Teleport.homeTeleport(player); break; } break; case 13: // Bank pin buttons. if (buttonId == 29) { player.getBank().forgotPin(); break; } player.getBank().handleEnterPin(buttonId); break; case 14: // Bank pin settings. switch(buttonId) { case 60: // Set new bank pin. player.getBank().displayFirstConfirmation(); break; case 61: // Change recovery delay. player.getBank().changePinDelay(); break; case 91: // "No, I might forget it!". if (player.getBank().isPinPending()) { player.getBank().cancelPendingPin(); break; } player.getBank().openPinSettings(2); break; case 89: // Yes i want to set a pin. if (player.getBank().isPinPending()) { player.getBank().verifyPin(true); break; } player.getBank().openEnterPin(); break; case 65: // Cancel pin that's pending. player.getBank().openPinSettings(4); break; case 62: // Change pin. player.getBank().changePin(); break; case 63: // Delete pin. player.getBank().deletePin(); break; } break; case 464: // Emote tab. Emotes.emote(player, buttonId); break; case 320: // Skills Tab. SkillMenu.display(player, buttonId); break; case 499: // Skill menu side menu. SkillMenu.subMenu(player, buttonId); break; case 336: // Trade/duel inventory - trade 1. if (player.getTrade() != null) { player.getTrade().tradeItem(buttonId2, 1); break; } if (player.getDuel() != null) { player.getDuel().stakeItem(buttonId2, 1); break; } break; case 335: // Trade interface. if (player.getTrade() == null) { break; } switch(buttonId) { case 16: // Accept trade. player.getTrade().accept(); break; case 18: // Decline trade. player.getTrade().decline(); break; case 30: // Offer 1 player.getTrade().removeItem(buttonId2, 1); break; } break; case 334: // Trade confirmation. if (player.getTrade() == null) { break; } switch(buttonId) { case 21: // Decline trade. player.getTrade().decline(); break; case 20: // Accept trade. player.getTrade().accept(); break; } break; case 750: // Run button if(!player.getWalkingQueue().isRunToggled()) { player.getWalkingQueue().setRunToggled(true); player.getPackets().sendConfig(173, 1); } else { player.getWalkingQueue().setRunToggled(false); player.getPackets().sendConfig(173, 0); } break; case 667: // Equipment/bonuses interface. if (buttonId == 14) { player.getEquipment().unequipItem((ItemData.EQUIP)buttonId2); break; } break; case 771: // Character design interface. ConfigureAppearance.sortButton(player, buttonId); break; case 311: // Smelt interface. Smelting.smeltOre(player, buttonId, true, -1); break; case 300: // Bar smithing interface. Smithing.smithItem(player, buttonId, 1, true); break; case 92: // Unarmed attack interface. switch(buttonId) { case 24: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 85: // Spear attack interface. switch(buttonId) { case 8: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 24: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 93: // Whip attack interface. switch(buttonId) { case 8: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 24: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 89: // Dagger attack interface. switch(buttonId) { case 10: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 26: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 82: // Longsword/scimitar attack interface. switch(buttonId) { case 10: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 26: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 78: // Claw attack interface. switch(buttonId) { case 10: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 26: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 81: // Godsword attack interface. switch(buttonId) { case 10: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 26: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 88: // Mace attack interface. switch(buttonId) { case 10: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 26: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 76: // Granite maul attack interface. switch(buttonId) { case 8: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 24: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 77: // Bow attack interface. switch(buttonId) { case 11: // Special attack. player.getSpecialAttack().toggleSpecBar(); break; case 27: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 75: // Battleaxe attack interface. switch(buttonId) { case 10: // Special attack. player.getSpecialAttack().toggleSpecBar(); player.getSpecialAttack().dragonBattleaxe(); break; case 26: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 91: // Thrown weapon switch(buttonId) { case 24: // Auto retaliate. player.toggleAutoRetaliate(); break; default: AttackInterface.configureButton(player, interfaceId, buttonId); break; } break; case 430: // Lunar interface switch(buttonId) { case 14: // Vengeance Lunar.castLunarSpell(player, buttonId); break; } break; case 102: // Items on death interface if (buttonId == 18) player.getPackets().sendMessage("You will keep this item if you should you die."); else player.getPackets().sendMessage("You will lose this item if you should you die."); break; default: if (interfaceId != 548 && interfaceId != 751) { Console.WriteLine("Unhandled ActionButton : " + interfaceId + " " + buttonId + " " + buttonId2); } break; } }
public static void useLever(Player p, int id, Location leverLocation) { if (p.getTemporaryAttribute("teleporting") != null) { return; } foreach (LoadedLaddersAndStairs.Lever lever in LoadedLaddersAndStairs.levers) { if (lever.getId() == id) { if (lever.getLeverLocation().Equals(leverLocation)) { LoadedLaddersAndStairs.Lever l = lever; //TODO when in use it cant be used (in use = lever is facing down) CoordinateEvent useLeverCoordinateEvent = new CoordinateEvent(p, l.getLeverLocation()); useLeverCoordinateEvent.setAction(() => { p.setFaceLocation(l.getFaceLocation()); if (p.getTemporaryAttribute("teleblocked") != null) { p.getPackets().sendMessage("A magical force prevents you from teleporting!"); return; } else if ((p.getTemporaryAttribute("teleporting") != null)) { return; } p.setLastAnimation(new Animation(2140)); p.getPackets().closeInterfaces(); p.setTemporaryAttribute("teleporting", true); p.getWalkingQueue().resetWalkingQueue(); p.getPackets().clearMapFlag(); SkillHandler.resetAllSkills(p); l.setInUse(true); Event useLeverEvent = new Event(700); useLeverEvent.setAction(() => { useLeverEvent.stop(); p.setLastAnimation(new Animation(8939, 0)); p.setLastGraphics(new Graphics(1576, 0)); l.setInUse(false); Event setLeverTeleportEvent = new Event(1800); setLeverTeleportEvent.setAction(() => { setLeverTeleportEvent.stop(); p.teleport(l.getTeleLocation()); p.setLastAnimation(new Animation(8941, 0)); p.setLastGraphics(new Graphics(1577, 0)); Teleport.resetTeleport(p); }); Server.registerEvent(setLeverTeleportEvent); }); Server.registerEvent(useLeverEvent); }); Server.registerCoordinateEvent(useLeverCoordinateEvent); break; } } } }
public static void teleport(Player p, LoadedLaddersAndStairs.HeightObject obj) { p.getWalkingQueue().resetWalkingQueue(); p.setTemporaryAttribute("unmovable", true); p.setFaceLocation(obj.getLocation()); if (obj.getAnimation() != -1) { p.setLastAnimation(new Animation(obj.getAnimation())); } Event teleportEvent = new Event(obj.getAnimation() != -1 ? obj.getTeleDelay() : 500); teleportEvent.setAction(() => { teleportEvent.stop(); p.teleport(obj.getTeleLocation()); p.removeTemporaryAttribute("unmovable"); }); Server.registerEvent(teleportEvent); }
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..."); }