From 3f52563ca756fa66644a77394ac27d5a4bcfbaa8 Mon Sep 17 00:00:00 2001 From: Yunfan Li <56597220+liyunfan1223@users.noreply.github.com> Date: Tue, 8 Apr 2025 20:54:51 +0800 Subject: [PATCH] Move LoadFromDB from player session to world session (#1173) --- src/PlayerbotMgr.cpp | 16 ++++------------ src/strategy/actions/CastCustomSpellAction.cpp | 5 ++++- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/PlayerbotMgr.cpp b/src/PlayerbotMgr.cpp index ba3aceae..59fad35d 100644 --- a/src/PlayerbotMgr.cpp +++ b/src/PlayerbotMgr.cpp @@ -116,18 +116,10 @@ void PlayerbotHolder::AddPlayerBot(ObjectGuid playerGuid, uint32 masterAccountId botLoading.insert(playerGuid); - if (WorldSession* masterSession = sWorldSessionMgr->FindSession(masterAccountId)) - { - masterSession->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder)) - .AfterComplete([this](SQLQueryHolderBase const& holder) - { HandlePlayerBotLoginCallback(static_cast(holder)); }); - } - else - { - sWorld->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder)) - .AfterComplete([this](SQLQueryHolderBase const& holder) - { HandlePlayerBotLoginCallback(static_cast(holder)); }); - } + // Always login in with world session to avoid race condition + sWorld->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(holder)) + .AfterComplete([this](SQLQueryHolderBase const& holder) + { HandlePlayerBotLoginCallback(static_cast(holder)); }); } void PlayerbotHolder::HandlePlayerBotLoginCallback(PlayerbotLoginQueryHolder const& holder) diff --git a/src/strategy/actions/CastCustomSpellAction.cpp b/src/strategy/actions/CastCustomSpellAction.cpp index c7b2d0a8..5213d1e7 100644 --- a/src/strategy/actions/CastCustomSpellAction.cpp +++ b/src/strategy/actions/CastCustomSpellAction.cpp @@ -47,7 +47,10 @@ bool CastCustomSpellAction::Execute(Event event) { if (!target) target = botAI->GetUnit(go); - + + if (!botAI->GetUnit(go) || !botAI->GetUnit(go)->IsInWorld()) + continue; + chat->eraseAllSubStr(text, chat->FormatWorldobject(botAI->GetUnit(go))); }