diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2016-07-16 20:51:32 -0300 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-05 21:07:32 +0100 |
| commit | 5d36f29843beaaf76d8fe271be78824556997409 (patch) | |
| tree | 85f00bad8d64f1fe1db6b413b88ed5f0fd4511b8 /src/server/game/Handlers/CharacterHandler.cpp | |
| parent | 5565defd9fbf8a0256ce35d1fb23fb14756792c2 (diff) | |
Core/Misc: remove two synch queries and replace them with CharacterInfo cache
(cherry picked from commit 1a52c1cd36b567fc595afa4a5373cc9e6b461a37)
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
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) { |
