aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2016-07-16 20:51:32 -0300
committerjoschiwald <joschiwald.trinity@gmail.com>2017-02-05 21:07:32 +0100
commit5d36f29843beaaf76d8fe271be78824556997409 (patch)
tree85f00bad8d64f1fe1db6b413b88ed5f0fd4511b8 /src/server/game
parent5565defd9fbf8a0256ce35d1fb23fb14756792c2 (diff)
Core/Misc: remove two synch queries and replace them with CharacterInfo cache
(cherry picked from commit 1a52c1cd36b567fc595afa4a5373cc9e6b461a37)
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp11
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp20
2 files changed, 13 insertions, 18 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index d0e08295569..ee7b23f9a88 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -2337,13 +2337,12 @@ bool ObjectMgr::GetPlayerNameByGUID(ObjectGuid const& guid, std::string& name)
return true;
}
- if (CharacterInfo const* characterInfo = sWorld->GetCharacterInfo(guid))
- {
- name = characterInfo->Name;
- return true;
- }
+ CharacterInfo const* characterInfo = sWorld->GetCharacterInfo(guid);
+ if (!characterInfo)
+ return false;
- return false;
+ name = characterInfo->Name;
+ return true;
}
bool ObjectMgr::GetPlayerNameAndClassByGUID(ObjectGuid const& guid, std::string& name, uint8& _class)
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 9eccfde208e..c9806ca8963 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -811,21 +811,17 @@ void WorldSession::HandleCharDeleteOpcode(WorldPackets::Character::CharDelete& c
return;
}
- uint32 accountId = 0;
- uint8 level = 0;
- std::string name;
-
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_DATA_BY_GUID);
- stmt->setUInt64(0, charDelete.Guid.GetCounter());
-
- if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
+ CharacterInfo const* characterInfo = sWorld->GetCharacterInfo(charDelete.Guid);
+ if (!characterInfo)
{
- Field* fields = result->Fetch();
- accountId = fields[0].GetUInt32();
- name = fields[1].GetString();
- level = fields[2].GetUInt8();
+ sScriptMgr->OnPlayerFailedDelete(charDelete.Guid, initAccountId);
+ return;
}
+ uint32 accountId = characterInfo->AccountId;
+ std::string name = characterInfo->Name;
+ uint8 level = characterInfo->Level;
+
// prevent deleting other players' characters using cheating tools
if (accountId != initAccountId)
{