Exemple #1
0
 internal InProgressQuestData(OldPacket pkt)
 {
     _name        = pkt.GetBreakString();
     _description = pkt.GetBreakString();
     _icon        = (BookIcon)pkt.GetShort();
     _progress    = pkt.GetShort();
     _target      = pkt.GetShort();
     if (pkt.GetByte() != 255)
     {
         throw new ArgumentException("Malformed quest packet", nameof(pkt));
     }
 }
Exemple #2
0
        private void _handleTradeOpen(OldPacket pkt)
        {
            if (OnTradeOpen == null)
            {
                return;
            }

            short  player1ID   = pkt.GetShort();
            string player1Name = pkt.GetBreakString();
            short  player2ID   = pkt.GetShort();
            string player2Name = pkt.GetBreakString();

            OnTradeOpen(player1ID, player1Name, player2ID, player2Name);
        }
Exemple #3
0
        private void _handleQuestDialog(OldPacket pkt)
        {
            if (OnQuestDialog == null)
            {
                return;
            }

            int   numDialogs = pkt.GetChar();
            short vendorID   = pkt.GetShort();
            short questID    = pkt.GetShort();
            short sessionID  = pkt.GetShort(); //not used by eoserv
            short dialogID   = pkt.GetShort(); //not used by eoserv

            if (pkt.GetByte() != 255)
            {
                return;
            }

            QuestState stateInfo = new QuestState(sessionID, dialogID, questID, vendorID);

            var dialogNames = new Dictionary <short, string>(numDialogs);

            for (int i = 0; i < numDialogs; ++i)
            {
                dialogNames.Add(pkt.GetShort(), pkt.GetBreakString());
            }

            var pages = new List <string>();
            var links = new Dictionary <short, string>();

            while (pkt.ReadPos != pkt.Length)
            {
                var entry = (DialogEntry)pkt.GetShort();
                switch (entry)
                {
                case DialogEntry.DialogText:
                    pages.Add(pkt.GetBreakString());
                    break;

                case DialogEntry.DialogLink:
                    links.Add(pkt.GetShort(), pkt.GetBreakString());
                    break;
                }
            }

            OnQuestDialog(stateInfo, dialogNames, pages, links);
        }
Exemple #4
0
        private void _handlePlayerList(OldPacket pkt, bool isFriendList)
        {
            short numTotal = pkt.GetShort();

            if (pkt.GetByte() != 255)
            {
                return;
            }

            m_init_onlinePlayerList = new List <OnlineEntry>();
            for (int i = 0; i < numTotal; ++i)
            {
                string name = pkt.GetBreakString();

                if (!isFriendList)
                {
                    string title = pkt.GetBreakString();
                    if (string.IsNullOrWhiteSpace(title))
                    {
                        title = "-";
                    }
                    if (pkt.GetChar() != 0)
                    {
                        return;
                    }

                    PaperdollIconType iconType = (PaperdollIconType)pkt.GetChar();

                    int clsId = pkt.GetChar();

                    string guild = pkt.GetBreakString();
                    if (string.IsNullOrWhiteSpace(guild))
                    {
                        guild = "-";
                    }

                    name  = char.ToUpper(name[0]) + name.Substring(1);
                    title = char.ToUpper(title[0]) + title.Substring(1);

                    m_init_onlinePlayerList.Add(new OnlineEntry(name, title, guild, clsId, iconType));
                }
                else
                {
                    m_init_onlinePlayerList.Add(new OnlineEntry(name, "", "", 0, PaperdollIconType.Normal));
                }
            }
        }
Exemple #5
0
 internal SkillmasterData(OldPacket pkt)
 {
     m_id     = pkt.GetShort();
     m_title  = pkt.GetBreakString();
     m_skills = new List <Skill>();
     while (pkt.ReadPos < pkt.Length)
     {
         m_skills.Add(new Skill(pkt));
     }
 }
Exemple #6
0
        internal PaperdollDisplayData(OldPacket pkt)
        {
            //need to be applied to the character that is passed to the dialog
            name    = pkt.GetBreakString();
            home    = pkt.GetBreakString();
            partner = pkt.GetBreakString();
            title   = pkt.GetBreakString();
            guild   = pkt.GetBreakString();
            rank    = pkt.GetBreakString();

            playerID = pkt.GetShort();
            clas     = pkt.GetChar();
            gender   = pkt.GetChar();

            if (pkt.GetChar() != 0)
            {
                throw new ArgumentException("Invalid/malformed packet", nameof(pkt));
            }

            paperdoll = new short[(int)EquipLocation.PAPERDOLL_MAX];
            for (int i = 0; i < (int)EquipLocation.PAPERDOLL_MAX; ++i)
            {
                paperdoll[i] = pkt.GetShort();
            }

            iconType = (PaperdollIconType)pkt.GetChar();
        }
Exemple #7
0
 internal CharacterLoginData(OldPacket pkt)
 {
     name      = pkt.GetBreakString();
     id        = pkt.GetInt();
     level     = pkt.GetChar();
     gender    = pkt.GetChar();
     hairstyle = pkt.GetChar();
     haircolor = pkt.GetChar();
     race      = pkt.GetChar();
     admin     = (AdminLevel)pkt.GetChar();
     boots     = pkt.GetShort();
     armor     = pkt.GetShort();
     hat       = pkt.GetShort();
     shield    = pkt.GetShort();
     weapon    = pkt.GetShort();
 }
Exemple #8
0
        private void _handleQuestList(OldPacket pkt)
        {
            QuestPage page      = (QuestPage)pkt.GetChar();
            short     numQuests = pkt.GetShort();

            switch (page)
            {
            case QuestPage.Progress:
                var dataCollection = new List <InProgressQuestData>(numQuests);
                while (pkt.ReadPos != pkt.Length)
                {
                    dataCollection.Add(new InProgressQuestData(pkt));
                }

                if (OnViewQuestProgress != null)
                {
                    OnViewQuestProgress(numQuests, dataCollection);
                }

                break;

            case QuestPage.History:
                var completedNames = new List <string>(numQuests);
                while (pkt.ReadPos != pkt.Length)
                {
                    completedNames.Add(pkt.GetBreakString());
                }

                if (OnViewQuestHistory != null)
                {
                    OnViewQuestHistory(numQuests, completedNames);
                }

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemple #9
0
        internal CharacterData(OldPacket pkt)
        {
            m_name = pkt.GetBreakString();
            if (m_name.Length > 1)
            {
                m_name = char.ToUpper(m_name[0]) + m_name.Substring(1);
            }

            m_id  = pkt.GetShort();
            m_map = pkt.GetShort();
            m_x   = pkt.GetShort();
            m_y   = pkt.GetShort();

            m_facing = (EODirection)pkt.GetChar();
            pkt.GetChar(); //value is always 6? unknown
            m_guildTag = pkt.GetFixedString(3);

            m_level     = pkt.GetChar();
            m_gender    = pkt.GetChar();
            m_hairstyle = pkt.GetChar();
            m_haircolor = pkt.GetChar();
            m_race      = pkt.GetChar();

            m_maxhp = pkt.GetShort();
            m_hp    = pkt.GetShort();
            m_maxtp = pkt.GetShort();
            m_tp    = pkt.GetShort();

            m_boots = pkt.GetShort();
            pkt.Skip(3 * sizeof(short)); //other paperdoll data is 0'd out
            m_armor = pkt.GetShort();
            pkt.Skip(sizeof(short));
            m_hat    = pkt.GetShort();
            m_shield = pkt.GetShort();
            m_weapon = pkt.GetShort();

            m_sit    = (SitState)pkt.GetChar();
            m_hidden = pkt.GetChar() != 0;
        }
Exemple #10
0
        /// <summary>
        /// Handles SHOP_OPEN from server, contains shop data for a shop dialog
        /// </summary>
        private void _handleShopOpen(OldPacket pkt)
        {
            if (OnShopOpen == null)
            {
                return;
            }

            int    shopKeeperID = pkt.GetShort();
            string shopName     = pkt.GetBreakString();

            List <ShopItem> tradeItems = new List <ShopItem>();

            while (pkt.PeekByte() != 255)
            {
                ShopItem nextItem = new ShopItem(pkt.GetShort(), pkt.GetThree(), pkt.GetThree(), pkt.GetChar());
                tradeItems.Add(nextItem);
            }
            pkt.GetByte();

            List <CraftItem> craftItems = new List <CraftItem>();

            while (pkt.PeekByte() != 255)
            {
                int ID = pkt.GetShort();
                List <Tuple <int, int> > ingreds = new List <Tuple <int, int> >();

                for (int i = 0; i < 4; ++i)
                {
                    ingreds.Add(new Tuple <int, int>(pkt.GetShort(), pkt.GetChar()));
                }
                craftItems.Add(new CraftItem(ID, ingreds));
            }
            pkt.GetByte();

            OnShopOpen(shopKeeperID, shopName, tradeItems, craftItems);
        }