71 MailID =
mail->messageID;
72 SenderType =
mail->messageType;
74 switch (
mail->messageType)
77 SenderCharacter = ObjectGuid::Create<HighGuid::Player>(
mail->sender);
83 AltSenderID =
mail->sender;
88 StationeryID =
mail->stationery;
89 SentMoney =
mail->money;
90 Flags =
mail->checked;
92 MailTemplateID =
mail->mailTemplateId;
93 Subject =
mail->subject;
137 _worldPacket >> Mailbox;
148 _worldPacket.
put<
int32>(0, TotalNumRecords);
149 _worldPacket.put<
uint8>(4, Mails.size());
151 return &_worldPacket;
157 if (Mails.size() >= 50 || _maxPacketSizeReached)
161 if (_worldPacket.size() +
packetEntry.GetPacketSize() >= std::size_t(std::numeric_limits<int16>::max()))
163 _maxPacketSizeReached =
true;
167 _worldPacket << Mails.emplace_back(std::move(
packetEntry));
172 _worldPacket >> Mailbox;
173 _worldPacket >> MailID;
178 _worldPacket >> Info.Mailbox;
179 _worldPacket >> Info.Target;
180 _worldPacket >> Info.Subject;
181 _worldPacket >> Info.Body;
182 _worldPacket >> Info.StationeryID;
183 _worldPacket >> Info.PackageID;
184 Info.Attachments.
resize(_worldPacket.read<
uint8>());
186 for (
auto&
att : Info.Attachments)
188 _worldPacket >>
att.AttachPosition;
189 _worldPacket >>
att.ItemGUID;
192 _worldPacket >> Info.SendMoney;
193 _worldPacket >> Info.Cod;
194 _worldPacket.read_skip<
uint64>();
195 _worldPacket.read_skip<
uint8>();
200 _worldPacket >> Mailbox;
201 _worldPacket >> MailID;
202 _worldPacket >> SenderGUID;
207 _worldPacket <<
uint32(MailID);
208 _worldPacket <<
uint32(Command);
209 _worldPacket <<
uint32(ErrorCode);
212 _worldPacket <<
uint32(BagResult);
218 _worldPacket <<
uint32(AttachID);
219 _worldPacket <<
uint32(QtyInInventory);
223 return &_worldPacket;
228 _worldPacket >> Mailbox;
229 _worldPacket >> MailID;
234 _worldPacket >> Mailbox;
235 _worldPacket >> MailID;
236 _worldPacket >> DeleteReason;
241 _worldPacket >> Mailbox;
242 _worldPacket >> MailID;
243 _worldPacket >> AttachID;
248 _worldPacket >> Mailbox;
249 _worldPacket >> MailID;
254 switch (
mail->messageType)
257 SenderGuid = ObjectGuid::Create<HighGuid::Player>(
mail->sender);
263 AltSenderID =
mail->sender;
267 TimeLeft =
mail->deliver_time - time(
nullptr);
268 AltSenderType =
mail->messageType;
269 StationeryID =
mail->stationery;
274 _worldPacket <<
float(NextMailTime);
275 _worldPacket <<
int32(Next.size());
277 for (
auto const& entry : Next)
279 _worldPacket << entry.SenderGuid;
280 _worldPacket <<
int32(entry.AltSenderID);
281 _worldPacket <<
int32(entry.AltSenderType);
282 _worldPacket <<
int32(entry.StationeryID);
283 _worldPacket <<
float(entry.TimeLeft);
286 return &_worldPacket;
291 _worldPacket <<
float(Delay);
293 return &_worldPacket;
298 _worldPacket << PostmasterGUID;
300 return &_worldPacket;
@ MAX_INSPECTED_ENCHANTMENT_SLOT
ByteBuffer & operator<<(ByteBuffer &buf, ObjectGuid const &guid)
@ MAIL_ERR_ITEM_HAS_EXPIRED
@ ITEM_FIELD_MAXDURABILITY
void put(std::size_t pos, T value)
uint32 GetEnchantmentId(EnchantmentSlot slot) const
int32 GetSpellCharges(uint8 index=0) const
uint32 GetEnchantmentDuration(EnchantmentSlot slot) const
int32 GetItemRandomPropertyId() const
uint32 GetItemSuffixFactor() const
uint32 GetEnchantmentCharges(EnchantmentSlot slot) const
LowType GetCounter() const
int32 GetInt32Value(uint16 index) const
uint32 GetUInt32Value(uint16 index) const
static ObjectGuid GetGUID(Object const *o)
Item * GetMItem(ObjectGuid::LowType id)
T & emplace_back(Args &&... args)
void resize(size_type newSize)
WorldPacket const * Write() override
WorldPacket const * Write() override
void AddMail(::Mail const *mail, Player *player)
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
std::array< uint32, MAX_INSPECTED_ENCHANTMENT_SLOT > EnchantmentID
MailAttachedItem(::Item const *item, uint8 pos)
static constexpr std::size_t GetPacketSize()
std::array< uint32, MAX_INSPECTED_ENCHANTMENT_SLOT > EnchantmentCharges
int32 RandomPropertiesSeed
std::array< uint32, MAX_INSPECTED_ENCHANTMENT_SLOT > EnchantmentDuration
std::size_t GetPacketSize() const
MailListEntry(::Mail const *mail, ::Player *player)
Optional< uint32 > AltSenderID
Optional< ObjectGuid > SenderCharacter
std::vector< MailAttachedItem > Attachments
MailNextTimeEntry(::Mail const *mail)