188{
189 sScriptMgr->OnBeforeMailDraftSendMailTo(
this, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail);
190
191 if (deleteMailItemsFromDB)
193
194 if (!sendMail)
195 return;
196
197 Player* pReceiver = receiver.GetPlayer();
198
199 if (pReceiver)
201
202
203
204
205 if (!pReceiver)
207
209
211
212
214
215
218
221
223 expire_delay = 3 *
DAY;
224 else if (custom_expiration > 0)
225 expire_delay = custom_expiration *
DAY;
226 else
227 {
230 }
231
232 time_t expire_time = deliver_time + expire_delay;
233
234
238 stmt->
SetData(++index,
uint8(sender.GetMailMessageType()));
239 stmt->
SetData(++index,
int8(sender.GetStationery()));
241 stmt->
SetData(++index, sender.GetSenderId());
242 stmt->
SetData(++index, receiver.GetPlayerGUIDLow());
251 trans->Append(stmt);
252
253 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
254 {
257 stmt->
SetData(1, mailItemIter->second->GetGUID().GetCounter());
258 stmt->
SetData(2, receiver.GetPlayerGUIDLow());
259 trans->Append(stmt);
260 }
261
262 sMailMgr->OnMailSent(receiver.GetPlayerGUIDLow());
263
264
265 if (pReceiver)
266 {
274
275 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
276 {
277 Item* item = mailItemIter->second;
279 }
280
283 m->
sender = sender.GetSenderId();
284 m->
receiver = receiver.GetPlayerGUIDLow();
289
291
293 {
294 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
295 {
296 pReceiver->
AddMItem(mailItemIter->second);
297 }
298
299
300
301
303 }
304
305
307 }
309 {
311 }
312}
#define sBattlegroundMgr
Definition BattlegroundMgr.h:190
@ CHAR_INS_MAIL_ITEM
Definition CharacterDatabase.h:111
@ CHAR_INS_MAIL
Definition CharacterDatabase.h:109
constexpr auto DAY
Definition Common.h:49
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition DatabaseEnvFwd.h:69
std::uint8_t uint8
Definition Define.h:109
std::int8_t int8
Definition Define.h:105
#define sMailMgr
Definition MailMgr.h:85
@ MAIL_STATE_UNCHANGED
Definition Mail.h:68
@ MAIL_AUCTION
Definition Mail.h:38
@ MAIL_CREATURE
Definition Mail.h:39
#define sObjectMgr
Definition ObjectMgr.h:1731
#define sScriptMgr
Definition ScriptMgr.h:766
@ BATTLEGROUND_TYPE_NONE
Definition SharedDefines.h:3736
@ CONFIG_MAIL_DELIVERY_DELAY
Definition WorldConfig.h:220
void deleteIncludedItems(CharacterDatabaseTransaction trans, bool inDB=false)
Definition Mail.cpp:134
uint32 GetCOD() const
Definition Mail.h:132
uint32 GetMoney() const
Definition Mail.h:131
std::string const & GetSubject() const
Definition Mail.h:130
uint16 GetMailTemplateId() const
Definition Mail.h:129
void prepareItems(Player *receiver, CharacterDatabaseTransaction trans)
Definition Mail.cpp:101
std::string const & GetBody() const
Definition Mail.h:133
uint32 GetEntry() const
Definition Object.h:123
void AddNewMailDeliverTime(time_t deliver_time)
Definition Player.cpp:2989
void AddMItem(Item *it)
Definition Player.h:1700
WorldSession * GetSession() const
Definition Player.h:2031
void AddMail(Mail *mail)
Definition Player.h:1674
AccountTypes GetSecurity() const
Definition WorldSession.h:490
#define sWorld
Definition World.h:318
Seconds GetGameTime()
Definition GameTime.cpp:38
Player * FindPlayerByLowGUID(ObjectGuid::LowType lowguid)
Definition ObjectAccessor.cpp:275
Player * FindConnectedPlayer(ObjectGuid const guid)
Definition ObjectAccessor.cpp:281
ObjectGuid::LowType receiver
Definition Mail.h:173
uint8 messageType
Definition Mail.h:169
uint32 messageID
Definition Mail.h:168
time_t expire_time
Definition Mail.h:178
uint32 sender
Definition Mail.h:172
uint8 stationery
Definition Mail.h:170
std::string subject
Definition Mail.h:174
std::string body
Definition Mail.h:175
void AddItem(ObjectGuid::LowType itemGuidLow, uint32 item_template)
Definition Mail.h:185
time_t deliver_time
Definition Mail.h:179
uint32 COD
Definition Mail.h:181
uint32 checked
Definition Mail.h:182
MailState state
Definition Mail.h:183
uint32 money
Definition Mail.h:180
uint16 mailTemplateId
Definition Mail.h:171