57 TC_LOG_ERROR(
"misc",
"MailSender::MailSender - Mail message contains unexpected sender typeid ({}).", sender->
GetTypeId());
128 if (
Item* item =
Item::CreateItem(lootitem->itemid, lootitem->count, lootitem->context, receiver))
130 item->SaveToDB(trans);
139 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
141 Item* item = mailItemIter->second;
154 ObjectGuid receiverGuid = ObjectGuid::Create<HighGuid::Player>(receiver_guid);
159 rc_account =
sCharacterCache->GetCharacterAccountIdByGuid(receiverGuid);
161 if (!receiver && !rc_account)
168 bool needItemDelay =
false;
173 needItemDelay = sender_acc != rc_account;
176 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
178 Item* item = mailItemIter->second;
217 expire_delay = 3 *
DAY;
222 time_t expire_time = deliver_time + expire_delay;
236 stmt->
setInt64 (++index, expire_time);
237 stmt->
setInt64 (++index, deliver_time);
243 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
245 Item* pItem = mailItemIter->second;
266 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
268 Item* item = mailItemIter->second;
285 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
286 pReceiver->
AddMItem(mailItemIter->second);
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
#define TC_LOG_ERROR(filterType__, message__,...)
LootStore LootTemplates_Mail("mail_loot_template", "mail template id", false)
@ MAIL_CHECK_MASK_RETURNED
@ MAIL_STATIONERY_DEFAULT
@ MAIL_STATIONERY_AUCTION
ObjectGuid const & GetGUID() const
virtual void SaveToDB(CharacterDatabaseTransaction trans)
static void DeleteFromDB(CharacterDatabaseTransaction trans, ObjectGuid::LowType itemGuid)
static Item * CreateItem(uint32 itemEntry, uint32 count, ItemContext context, Player const *player=nullptr, bool addDefaultBonuses=true)
void deleteIncludedItems(CharacterDatabaseTransaction trans, bool inDB=false)
std::string const & GetSubject() const
void SendMailTo(CharacterDatabaseTransaction trans, MailReceiver const &receiver, MailSender const &sender, MailCheckMask checked=MAIL_CHECK_MASK_NONE, uint32 deliver_delay=0)
bool m_mailTemplateItemsNeed
void SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, CharacterDatabaseTransaction trans)
uint16 GetMailTemplateId() const
void prepareItems(Player *receiver, CharacterDatabaseTransaction trans)
MailDraft & AddItem(Item *item)
std::string const & GetBody() const
Player * GetPlayer() const
ObjectGuid::LowType GetPlayerGUIDLow() const
MailReceiver(ObjectGuid::LowType receiver_lowguid)
MailStationery m_stationery
ObjectGuid::LowType GetSenderId() const
MailSender(MailMessageType messageType, ObjectGuid::LowType sender_guidlow_or_entry, MailStationery stationery=MAIL_STATIONERY_DEFAULT)
MailMessageType m_messageType
MailMessageType GetMailMessageType() const
MailStationery GetStationery() const
ObjectGuid::LowType m_senderId
LowType GetCounter() const
static ObjectGuid const Empty
void AddNewMailDeliverTime(time_t deliver_time)
bool IsGameMaster() const
void setInt8(uint8 index, int8 value)
void setUInt16(uint8 index, uint16 value)
void setString(uint8 index, std::string &&value)
void setInt64(uint8 index, int64 value)
void setBool(uint8 index, bool value)
void setUInt64(uint8 index, uint64 value)
void setUInt8(uint8 index, uint8 value)
@ CONFIG_MAIL_DELIVERY_DELAY
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
TC_GAME_API Player * FindConnectedPlayer(ObjectGuid const &)
LootItem * LootItemInSlot(uint32 lootListId, Player const *player, NotNormalLootItem **ffaItem=nullptr)
std::vector< LootItem > items
bool FillLoot(uint32 lootId, LootStore const &store, Player *lootOwner, bool personal, bool noEmptyError=false, uint16 lootMode=LOOT_MODE_DEFAULT, ItemContext context=ItemContext::NONE)
ObjectGuid::LowType receiver
ObjectGuid::LowType sender
void AddItem(ObjectGuid::LowType itemGuidLow, uint32 item_template)