Пример #1
0
 public void execute(Player player, string[] arguments)
 {
     player.getPackets().sendMessage("Spawning all possible objects please wait..");
     for (int i = 0; i < 50000; i++)
         player.getPackets().createObject(i, player.getLocation(), 0, 10);
     player.getPackets().sendMessage("Dumping complete, now add dump to server.");
 }
Пример #2
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[Switch magic command]: ::switch type (example ::switch 1)");
                return;
            }

            int type = 0;

            if (!int.TryParse(arguments[0], out type))
            {
                player.getPackets().sendMessage("[Switch magic command]: ::switch type (example ::switch 1)");
                return;
            }
            switch (type)
            {
                case 3:
                    player.setMagicType(3);
                    player.getPackets().sendTab(player.isHd() ? 99 : 89, 430);
                    break;

                case 2:
                    player.setMagicType(2);
                    player.getPackets().sendTab(player.isHd() ? 99 : 89, 193);
                    break;

                case 1:
                    player.setMagicType(1);
                    player.getPackets().sendTab(player.isHd() ? 99 : 89, 192);
                    break;
            }
        }
Пример #3
0
        public void execute(Player player, string[] arguments)
        {
            //TODO: Possible TODO.
            //I guess this command is for testing where object should be placed to spawnedObjects.cfg / objectLocations.cfg?
            //Err I don't like this command too much as the objects spawned are fake..
            //gotta maybe add to WorldObjects, like SpawnNPC :S later.

            if (arguments.Length < 2)
            {
                player.getPackets().sendMessage("[SpawnObject command]: ::obj objectId face");
                return;
            }

            int objectId = 0;
            int face = 0;

            if (!int.TryParse(arguments[0], out objectId))
            {
                player.getPackets().sendMessage("[SpawnObject command]: objectId is not a number ::obj objectId face");
                return;
            }

            if (!int.TryParse(arguments[1], out face))
            {
                player.getPackets().sendMessage("[SpawnObject command]: face is not a number ::obj objectId face");
                return;
            }

            foreach (Player p in Server.getPlayerList())
            {
                p.getPackets().createObject(objectId, player.getLocation(), face, 10);
            }
        }
Пример #4
0
 public static void displayItemsInterface(Player p)
 {
     int amountToKeep = p.isSkulled() ? 0 : 3;
     if (p.getPrayers().isProtectItem())
     {
         amountToKeep = p.isSkulled() ? 1 : 4;
     }
     int item1 = getProtectedItem1(p)[0];
     int item2 = getProtectedItem2(p)[0];
     int item3 = getProtectedItem3(p)[0];
     int item4 = amountToKeep == 4 ? getProtectedItem4(p)[0] : -1;
     if (amountToKeep == 1)
     {
         item2 = 65535;
         item3 = 65535;
         item3 = item1;
     }
     if (amountToKeep == 0)
     {
         item1 = 65535;
         item2 = 65535;
         item3 = 65535;
         item4 = 65535;
     }
     object[] opts = new object[] { 17598720, 20221838, "You're marked with a <col=ff3333>skull<col=ff981f>.", 0, 1, item4, item1, item2, item3, /* Items to keep */ amountToKeep /* Items to keep */, 0 };
     p.getPackets().displayInterface(102);
     p.getPackets().sendClientScript2(204, 118, opts, "iiooooiisii");
     p.getPackets().setRightClickOptions(1278, (102 * 65536) + 21, 0, 40);
     p.getPackets().setRightClickOptions(1278, (102 * 65536) + 18, 0, 4);
 }
Пример #5
0
 public static void displayWildernessLeverOptions(Player p, int leverIndex)
 {
     int dialogueIndex = 140 + leverIndex;
     p.setTemporaryAttribute("dialogue", dialogueIndex);
     string option1 = leverIndex == 0 ? "Edgeville" : "Home";
     p.getPackets().modifyText(option1, 230, 2);
     p.getPackets().modifyText("Mage bank", 230, 3);
     p.getPackets().modifyText("Nowhere", 230, 4);
     p.getPackets().sendChatboxInterface2(230);
 }
Пример #6
0
 public void execute(Player player, string[] arguments)
 {
     if (arguments.Length == 0)
     {
         player.getPackets().sendMessage("[Reload Ladders & Stairs XML File]: This command is only for server developers.");
         player.getPackets().sendMessage("Reloading... [Could crash server if populated, as all ladders get erased]");
         LaddersAndStairs.load();
         player.getPackets().sendMessage("Reloaded.");
     }
 }
Пример #7
0
 public void displayFightPitsInterface(Player p)
 {
     if (p.getTemporaryAttribute("cantDoAnything") != null)
     {
         return;
     }
     p.getPackets().sendConfig(560, playersPlaying.Count - 1);
     p.getPackets().modifyText("Current champion: " + getLastWinnerName(), 373, 0);
     p.getPackets().sendOverlay(373);
 }
Пример #8
0
 public static void openInterface(Player p)
 {
     p.getPackets().displayInterface(771);
     p.getPackets().sendPlayerHead(771, 79);
     p.getPackets().animateInterface(9804, 771, 79);
     p.getPackets().sendConfig(1262, p.getAppearance().getGender() == 2 ? 1 : 8);
     p.getAppearance().setTemporaryAppearance(new Appearance());
     p.getAppearance().getTemporaryAppearance().setColoursArray(p.getAppearance().getColoursArray());
     p.getAppearance().getTemporaryAppearance().setLookArray(p.getAppearance().getLookArray());
     p.getAppearance().getTemporaryAppearance().setGender(p.getAppearance().getGender());
     p.removeTemporaryAttribute("hairToggle");
 }
Пример #9
0
        private void handleExamineObject(Player player, Packet packet)
        {
            ushort id = (ushort)packet.readLEShortA();

            if (player.getTemporaryAttribute("unmovable") != null)
            {
                return;
            }

            SkillHandler.resetAllSkills(player);
            player.getPackets().closeInterfaces();
            player.getPackets().sendMessage("[Id: " + id + "] " + ObjectData.forId(id).getExamine());
        }
Пример #10
0
 public void refreshDoorsForPlayer(Player p)
 {
     foreach (Door door in doors)
     {
         if (door.getDoorLocation().withinDistance(p.getLocation(), 60))
         {
             int id = door.isDoorOpen() ? door.getOpenDoorId() : door.getClosedDoorId();
             Location loc = door.isDoorOpen() ? door.getOpenDoorLocation() : door.getClosedDoorLocation();
             int direction = door.isDoorOpen() ? door.getOpenDirection() : door.getClosedDirection();
             Location loc1 = door.isDoorOpen() ? door.getClosedDoorLocation() : door.getOpenDoorLocation();
             int direction1 = door.isDoorOpen() ? door.getClosedDirection() : door.getOpenDirection();
             p.getPackets().removeObject(loc1, direction1, 0);
             p.getPackets().createObject(id, loc, direction, 0);
         }
     }
 }
Пример #11
0
 public static bool dialogue(Player p, Npc npc, bool rightClickPay)
 {
     if ((npc.getId() != 1055 && npc.getId() != 437) || (rightClickPay && npc.getId() != 437))
     {
         return false;
     }
     p.setEntityFocus(npc.getClientIndex());
     AreaEvent dialogueAreaEvent = new AreaEvent(p, npc.getLocation().getX() - 1, npc.getLocation().getY() - 1, npc.getLocation().getX() + 1, npc.getLocation().getY() + 1);
     dialogueAreaEvent.setAction(() =>
     {
         npc.setFaceLocation(p.getLocation());
         int status = npc.getId() == 1055 ? 43 : 1;
         if (rightClickPay)
         {
             if (!p.getInventory().hasItemAmount(995, AGILITY_ARENA_PRICE))
             {
                 p.getPackets().sendMessage("You don't have enough money to pay the entrance fee.");
                 return;
             }
             status = 29;
         }
         doDialogue(p, status);
     });
     Server.registerCoordinateEvent(dialogueAreaEvent);
     return true;
 }
Пример #12
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[Animation command]: ::t emote_number");
                return;
            }

            int animation = 0;
            if (!int.TryParse(arguments[0], out animation))
            {
                player.getPackets().sendMessage("[Animation command]: ::emote emote_number");
                return;
            }
            //1179 flash + skill icon  , 1230 = make box
            player.getPackets().playSoundEffect(animation, 1, 0);
        }
Пример #13
0
 private void handleScreenSettings(Player player, Packet packet)
 {
     int windowType = packet.readByte() & 0xff;
     int windowWidth = packet.readUShort();
     int windowHeight = packet.readUShort();
     int junk = packet.readByte() & 0xff;
     player.getPackets().configureGameScreen(windowType);
 }
Пример #14
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[Animation command]: ::emote emote_number");
                return;
            }

            int animation = 0;
            if (!int.TryParse(arguments[0], out animation))
            {
                player.getPackets().sendMessage("[Animation command]: ::emote emote_number");
                return;
            }

            player.setLastAnimation(new model.Animation(animation));
        }
Пример #15
0
        private void handleExamineNPC(Player player, Packet packet)
        {
            int npcId = packet.readUShort();
            if (npcId < 0 || npcId > NpcData.getTotalNpcDefinitions() || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
                return;

            player.getPackets().sendMessage(NpcData.forId(npcId).getExamine());
        }
Пример #16
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[Height command]: ::height 0 [0,1,2,3] are possible");
                return;
            }

            int heightLevel = 0;
            if (!int.TryParse(arguments[0], out heightLevel))
            {
                player.getPackets().sendMessage("[Height command]: ::height 0 [0,1,2,3] are possible");
                return;
            }

            player.teleport(new Location(player.getLocation().getX(), player.getLocation().getY(), heightLevel));
        }
Пример #17
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[Interface command]: ::inter interface_number");
                return;
            }

            int intreface = 0;
            if (!int.TryParse(arguments[0], out intreface))
            {
                player.getPackets().sendMessage("[Interface command]: ::inter interface_number");
                return;
            }

            player.getPackets().displayInterface(intreface);
        }
Пример #18
0
 public void execute(Player player, string[] arguments)
 {
     if (!Server.isUpdateInProgress())
     {   //could of hardcoded the Event right inside this command :S
         player.getPackets().sendMessage("Started a system update, this cannot be stopped!");
         Server.registerEvent(new SystemUpdateEvent());
         Server.setUpdateInProgress(true);
     }
 }
Пример #19
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[PlayerAsNpc command]: ::pnpc npcId");
                return;
            }

            int npcId = 0;
            if (!int.TryParse(arguments[0], out npcId))
            {
                player.getPackets().sendMessage("[PlayerAsNpc command]: ::pnpc npcId [npcId is not a number error]");
                return;
            }

            player.getAppearance().setNpcId(npcId);
            player.getUpdateFlags().setAppearanceUpdateRequired(true);
        }
Пример #20
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length < 2)
            {
                player.getPackets().sendMessage("[Config command]: ::config id value  (example ::config 1 1)");
                return;
            }

            int id = 0;
            int value = 0;

            if (!int.TryParse(arguments[0], out id) && !int.TryParse(arguments[1], out value))
            {
                player.getPackets().sendMessage("[Config command]: ::config id value  (example ::config 1 1)");
                return;
            }

            player.getPackets().sendConfig(id, value);
        }
Пример #21
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length < 2)
            {
                player.getPackets().sendMessage("[Teleport command]: ::tele x y or even ::tele x y z");
                return;
            }
            int x, y, z = 0;
            if (!int.TryParse(arguments[0], out x) || !int.TryParse(arguments[1], out y))
            {
                player.getPackets().sendMessage("Bad x,y coordinate, teleporting home, You entered:[x=" + arguments[0] + ", y=" + arguments[1] + "]");
                player.teleport(Constants.HOME_SPAWN_LOCATION);
                return;
            }
            if (arguments.Length >= 3)
                int.TryParse(arguments[2], out z);

            player.teleport(new Location(x, y, z));
        }
Пример #22
0
 public void execute(Player player, string[] arguments)
 {
     foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL)))
     {
         player.getSkills().setCurLevel(skill, 99);
         player.getSkills().setXp(skill, Skills.getXpForLevel(99));
     }
     player.getPackets().sendSkillLevels();
     player.getUpdateFlags().setAppearanceUpdateRequired(true);
 }
Пример #23
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[SpawnNpc command]: ::npc npc_id");
                return;
            }

            int npcId = 0;
            if (!int.TryParse(arguments[0], out npcId))
            {
                player.getPackets().sendMessage("[SpawnNpc command]: ::npc npc_id");
                return;
            }

            Npc npc = new Npc(npcId, player.getLocation());
            npc.setMinimumCoords(new Location(player.getLocation().getX() - 5, player.getLocation().getY() - 5, player.getLocation().getZ()));
            npc.setMaximumCoords(new Location(player.getLocation().getX() + 5, player.getLocation().getY() + 5, player.getLocation().getZ()));
            Server.getNpcList().Add(npc);
        }
Пример #24
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length > 0)
            {
                int shopIndex = 0;
                if (!int.TryParse(arguments[0], out shopIndex))
                {
                    player.getPackets().sendMessage("[OpenShop command]: ::shop shop_number or just ::shop to open first one.");
                    return;
                }

                Shop shop = Server.getShopManager().getShop(shopIndex);
                if (shop == null)
                {
                    player.getPackets().sendMessage("[OpenShop command]: shop #" + shopIndex + " doesn't exist on server");
                    return;
                }
                player.setShopSession(new ShopSession(player, shopIndex));
            }
            player.setShopSession(new ShopSession(player, 1));
        }
Пример #25
0
 public static void antiTeleportMessage(Player p)
 {
     p.getPackets().sendNPCHead(2617, 242, 1);
     p.getPackets().modifyText("TzHaar-Mej-Jal", 242, 3);
     p.getPackets().modifyText("I cannot allow you to teleport from the fight cave.", 242, 4);
     p.getPackets().modifyText("In Tzhaar, you either win, or die!", 242, 5);
     p.getPackets().animateInterface(9827, 242, 1);
     p.getPackets().sendChatboxInterface2(242);
     p.getPackets().sendMessage("You are unable to teleport from the fight cave.");
 }
Пример #26
0
 public bool addToStack(int id, int amount, Location location, Player p)
 {
     if (!ItemData.forId(id).isStackable())
     {
         return false;
     }
     foreach (GroundItem i in items)
     {
         if (i.getLocation().Equals(location) && i.getItemId() == id)
         {
             if (!i.isGlobal() && i.getOwner().Equals(p))
             {
                 i.setItemAmount(i.getItemAmount() + amount);
                 p.getPackets().clearGroundItem(i);
                 p.getPackets().createGroundItem(i);
                 return true;
             }
         }
     }
     return false;
 }
Пример #27
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length == 0)
            {
                player.getPackets().sendMessage("[Info command]: ::info npcId (example ::info 1)");
                return;
            }

            int npcId = 0;

            if (!int.TryParse(arguments[0], out npcId))
            {
                player.getPackets().sendMessage("[Info command]: ::info npcId (example ::info 1)");
                return;
            }
            if (npcId < 0 || npcId > NpcData.getTotalNpcDefinitions())
                return;

            player.getPackets().sendMessage("ATT = " + (int)CombatFormula.getMeleeAttack(player) + " DEF = " + (int)CombatFormula.getMeleeDefence(player, player) + " SPEC = " + (int)CombatFormula.getMeleeAttack(player) * CombatFormula.getSpecialAttackBonus(player.getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON)));
            player.getPackets().sendMessage("NPC ATT = " + (int)CombatFormula.getNPCMeleeAttack(new Npc(npcId)) + " NPC DEF = " + (int)CombatFormula.getNPCMeleeDefence(new Npc(npcId)));
        }
Пример #28
0
        public static void enterCave(Player p)
        {
            AreaEvent enterCaveAreaEvent = new AreaEvent(p, 2438, 5168, 2439, 5168);
            enterCaveAreaEvent.setAction(() =>
            {
                /*
                 * Fight cave is 20k squares from the original place, then another (200 * playerIndex) squares west.
                 */
                Location instanceLocation = new Location((20000 + 2413) + (200 * p.getIndex()), 20000 + 5116, 0);
                p.teleport(instanceLocation);
                p.setFightCave(new FightCaveSession(p));

                Event caveNpcEvent = new Event(600);
                caveNpcEvent.setAction(() =>
                {
                    caveNpcEvent.stop();
                    p.getPackets().sendNPCHead(2617, 242, 1);
                    p.getPackets().modifyText("TzHaar-Mej-Jal", 242, 3);
                    p.getPackets().modifyText("You're on your own now, JalYt.", 242, 4);
                    p.getPackets().modifyText("Pepare to fight for your life!", 242, 5);
                    p.getPackets().animateInterface(9827, 242, 1);
                    p.getPackets().sendChatboxInterface2(242);
                });
                Server.registerEvent(caveNpcEvent);
            });
            Server.registerCoordinateEvent(enterCaveAreaEvent);
        }
Пример #29
0
        public void execute(Player player, string[] arguments)
        {
            if (arguments.Length < 2)
            {
                player.getPackets().sendMessage("[SetLevel command]: ::setLevel skillId level or ::setLevel skillName level");
                return;
            }

            int skillId = -1;
            int newLevel = 1;
            if (!int.TryParse(arguments[1], out newLevel))
            {
                player.getPackets().sendMessage("[SetLevel command]: ::setLevel skillId level or ::setLevel skillName level");
                return;
            }

            if (newLevel > 99) newLevel = 99;

            if (!int.TryParse(arguments[0], out skillId))
            {
                //string based skills
                arguments[0] = arguments[0].ToUpper();

                if (!Enum.IsDefined(typeof(Skills.SKILL), arguments[0]))
                {
                    player.getPackets().sendMessage("[SetLevel command]: wrong.. try like ::setlevel attack 99 or ::setlevel 0 99");
                    return;
                }
                try
                {
                    Skills.SKILL skillName = (Skills.SKILL)Enum.Parse(typeof(Skills.SKILL), arguments[0], true);
                    player.getSkills().setXp(skillName, 0);
                    player.getSkills().setCurLevel(skillName, newLevel);
                    player.getSkills().addXp(skillName, Skills.getXpForLevel(newLevel));
                    player.getPackets().sendSkillLevel(skillName);
                }
                catch (ArgumentException)
                {
                    player.getPackets().sendMessage("[SetLevel command]: wrong.. try like ::setlevel attack 99 or ::setlevel 0 99");
                }
            }
            else
            {
                if (!Enum.IsDefined(typeof(Skills.SKILL), skillId))
                {
                    player.getPackets().sendMessage("[SetLevel command]: wrong.. try like ::setlevel attack 99 or ::setlevel 0 99");
                    return;
                }
                Skills.SKILL skillName = (Skills.SKILL)skillId;
                player.getSkills().setXp(skillName, 0);
                player.getSkills().setCurLevel(skillName, newLevel);
                player.getSkills().addXp(skillName, Skills.getXpForLevel(newLevel));
                player.getPackets().sendSkillLevel(skillName);
            }
        }
Пример #30
0
 public GESession(Player p)
 {
     this.p = p;
     //Load offers.
     GEItem load;
     for (int i = 0; i < 6; i++)
     {
         load = Server.getGrandExchange().getOfferForSlot(p, i);
         if (load != null)
             p.getPackets().updateGEProgress(load);
     }
     openExchange();
 }
Пример #31
0
        public GESession(Player p)
        {
            this.p = p;
            //Load offers.
            GEItem load;

            for (int i = 0; i < 6; i++)
            {
                load = Server.getGrandExchange().getOfferForSlot(p, i);
                if (load != null)
                {
                    p.getPackets().updateGEProgress(load);
                }
            }
            openExchange();
        }
Пример #32
0
        public static void levelUp(Player player, SKILL skill)
        {
            int    skillIndex = Convert.ToInt32(skill);
            String s          = "<br><br><br>";
            String s1         = "<br><br><br><br>";

            if (player.getTemporaryAttribute("teleporting") == null)
            {
                player.setLastGraphics(new Graphics(199, 0, 100));
            }

            int skillFlashFlags = (int)(player.getTemporaryAttribute("skillFlashFlags") == null ? 0 : (int)player.getTemporaryAttribute("skillFlashFlags"));

            skillFlashFlags |= SKILL_FLASH_BITMASKS[skillIndex];
            player.setTemporaryAttribute("skillFlashFlags", skillFlashFlags);

            player.getPackets().sendMessage("You've just advanced a " + SKILL_NAME[skillIndex] + " level! You have reached level " + player.getSkills().getMaxLevel(skillIndex) + ".");
            player.getPackets().modifyText(s + "Congratulations, you have just advanced a " + SKILL_NAME[skillIndex] + " level!", 740, 0);
            player.getPackets().modifyText(s1 + "You have now reached level " + player.getSkills().getMaxLevel(skillIndex) + ".", 740, 1);
            player.getPackets().modifyText("", 740, 2);
            player.getPackets().sendConfig(1179, SKILL_ICON_BITMASKS[skillIndex] | skillFlashFlags); //start flashing appropriate skill icons
            player.getPackets().sendChatboxInterface2(740);
            player.getUpdateFlags().setAppearanceUpdateRequired(true);
        }
Пример #33
0
        public void getNextPlayerMovement()
        {
            //Does a walking action such as new player movement direction (if any) or new coordinates when teleporting.
            player.getUpdateFlags().setDidMapRegionChange(false);
            player.getUpdateFlags().setTeleporting(false);
            player.getSprites().setSprites(-1, -1);

            if (player.getTeleportTo() != null)
            {
                player.getUpdateFlags().setDidMapRegionChange(true);

                Location lastRegion = player.getUpdateFlags().getLastRegion();
                if (lastRegion != null)
                {
                    int rX = player.getTeleportTo().getLocalX(lastRegion);
                    int rY = player.getTeleportTo().getLocalY(lastRegion);
                    if (rX >= 2 * 8 && rX < 11 * 8 && rY >= 2 * 8 && rY < 11 * 8)
                    {
                        player.getUpdateFlags().setDidMapRegionChange(false);
                    }
                }
                if (player.getUpdateFlags().didMapRegionChange())
                {
                    player.getUpdateFlags().setLastRegion(player.getTeleportTo());
                }

                player.setLocation(player.getTeleportTo());

                player.setDistanceEvent(null);
                resetWalkingQueue();
                player.getUpdateFlags().setTeleporting(true);
                player.resetTeleportTo();
            }
            else
            {
                if (player.getUpdateFlags().getLastRegion() == null)
                {
                    return;
                }
                Location oldLocation = (Location)player.getLocation().Clone();
                int      walkDir     = getNextWalkingDirection();
                int      runDir      = -1;
                if (running || runToggled)
                {
                    if (player.getRunEnergy() > 0)
                    {
                        runDir = getNextWalkingDirection();
                        if (runDir != -1)
                        {
                            player.setRunEnergy(player.getRunEnergy() - 1);
                        }
                    }
                    else
                    {
                        if (runToggled)
                        {
                            player.getPackets().sendConfig(173, 0);
                            runToggled = running = false;
                        }
                        running = false;
                    }
                }

                Location lastRegion = player.getUpdateFlags().getLastRegion();

                int rX = oldLocation.getLocalX(lastRegion);
                int rY = oldLocation.getLocalY(lastRegion);

                if ((rX < 2 * 8 || rX >= 11 * 8 || rY < 2 * 8 || rY >= 11 * 8))
                {
                    player.getUpdateFlags().setDidMapRegionChange(true);
                    if (walkDir != -1)
                    {
                        waypointReadOffset--;
                    }
                    if (runDir != -1)
                    {
                        waypointReadOffset--;
                    }
                    walkDir = -1;
                    runDir  = -1;
                    player.setLocation(oldLocation);
                }
                player.getSprites().setSprites(walkDir, runDir);
            }
        }
Пример #34
0
 public void openBank()
 {
     player.getWalkingQueue().resetWalkingQueue();
     player.getPackets().clearMapFlag();
     //int items = 20 * 1024^0 + 3 * 1024^1 + 4 * 1024^2; // Used with config2 1246
     if (!banking)
     {
         if (!pinCorrect && bankPin != null)
         {
             if (isPinPending())
             {
                 verifyPin(false);
                 return;
             }
             if (!isPinPending())
             {
                 pinStatus = 0;
                 tempPin1  = new int[4];
                 openEnterPin();
                 return;
             }
         }
         player.getPackets().sendConfig(563, 4194304);
         player.getPackets().sendConfig(1248, -2013265920);
         player.getPackets().sendConfig(1249, lastXAmount);
         player.getPackets().sendBankOptions();
         refreshBank();
         player.getPackets().displayInventoryInterface(763);
         player.getPackets().displayInterface(762);
         player.getPackets().showChildInterface(762, 18, false);
         player.getPackets().showChildInterface(762, 19, false);
         player.getPackets().showChildInterface(762, 23, false);
         //setTabConfig();
         banking = true;
     }
 }
Пример #35
0
        public bool tradeItem(int slot, int amount)
        {
            int  itemId    = player.getInventory().getItemInSlot(slot);
            bool stackable = ItemData.forId(itemId).isStackable();
            int  tradeSlot = findItem(itemId);

            if (amount <= 0 || itemId == -1 || status > 2)
            {
                return(false);
            }
            if (ItemData.forId(itemId).isPlayerBound())
            {
                player.getPackets().sendMessage("You cannot trade that item.");
                return(false);
            }
            if (!stackable)
            {
                tradeSlot = findFreeSlot();
                if (tradeSlot == -1)
                {
                    player.getPackets().sendMessage("An error occured whilst trying to find free a trade slot.");
                    return(false);
                }
                if (amount > player.getInventory().getItemAmount(itemId))
                {
                    amount = player.getInventory().getItemAmount(itemId);
                }
                for (int i = 0; i < amount; i++)
                {
                    tradeSlot = findFreeSlot();
                    if (!player.getInventory().deleteItem(itemId) || tradeSlot == -1)
                    {
                        break;
                    }
                    items[tradeSlot] = new Item(itemId, 1);
                }
                if (status == 2 || player2.getTrade().getStatus() == 2)
                {
                    this.status = 1;
                    player2.getTrade().setStatus(1);
                    player.getPackets().modifyText("", 335, 36);
                    player2.getPackets().modifyText("", 335, 36);
                }
                refreshTrade();
                return(true);
            }
            else if (stackable)
            {
                tradeSlot = findItem(itemId);
                if (tradeSlot == -1)
                {
                    tradeSlot = findFreeSlot();
                    if (tradeSlot == -1)
                    {
                        player.getPackets().sendMessage("An error occured whilst trying to find free a trade slot.");
                        return(false);
                    }
                }
                if (amount > player.getInventory().getAmountInSlot(slot))
                {
                    amount = player.getInventory().getAmountInSlot(slot);
                }
                if (player.getInventory().deleteItem(itemId, amount))
                {
                    if (items[tradeSlot] == null)
                    {
                        items[tradeSlot] = new Item(itemId, amount);
                    }
                    else
                    {
                        if (items[tradeSlot].getItemId() == itemId)
                        {
                            items[tradeSlot].setItemId(itemId);
                            items[tradeSlot].setItemAmount(items[tradeSlot].getItemAmount() + amount);
                        }
                    }
                    if (status == 2 || player2.getTrade().getStatus() == 2)
                    {
                        this.status = 1;
                        player2.getTrade().setStatus(1);
                        player.getPackets().modifyText("", 335, 36);
                        player2.getPackets().modifyText("", 335, 36);
                    }
                    refreshTrade();
                    return(true);
                }
            }
            return(false);
        }
Пример #36
0
        private void openTrade()
        {
            player.getPackets().displayInterface(335);
            player.getPackets().displayInventoryInterface(336);
            player.getPackets().setRightClickOptions(1278, (335 * 65536) + 30, 0, 27);
            player.getPackets().setRightClickOptions(1026, (335 * 65536) + 32, 0, 27);
            player.getPackets().setRightClickOptions(1278, (336 * 65536), 0, 27);
            player.getPackets().setRightClickOptions(2360446, (336 * 65536), 0, 27);
            object[] opts1 = new object[] { "", "", "", "Value", "Remove X", "Remove All", "Remove 10", "Remove 5", "Remove 1", -1, 0, 7, 4, 90, 21954590 };
            object[] opts2 = new object[] { "", "", "Lend", "Value", "Offer X", "Offer All", "Offer 10", "Offer 5", "Offer 1", -1, 0, 7, 4, 93, 22020096 };
            object[] opts3 = new object[] { "", "", "", "", "", "", "", "", "Value", -1, 0, 7, 4, 90, 21954592 };
            player.getPackets().sendClientScript(150, opts1, "IviiiIsssssssss");
            player.getPackets().sendClientScript(150, opts2, "IviiiIsssssssss");
            player.getPackets().sendClientScript(695, opts3, "IviiiIsssssssss");

            player.getPackets().modifyText("Trading with: " + player2.getLoginDetails().getUsername(), 335, 15);
            player.getPackets().modifyText(player2.getLoginDetails().getUsername() + " has " + player2.getInventory().getTotalFreeSlots() + " free inventory slots.", 335, 21);
            player.getPackets().modifyText("", 335, 36);

            refreshTrade();
        }
Пример #37
0
        public bool doSpecialAttack(Entity killer, Entity target)
        {
            int  weapon       = ((Player)killer).getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON);
            int  currentPower = specialAmount;
            int  neededPower  = getRequiredAmount(weapon);
            bool rangeWeapon  = false;

            if (!usingSpecial)
            {
                return(false);
            }
            if (p.getDuel() != null)
            {
                if (p.getDuel().ruleEnabled(DuelSession.RULE.NO_SPECIAL_ATTACKS))
                {
                    p.getPackets().sendMessage("Special attacks have been disabled for this duel!");
                    usingSpecial = false;
                    refreshBar();
                    return(false);
                }
            }
            if (neededPower > currentPower)
            {
                ((Player)killer).getPackets().sendMessage("You don't have enough special power left.");
                usingSpecial = false;
                refreshBar();
                return(false);
            }
            double damage          = -1;
            double damage2         = -1;
            double damage3         = -1;
            double damage4         = -1;
            bool   doubleHit       = false;
            int    increasedMaxHit = 0;

            damage  = CombatFormula.getSpecialMeleeHit((Player)killer, target, weapon);
            damage2 = CombatFormula.getSpecialMeleeHit((Player)killer, target, weapon);
            int hitDelay = killer.getHitDelay();
            //int totalDamage = 0;
            int  usingBow         = ((Player)killer).getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON);
            int  usingArrows      = ((Player)killer).getEquipment().getItemInSlot(ItemData.EQUIP.ARROWS);
            bool usingRangePrayer = false;

            if (target is Player)
            {
                usingRangePrayer = ((Player)target).getPrayers().getHeadIcon() == PrayerData.RANGE;
            }
            switch (weapon)
            {
            case 4151:     // Whip.
                killer.setLastAnimation(new Animation(1658));
                target.setLastGraphics(new Graphics(341, 0, 100));
                if (Misc.random(3) == 0 && damage > 0)
                {
                    damage = p.getMaxHit();
                }
                else
                {
                    damage = 0;
                }
                if (target is Player)
                {
                    int energy = ((Player)target).getRunEnergy() / 4;
                    ((Player)killer).setRunEnergy(((Player)killer).getRunEnergy() + energy);
                    ((Player)target).setRunEnergy(((Player)target).getRunEnergy() - energy);
                    if (((Player)killer).getRunEnergy() > 100)
                    {
                        ((Player)killer).setRunEnergy(100);
                    }
                    if (((Player)target).getRunEnergy() < 0)
                    {
                        ((Player)target).setRunEnergy(0);
                    }
                }
                break;

            case 1215:     // Dragon daggers.
            case 1231:
            case 5680:
            case 5698:
                if (damage > 0)
                {
                    damage  = p.getMaxHit(20);
                    damage2 = p.getMaxHit(20);
                }
                killer.setLastAnimation(new Animation(1062));
                killer.setLastGraphics(new Graphics(252, 0, 100));
                doubleHit = true;

                /*if (misc.random(3) == 0 && CombatFormula.getMeleeHit(p, target) > 0) {
                 *  if (damage <= (CombatFormula.getMaxHit(p, 20) / 2) && damage2 <= (CombatFormula.getMaxHit(p, 20) / 2)) {
                 *      damage = (CombatFormula.getMaxHit(p, 20) / 2) + (misc.randomDouble() * CombatFormula.getMaxHit(p, 20)) / 2);
                 *      damage2 = (CombatFormula.getMaxHit(p, 20) / 2) + (misc.randomDouble() * CombatFormula.getMaxHit(p, 20)) / 2);
                 *  }
                 * } else if (misc.random(2) == 0) {
                 *  damage = 0;
                 *  damage2 = 0;
                 * }*/
                double a = damage + damage2;
                if (damage > target.getHp())
                {
                    damage = target.getHp();
                }
                a -= damage;
                if (damage2 > a)
                {
                    damage2 = a;
                }

                /*if (damage > target.getHp()) {
                 *  int randomHp = misc.random(target.getHp());
                 *  damage = randomHp;
                 *  damage2 = target.getHp() - randomHp;
                 * } else {
                 *  int hpRemaining = target.getHp() - damage;
                 *  if (damage2 > hpRemaining) {
                 *      damage2 = hpRemaining;
                 *  }
                 * }*/
                break;

            case 1305:     // Dragon longsword.
                killer.setLastAnimation(new Animation(1058));
                killer.setLastGraphics(new Graphics(248, 0, 100));
                damage = p.getMaxHit(30);
                break;

            case 11694:     // Armadyl godsword.
                killer.setLastGraphics(new Graphics(1222, 0, 100));
                killer.setLastAnimation(new Animation(7074));
                damage += p.getMaxHit() * 0.25;
                break;

            case 11696:     // Bandos godsword.
                killer.setLastGraphics(new Graphics(1223, 0, 100));
                killer.setLastAnimation(new Animation(7073));
                damage += p.getMaxHit() * 0.10;
                break;

            case 11698:     // Saradomin godsword.
                killer.setLastGraphics(new Graphics(1220, 0, 100));
                killer.setLastAnimation(new Animation(7071));
                int newHp     = (int)(damage * 0.50);
                int newPrayer = (int)(damage * 0.25);
                if (newHp < 10)
                {
                    newHp = 10;
                }
                if (newPrayer < 5)
                {
                    newPrayer = 5;
                }
                ((Player)killer).heal(newHp);
                ((Player)killer).getSkills().setCurLevel(Skills.SKILL.PRAYER, ((Player)killer).getSkills().getCurLevel(Skills.SKILL.PRAYER) + newPrayer);
                if (((Player)killer).getSkills().getCurLevel(Skills.SKILL.PRAYER) > ((Player)killer).getSkills().getMaxLevel(Skills.SKILL.PRAYER))
                {
                    ((Player)killer).getSkills().setCurLevel(Skills.SKILL.PRAYER, ((Player)killer).getSkills().getMaxLevel(Skills.SKILL.PRAYER));
                }
                break;

            case 11700:     // Zamorak godsword
                killer.setLastGraphics(new Graphics(1221, 0, 100));
                killer.setLastAnimation(new Animation(7070));
                target.setLastGraphics(new Graphics(369));
                MagicCombat.freezeTarget(31, target);
                break;

            case 11730:     // Saradomin sword
                target.setLastGraphics(new Graphics(1207, 0, 100));
                killer.setLastAnimation(new Animation(7072));
                increasedMaxHit = 16;
                break;

            case 1434:     // Dragon mace
                hitDelay = 700;
                killer.setLastGraphics(new Graphics(251, 0, 75));
                killer.setLastAnimation(new Animation(1060));
                damage = p.getMaxHit(60);
                break;

            case 3204:     // Dragon halberd
                // TODO halberd
                break;

            case 4587:     // Dragon scimitar
                killer.setLastGraphics(new Graphics(347, 0, 100));
                killer.setLastAnimation(new Animation(451));
                if (target is Player)
                {
                    if (((Player)target).getPrayers().getOverheadPrayer() >= 1 && ((Player)target).getPrayers().getOverheadPrayer() <= 3)
                    {
                        ((Player)target).getPrayers().setOverheadPrayer(0);
                        ((Player)target).getPrayers().setHeadIcon(-1);
                        ((Player)target).getPackets().sendMessage("The Dragon scimitar slashes through your prayer protection!");
                        ((Player)target).getPackets().sendConfig(95, 0);
                        ((Player)target).getPackets().sendConfig(97, 0);
                        ((Player)target).getPackets().sendConfig(98, 0);
                        ((Player)target).getPackets().sendConfig(99, 0);
                        ((Player)target).getPackets().sendConfig(100, 0);
                        ((Player)target).getPackets().sendConfig(96, 0);
                    }
                }
                break;

            case 14484:     // Dragon claws
                doubleHit = true;
                killer.setLastGraphics(new Graphics(1950));
                killer.setLastAnimation(new Animation(10961));
                if (Misc.random(1) == 0 && damage > 0)
                {
                    if (damage < p.getMaxHit(20) * 0.75)
                    {
                        damage = (p.getMaxHit(20) * 0.75 + (Misc.randomDouble() * (p.getMaxHit(20) * 0.25)));
                    }
                }
                damage  = (int)Math.Floor(damage);
                damage2 = (int)Math.Floor(damage * 0.50);
                damage3 = (int)Math.Floor(damage2 * 0.50);
                damage4 = (int)Math.Floor(damage3 + 1);
                break;

            case 1249:     // Dragon spear
                //TODO leave due to noclipping?
                break;

            case 6739:     // Dragon axe
                //TODO find emote and graphic
                break;

            case 7158:     // Dragon 2h
                killer.setLastAnimation(new Animation(3157));
                killer.setLastGraphics(new Graphics(559));
                //TODO multi combat
                break;

            case 3101:     // Rune claws
                killer.setLastGraphics(new Graphics(274));
                break;

            case 4153:     // Granite maul
                killer.setLastAnimation(new Animation(1667));
                killer.setLastGraphics(new Graphics(340, 0, 100));
                //doubleHit = true;
                break;

            case 10887:     // Barrelchest anchor
                break;

            case 11061:     // Ancient mace
                break;

            case 13902:     // Statius' warhammer
                killer.setLastAnimation(new Animation(10505));
                killer.setLastGraphics(new Graphics(1840));
                damage += killer.getMaxHit() * 0.25;
                if (target is Player)
                {
                    int defenceLevel = ((Player)target).getSkills().getCurLevel(Skills.SKILL.DEFENCE);
                    int newDefence   = (int)(defenceLevel * 0.30);
                    if (newDefence < 1)
                    {
                        newDefence = 1;
                    }
                    ((Player)target).getSkills().setCurLevel(Skills.SKILL.DEFENCE, defenceLevel - newDefence);
                    ((Player)target).getPackets().sendSkillLevel(Skills.SKILL.DEFENCE);
                }
                break;

            case 13899:     // Vesta's longsword
                killer.setLastAnimation(new Animation(10502));
                damage += killer.getMaxHit() * 0.20;
                break;

            case 13905:     // Vesta's spear
                killer.setLastAnimation(new Animation(10499));
                killer.setLastGraphics(new Graphics(1835));
                break;

            case 13883:     // Morrigans throwing axe
                break;

            case 13879:    // Morrigans javelin

            case 8880:     // Dorgeshuun crossbow
                break;

            case 861:     // Magic shortbow
            case 859:     // Magic longbow
            case 10284:   // Magic composite bow
                rangeWeapon = true;
                if (p.getEquipment().getAmountInSlot(ItemData.EQUIP.ARROWS) < 2)
                {
                    p.getPackets().sendMessage("You need 2 arrows to use the Magic bow special attack!");
                    return(false);
                }
                damage   = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows);
                damage2  = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows);
                damage  *= 1.05;
                damage2 *= 1.05;
                if (usingRangePrayer)
                {
                    damage  *= 0.60;
                    damage2 *= 0.60;
                }
                double a1 = damage + damage2;
                if (damage > target.getHp())
                {
                    damage = target.getHp();
                }
                a1 -= damage;
                if (damage2 > a1)
                {
                    damage2 = a1;
                }

                /*if (damage >= target.getHp()) {
                 *  int randomHp = misc.random(target.getHp());
                 *  damage = randomHp;
                 *  damage2 = target.getHp() - randomHp;
                 * } else {
                 *  int hpRemaining = target.getHp() - damage;
                 *  if (damage2 > hpRemaining) {
                 *      damage2 = hpRemaining;
                 *  }
                 * }*/
                p.setLastAnimation(new Animation(1074));
                p.setLastGraphics(new Graphics(256, 0, 90));
                RangeCombat.deductArrow(killer);
                RangeCombat.deductArrow(killer);
                int arrowType = RangeCombat.getArrowType(killer);
                hitDelay = 1000;
                int   MSpecCounter = 0;
                Event displayMSpecProjectileEvent = new Event(0);
                displayMSpecProjectileEvent.setAction(() =>
                {
                    RangeCombat.displayMSpecProjectile(killer, target);
                    MSpecCounter++;
                    if (MSpecCounter == 1)
                    {
                        displayMSpecProjectileEvent.setTick(500);
                        p.setLastGraphics(new Graphics(256, 0, 90));
                        Event doMSpecHitEvent = new Event(900);
                        doMSpecHitEvent.setAction(() =>
                        {
                            doMSpecHitEvent.stop();
                            target.hit((int)damage2);
                            RangeCombat.createGroundArrow(killer, target, arrowType);
                        });
                        Server.registerEvent(doMSpecHitEvent);
                    }
                    else
                    {
                        displayMSpecProjectileEvent.stop();
                        return;
                    }
                    MSpecCounter++;
                });
                Server.registerEvent(displayMSpecProjectileEvent);
                break;

            case 805:     // Rune thrownaxe
                rangeWeapon = true;
                break;

            case 6724:     // Seercull
                rangeWeapon = true;
                break;

            case 11235:     // Dark bow
                rangeWeapon = true;
                if (p.getEquipment().getAmountInSlot(ItemData.EQUIP.ARROWS) < 2)
                {
                    p.getPackets().sendMessage("You need 2 arrows to use the Dark bow!");
                    return(false);
                }
                int minHit = 8;
                damage  = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows);
                damage2 = (int)CombatFormula.getRangeHit((Player)killer, target, usingBow, usingArrows);
                if (usingBow == 11235)
                {     // Dark bow
                    if (usingArrows == 11212)
                    { // Dragon arrows
                        minHit   = usingRangePrayer ? 4 : 8;
                        damage  *= 1.50;
                        damage2 *= 1.50;
                        if (damage < minHit)
                        {
                            damage = minHit;
                        }
                        if (damage2 < minHit)
                        {
                            damage2 = minHit;
                        }
                    }
                    else
                    {     // Other arrow
                        minHit   = usingRangePrayer ? 3 : 5;
                        damage  *= 1.30;
                        damage2 *= 1.30;
                        if (damage < minHit)
                        {
                            damage = minHit;
                        }
                        if (damage2 < minHit)
                        {
                            damage2 = minHit;
                        }
                    }
                }
                if (usingRangePrayer)
                {
                    damage  *= 0.60;
                    damage2 *= 0.60;
                }
                double a2 = damage + damage2;
                if (damage > target.getHp())
                {
                    damage = target.getHp();
                }
                a2 -= damage;
                if (damage2 > a2)
                {
                    damage2 = a2;
                }

                /*if (damage >= target.getHp()) {
                 *  int randomHp = misc.random(target.getHp());
                 *  damage = randomHp;
                 *  damage2 = target.getHp() - randomHp;
                 * } else {
                 *  int hpRemaining = target.getHp() - damage;
                 *  if (damage2 > hpRemaining) {
                 *      damage2 = hpRemaining;
                 *  }
                 * }*/
                p.setLastGraphics(new Graphics(RangeCombat.getDrawbackGraphic(killer), 0, 90));
                RangeCombat.deductArrow(killer);
                RangeCombat.deductArrow(killer);
                hitDelay = RangeCombat.getHitDelay(killer, target);
                int delayHit = hitDelay;
                hitDelay = 1200;
                int   arrowType1       = RangeCombat.getArrowType(killer);
                int   DBSpecCounter    = 0;
                Event DBSpecProjectile = new Event(0);
                DBSpecProjectile.setAction(() =>
                {
                    RangeCombat.displayDBSpecProjectile(killer, target);
                    DBSpecCounter++;
                    if (DBSpecCounter == 1)
                    {
                        DBSpecProjectile.setTick(200);
                        Event rangeHitEvent = new Event(delayHit + 600);
                        rangeHitEvent.setAction(() =>
                        {
                            target.hit((int)damage2);
                            rangeHitEvent.stop();
                            RangeCombat.createGroundArrow(killer, target, arrowType1);
                        });
                        Server.registerEvent(rangeHitEvent);
                    }
                    else
                    {
                        DBSpecProjectile.stop();
                        return;
                    }
                    DBSpecCounter++;
                });
                Server.registerEvent(DBSpecProjectile);
                break;
            }
            specialAmount -= neededPower;
            p.setSpecialAmount(specialAmount);
            usingSpecial = false;
            refreshBar();
            killer.resetCombatTurns();
            bool hitDouble = doubleHit;

            if (target is Player)
            {
                if (!rangeWeapon)
                {
                    if (((Player)target).getPrayers().getHeadIcon() == PrayerData.MELEE)
                    {
                        damage = (int)(damage * 0.60);
                    }
                }
                else
                {
                    if (((Player)target).getPrayers().getHeadIcon() == PrayerData.RANGE)
                    {
                        damage = (int)(damage * 0.60);
                    }
                }
            }
            damage  = ((weapon == 4151) ? damage : (Misc.randomDouble() * damage));
            damage2 = Misc.randomDouble() * damage2;
            int d  = (int)((damage == 0 && weapon != 11730) ? 0 : (damage + increasedMaxHit));
            int d2 = (int)damage2;
            int d3 = (int)damage3; // only used for d claws
            int d4 = (int)damage4; // only used for d claws

            if (canPoison(weapon))
            {
                if (!target.isPoisoned() && Misc.random(5) == 0 && (hitDouble ? (d2 > 0 || d > 0) : d > 0))
                {
                    Server.registerEvent(new PoisonEvent(target, POISON_AMOUNT));
                }
            }
            int hhitDelay = hitDelay;
            int totDamage = Convert.ToInt32(damage + damage2 + damage3 + damage4);

            Combat.checkIfWillDie(target, totDamage);
            Event hitEvent = new Event(hhitDelay);

            hitEvent.setAction(() =>
            {
                hitEvent.stop();
                if (!target.isDead())
                {
                    target.setLastAnimation(new Animation(target.getDefenceAnimation()));
                }
                target.hit(d);
                if (hitDouble)
                {
                    target.hit(d2);
                }
                if (d3 != -1 || d4 != -1)
                {
                    target.hit(d3);
                    target.hit(d4);
                }
                Combat.checkRecoil(killer, target, totDamage);
                Combat.checkSmite(killer, target, totDamage);
                Combat.checkVengeance(killer, target, totDamage);
                Combat.addXp(killer, target, totDamage);
            });
            Server.registerEvent(hitEvent);
            return(true);
        }
Пример #38
0
 public void openExchange()
 {
     p.getPackets().sendConfig(1109, -1);
     p.getPackets().sendConfig(1110, 0);
     p.getPackets().sendConfig(1111, 0);
     p.getPackets().sendConfig(1112, -1);
     p.getPackets().sendConfig(1113, -1);
     p.getPackets().sendConfig(1114, 0);
     p.getPackets().sendConfig(1115, 0);
     p.getPackets().sendConfig(1116, 0);
     p.getPackets().displayInterface(105);
     p.getPackets().setRightClickOptions(6, 6881491, 65535, 65535);
     p.getPackets().setRightClickOptions(6, 6881489, 65535, 65535);
 }
Пример #39
0
 public void clearAll()
 {
     for (int i = 0; i < slots.Length; i++)
     {
         slots[i].setItemId(-1);
         slots[i].setItemAmount(0);
     }
     p.getPackets().refreshInventory();
 }
Пример #40
0
        public void refresh()
        {
            player.getPackets().setPrivacyOptions();
            player.getPackets().setFriendsListStatus();
            foreach (long friend in friends)
            {
                player.getPackets().sendFriend(friend, getWorld(friend));
            }
            long[] array = new long[ignores.Count];
            int    i     = 0;

            foreach (long ignore in ignores)
            {
                array[i++] = ignore;
            }
            player.getPackets().sendIgnores(array);
        }
Пример #41
0
        public bool equipItem(int itemID, int slot)
        {
            ItemData.EQUIP equipType = ItemData.getItemType(itemID);
            int            amount    = player.getInventory().getAmountInSlot(slot);
            bool           stackable = ItemData.forId(itemID).isStackable();
            bool           twoHanded = ItemData.isTwoHanded(itemID);

            if (equipType == ItemData.EQUIP.NOTHING)
            {
                player.getPackets().sendMessage("Unable to find an item slot for item : " + itemID + " , please report this to a staff member.");
                return(false);
            }
            if (duelRuleActive(equipType))
            {
                return(true);
            }
            if (twoHanded)
            {
                if (player.getInventory().getTotalFreeSlots() < getNeeded2HSlots())
                {
                    player.getPackets().sendMessage("Not enough space in your inventory.");
                    return(false);
                }
            }
            if (!player.getInventory().deleteItem(itemID, slot, amount))
            {
                return(false);
            }
            if (twoHanded && getItemInSlot(ItemData.EQUIP.SHIELD) != -1)
            {
                if (!unequipItem(ItemData.EQUIP.SHIELD))
                {
                    return(false);
                }
            }
            if (equipType == ItemData.EQUIP.SHIELD)
            {
                if (getItemInSlot(ItemData.EQUIP.WEAPON) != -1)
                {
                    if (ItemData.isTwoHanded(slots[3].getItemId()))
                    {
                        if (!unequipItem(ItemData.EQUIP.WEAPON))
                        {
                            return(false);
                        }
                    }
                }
            }
            int equipSlot = Convert.ToInt32(equipType);

            if (slots[equipSlot].getItemId() != itemID && slots[equipSlot].getItemId() > 0)
            {
                if (!player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot))
                {
                    return(false);
                }
                if (equipType == ItemData.EQUIP.HAT)
                {
                    RuneCraft.toggleRuin(player, slots[equipSlot].getItemId(), false);
                    if (RuneCraft.getTiaraIndex(itemID) != -1)
                    { // switching from tiara to tiara.
                        RuneCraft.toggleRuin(player, itemID, true);
                    }
                }
            }
            else if (stackable && slots[equipSlot].getItemId() == itemID)
            {
                amount = slots[equipSlot].getItemAmount() + amount;
            }
            else if (slots[equipSlot].getItemId() != -1)
            {
                player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot);
            }
            slots[equipSlot].setItemId(itemID);
            slots[equipSlot].setItemAmount(amount);
            player.getPackets().refreshEquipment();
            player.getUpdateFlags().setAppearanceUpdateRequired(true);
            if (equipType == ItemData.EQUIP.HAT)
            {
                RuneCraft.toggleRuin(player, itemID, RuneCraft.wearingTiara(player));
            }
            if (equipType == ItemData.EQUIP.WEAPON)
            {
                setWeapon();
                MagicData.cancelAutoCast(player, true);
            }
            refreshBonuses();
            player.setEntityFocus(65535);
            return(true);
        }
Пример #42
0
        public void newCannon()
        {
            setupTime = Environment.TickCount;
            Event setupNewCannonEvent = new Event(1000);

            setupNewCannonEvent.setAction(() =>
            {
                string prefixMsg = (constructionStage == 0) ? "You place the " : "You add the ";
                string suffixMsg = (constructionStage == 0) ? " on the ground." : ".";
                if (p.getInventory().deleteItem(CANNON_PIECES[constructionStage]))
                {
                    p.getPackets().createObject(CANNON_OBJECTS[constructionStage], cannonLocation, 0, 10);
                    p.getPackets().sendMessage(prefixMsg + CONSTRUCTION_MESSAGE[constructionStage] + suffixMsg);
                    if (++constructionStage >= 4)
                    {
                        constructionStage--;
                        setupNewCannonEvent.stop();
                        return;
                    }
                    p.setLastAnimation(new Animation(827));
                }
                else
                {
                    setupNewCannonEvent.stop();
                }
            });
            Server.registerEvent(setupNewCannonEvent);
        }