From 57eaab80d9e1f6f25274f376da16e1f2f67ab4bc Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 30 Jul 2020 20:38:04 +0200 Subject: Core/Mail: Load mails at login instead of on demand when queried by packets (logging in always sends one of the packets that cause mail loading anyway) --- src/server/game/Globals/ObjectMgr.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'src/server/game/Globals/ObjectMgr.cpp') diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 52eca422e6c..57a773eab2b 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6274,11 +6274,15 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) do { Field* fields = result->Fetch(); + ObjectGuid::LowType receiver = fields[3].GetUInt32(); + if (serverUp && ObjectAccessor::FindConnectedPlayer(ObjectGuid(HighGuid::Player, receiver))) + continue; + Mail* m = new Mail; m->messageID = fields[0].GetUInt32(); m->messageType = fields[1].GetUInt8(); m->sender = fields[2].GetUInt32(); - m->receiver = fields[3].GetUInt32(); + m->receiver = receiver; bool has_items = fields[4].GetBool(); m->expire_time = time_t(fields[5].GetUInt32()); m->deliver_time = 0; @@ -6286,17 +6290,6 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) m->checked = fields[7].GetUInt8(); m->mailTemplateId = fields[8].GetInt16(); - Player* player = nullptr; - if (serverUp) - player = ObjectAccessor::FindConnectedPlayer(ObjectGuid(HighGuid::Player, m->receiver)); - - if (player && player->m_mailsLoaded) - { // this code will run very improbably (the time is between 4 and 5 am, in game is online a player, who has old mail - // his in mailbox and he has already listed his mails) - delete m; - continue; - } - // Delete or return mail if (has_items) { -- cgit v1.2.3