Пример #1
0
        public static bool interactTzhaarNPC(Player p, Npc n, int option)
        {
            if (n.getId() != 2622 && n.getId() != 2620 && n.getId() != 2623 && n.getId() != 2619 && n.getId() != 2617 && n.getId() != 2618)
            {
                return false;
            }
            p.setEntityFocus(n.getClientIndex());
            int npcX = n.getLocation().getX();
            int npcY = n.getLocation().getY();
            AreaEvent interactTzhaarNpcAreaEvent = new AreaEvent(p, npcX - 1, npcY - 1, npcX + 1, npcY + 1);
            interactTzhaarNpcAreaEvent.setAction(() =>
            {
                p.setFaceLocation(n.getLocation());
                p.setEntityFocus(65535);
                switch (n.getId())
                {
                    case 2619: // Bankers
                        if (option == 1)
                        { // Talk
                        }
                        else if (option == 2)
                        { // Bank
                            p.getBank().openBank();
                        }
                        else if (option == 3)
                        { // Collect
                        }
                        break;

                    //TODO tzhaar stores
                    case 2622: // Ore shop
                        if (option == 1)
                        { // Speak
                        }
                        else if (option == 2)
                        { // Trade
                            p.setShopSession(new ShopSession(p, 3));
                        }
                        break;
                }
            });
            Server.registerCoordinateEvent(interactTzhaarNpcAreaEvent);
            return true;
        }
Пример #2
0
        private void handleFirstClickObject(Player player, Packet packet)
        {
            int objectX = packet.readLEShort();
            ushort objectId = (ushort)packet.readShortA();
            int objectY = packet.readUShort();
            if (objectX < 1000 || objectY < 1000 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
            {
                return;
            }
            SkillHandler.resetAllSkills(player);
            player.getPackets().closeInterfaces();
            Console.WriteLine("First object click = " + objectId + " " + objectX + " " + objectY);
            if (RuneCraft.wantToRunecraft(player, objectId, objectX, objectY))
            {
                return;
            }
            else if (RuneCraft.enterRift(player, objectId, objectX, objectY))
            {
                return;
            }
            else if (RuneCraft.enterViaTiara(player, objectId, objectX, objectY))
            {
                player.setFaceLocation(new Location(objectX, objectY, player.getLocation().getZ()));
                return;
            }
            else if (RuneCraft.leaveAltar(player, objectId, objectX, objectY))
            {
                return;
            }
            else if (Barrows.leaveCrypt(player, objectId, objectX, objectY))
            {
                return;
            }
            else if (Barrows.tryOpenCoffin(player, objectId))
            {
                return;
            }
            else if (Barrows.openTunnelDoor(player, objectId, objectX, objectY))
            {
                return;
            }
            else if (Thieving.wantToThieveChest(player, objectId, objectX, objectY))
            {
                return;
            }
            else if (Agility.doAgility(player, objectId, objectX, objectY))
            {
                return;
            }
            else if (Farming.interactWithPatch(player, objectId, objectX, objectY, -1))
            {
                return;
            }
            else if (Server.getGlobalObjects().getDoors().useDoor(player, objectId, objectX, objectY, player.getLocation().getZ()))
            {
                return;
            }
            else if (LaddersAndStairs.useObject(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 1))
            {
                return;
            }
            else if (WildernessObelisks.useWildernessObelisk(player, objectId, new Location(objectX, objectY, player.getLocation().getZ())))
            {
                return;
            }
            if (player.getTemporaryAttribute("unmovable") != null)
            {
                return;
            }
            player.setFaceLocation(new Location(objectX, objectY, player.getLocation().getZ()));
            switch (objectId)
            {
                case 2492: // essence mine portals
                    RuneCraft.leaveEssMine(player, new Location(objectX, objectY, player.getLocation().getZ()));
                    break;

                case 5959:
                case 5960:
                    Wilderness.handleLever(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()));
                    break;

                case 733: // Wilderness web
                    Wilderness.slashWeb(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()));
                    break;

                case 28089: // GE desk
                    Server.getGrandExchange().clickDesk(player, objectX, objectY, 1);
                    break;

                case 9359: // Tzhaar main exit
                    TzHaar.exitTzhaar(player);
                    break;

                case 31284: // Tzhaar entrance
                    TzHaar.enterTzhaar(player);
                    break;

                case 9357: // Fight cave exit
                    FightCave.exitCave(player, objectX, objectY);
                    break;

                case 9356: // Fight cave entrance
                    FightCave.enterCave(player);
                    break;

                case 9391: // Tzhaar fight pits viewing orb
                    Server.getMinigames().getFightPits().useOrb(player, -1);
                    break;

                case 9369: // Tzhaar pits main entrance
                case 9368: // Tzhaar pits game door
                    Server.getMinigames().getFightPits().useDoor(player, objectId);
                    break;

                case 3617: // Agility arena ladder
                    AgilityArena.enterArena(player, objectX, objectY);
                    break;

                case 3618:
                    if (Location.atAgilityArena(player.getLocation()))
                    {
                        AgilityArena.exitArena(player, objectX, objectY);
                    }
                    break;

                case 6: // Dwarf multicannon
                    DwarfCannon cannon = player.getCannon();
                    Location l = new Location(objectX, objectY, player.getLocation().getZ());
                    if (cannon == null || (cannon != null & !l.withinDistance(cannon.getLocation(), 2)))
                    {
                        player.getPackets().sendMessage("This isn't your cannon!");
                        break;
                    }
                    cannon.fireCannon();
                    break;

                case 7: //Cannon base only
                case 8: //Cannon stand
                case 9: //Cannon barrels
                    DwarfCannon cannonPickup = player.getCannon();
                    Location cannonLocation = new Location(objectX, objectY, player.getLocation().getZ());
                    if (cannonPickup == null || (cannonPickup != null & !cannonLocation.withinDistance(cannonPickup.getLocation(), 2)))
                    {
                        player.getPackets().sendMessage("This isn't your cannon!");
                        break;
                    }
                    cannonPickup.pickupCannon();
                    break;

                case 11601: // Clay oven
                    player.getPackets().modifyText("Please use the item on the oven.", 210, 1);
                    player.getPackets().sendChatboxInterface(210);
                    break;

                case 10284: // Barrows chest
                    Barrows.openChest(player);
                    break;

                case 4483: // Castle wars bank chest.
                case 21301: // Neitiznot bank chest
                    player.getBank().openBank(false, objectX, objectY);
                    break;

                case 1276: // Normal tree
                case 1278: // Normal tree
                case 2409: // Normal tree
                case 1277: // Normal tree with but different coloured stump
                case 3034: // Normal tree with dark stump
                case 3033: // Normal tree with dark stump
                case 10041: // Normal tree
                case 1282: // Dead tree
                case 1283: // Dead tree
                case 1284: // Dead tree
                case 1285: // Dead tree
                case 1286: // Dead tree
                case 1289: // Dead tree
                case 1290: // Dead tree
                case 1365: // Dead tree
                case 1383: // Dead tree
                case 1384: // Dead tree
                case 1291: // Dead tree
                case 3035: // Dead tree
                case 3036: // Dead tree
                case 1315: // Evergreen
                case 1316: // Evergreen
                case 1318: // Snowy Evergreen
                case 1319: // Snowy Evergreen
                case 1330: // Snow covered tree
                case 1331: // Snow covered tree
                case 1332: // Snow covered tree
                case 3879: // Evergreen from elf land
                case 3881: // Evergreen from elf land (slightly bigger than one above)
                case 3882: // Evergreen from elf land (slightly bigger than one above)
                case 3883: // Small Evergreen from elf land
                case 1280: // Normal tree orange stump
                case 14309: // PC game island tree
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 0, true);
                    break;

                case 1281: // Normal Oak tree
                case 3037: // Oak tree dark stump
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 1, true);
                    break;

                case 1308: // Normal Willow tree
                case 5551: // Normal Willow tree
                case 5552: // Normal Willow tree
                case 5553: // Normal Willow tree
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 2, true);
                    break;

                case 2023: // Achey tree
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 3, true);
                    break;

                case 9036: // Normal Teak tree
                case 15062: // Normal Teak tree (same as above?)
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 4, true);
                    break;

                case 1307: // Normal Maple tree
                case 4674:// Exactly same as above
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 5, true);
                    break;

                case 2289: // Normal Hollow tree
                case 4060: // Normal Hollow tree (bigger than above)
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 6, true);
                    break;

                case 9034: // Normal Mahogany tree
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 7, true);
                    break;

                case 21273: // Normal Arctic pine
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 8, true);
                    break;

                case 28951: // Normal Eucalyptus tree
                case 28952: // Normal Eucalyptus tree (smaller)
                case 28953: // Normal Eucalyptus tree (smallest)
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 9, true);
                    break;

                case 1309: // Yew tree
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 10, true);
                    break;

                case 1306: // Normal Magic tree
                    Woodcutting.tryCutTree(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 11, true);
                    break;

                case 3203: // Duel arena trapdoors.
                    if (player.getDuel() != null)
                    {
                        player.getDuel().forfeitDuel(objectX, objectY);
                        break;
                    }
                    break;

                case 7152: // Abyss tendrils.
                case 7144:
                    AbyssObstacles.chopTendrils(player, objectX, objectY);
                    break;

                case 7147: // Abyss tunnel.
                    AbyssObstacles.useAgilityTunnel(player, objectX, objectY);
                    break;

                case 7146: // Abyss eyes.
                case 7150:
                    AbyssObstacles.passEyes(player, objectX, objectY);
                    break;

                case 7151: // Abyss boil.
                case 7145:
                    AbyssObstacles.burnBoil(player, objectX, objectY);
                    break;

                case 7153: // Abyss mining rock.
                case 7143:
                    AbyssObstacles.mineRock(player, objectX, objectY);
                    break;

                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(true, objectX, objectY);
                    break;

                case 2491: // Essence rock
                    Mining.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 0, true);
                    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.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 6, true);
                    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.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 8, true);
                    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.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 1, true);
                    break;

                case 11960: // Copper rocks
                case 11961:
                case 11962:
                case 11936:
                case 11937:
                case 11938:
                case 31080:
                case 31081:
                case 31082:
                    Mining.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 2, true);
                    break;

                case 11959: // Tin rocks
                case 11958:
                case 11957:
                case 11933:
                case 11934:
                case 11935:
                case 31077:
                case 31078:
                case 31079:
                    Mining.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 3, true);
                    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.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 9, true);
                    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.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 10, true);
                    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.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 11, true);
                    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.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 12, true);
                    break;

                case 14859: // Rune rocks
                case 14860:
                case 14861:
                    Mining.tryMineRock(player, objectId, new Location(objectX, objectY, player.getLocation().getZ()), 13, true);
                    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 23271: // Wilderness ditch
                    Wilderness.crossDitch(player, objectX, objectY);
                    break;
            }
        }
Пример #3
0
        private void handleEnterAmount(Player player, Packet packet)
        {
            if (player.getTemporaryAttribute("interfaceVariable") == null)
            {
                player.getPackets().sendMessage("An error occured, please try again.");
                return;
            }
            EnterVariable var = (EnterVariable)player.getTemporaryAttribute("interfaceVariable");
            int craftType = (int)(player.getTemporaryAttribute("craftType") == null ? -1 : (int)player.getTemporaryAttribute("craftType")); // 'Category' of item to craft
            int amount = packet.readInt();
            switch (var.getInterfaceId())
            {
                case 675: // Jewellery crafting
                    Jewellery.makeJewellery(player, var.getSlot(), amount, true);
                    break;

                case 304: // Dragonhide crafting.
                    int leatherType = (int)(player.getTemporaryAttribute("leatherCraft") == null ? -1 : (int)player.getTemporaryAttribute("leatherCraft")); // Type of leather to craft.
                    switch (var.getSlot())
                    {
                        case 0:
                            if (leatherType != -1)
                            {
                                Leather.craftDragonHide(player, 1, 0, leatherType, true); // Body
                                break;
                            }
                            else if (craftType == 6)
                            { // Ball of wool
                                Spinning.craftSpinning(player, amount, 0, true);
                                break;
                            }
                            break;

                        case 1:
                            if (craftType == 6)
                            { // Bowstring
                                Spinning.craftSpinning(player, amount, 1, true);
                                break;
                            }
                            break;

                        case 2:
                            if (craftType == 6)
                            { // Crossbow string
                                Spinning.craftSpinning(player, amount, 2, true);
                                break;
                            }
                            break;

                        case 4:
                            Leather.craftDragonHide(player, 1, 4, leatherType, true); // Vambraces
                            break;

                        case 8:
                            Leather.craftDragonHide(player, 1, 8, leatherType, true); // Chaps
                            break;
                    }
                    break;

                case 303:
                    switch (var.getSlot())
                    {
                        case 120: // Unholy symbol
                            Silver.newSilverItem(player, amount, var.getSlot(), true);
                            break;

                        case 121: // Tiara
                            Silver.newSilverItem(player, amount, var.getSlot(), true);
                            break;
                    }
                    break;

                case 154: // Craft normal leather.
                    if (var.getSlot() >= 28 && var.getSlot() <= 34)
                    {
                        Leather.craftNormalLeather(player, var.getSlot(), amount, true);
                        break;
                    }
                    break;

                case 542: // Glassblowing.
                    switch (var.getSlot())
                    {
                        case 40: // Make X beer glass.
                            Glass.craftGlass(player, amount, 0, true);
                            break;

                        case 41: // Make X candle lantern.
                            Glass.craftGlass(player, amount, 1, true);
                            break;

                        case 42: // Make X oil lamp.
                            Glass.craftGlass(player, amount, 2, true);
                            break;

                        case 38: // Make X vial.
                            Glass.craftGlass(player, amount, 3, true);
                            break;

                        case 44: // Make X Fishbowl
                            Glass.craftGlass(player, amount, 4, true);
                            break;

                        case 39: // Make X orb.
                            Glass.craftGlass(player, amount, 5, true);
                            break;

                        case 43: // Make X lantern lens
                            Glass.craftGlass(player, amount, 6, true);
                            break;

                        case 45: // Make X dorgeshuun light orb.
                            Glass.craftGlass(player, amount, 7, true);
                            break;
                    }
                    break;

                case 763: // Bank inventory - X.
                    player.getBank().setLastXAmount(amount);
                    player.getBank().deposit(var.getSlot(), amount);
                    player.getBank().refreshBank();
                    break;

                case 762: // Bank - X.
                    player.getBank().setLastXAmount(amount);
                    player.getBank().withdraw(var.getSlot(), amount);
                    player.getBank().refreshBank();
                    break;

                case 336: // Trade/stake inventory - trade X.
                    if (player.getTrade() != null)
                    {
                        player.getTrade().tradeItem(var.getSlot(), amount);
                        break;
                    }
                    if (player.getDuel() != null)
                    {
                        player.getDuel().stakeItem(var.getSlot(), amount);
                        break;
                    }
                    break;

                case 631:
                    if (player.getDuel() != null)
                    {
                        player.getDuel().removeItem(var.getSlot(), amount);
                        break;
                    }
                    break;

                case 335: // Trade/stake interface - remove X.
                    player.getTrade().removeItem(var.getSlot(), amount);
                    break;

                case 620: // Shop - buy X.
                    player.getShopSession().buyItem(var.getSlot(), amount);
                    break;

                case 105: //Grand Exchange custom quantity and price inputs.
                    switch (var.getSlot())
                    {
                        case 0: //custom enter quantity
                            player.getGESession().setCustomAmount(amount);
                            break;

                        case 1: //custom enter per price
                            player.getGESession().setCustomPrice(amount);
                            break;
                    }
                    break;

                case 305: // What would you like to make? - 4 options
                    if (player.getTemporaryAttribute("fletchType") == null)
                    {
                        return;
                    }
                    int logType = (int)player.getTemporaryAttribute("fletchType");
                    switch (var.getSlot())
                    {
                        case 0:
                            MakeBows.cutLog(player, amount, logType, 0, (player.getTemporaryAttribute("stringingBow") == null ? false : (bool)player.getTemporaryAttribute("stringingBow")), true);
                            break;

                        case 1:
                            MakeBows.cutLog(player, amount, logType, 1, (player.getTemporaryAttribute("stringingBow") == null ? false : (bool)player.getTemporaryAttribute("stringingBow")), true);
                            break;

                        case 2:
                            MakeBows.cutLog(player, amount, 0, 2, false, true);
                            break;

                        case 3:
                            MakeBows.cutLog(player, amount, 0, 3, false, true);
                            break;
                    }
                    break;

                case 306: // What would you like to make? - 5 options
                    switch (var.getSlot())
                    {
                        case 0:
                            Clay.craftClay(player, amount, craftType, var.getSlot(), true);
                            break;

                        case 1:
                            Clay.craftClay(player, amount, craftType, var.getSlot(), true);
                            break;

                        case 2:
                            Clay.craftClay(player, amount, craftType, var.getSlot(), true);
                            break;

                        case 3:
                            Clay.craftClay(player, amount, craftType, var.getSlot(), true);
                            break;

                        case 4:
                            Clay.craftClay(player, amount, craftType, var.getSlot(), true);
                            break;
                    }
                    break;

                case 309: // What would you like to make - 1 option
                    if (var.getSlot() >= 50 && var.getSlot() <= 60)
                    { // Cut gem
                        Jewellery.cutGem(player, craftType, amount, true);
                        break;
                    }
                    else if (var.getSlot() >= 100 && var.getSlot() <= 110)
                    { // String amulet
                        Jewellery.stringAmulet(player, craftType, amount, true);
                        break;
                    }
                    switch (var.getSlot())
                    {
                        case 0:
                            MakeXbow.createXbow(player, amount, (int)(player.getTemporaryAttribute("bowType2") == null ? -1 : (int)player.getTemporaryAttribute("bowType2")), (bool)(player.getTemporaryAttribute("stringingBow") == null ? false : (bool)player.getTemporaryAttribute("stringingBow")), true);
                            break;

                        case 1:
                            MakeBows.cutLog(player, amount, (int)(player.getTemporaryAttribute("fletchType") == null ? -1 : (int)player.getTemporaryAttribute("fletchType")), (int)(player.getTemporaryAttribute("bowType") == null ? -1 : (int)player.getTemporaryAttribute("bowType")), true, true);
                            break;

                        case 2:
                            Herblore.grindIngredient(player, amount, true);
                            break;

                        case 3:
                            Herblore.makeUnfinishedPotion(player, amount, true);
                            break;

                        case 4:
                            Herblore.completePotion(player, amount, true);
                            break;

                        case 5:
                            Cooking.cookItem(player, amount, true, player.getTemporaryAttribute("cookingFireLocation") != null);
                            break;

                        case 6:
                            MakeAmmo.makeBoltTip(player, (int)(player.getTemporaryAttribute("boltTips") == null ? -1 : (int)player.getTemporaryAttribute("boltTips")), amount, true);
                            break;
                    }
                    break;

                case 311: // Smelting interface
                    switch (var.getSlot())
                    {
                        case 13: // Bronze
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 17: // Blurite
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 21: // Iron
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 25: // Silver
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 29: // Steel
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 33: // Gold
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 37: // Mithril
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 41: // Adamant
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;

                        case 45: // Rune
                            Smelting.smeltOre(player, var.getSlot(), true, amount);
                            break;
                    }
                    break;

                case 300: // Smithing interface.
                    if (player.getTemporaryAttribute("smithingItem") == null)
                    {
                        return;
                    }
                    SmithBar item = (SmithBar)player.getTemporaryAttribute("smithingItem");
                    if (item != null)
                    {
                        item.setAmount(amount);
                    }
                    Smithing.smithItem(player, var.getSlot(), amount, false);
                    break;
            }
            player.removeTemporaryAttribute("interfaceVariable");
        }
Пример #4
0
        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;
            }
        }
Пример #5
0
        private void handleClickThree(Player player, Packet packet)
        {
            int interfaceId = packet.readUShort();
            int child = packet.readUShort();
            int slot = packet.readUShort();
            Console.WriteLine("InterfaceOption 3: interfaceId: " + interfaceId);
            switch (interfaceId)
            {
                case 154: // Craft normal leather.
                    Leather.craftNormalLeather(player, child, player.getInventory().getItemAmount(1741), true);
                    break;

                case 542: // Glassblowing.
                    int totalGlass = player.getInventory().getItemAmount(1775);
                    switch (child)
                    {
                        case 40: // Make all beer glass.
                            Glass.craftGlass(player, totalGlass, 0, true);
                            break;

                        case 41: // Make all candle lantern.
                            Glass.craftGlass(player, totalGlass, 1, true);
                            break;

                        case 42: // Make all oil lamp.
                            Glass.craftGlass(player, totalGlass, 2, true);
                            break;

                        case 38: // Make all vial.
                            Glass.craftGlass(player, totalGlass, 3, true);
                            break;

                        case 44: // Make all Fishbowl
                            Glass.craftGlass(player, totalGlass, 4, true);
                            break;

                        case 39: // Make all orb.
                            Glass.craftGlass(player, totalGlass, 5, true);
                            break;

                        case 43: // Make all lantern lens
                            Glass.craftGlass(player, totalGlass, 6, true);
                            break;

                        case 45: // Make all dorgeshuun light orb.
                            Glass.craftGlass(player, totalGlass, 7, true);
                            break;
                    }
                    break;

                case 763: // Bank inventory - 10.
                    player.getBank().deposit(slot, 10);
                    player.getBank().refreshBank();
                    break;

                case 762: // Bank - 10.
                    player.getBank().withdraw(slot, 10);
                    player.getBank().refreshBank();
                    break;

                case 336: // Trade/stake inventory - trade 10.
                    if (player.getTrade() != null)
                    {
                        player.getTrade().tradeItem(slot, 10);
                        break;
                    }
                    if (player.getDuel() != null)
                    {
                        player.getDuel().stakeItem(slot, 10);
                        break;
                    }
                    break;

                case 335: // Trade interface - remove 10.
                    player.getTrade().removeItem(slot, 10);
                    break;

                case 631: // Duel interface - remove 10.
                    if (player.getDuel() != null)
                    {
                        player.getDuel().removeItem(slot, 5);
                        break;
                    }
                    break;

                case 620: // Shop - buy 5.
                    player.getShopSession().buyItem(slot, 5);
                    break;

                case 621: // Shop - sell 5.
                    player.getShopSession().sellItem(slot, 5);
                    break;

                case 590: // Clan chat setup
                    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
                    if (clan == null)
                    {
                        player.getPackets().sendMessage("Please create your clan chat before changing settings.");
                        break;
                    }
                    switch (child)
                    {
                        case 23: // "Who can enter chat" - recruit.
                            clan.setEnterRights(Clan.ClanRank.RECRUIT);
                            player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
                            break;

                        case 24: // "Who can talk in chat" - recruit.
                            clan.setTalkRights(Clan.ClanRank.RECRUIT);
                            player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
                            break;

                        case 26: // "Who can share loot" - recruit.
                            clan.setLootRights(Clan.ClanRank.RECRUIT);
                            player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
                            break;
                    }
                    break;
            }
        }
Пример #6
0
        private void handleClickTwo(Player player, Packet packet)
        {
            int interfaceId = packet.readUShort();
            int child = packet.readUShort();
            int slot = packet.readUShort();
            Console.WriteLine("InterfaceOption 2: interfaceId: " + interfaceId);
            switch (interfaceId)
            {
                case 105: // GE Interface
                    switch (child)
                    {
                        case 209: // "Collect" and "Collect-items" option
                            player.getGESession().collectSlot1(false);
                            break;

                        case 211: // Left box "Collect" option (coins)
                            player.getGESession().collectSlot2();
                            break;
                    }
                    break;

                case 154: // Craft normal leather.
                    Leather.craftNormalLeather(player, child, 5, true);
                    break;

                case 542: // Glassblowing.
                    switch (child)
                    {
                        case 40: // Make 5 beer glass.
                            Glass.craftGlass(player, 5, 0, true);
                            break;

                        case 41: // Make 5 candle lantern.
                            Glass.craftGlass(player, 5, 1, true);
                            break;

                        case 42: // Make 5 oil lamp.
                            Glass.craftGlass(player, 5, 2, true);
                            break;

                        case 38: // Make 5 vial.
                            Glass.craftGlass(player, 5, 3, true);
                            break;

                        case 44: // Make 5 Fishbowl
                            Glass.craftGlass(player, 5, 4, true);
                            break;

                        case 39: // Make 5 orb.
                            Glass.craftGlass(player, 5, 5, true);
                            break;

                        case 43: // Make 5 lantern lens
                            Glass.craftGlass(player, 5, 6, true);
                            break;

                        case 45: // Make 5 dorgeshuun light orb.
                            Glass.craftGlass(player, 5, 7, true);
                            break;
                    }
                    break;

                case 763: // Bank inventory - 5.
                    player.getBank().deposit(slot, 5);
                    player.getBank().refreshBank();
                    break;

                case 762: // Bank - 5.
                    player.getBank().withdraw(slot, 5);
                    player.getBank().refreshBank();
                    break;

                case 336: // Trade/stake inventory - trade 5.
                    if (player.getTrade() != null)
                    {
                        player.getTrade().tradeItem(slot, 5);
                        break;
                    }
                    if (player.getDuel() != null)
                    {
                        player.getDuel().stakeItem(slot, 5);
                        break;
                    }
                    break;

                case 631: // Duel interface - remove 5
                    if (player.getDuel() != null)
                    {
                        player.getDuel().removeItem(slot, 5);
                        break;
                    }
                    break;

                case 335: // Trade interface - remove 5.
                    player.getTrade().removeItem(slot, 5);
                    break;

                case 620: // Shop - buy 1.
                    player.getShopSession().buyItem(slot, 1);
                    break;

                case 621: // Shop - sell 1.
                    player.getShopSession().sellItem(slot, 1);
                    break;

                case 590: // Clan chat setup
                    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
                    if (clan == null)
                    {
                        player.getPackets().sendMessage("Please create your clan chat before changing settings.");
                        break;
                    }
                    switch (child)
                    {
                        case 23: // "Who can enter chat" - any friends.
                            clan.setEnterRights(Clan.ClanRank.FRIEND);
                            player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
                            break;

                        case 24: // "Who can talk in chat" - any friends.
                            clan.setTalkRights(Clan.ClanRank.FRIEND);
                            player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
                            break;

                        case 26: // "Who can share loot" - any friends.
                            clan.setLootRights(Clan.ClanRank.FRIEND);
                            player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
                            break;
                    }
                    break;
            }
        }
Пример #7
0
        private void handleClickSeven(Player player, Packet packet)
        {
            int interfaceId = packet.readUShort();
            int child = packet.readUShort();
            int slot = packet.readUShort();
            Console.WriteLine("InterfaceOption 7: interfaceId: " + interfaceId);
            switch (interfaceId)
            {
                case 762: // Bank - All but one.
                    player.getBank().withdraw(slot, player.getBank().getAmountInSlot(slot) - 1);
                    player.getBank().refreshBank();
                    break;

                case 336: // Trade inventory - trade all.
                    //player.getTrade().lendItem(slot);
                    break;

                case 590: // Clan chat setup
                    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
                    if (clan == null)
                    {
                        player.getPackets().sendMessage("Please create your clan chat before changing settings.");
                        break;
                    }
                    switch (child)
                    {
                        case 23: // "Who can enter chat" - captain.
                            clan.setEnterRights(Clan.ClanRank.CAPTAIN);
                            player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
                            break;

                        case 24: // "Who can talk in chat" - captain.
                            clan.setTalkRights(Clan.ClanRank.CAPTAIN);
                            player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
                            break;

                        case 25: // // "Who can kick in chat" - captain.
                            clan.setKickRights(Clan.ClanRank.CAPTAIN);
                            player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
                            break;

                        case 26: // "Who can share loot" - captain.
                            clan.setLootRights(Clan.ClanRank.CAPTAIN);
                            player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
                            break;
                    }
                    break;
            }
        }
Пример #8
0
        private void handleClickSix(Player player, Packet packet)
        {
            int interfaceId = packet.readUShort();
            int child = packet.readUShort();
            int slot = packet.readUShort();
            Console.WriteLine("InterfaceOption 6: interfaceId: " + interfaceId);
            switch (interfaceId)
            {
                case 763: // Bank inventory - All.
                    player.getBank().deposit(slot, player.getInventory().getItemAmount(player.getInventory().getItemInSlot(slot)));
                    player.getBank().refreshBank();
                    break;

                case 762: // Bank - All.
                    player.getBank().withdraw(slot, player.getBank().getAmountInSlot(slot));
                    player.getBank().refreshBank();
                    break;

                case 590: // Clan chat setup
                    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
                    if (clan == null)
                    {
                        player.getPackets().sendMessage("Please create your clan chat before changing settings.");
                        break;
                    }
                    switch (child)
                    {
                        case 23: // "Who can enter chat" - lieutenant.
                            clan.setEnterRights(Clan.ClanRank.LIEUTENANT);
                            player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
                            break;

                        case 24: // "Who can talk in chat" - lieutenant.
                            clan.setTalkRights(Clan.ClanRank.LIEUTENANT);
                            player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
                            break;

                        case 25: // // "Who can kick in chat" - lieutenant.
                            clan.setKickRights(Clan.ClanRank.LIEUTENANT);
                            player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
                            break;

                        case 26: // "Who can share loot" - lieutenant.
                            clan.setLootRights(Clan.ClanRank.LIEUTENANT);
                            player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
                            break;
                    }
                    break;
            }
        }
Пример #9
0
        private void handleClickFour(Player player, Packet packet)
        {
            int interfaceId = packet.readUShort();
            int child = packet.readUShort();
            int slot = packet.readUShort();
            Console.WriteLine("InterfaceOption 4: interfaceId: " + interfaceId);
            switch (interfaceId)
            {
                case 763: // Bank inventory - Custom amount.
                    player.getBank().deposit(slot, player.getBank().getLastXAmount());
                    player.getBank().refreshBank();
                    break;

                case 762: // Bank - Custom amount.
                    player.getBank().withdraw(slot, player.getBank().getLastXAmount());
                    player.getBank().refreshBank();
                    break;

                case 154: // Craft normal leather.
                    player.getPackets().displayEnterAmount();
                    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(154, child));
                    break;

                case 542: // Glassblowing.
                    switch (child)
                    {
                        case 40: // Make X beer glass.
                        case 41: // Make X candle lantern.
                        case 42: // Make X oil lamp.
                        case 38: // Make X vial.
                        case 44: // Make X Fishbowl
                        case 39: // Make X orb.
                        case 43: // Make X lantern lens
                        case 45: // Make X dorgeshuun light orb.
                            player.getPackets().displayEnterAmount();
                            player.setTemporaryAttribute("interfaceVariable", new EnterVariable(542, child));
                            break;
                    }
                    break;

                case 336: // Trade/stake inventory - trade all.
                    if (player.getTrade() != null)
                    {
                        player.getTrade().tradeItem(slot, player.getInventory().getItemAmount(player.getInventory().getItemInSlot(slot)));
                        break;
                    }
                    if (player.getDuel() != null)
                    {
                        player.getDuel().stakeItem(slot, player.getInventory().getItemAmount(player.getInventory().getItemInSlot(slot)));
                        break;
                    }
                    break;

                case 335: // Trade interface - remove all.
                    player.getTrade().removeItem(slot, player.getTrade().getItemAmount(player.getTrade().getItemInSlot(slot)));
                    break;

                case 631: // Duel interface - remove All
                    if (player.getDuel() != null)
                    {
                        player.getDuel().removeItem(slot, player.getDuel().getItemAmount(player.getDuel().getItemInSlot(slot)));
                        break;
                    }
                    break;

                case 620: // Shop - buy 10.
                    player.getShopSession().buyItem(slot, 10);
                    break;

                case 621: // Shop - sell 10.
                    player.getShopSession().sellItem(slot, 10);
                    break;

                case 590: // Clan chat setup
                    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
                    if (clan == null)
                    {
                        player.getPackets().sendMessage("Please create your clan chat before changing settings.");
                        break;
                    }
                    switch (child)
                    {
                        case 23: // "Who can enter chat" - corporal.
                            clan.setEnterRights(Clan.ClanRank.CORPORAL);
                            player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
                            break;

                        case 24: // "Who can talk in chat" - corporal.
                            clan.setTalkRights(Clan.ClanRank.CORPORAL);
                            player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
                            break;

                        case 25: // // "Who can kick in chat" - corporal.
                            clan.setKickRights(Clan.ClanRank.CORPORAL);
                            player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
                            break;

                        case 26: // "Who can share loot" - corporal.
                            clan.setLootRights(Clan.ClanRank.CORPORAL);
                            player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
                            break;
                    }
                    break;
            }
        }
Пример #10
0
 public void execute(Player player, string[] arguments)
 {
     if (!player.inCombat())
         player.getBank().openBank();
 }
Пример #11
0
        public bool savePlayer(Player p)
        {
            if (p == null) return false;
            try
            {
                string username = p.getLoginDetails().getUsername().ToLower();

                /* Character saving code goes here */
                XmlTextWriter writer = new XmlTextWriter(Misc.getServerPath() + @"\accounts\" + username + ".xml", null);
                writer.Formatting = Formatting.Indented;
                writer.WriteStartElement("Player");
                writer.WriteStartElement("Login");
                writer.WriteElementString("Password", p.getLoginDetails().getPassword());
                writer.WriteElementString("Rights", p.getRights().ToString());
                writer.WriteElementString("BankPin", p.getBank().getBankPin());
                writer.WriteEndElement();

                writer.WriteStartElement("Position");
                writer.WriteElementString("X", p.getLocation().getX().ToString());
                writer.WriteElementString("Y", p.getLocation().getY().ToString());
                writer.WriteElementString("Z", p.getLocation().getZ().ToString());
                writer.WriteEndElement();

                writer.WriteStartElement("Settings");
                writer.WriteElementString("RunEnergy", p.getRunEnergy().ToString());
                writer.WriteStartElement("PrivacySettings");
                writer.WriteElementString("Public", p.getFriends().getPrivacyOption(0).ToString());
                writer.WriteElementString("Private", p.getFriends().getPrivacyOption(1).ToString());
                writer.WriteElementString("Trade", p.getFriends().getPrivacyOption(2).ToString());
                writer.WriteEndElement();
                writer.WriteEndElement();

                writer.WriteStartElement("Friends");
                foreach (long friend in p.getFriends().getFriendsList())
                    writer.WriteElementString("Friend", friend.ToString());
                writer.WriteEndElement();

                writer.WriteStartElement("Ignores");
                foreach (long ignore in p.getFriends().getIgnoresList())
                    writer.WriteElementString("Ignore", ignore.ToString());
                writer.WriteEndElement();

                writer.WriteStartElement("Stats");
                foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL)))
                {
                    writer.WriteStartElement(skill.ToString()); //skill name.
                    writer.WriteElementString("CurrentLevel", p.getSkills().getCurLevel(skill).ToString());
                    writer.WriteElementString("XP", p.getSkills().getXp(skill).ToString());
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();

                Item item;
                writer.WriteStartElement("EquipmentItems");
                foreach (ItemData.EQUIP equip in Enum.GetValues(typeof(ItemData.EQUIP)))
                {
                    if (equip == ItemData.EQUIP.NOTHING) continue;
                    item = p.getEquipment().getSlot(equip);
                    if (item.getItemId() == -1) continue; //empty slot.

                    writer.WriteStartElement(equip.ToString());
                    writer.WriteElementString("Id", item.getItemId().ToString());
                    writer.WriteElementString("Amount", item.getItemAmount().ToString());
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();

                writer.WriteStartElement("InventoryItems");
                for (int i = 0; i < Inventory.MAX_INVENTORY_SLOTS; i++)
                {
                    item = p.getInventory().getSlot(i);
                    if (item.getItemId() == -1) continue; //empty slot.

                    writer.WriteStartElement("Item");
                    writer.WriteElementString("Slot", i.ToString());
                    writer.WriteElementString("Id", item.getItemId().ToString());
                    writer.WriteElementString("Amount", item.getItemAmount().ToString());
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();

                writer.WriteStartElement("BankItems");
                for (int i = 0; i < Bank.MAX_BANK_SLOTS; i++)
                {
                    item = p.getBank().getSlot(i);
                    if (item.getItemId() == -1) continue; //empty slot.

                    writer.WriteStartElement("Item");
                    writer.WriteElementString("Slot", i.ToString());
                    writer.WriteElementString("Id", item.getItemId().ToString());
                    writer.WriteElementString("Amount", item.getItemAmount().ToString());
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                writer.WriteEndElement();
                //Write the XML to file and close the writer
                writer.Close();
            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }
Пример #12
0
        public ReturnCode loadPlayer(Connection connection)
        {
            if (connection == null)
                return ReturnCode.COULD_NOT_COMPLETE;
            LoginDetails loginDetails = connection.getLoginDetails();
            if (loginDetails == null || loginDetails.getUsername() == "" || loginDetails.getLongName() == 0)
                return ReturnCode.INVALID_PASSWORD;//ReturnCode.INVALID_PASSWORD;

            foreach (char c in loginDetails.getUsername().ToCharArray())
            {
                if (!char.IsLetterOrDigit(c) && !char.IsWhiteSpace(c))
                    return ReturnCode.INVALID_PASSWORD;
            }
            Player createdPlayer = new Player(connection);
            connection.setPlayer(createdPlayer); //player finally created.
            createdPlayer.setLoginDetails(loginDetails);

            if (!File.Exists(Misc.getServerPath() + @"\accounts\" + loginDetails.getUsername() + ".xml"))
            {
                createdPlayer.setRights(2); //all new users admins atm (change later).
                createdPlayer.setLocation(new Location(2323, 3174, 0));
                return ReturnCode.LOGIN_OK; //new user.
            }
            //Yeah reading XML files is a bit h**o.
            try
            {
                int temp;
                long lTemp;
                string username = createdPlayer.getLoginDetails().getUsername().ToLower();
                XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.Load(Misc.getServerPath() + @"\accounts\" + username + ".xml");

                XmlNode xmlNode = xmlDocument.SelectSingleNode("/Player/Login/Password");
                if (xmlNode == null) return ReturnCode.INVALID_PASSWORD; //no password node.
                if (createdPlayer.getLoginDetails().getPassword() != xmlNode.InnerText)
                    return ReturnCode.INVALID_PASSWORD;

                XmlNode loginElement = xmlDocument.SelectSingleNode("/Player/Login");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    XmlNodeList childs = loginElement.ChildNodes;

                    foreach (XmlElement element in childs)
                    {
                        switch (element.Name)
                        {
                            case "Rights":
                                if (!int.TryParse(element.InnerText, out temp))
                                    temp = 0;
                                createdPlayer.setRights(temp);
                                break;

                            case "BankPin":
                                if (element.InnerText == "") continue;
                                createdPlayer.getBank().setBankPin(element.InnerText);
                                break;
                        }
                    }
                }

                loginElement = xmlDocument.SelectSingleNode("/Player/Position");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    XmlNodeList childs = loginElement.ChildNodes;
                    Location location = new Location();
                    foreach (XmlElement element in childs)
                    {
                        switch (element.Name)
                        {
                            case "X":
                                if (!int.TryParse(element.InnerText, out temp))
                                {
                                    createdPlayer.setLocation(Constants.HOME_SPAWN_LOCATION);
                                    break;
                                }
                                location.setX(temp);
                                break;

                            case "Y":
                                if (!int.TryParse(element.InnerText, out temp))
                                {
                                    createdPlayer.setLocation(Constants.HOME_SPAWN_LOCATION);
                                    break;
                                }
                                location.setY(temp);
                                break;

                            case "Z":
                                if (!int.TryParse(element.InnerText, out temp))
                                    temp = 0;
                                location.setZ(temp);
                                break;
                        }
                    }
                    createdPlayer.setLocation(location);
                    if (Location.atDuelArena(createdPlayer.getLocation()))
                        DuelSession.teleportDuelArenaHome(createdPlayer);
                }

                xmlNode = xmlDocument.SelectSingleNode("/Player/Settings/RunEnergy");
                if (xmlNode == null)
                {
                    temp = 100;
                }
                else
                {
                    if (!int.TryParse(xmlNode.InnerText, out temp))
                        temp = 100;
                }
                createdPlayer.setRunEnergyLoad(temp);

                loginElement = xmlDocument.SelectSingleNode("/Player/Settings/PrivacySettings");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    XmlNodeList childs = loginElement.ChildNodes;
                    Friends.STATUS publicStatus = Friends.STATUS.ON, privateStatus = Friends.STATUS.ON, tradeStatus = Friends.STATUS.ON;

                    foreach (XmlElement element in childs)
                    {
                        switch (element.Name)
                        {
                            case "Public":
                                publicStatus = (Friends.STATUS)Enum.Parse(typeof(Friends.STATUS), element.InnerText, true);
                                break;

                            case "Private":
                                privateStatus = (Friends.STATUS)Enum.Parse(typeof(Friends.STATUS), element.InnerText, true);
                                break;

                            case "Trade":
                                tradeStatus = (Friends.STATUS)Enum.Parse(typeof(Friends.STATUS), element.InnerText, true);
                                break;
                        }
                    }
                    createdPlayer.getFriends().setPrivacyOptions(publicStatus, privateStatus, tradeStatus);
                }

                loginElement = xmlDocument.SelectSingleNode("/Player/Friends");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    XmlNodeList childs = loginElement.ChildNodes; //number of Friends

                    foreach (XmlElement element in childs)
                    {
                        if (element.Name == "Friend")
                        {
                            if (long.TryParse(element.InnerText, out lTemp))
                                createdPlayer.getFriends().getFriendsList().Add(lTemp);
                        }
                    }
                }

                loginElement = xmlDocument.SelectSingleNode("/Player/Ignores");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    XmlNodeList childs = loginElement.ChildNodes; //number of Friends

                    foreach (XmlElement element in childs)
                    {
                        if (element.Name == "Ignore")
                        {
                            if (long.TryParse(element.InnerText, out lTemp))
                                createdPlayer.getFriends().getIgnoresList().Add(lTemp);
                        }
                    }
                }

                loginElement = xmlDocument.SelectSingleNode("/Player/Stats");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    XmlNode skillNode;
                    foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL)))
                    {
                        skillNode = loginElement.SelectSingleNode("/Player/Stats/" + skill.ToString());

                        foreach (XmlElement element in skillNode.ChildNodes)
                        { //CurrentLevel/XP
                            switch (element.Name)
                            {
                                case "CurrentLevel":
                                    if (!int.TryParse(element.InnerText, out temp))
                                    {
                                        if (skill != Skills.SKILL.HITPOINTS)
                                            createdPlayer.getSkills().setCurLevel(skill, 1);
                                        else
                                            createdPlayer.getSkills().setCurLevel(skill, 10);
                                        break;
                                    }
                                    createdPlayer.getSkills().setCurLevel(skill, temp);
                                    break;

                                case "XP":
                                    if (!int.TryParse(element.InnerText, out temp))
                                    {
                                        if (skill != Skills.SKILL.HITPOINTS)
                                            createdPlayer.getSkills().setXp(skill, 0);
                                        else
                                            createdPlayer.getSkills().setXp(skill, 1184);
                                        break;
                                    }
                                    createdPlayer.getSkills().setXp(skill, temp);
                                    break;
                            }
                        }
                    }
                }

                loginElement = xmlDocument.SelectSingleNode("/Player/EquipmentItems");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    XmlNode skillNode;

                    foreach (ItemData.EQUIP equip in Enum.GetValues(typeof(ItemData.EQUIP)))
                    {
                        if (equip == ItemData.EQUIP.NOTHING) continue;
                        skillNode = loginElement.SelectSingleNode("/Player/EquipmentItems/" + equip.ToString());
                        if (skillNode == null) continue;
                        int id = -1, amount = 0;
                        foreach (XmlElement element in skillNode.ChildNodes)
                        {
                            switch (element.Name)
                            {
                                case "Id":
                                    if (!int.TryParse(element.InnerText, out id))
                                        id = -1;
                                    break;

                                case "Amount":
                                    if (!int.TryParse(element.InnerText, out amount))
                                        amount = 0;
                                    break;
                            }
                        }
                        if (id != -1)
                        {
                            createdPlayer.getEquipment().getEquipment()[(int)equip].setItemId(id);
                            createdPlayer.getEquipment().getEquipment()[(int)equip].setItemAmount(amount);
                        }
                    }
                }

                loginElement = xmlDocument.SelectSingleNode("/Player/InventoryItems");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    int slot = -1, id = 0, amount = 0;
                    foreach (XmlElement itemElement in loginElement.ChildNodes) //each item.
                    {
                        foreach (XmlElement itemDef in itemElement.ChildNodes) //each item.
                        {
                            switch (itemDef.Name)
                            {
                                case "Slot":
                                    if (!int.TryParse(itemDef.InnerText, out slot))
                                        slot = -1;
                                    if (slot < 0 || slot > Inventory.MAX_INVENTORY_SLOTS) slot = -1;
                                    break;

                                case "Id":
                                    if (!int.TryParse(itemDef.InnerText, out id))
                                        slot = -1;
                                    break;

                                case "Amount":
                                    if (!int.TryParse(itemDef.InnerText, out amount))
                                        slot = -1;
                                    break;
                            }
                        }
                        if (slot != -1)
                        {
                            createdPlayer.getInventory().getItems()[slot].setItemId(id);
                            createdPlayer.getInventory().getItems()[slot].setItemAmount(amount);
                        }
                    }
                }

                loginElement = xmlDocument.SelectSingleNode("/Player/BankItems");
                if (loginElement != null && loginElement.HasChildNodes)
                {
                    int slot = -1, id = 0, amount = 0;
                    foreach (XmlElement itemElement in loginElement.ChildNodes) //each item.
                    {
                        foreach (XmlElement itemDef in itemElement.ChildNodes) //each item.
                        {
                            switch (itemDef.Name)
                            {
                                case "Slot":
                                    if (!int.TryParse(itemDef.InnerText, out slot))
                                        slot = -1;
                                    if (slot < 0 || slot > Inventory.MAX_INVENTORY_SLOTS) slot = -1;
                                    break;

                                case "Id":
                                    if (!int.TryParse(itemDef.InnerText, out id))
                                        slot = -1;
                                    break;

                                case "Amount":
                                    if (!int.TryParse(itemDef.InnerText, out amount))
                                        slot = -1;
                                    break;
                            }
                        }
                        if (slot != -1)
                        {
                            createdPlayer.getBank().getBank()[slot].setItemId(id);
                            createdPlayer.getBank().getBank()[slot].setItemAmount(amount);
                        }
                    }
                }

                return ReturnCode.LOGIN_OK; //new user.
            }
            catch (Exception e)
            {
                Misc.WriteError(e.Message);
                return ReturnCode.COULD_NOT_COMPLETE;
            }
        }
Пример #13
0
        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 389: // GE Item Search
                    if (player.getGESession() != null)
                    {
                        if (player.getGESession().getCurrentOffer() != null)
                        {
                            if (player.getGESession().getCurrentOffer() is BuyOffer)
                            {
                                player.getPackets().sendInterface(0, 752, 6, 137); // Removes the item search
                            }
                        }
                    }
                    break;

                case 374: // Tzhaar fight pits viewing orb
                    Server.getMinigames().getFightPits().useOrb(player, buttonId);
                    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.getPackets().closeInterfaces();
                            player.setGESession(new GESession(player));
                            break;

                        case 194: // Search for item
                            player.getGESession().openItemSearch();
                            break;

                        case 159: // Increment amount by 1
                            player.getGESession().incrementAmount(1);
                            break;

                        case 157: // Decrease amount by 1
                            player.getGESession().decreaseAmount(1);
                            break;

                        case 162: // Increase amount by +1
                            player.getGESession().incrementAmount(1);
                            break;

                        case 164: // Increase amount by +10
                            player.getGESession().incrementAmount(10);
                            break;

                        case 166: // Increase amount by +100
                            player.getGESession().incrementAmount(100);
                            break;

                        case 168: // Increase amount by +1k (or All if selling)
                            player.getGESession().incrementAmount(1000);
                            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, 1, 1);
                            break;

                        case 15: // Rock skin.
                            Prayer.togglePrayer(player, 1, 2);
                            break;

                        case 31: // Steel skin.
                            Prayer.togglePrayer(player, 1, 3);
                            break;

                        case 7: // Burst of strength.
                            Prayer.togglePrayer(player, 2, 1);
                            break;

                        case 17: // Superhuman strength.
                            Prayer.togglePrayer(player, 2, 2);
                            break;

                        case 33: // Ultimate strength.
                            Prayer.togglePrayer(player, 2, 3);
                            break;

                        case 9: // Clarity of thought.
                            Prayer.togglePrayer(player, 3, 1);
                            break;

                        case 19: // Improved reflexes.
                            Prayer.togglePrayer(player, 3, 2);
                            break;

                        case 35: // Incredible reflexes.
                            Prayer.togglePrayer(player, 3, 3);
                            break;

                        case 37: // Magic protect.
                            Prayer.togglePrayer(player, 4, 1);
                            break;

                        case 39: // Ranged protect.
                            Prayer.togglePrayer(player, 4, 2);
                            break;

                        case 41: // Melee protect.
                            Prayer.togglePrayer(player, 4, 3);
                            break;

                        case 47: // Retribution.
                            Prayer.togglePrayer(player, 4, 4);
                            break;

                        case 49: // Redemption.
                            Prayer.togglePrayer(player, 4, 5);
                            break;

                        case 51: // Smite.
                            Prayer.togglePrayer(player, 4, 6);
                            break;

                        case 55: // Chivalry.
                            Prayer.togglePrayer(player, 5, 1);
                            break;

                        case 57: // Piety.
                            Prayer.togglePrayer(player, 5, 2);
                            break;

                        case 25: // Protect item.
                            Prayer.togglePrayer(player, 6, 1);
                            break;

                        case 21: // Rapid restore
                            Prayer.togglePrayer(player, 7, 1);
                            break;

                        case 23: // Rapid heal.
                            Prayer.togglePrayer(player, 7, 2);
                            break;

                        case 11: // Sharp eye.
                            Prayer.togglePrayer(player, 8, 1);
                            break;

                        case 27: // Hawk Eye.
                            Prayer.togglePrayer(player, 8, 2);
                            break;

                        case 43: // Eagle Eye.
                            Prayer.togglePrayer(player, 8, 3);
                            break;

                        case 13: // Mystic will.
                            Prayer.togglePrayer(player, 9, 1);
                            break;

                        case 29: // Mystic Lore.
                            Prayer.togglePrayer(player, 9, 2);
                            break;

                        case 45: // Mystic Might.
                            Prayer.togglePrayer(player, 9, 3);
                            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;
            }
        }