mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Core/PacketIO: Fixed SMSG_MAIL_LIST_RESULT structure
This commit is contained in:
@@ -850,7 +850,7 @@ void AuctionEntry::BuildAuctionInfo(std::vector<WorldPackets::AuctionHouse::Auct
|
||||
{
|
||||
if (gemData.ItemId)
|
||||
{
|
||||
WorldPackets::Item::ItemGemInstanceData gem;
|
||||
WorldPackets::Item::ItemGemData gem;
|
||||
gem.Slot = i;
|
||||
gem.Item.Initialize(&gemData);
|
||||
auctionItem.Gems.push_back(gem);
|
||||
|
||||
@@ -3219,7 +3219,7 @@ void Guild::_SendBankContentUpdate(uint8 tabId, SlotIds slots) const
|
||||
{
|
||||
if (gemData.ItemId)
|
||||
{
|
||||
WorldPackets::Item::ItemGemInstanceData gem;
|
||||
WorldPackets::Item::ItemGemData gem;
|
||||
gem.Slot = i;
|
||||
gem.Item.Initialize(&gemData);
|
||||
itemInfo.SocketEnchant.push_back(gem);
|
||||
@@ -3301,7 +3301,7 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) co
|
||||
{
|
||||
if (gemData.ItemId)
|
||||
{
|
||||
WorldPackets::Item::ItemGemInstanceData gem;
|
||||
WorldPackets::Item::ItemGemData gem;
|
||||
gem.Slot = i;
|
||||
gem.Item.Initialize(&gemData);
|
||||
itemInfo.SocketEnchant.push_back(gem);
|
||||
|
||||
@@ -84,7 +84,7 @@ void WorldSession::SendUpdateTrade(bool trader_data /*= true*/)
|
||||
{
|
||||
if (gemData.ItemId)
|
||||
{
|
||||
WorldPackets::Item::ItemGemInstanceData gem;
|
||||
WorldPackets::Item::ItemGemData gem;
|
||||
gem.Slot = i;
|
||||
gem.Item.Initialize(&gemData);
|
||||
tradeItem.Unwrapped->Gems.push_back(gem);
|
||||
|
||||
@@ -38,16 +38,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::AuctionHouse::AuctionItem
|
||||
data.WriteBit(auctionItem.CensorBidInfo);
|
||||
data.FlushBits();
|
||||
|
||||
for (auto const& gem : auctionItem.Gems)
|
||||
for (WorldPackets::Item::ItemGemData const& gem : auctionItem.Gems)
|
||||
data << gem;
|
||||
|
||||
for (WorldPackets::AuctionHouse::AuctionItem::AuctionItemEnchant const& enchant : auctionItem.Enchantments)
|
||||
{
|
||||
data << int32(enchant.ID);
|
||||
data << uint32(enchant.Expiration);
|
||||
data << int32(enchant.Charges);
|
||||
data << uint8(enchant.Slot);
|
||||
}
|
||||
for (WorldPackets::Item::ItemEnchantData const& enchant : auctionItem.Enchantments)
|
||||
data << enchant;
|
||||
|
||||
if (!auctionItem.CensorServerSideInfo)
|
||||
{
|
||||
|
||||
@@ -31,19 +31,10 @@ namespace WorldPackets
|
||||
{
|
||||
struct AuctionItem
|
||||
{
|
||||
struct AuctionItemEnchant
|
||||
{
|
||||
AuctionItemEnchant(int32 id, uint32 expiration, int32 charges, uint8 slot) : ID(id), Expiration(expiration), Charges(charges), Slot(slot) { }
|
||||
int32 ID = 0;
|
||||
uint32 Expiration = 0;
|
||||
int32 Charges = 0;
|
||||
uint8 Slot = 0;
|
||||
};
|
||||
|
||||
Item::ItemInstance Item;
|
||||
int32 Count = 0;
|
||||
int32 Charges = 0;
|
||||
std::vector<AuctionItemEnchant> Enchantments;
|
||||
std::vector<Item::ItemEnchantData> Enchantments;
|
||||
int32 Flags = 0;
|
||||
int32 AuctionItemID = 0;
|
||||
ObjectGuid Owner;
|
||||
@@ -59,7 +50,7 @@ namespace WorldPackets
|
||||
uint32 EndTime = 0;
|
||||
ObjectGuid Bidder;
|
||||
uint64 BidAmount = 0;
|
||||
std::vector<Item::ItemGemInstanceData> Gems;
|
||||
std::vector<Item::ItemGemData> Gems;
|
||||
};
|
||||
|
||||
struct AuctionOwnerNotification
|
||||
|
||||
@@ -624,7 +624,7 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write()
|
||||
_worldPacket.WriteBit(item.Locked);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
for (Item::ItemGemInstanceData const& socketEnchant : item.SocketEnchant)
|
||||
for (Item::ItemGemData const& socketEnchant : item.SocketEnchant)
|
||||
_worldPacket << socketEnchant;
|
||||
}
|
||||
|
||||
|
||||
@@ -788,7 +788,7 @@ namespace WorldPackets
|
||||
int32 OnUseEnchantmentID = 0;
|
||||
int32 Flags = 0;
|
||||
bool Locked = false;
|
||||
std::vector<Item::ItemGemInstanceData> SocketEnchant;
|
||||
std::vector<Item::ItemGemData> SocketEnchant;
|
||||
};
|
||||
|
||||
struct GuildBankTabInfo
|
||||
|
||||
@@ -76,7 +76,7 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint
|
||||
{
|
||||
if (gemData.ItemId)
|
||||
{
|
||||
WorldPackets::Item::ItemGemInstanceData gem;
|
||||
WorldPackets::Item::ItemGemData gem;
|
||||
gem.Slot = i;
|
||||
gem.Item.Initialize(&gemData);
|
||||
Gems.push_back(gem);
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace WorldPackets
|
||||
uint8 Index = 0;
|
||||
bool Usable = false;
|
||||
std::vector<InspectEnchantData> Enchants;
|
||||
std::vector<Item::ItemGemInstanceData> Gems;
|
||||
std::vector<Item::ItemGemData> Gems;
|
||||
};
|
||||
|
||||
struct InspectGuildData
|
||||
|
||||
@@ -232,17 +232,26 @@ ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemInstance& itemI
|
||||
return data;
|
||||
}
|
||||
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData const& itemGemInstanceData)
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemEnchantData const& itemEnchantData)
|
||||
{
|
||||
data << uint8(itemGemInstanceData.Slot);
|
||||
data << itemGemInstanceData.Item;
|
||||
data << int32(itemEnchantData.ID);
|
||||
data << uint32(itemEnchantData.Expiration);
|
||||
data << int32(itemEnchantData.Charges);
|
||||
data << uint8(itemEnchantData.Slot);
|
||||
return data;
|
||||
}
|
||||
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData& itemGemInstanceData)
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemData const& itemGemData)
|
||||
{
|
||||
data >> itemGemInstanceData.Slot;
|
||||
data >> itemGemInstanceData.Item;
|
||||
data << uint8(itemGemData.Slot);
|
||||
data << itemGemData.Item;
|
||||
return data;
|
||||
}
|
||||
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemData& itemGemData)
|
||||
{
|
||||
data >> itemGemData.Slot;
|
||||
data >> itemGemData.Item;
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,16 @@ namespace WorldPackets
|
||||
bool operator!=(ItemInstance const& r) const { return !(*this == r); }
|
||||
};
|
||||
|
||||
struct ItemGemInstanceData
|
||||
struct ItemEnchantData
|
||||
{
|
||||
ItemEnchantData(int32 id, uint32 expiration, int32 charges, uint8 slot) : ID(id), Expiration(expiration), Charges(charges), Slot(slot) { }
|
||||
int32 ID = 0;
|
||||
uint32 Expiration = 0;
|
||||
int32 Charges = 0;
|
||||
uint8 Slot = 0;
|
||||
};
|
||||
|
||||
struct ItemGemData
|
||||
{
|
||||
uint8 Slot;
|
||||
ItemInstance Item;
|
||||
@@ -538,7 +547,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceDa
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceData& itemBonusInstanceData);
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemInstance const& itemInstance);
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemInstance& itemInstance);
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData const& itemGemInstanceData);
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData& itemGemInstanceData);
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemEnchantData const& itemEnchantData);
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemData const& itemGemInstanceData);
|
||||
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemData& itemGemInstanceData);
|
||||
|
||||
#endif // ItemPackets_h__
|
||||
|
||||
@@ -29,19 +29,15 @@ WorldPackets::Mail::MailAttachedItem::MailAttachedItem(::Item const* item, uint8
|
||||
Charges = item->GetSpellCharges();
|
||||
MaxDurability = item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY);
|
||||
Durability = item->GetUInt32Value(ITEM_FIELD_DURABILITY);
|
||||
Unlocked = !item->IsLocked(); //TODO: Check
|
||||
Unlocked = !item->IsLocked();
|
||||
|
||||
for (uint8 j = 0; j < MAX_INSPECTED_ENCHANTMENT_SLOT; j++)
|
||||
{
|
||||
if (!item->GetEnchantmentId((EnchantmentSlot)j))
|
||||
EnchantmentSlot slot = EnchantmentSlot(j);
|
||||
if (!item->GetEnchantmentId(slot))
|
||||
continue;
|
||||
|
||||
MailAttachedItemEnchant enchant;
|
||||
enchant.Enchant = item->GetEnchantmentId((EnchantmentSlot)j);
|
||||
enchant.Duration = item->GetEnchantmentDuration((EnchantmentSlot)j);
|
||||
enchant.Charges = item->GetEnchantmentCharges((EnchantmentSlot)j);
|
||||
enchant.Slot = j;
|
||||
Enchants.push_back(enchant);
|
||||
Enchants.emplace_back(item->GetEnchantmentId(slot), item->GetEnchantmentDuration(slot), item->GetEnchantmentCharges(slot), j);
|
||||
}
|
||||
|
||||
uint8 i = 0;
|
||||
@@ -49,7 +45,7 @@ WorldPackets::Mail::MailAttachedItem::MailAttachedItem(::Item const* item, uint8
|
||||
{
|
||||
if (gemData.ItemId)
|
||||
{
|
||||
WorldPackets::Item::ItemGemInstanceData gem;
|
||||
WorldPackets::Item::ItemGemData gem;
|
||||
gem.Slot = i;
|
||||
gem.Item.Initialize(&gemData);
|
||||
Gems.push_back(gem);
|
||||
@@ -72,15 +68,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailAttachedItem co
|
||||
data.WriteBit(att.Unlocked);
|
||||
data.FlushBits();
|
||||
|
||||
for (auto const& gem : att.Gems)
|
||||
for (WorldPackets::Item::ItemGemData const& gem : att.Gems)
|
||||
data << gem;
|
||||
|
||||
for (auto const& en : att.Enchants)
|
||||
{
|
||||
data << int32(en.Enchant);
|
||||
data << uint32(en.Duration);
|
||||
data << int32(en.Charges);
|
||||
}
|
||||
for (WorldPackets::Item::ItemEnchantData const& en : att.Enchants)
|
||||
data << en;
|
||||
|
||||
return data;
|
||||
}
|
||||
@@ -122,14 +114,14 @@ WorldPackets::Mail::MailListEntry::MailListEntry(::Mail const* mail, ::Player* p
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailListEntry const& entry)
|
||||
{
|
||||
data << int32(entry.MailID);
|
||||
data << int8(entry.SenderType);
|
||||
data << int64(entry.Cod);
|
||||
data << uint8(entry.SenderType);
|
||||
data << uint64(entry.Cod);
|
||||
data << int32(entry.StationeryID);
|
||||
data << int64(entry.SentMoney);
|
||||
data << uint64(entry.SentMoney);
|
||||
data << int32(entry.Flags);
|
||||
data << float(entry.DaysLeft);
|
||||
data << int32(entry.MailTemplateID);
|
||||
data << int32(entry.Attachments.size());
|
||||
data << uint32(entry.Attachments.size());
|
||||
data.WriteBit(entry.SenderCharacter.is_initialized());
|
||||
data.WriteBit(entry.AltSenderID.is_initialized());
|
||||
data.WriteBits(entry.Subject.size(), 8);
|
||||
@@ -162,7 +154,7 @@ void WorldPackets::Mail::MailGetList::Read()
|
||||
|
||||
WorldPacket const* WorldPackets::Mail::MailListResult::Write()
|
||||
{
|
||||
_worldPacket << int32(Mails.size());
|
||||
_worldPacket << uint32(Mails.size());
|
||||
_worldPacket << int32(TotalNumRecords);
|
||||
|
||||
for (auto const& mail : Mails)
|
||||
|
||||
@@ -29,14 +29,6 @@ namespace WorldPackets
|
||||
{
|
||||
namespace Mail
|
||||
{
|
||||
struct MailAttachedItemEnchant
|
||||
{
|
||||
int32 Enchant = 0;
|
||||
uint32 Duration = 0;
|
||||
int32 Charges = 0;
|
||||
uint8 Slot = 0;
|
||||
};
|
||||
|
||||
struct MailAttachedItem
|
||||
{
|
||||
MailAttachedItem(::Item const* item, uint8 pos);
|
||||
@@ -49,8 +41,8 @@ namespace WorldPackets
|
||||
uint32 MaxDurability = 0;
|
||||
int32 Durability = 0;
|
||||
bool Unlocked = false;
|
||||
std::vector<MailAttachedItemEnchant> Enchants;
|
||||
std::vector<Item::ItemGemInstanceData> Gems;
|
||||
std::vector<Item::ItemEnchantData> Enchants;
|
||||
std::vector<Item::ItemGemData> Gems;
|
||||
};
|
||||
|
||||
struct MailListEntry
|
||||
@@ -61,9 +53,9 @@ namespace WorldPackets
|
||||
uint8 SenderType = 0;
|
||||
Optional<ObjectGuid> SenderCharacter;
|
||||
Optional<uint32> AltSenderID;
|
||||
int64 Cod = 0;
|
||||
uint64 Cod = 0;
|
||||
int32 StationeryID = 0;
|
||||
int64 SentMoney = 0;
|
||||
uint64 SentMoney = 0;
|
||||
int32 Flags = 0;
|
||||
float DaysLeft = 0.0f;
|
||||
int32 MailTemplateID = 0;
|
||||
|
||||
@@ -94,7 +94,7 @@ ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::Trade::TradeUpdated::Un
|
||||
buffer.WriteBit(unwrappedTradeItem.Lock);
|
||||
buffer.FlushBits();
|
||||
|
||||
for (WorldPackets::Item::ItemGemInstanceData const& gem : unwrappedTradeItem.Gems)
|
||||
for (WorldPackets::Item::ItemGemData const& gem : unwrappedTradeItem.Gems)
|
||||
buffer << gem;
|
||||
|
||||
return buffer;
|
||||
|
||||
@@ -160,7 +160,7 @@ namespace WorldPackets
|
||||
bool Lock = false;
|
||||
uint32 MaxDurability = 0;
|
||||
uint32 Durability = 0;
|
||||
std::vector<Item::ItemGemInstanceData> Gems;
|
||||
std::vector<Item::ItemGemData> Gems;
|
||||
};
|
||||
|
||||
struct TradeItem
|
||||
|
||||
Reference in New Issue
Block a user