コード例 #1
0
        public void addFriend(long name)
        {
            Player friend = null;

            if (friends.Count >= 200)
            {
                player.getPackets().sendMessage("Your friends list is full.");
                return;
            }
            if (friends.Contains((long)name))
            {
                player.getPackets().sendMessage(misc.formatPlayerNameForDisplay(misc.longToPlayerName(name)) + " is already on your friends list.");
                return;
            }
            friends.Add((long)name);
            foreach (Player p in Server.getPlayerList())
            {
                if (p != null)
                {
                    if (p.getLoginDetails().getLongName() == name)
                    {
                        friend = p;
                    }
                }
            }
            if (friend != null)
            {
                if (privateStatus != STATUS.OFF)
                {
                    friend.getFriends().registered(player);
                }
                Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
                if (clan != null)
                {
                    clan.getOwnerFriends().Add(name);
                    if (clan.getUser(friend) != null)
                    {
                        if (clan.getUser(friend).getClanRights() == Clan.ClanRank.NO_RANK)
                        {
                            clan.getUser(friend).setClanRights(Clan.ClanRank.FRIEND);
                            Server.getClanManager().updateClan(clan);
                        }
                    }
                }
                if (friend.getFriends().getPrivateStatus() == STATUS.OFF || (friend.getFriends().getPrivateStatus() == STATUS.FRIENDS && !friend.getFriends().isFriend(player)))
                {
                    return;
                }
                player.getPackets().sendFriend(name, getWorld(name));
            }
        }
コード例 #2
0
 public void openEnterPin()
 {
     if (bankPinRemoved)
     {
         openPinSettings(9);
         return;
     }
     if (bankPin == null || changingPin)
     {
         player.getPackets().showChildInterface(13, 29, false);
     }
     else if (bankPin != null && !changingPin)
     {
         player.getPackets().setRightClickOptions(2, 851997, -1, -1);
     }
     if (lastDeletionRequest != 0)
     {
         int daysLeft = recoveryDaysRequired - TimeSpan.FromTicks(lastDeletionRequest).Days;
         player.getPackets().modifyText("Your Bank PIN will be deleted in another " + daysLeft + " days.", 13, 31);
     }
     else
     {
         player.getPackets().modifyText("Bank of " + player.getLoginDetails().getUsername(), 13, 31);
     }
     scrambleNumbers();
     player.getPackets().displayInterface(13);
 }
コード例 #3
0
        private void unregistered(Player p)
        {
            long n = p.getLoginDetails().getLongName();

            if (friends.Contains(n))
            {
                player.getPackets().sendFriend(n, 0);
            }
        }
コード例 #4
0
        private bool isFriend(Player player)
        {
            long n = player.getLoginDetails().getLongName();

            if (friends.Contains(n))
            {
                return(true);
            }
            return(false);
        }
コード例 #5
0
ファイル: FarmingPatches.cs プロジェクト: Krill156/SharpEMU
 public Patch patchExists(Player p, int index)
 {
     foreach(Patch patch in patches) {
         if (patch.getOwnerName().Equals(p.getLoginDetails().getUsername())) {
             if (patch.getPatchIndex() == index) {
                 return patch;
             }
         }
     }
     return null;
 }
コード例 #6
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();
        }
コード例 #7
0
ファイル: Yell.cs プロジェクト: Krill156/SharpEMU
        public void execute(Player player, string[] arguments)
        {
            if(arguments.Length == 0) {
                player.getPackets().sendMessage("[Yell command]: what are you expecting.. to yell blank message?");
                return;
            }

            string yellMsg = string.Join(" ", arguments);

            foreach(Player p in Server.getPlayerList()) {
                if (p != null) {
                    p.getPackets().sendMessage(player.getLoginDetails().getUsername() + ": " + yellMsg);
                }
            }
        }
コード例 #8
0
 public void updateSearchItem(int item)
 {
     p.getPackets().sendConfig(1109, item);
     p.getPackets().sendConfig(1110, 0);
     ItemData.Item def = ItemData.forId(item);
     if (def == null)
     {
         return;
     }
     p.getPackets().sendConfig(1109, item);
     p.getPackets().sendConfig(1114, def.getPrice().getNormalPrice());
     p.getPackets().sendConfig(1116, def.getPrice().getMaximumPrice());
     p.getPackets().sendConfig(1115, def.getPrice().getMinimumPrice());
     p.getPackets().sendConfig(1111, def.getPrice().getNormalPrice());
     currentOffer = new BuyOffer(slot, p.getLoginDetails().getUsername());
     currentOffer.setTotalAmount(0);
     currentOffer.setItem(item);
     currentOffer.setPriceEach(def.getPrice().getNormalPrice());
     p.getPackets().sendInterface(0, 752, 6, 137);         // Removes the item search
 }
コード例 #9
0
ファイル: BoatOptions.cs プロジェクト: Krill156/SharpEMU
        public static void showArnorDialogue(Player p, int status)
        {
            int newStatus = -1;
            p.getPackets().softCloseInterfaces();
            if (p.getTemporaryAttribute("unmovable") != null) {
                return;
            }
            switch(status) {
                case 370:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 371;
                    break;

                case 371:
                    p.getPackets().sendNPCHead(1361, 241, 2);
                    p.getPackets().modifyText("Arnor", 241, 3);
                    p.getPackets().modifyText("Of course, follow me.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 372;
                    break;

                case 372:
                    travel(p, 3, true);
                    break;
            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }
コード例 #10
0
ファイル: BoatOptions.cs プロジェクト: Krill156/SharpEMU
        public static void showSquireDialogue(Player p, int status)
        {
            int newStatus = -1;
            p.getPackets().softCloseInterfaces();
            if (p.getTemporaryAttribute("unmovable") != null) {
                return;
            }
            switch(status) {
                case 340:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 341;
                    break;

                case 341:
                    p.getPackets().sendNPCHead(3781, 241, 2);
                    p.getPackets().modifyText("Squire", 241, 3);
                    p.getPackets().modifyText("Certainly! Please visit Pest Control again soon.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 342;
                    break;

                case 342:
                    travel(p, 2, true);
                    break;
            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }
コード例 #11
0
ファイル: BoatOptions.cs プロジェクト: Krill156/SharpEMU
        public static void showJarvaldDialogue(Player p, int status)
        {
            int newStatus = -1;
            p.getPackets().softCloseInterfaces();
            if (p.getTemporaryAttribute("unmovable") != null) {
                return;
            }
            switch(status) {
                case 300:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 301;
                    break;

                case 301:
                    p.getPackets().sendNPCHead(2436, 241, 2);
                    p.getPackets().modifyText("Jarvald", 241, 3);
                    p.getPackets().modifyText("No problem. Off we go!", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 302;
                    break;

                case 302:
                    travel(p, 1, true);
                    break;
            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }
コード例 #12
0
ファイル: BoatOptions.cs プロジェクト: Krill156/SharpEMU
        public static void showCaptainBarnabyDialogue(Player p, int status)
        {
            int newStatus = -1;
            p.getPackets().softCloseInterfaces();
            if (p.getTemporaryAttribute("unmovable") != null) {
                return;
            }
            switch(status) {
                case 410:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 411;
                    break;

                case 411:
                    p.getPackets().sendNPCHead(4962, 241, 2);
                    p.getPackets().modifyText("Captain Barnaby", 241, 3);
                    p.getPackets().modifyText("Yes! it's freezing here, let's go!", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 412;
                    break;

                case 412:
                    travel(p, 4, true);
                    break;
            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }
コード例 #13
0
ファイル: BoatOptions.cs プロジェクト: Krill156/SharpEMU
        public static void showCanifisSailorDialogue(Player p, int status)
        {
            int newStatus = -1;
            p.getPackets().softCloseInterfaces();
            if (p.getTemporaryAttribute("unmovable") != null) {
                return;
            }
            switch(status) {
                case 280:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 281;
                    break;

                case 281:
                    p.getPackets().sendNPCHead(1304, 241, 2);
                    p.getPackets().modifyText("Sailor", 241, 3);
                    p.getPackets().modifyText("As you wish, i'll fetch the boat.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 282;
                    break;

                case 282:
                    travel(p, 0, true);
                    break;
            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }
コード例 #14
0
ファイル: BoatOptions.cs プロジェクト: Krill156/SharpEMU
        public static void showBentleyDialogue(Player p, int status)
        {
            int newStatus = -1;
            p.getPackets().softCloseInterfaces();
            if (p.getTemporaryAttribute("unmovable") != null) {
                return;
            }
            switch(status) {
                case 240:
                    p.getPackets().sendNPCHead(4540, 241, 2);
                    p.getPackets().modifyText("Captain Bentley", 241, 3);
                    p.getPackets().modifyText("Well, hello there " + p.getLoginDetails().getUsername() + ", ready to set sail?", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 241;
                    break;

                case 241:
                    p.getPackets().modifyText("I'd like to travel to..", 235, 1);
                    p.getPackets().modifyText("Canifis", 235, 2);
                    p.getPackets().modifyText("Waterbirth Isle", 235, 3);
                    p.getPackets().modifyText("Pest Control", 235, 4);
                    p.getPackets().modifyText("Warrior Guild", 235, 5);
                    p.getPackets().modifyText("Fremmenik Shore", 235, 6);
                    p.getPackets().sendChatboxInterface2(235);
                    newStatus = 242;
                    break;

                case 242: // Canifis
                    travel(p, 0, false);
                    break;

                case 243: // Waterbirth isle
                    travel(p, 1, false);
                    break;

                case 244: // Pest control
                    travel(p, 2, false);
                    break;

                case 245: // Warrior guild
                    int attackLevel = p.getSkills().getMaxLevel(Skills.SKILL.ATTACK);
                    int strengthLevel = p.getSkills().getMaxLevel(Skills.SKILL.STRENGTH);
                    bool hasA99 = attackLevel == 99 || strengthLevel == 99;
                    if (((attackLevel + strengthLevel) >= 130) || hasA99) {
                        travel(p, 3, false);
                    } else {
                        p.getPackets().sendNPCHead(4540, 243, 2);
                        p.getPackets().modifyText("Captain Bentley", 243, 3);
                        p.getPackets().modifyText("I'm sorry " + p.getLoginDetails().getUsername() + ", I cannot take you there.", 243, 4);
                        p.getPackets().modifyText("A combined Attack & Strength level of 130 is ", 243, 5);
                        p.getPackets().modifyText("required to use The Warrior Guild.", 243, 6);
                        p.getPackets().animateInterface(9827, 243, 2);
                        p.getPackets().sendChatboxInterface2(243);
                    }
                    break;

                case 246: // Fremmenik shore
                    travel(p, 4, false);
                    break;

            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }
コード例 #15
0
ファイル: LoginHandler.cs プロジェクト: Krill156/SharpEMU
        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;
        }
コード例 #16
0
ファイル: DuelSession.cs プロジェクト: Krill156/SharpEMU
 public void recieveWinnings(Player p)
 {
     if (!winner.Equals(p)) {
         misc.WriteError(p.getLoginDetails().getUsername() + " tried to claim stake winnings that weren't his.");
         return;
     }
     if (status != 8) {
         return;
     }
     for (int i = 0; i < winnings.Length; i++) {
         if (winnings[i] != null) {
             if (!player.getInventory().addItem(winnings[i].getItemId(), winnings[i].getItemAmount())) {
                 misc.WriteError("Possible stake winnings dupe " + player.getLoginDetails().getUsername());
             } else {
                 winnings[i] = null;
             }
         }
     }
 }
コード例 #17
0
        public void removeItem(int slot, int amount)
        {
            if (status > 2 || items[slot] == null)
            {
                return;
            }
            int  itemId    = getItemInSlot(slot);
            int  tradeSlot = findItem(itemId);
            bool stackable = ItemData.forId(itemId).isStackable();

            if (tradeSlot == -1)
            {
                misc.WriteError("user tried to remove non-existing item from trade! " + player.getLoginDetails().getUsername());
                return;
            }
            if (amount > getItemAmount(itemId))
            {
                amount = getItemAmount(itemId);
            }
            if (!stackable)
            {
                for (int i = 0; i < amount; i++)
                {
                    tradeSlot = findItem(itemId);
                    if (player.getInventory().addItem(itemId, amount))
                    {
                        items[tradeSlot].setItemAmount(getAmountInSlot(tradeSlot) - amount);
                        if (getAmountInSlot(tradeSlot) <= 0)
                        {
                            items[tradeSlot] = null;
                        }
                        player2.getPackets().tradeWarning(tradeSlot);
                    }
                }
                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();
            }
            else
            {
                tradeSlot = findItem(itemId);
                if (player.getInventory().addItem(itemId, amount))
                {
                    items[tradeSlot].setItemAmount(getAmountInSlot(tradeSlot) - amount);
                    if (getAmountInSlot(tradeSlot) <= 0)
                    {
                        items[tradeSlot] = null;
                    }
                    player2.getPackets().tradeWarning(tradeSlot);
                }
            }
            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();
            tradeModified = true;
        }
コード例 #18
0
ファイル: LoginHandler.cs プロジェクト: Krill156/SharpEMU
        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;
            }
        }
コード例 #19
0
ファイル: GrandExchange.cs プロジェクト: Krill156/SharpEMU
 public GEItem getOfferForSlot(Player p, int slot)
 {
     foreach (KeyValuePair<int, GEItem[]> buyOffer in buyOffers)
     {
         if (buyOffer.Value != null)
         {
             for (int i = 0; i < buyOffer.Value.Length; i++)
             {
                 if (buyOffer.Value[i] != null)
                 {
                     if (buyOffer.Value[i].getPlayerName().Equals(p.getLoginDetails().getUsername()) && buyOffer.Value[i].getSlot() == slot)
                     {
                         return buyOffer.Value[i];
                     }
                 }
             }
         }
     }
     foreach (KeyValuePair<int, GEItem[]> sellOffer in sellOffers)
     {
         if (sellOffer.Value != null)
         {
             for (int i = 0; i < sellOffer.Value.Length; i++)
             {
                 if (sellOffer.Value[i] != null)
                 {
                     if (sellOffer.Value[i].getPlayerName().Equals(p.getLoginDetails().getUsername()) && sellOffer.Value[i].getSlot() == slot)
                     {
                         return sellOffer.Value[i];
                     }
                 }
             }
         }
     }
     return null;
 }
コード例 #20
0
ファイル: PlayerUpdate.cs プロジェクト: Krill156/SharpEMU
        private static void appendAppearanceUpdate(Player p, PacketBuilder updateBlock)
        {
            PacketBuilder playerProps = new PacketBuilder().setSize(Packet.Size.Bare);

            Appearance app = p.getAppearance();
            playerProps.addByte((byte) (app.getGender() & 0xFF));
            if((app.getGender() & 0x2) == 2) {
                playerProps.addByte((byte) 0);
                playerProps.addByte((byte) 0);
            }
            playerProps.addByte((byte) p.getPrayers().getPkIcon());
            playerProps.addByte((byte) p.getPrayers().getHeadIcon());
            if (!app.isInvisible()) {
                if(!app.isNpc()) {
                    for(int i = 0; i < 4; i++) {
                        if(p.getEquipment().getItemInSlot((ItemData.EQUIP)i) != -1) {
                            playerProps.addUShort(32768 + p.getEquipment().getSlot((ItemData.EQUIP)i).getDefinition().getEquipId());
                        } else {
                            playerProps.addByte((byte) 0);
                        }
                    }
                    if (p.getEquipment().getItemInSlot(ItemData.EQUIP.CHEST) != -1)
                    {
                        playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.CHEST).getDefinition().getEquipId());
                    } else {
                        playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.AMULET));
                    }
                    if (p.getEquipment().getItemInSlot(ItemData.EQUIP.SHIELD) != -1)
                    {
                        playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.SHIELD).getDefinition().getEquipId());
                    } else {
                        playerProps.addByte((byte) 0);
                    }
                    Item chest = p.getEquipment().getSlot(ItemData.EQUIP.CHEST);
                    if (chest != null && chest.getDefinition() != null)
                    {
                        if(!ItemData.isFullBody(chest.getDefinition())) {
                            playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.WEAPON));
                        } else {
                            playerProps.addByte((byte) 0);
                        }
                    } else {
                        playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.WEAPON));
                    }
                    if (p.getEquipment().getItemInSlot(ItemData.EQUIP.LEGS) != -1)
                    {
                        playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.LEGS).getDefinition().getEquipId());
                    } else {
                        playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.SHIELD));
                    }
                    Item hat = p.getEquipment().getSlot(ItemData.EQUIP.HAT);
                    if (hat != null && hat.getDefinition() != null)
                    {
                        if(!ItemData.isFullHat(hat.getDefinition()) && !ItemData.isFullMask(hat.getDefinition())) {
                            playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.HAT));
                        } else {
                            playerProps.addByte((byte) 0);
                        }
                    } else {
                        playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.HAT));
                    }
                    if (p.getEquipment().getItemInSlot(ItemData.EQUIP.HANDS) != -1)
                    {
                        playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.HANDS).getDefinition().getEquipId());
                    } else {
                        playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.CHEST));
                    }
                    if (p.getEquipment().getItemInSlot(ItemData.EQUIP.FEET) != -1)
                    {
                        playerProps.addUShort(32768 + p.getEquipment().getSlot(ItemData.EQUIP.FEET).getDefinition().getEquipId());
                    } else {
                        playerProps.addUShort(0x100 + app.getLook(6));
                    }
                    if (hat != null && hat.getDefinition() != null)
                    {
                        if(!ItemData.isFullMask(hat.getDefinition())) {
                            playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.CAPE));
                        } else {
                            playerProps.addByte((byte) 0);
                        }
                    } else {
                        playerProps.addUShort(0x100 + app.getLook(ItemData.EQUIP.CAPE));
                    }
                } else {
                    playerProps.addUShort(-1);
                    playerProps.addUShort(app.getNpcId());
                    playerProps.addByte((byte) 255);
                }
            } else {
                for (int i = 0; i < 12; i++) {
                    playerProps.addByte((byte) 0);
                }
            }
            foreach(int colour in app.getColoursArray()) {
                playerProps.addByte((byte) colour);
            }
            playerProps.addUShort(p.getEquipment().getStandWalkAnimation());
            playerProps.addLong(p.getLoginDetails().getLongName());
            playerProps.addByte((byte) p.getSkills().getCombatLevel());
            playerProps.addUShort(0);
            playerProps.addByte((byte) 0);
            updateBlock.addByteA((byte) (playerProps.getLength() & 0xFF));
            updateBlock.addBytes(playerProps.toPacket().getData(), 0, playerProps.getLength());
        }
コード例 #21
0
ファイル: BrokenBarrows.cs プロジェクト: Krill156/SharpEMU
        public static void showBobDialogue(Player p, int status)
        {
            p.getPackets().softCloseInterfaces();
            int index = -1;
            int newStatus = -1;
            if (p.getTemporaryAttribute("bobsAxesBarrowItem") != null) {
                int item = (int)p.getTemporaryAttribute("bobsAxesBarrowItem");
                index = getIndex(item);
                if (index == -1) {
                    return;
                } else if (item == (int)DATA[index][0]) {
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("That item isn't broken..", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    return;
                } else if (item != (int)DATA[index][1]) {
                    return;
                }
            }
            switch(status) {
                case 101:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("That'll cost you " + ((int)DATA[index][2]).ToString("#,##0") + " gold coins to fix, are you sure?", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 102;
                    break;

                case 102:
                    p.getPackets().modifyText("Yes, I'm sure!", 557, 2);
                    p.getPackets().modifyText("On second thoughts, no thanks.", 557, 3);
                    p.getPackets().sendChatboxInterface2(557);
                    newStatus = 103;
                    break;

                case 103:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Yes, I'm sure!", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 104;
                    break;

                case 104:
                    if (!p.getInventory().hasItemAmount(995, (int)DATA[index][2])) {
                        p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                        p.getPackets().modifyText("Bob", 241, 3);
                        p.getPackets().modifyText("You don't have enough money to pay for the repair!", 241, 4);
                        p.getPackets().animateInterface(9827, 241, 2);
                        p.getPackets().sendChatboxInterface2(241);
                        break;
                    } else {
                        if (!p.getInventory().hasItem((int)DATA[index][1])) {
                            p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                            p.getPackets().modifyText("Bob", 241, 3);
                            p.getPackets().modifyText("The item seems to have gone from your inventory.", 241, 4);
                            p.getPackets().animateInterface(9827, 241, 2);
                            p.getPackets().sendChatboxInterface2(241);
                            break;
                        } else if (p.getInventory().deleteItem(995, (int)DATA[index][2])) {
                            p.getInventory().replaceSingleItem((int)DATA[index][1], (int)DATA[index][0]);
                            p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                            p.getPackets().modifyText("Bob", 241, 3);
                            p.getPackets().modifyText("There you go, happy doing business with you!", 241, 4);
                            p.getPackets().animateInterface(9827, 241, 2);
                            p.getPackets().sendChatboxInterface2(241);
                            p.getPackets().sendMessage("You pay Bob his fee and he repairs your " + (string)DATA[index][3] + ".");
                            break;
                        }
                    }
                    break;

                case 105:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("On second thoughts, no thanks.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 106;
                    break;

                case 106:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("Ok, but don't expect my prices to change anytime soon!", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    break;

                case 107:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("Hello there " + p.getLoginDetails().getUsername() + ", what can i do for you?", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 108;
                    break;

                case 108:
                    p.getPackets().modifyText("Could you please repair my Barrow item?", 230, 2);
                    p.getPackets().modifyText("I'm interested in buying an axe.", 230, 3);
                    p.getPackets().modifyText("Nevermind.", 230, 4);
                    p.getPackets().sendChatboxInterface2(230);
                    newStatus = 109;
                    break;

                case 109:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Could you please repair my Barrow item?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 110;
                    break;

                case 110:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("Certainly! Show me the item and i'll see what i can do.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    break;

                case 111:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("I'm interested in buying an axe.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 112;
                    break;

                case 112:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("What a coincidence! Axes are my speciality!", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 113;
                    break;

                case 113:
                    //TODO open bob's shop
                    break;

                case 114:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Nevermind.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    break;
            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }
コード例 #22
0
ファイル: AlKharid.cs プロジェクト: Krill156/SharpEMU
        public static void showAliDialogue(Player p, int status)
        {
            int newStatus = -1;
            p.getPackets().softCloseInterfaces();
            if (p.getTemporaryAttribute("unmovable") != null) {
                return;
            }
            switch(status) {
                case 205:
                    p.getPackets().sendNPCHead(1862, 241, 2);
                    p.getPackets().modifyText("Ali Morissane", 241, 3);
                    p.getPackets().modifyText("Would you like to go back to Lletya?", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 206;
                    break;

                case 206:
                    p.getPackets().sendChatboxInterface2(228);
                    p.getPackets().modifyText("Yes please, let's go", 228, 2);
                    p.getPackets().modifyText("Not yet", 228, 3);
                    newStatus = 207;
                    break;

                case 207:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Yes please, let's go.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 208;
                    break;

                case 208:
                    p.getPackets().sendNPCHead(1862, 241, 2);
                    p.getPackets().modifyText("Ali Morissane", 241, 3);
                    p.getPackets().modifyText("Very well.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    newStatus = 209;
                    break;

                case 209:
                    p.setTemporaryAttribute("unmovable", true);
                    p.getPackets().displayInterface(120);
                    p.getPackets().sendMessage("Your camel trots off slowly out of the desert..");
                    Event moveBackToLletyaEvent = new Event(2000);
                    int moveBackToLletyaCounter = 0;
                    moveBackToLletyaEvent.setAction(() => {
                        if (moveBackToLletyaCounter == 0)
                        {
                            moveBackToLletyaCounter++;
                            moveBackToLletyaEvent.setTick(600);
                            p.teleport(new Location(2340, 3799, 0));
                        } else {
                            moveBackToLletyaEvent.stop();
                            p.removeTemporaryAttribute("unmovable");
                            p.getPackets().sendMessage("..You and Ali are back in Lletya.");
                            p.getPackets().closeInterfaces();
                        }
                    });
                    Server.registerEvent(moveBackToLletyaEvent);
                    break;

                case 210:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Not yet.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
                    newStatus = 211;
                    break;

                case 211:
                    p.getPackets().sendNPCHead(1862, 241, 2);
                    p.getPackets().modifyText("Ali Morissane", 241, 3);
                    p.getPackets().modifyText("No problem, I will be here when you decide to leave.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
                    break;

            }
            if (newStatus != -1) {
                p.setTemporaryAttribute("dialogue", newStatus);
            }
        }