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)); } }
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); }
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); }
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)); } } }
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)); } }
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(); }
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(); }
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(); } }
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; }
/// <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); }