57 TC_LOG_ERROR(
"misc",
"MailSender::MailSender - Mail message contains unexpected sender typeid ({}).", sender->
GetTypeId());
125 if (
Item* item =
Item::CreateItem(lootitem->itemid, lootitem->count, lootitem->context, receiver))
127 item->SaveToDB(trans);
136 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
138 Item* item = mailItemIter->second;
151 ObjectGuid receiverGuid = ObjectGuid::Create<HighGuid::Player>(receiver_guid);
156 rc_account =
sCharacterCache->GetCharacterAccountIdByGuid(receiverGuid);
158 if (!receiver && !rc_account)
165 bool needItemDelay =
false;
170 needItemDelay = sender_acc != rc_account;
173 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
175 Item* item = mailItemIter->second;
214 expire_delay = 3 *
DAY;
219 time_t expire_time = deliver_time + expire_delay;
233 stmt->
setInt64 (++index, expire_time);
234 stmt->
setInt64 (++index, deliver_time);
240 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
242 Item* pItem = mailItemIter->second;
263 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
265 Item* item = mailItemIter->second;
282 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
283 pReceiver->
AddMItem(mailItemIter->second);
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
#define TC_LOG_ERROR(filterType__,...)
LootStore LootTemplates_Mail("mail_loot_template", "mail template id", false)
@ MAIL_CHECK_MASK_RETURNED
@ MAIL_STATIONERY_DEFAULT
@ MAIL_STATIONERY_AUCTION
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
static ObjectGuid GetGUID(Object const *o)
void AddNewMailDeliverTime(time_t deliver_time)
bool IsGameMaster() const
void setUInt8(const uint8 index, const uint8 value)
void setInt64(const uint8 index, const int64 value)
void setBool(const uint8 index, const bool value)
void setUInt16(const uint8 index, const uint16 value)
void setString(const uint8 index, const std::string &value)
void setInt8(const uint8 index, const int8 value)
void setUInt64(const uint8 index, const uint64 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)