Move LoadFromDB from player session to world session (#1173)

This commit is contained in:
Yunfan Li
2025-04-08 20:54:51 +08:00
committed by GitHub
parent cd5b15ddc1
commit 3f52563ca7
2 changed files with 8 additions and 13 deletions

View File

@@ -116,18 +116,10 @@ void PlayerbotHolder::AddPlayerBot(ObjectGuid playerGuid, uint32 masterAccountId
botLoading.insert(playerGuid); botLoading.insert(playerGuid);
if (WorldSession* masterSession = sWorldSessionMgr->FindSession(masterAccountId)) // Always login in with world session to avoid race condition
{
masterSession->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder))
.AfterComplete([this](SQLQueryHolderBase const& holder)
{ HandlePlayerBotLoginCallback(static_cast<PlayerbotLoginQueryHolder const&>(holder)); });
}
else
{
sWorld->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder)) sWorld->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder))
.AfterComplete([this](SQLQueryHolderBase const& holder) .AfterComplete([this](SQLQueryHolderBase const& holder)
{ HandlePlayerBotLoginCallback(static_cast<PlayerbotLoginQueryHolder const&>(holder)); }); { HandlePlayerBotLoginCallback(static_cast<PlayerbotLoginQueryHolder const&>(holder)); });
}
} }
void PlayerbotHolder::HandlePlayerBotLoginCallback(PlayerbotLoginQueryHolder const& holder) void PlayerbotHolder::HandlePlayerBotLoginCallback(PlayerbotLoginQueryHolder const& holder)

View File

@@ -48,6 +48,9 @@ bool CastCustomSpellAction::Execute(Event event)
if (!target) if (!target)
target = botAI->GetUnit(go); target = botAI->GetUnit(go);
if (!botAI->GetUnit(go) || !botAI->GetUnit(go)->IsInWorld())
continue;
chat->eraseAllSubStr(text, chat->FormatWorldobject(botAI->GetUnit(go))); chat->eraseAllSubStr(text, chat->FormatWorldobject(botAI->GetUnit(go)));
} }