diff options
author | Shauren <shauren.trinity@gmail.com> | 2018-04-11 00:05:59 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-09-25 15:36:50 +0200 |
commit | 52de393f10dae4b21b84bd02aadf929b2283d8fe (patch) | |
tree | bf1b48c4e01685515f1de0ef73d8d2c179d42781 /src/server/game/Handlers/CharacterHandler.cpp | |
parent | 47630708f07b726cf8090c84cfa1d87b634609a0 (diff) |
Core/Players: Greatly simplifiy fdb2b90685ebc3852740c424170101a196c29ebb
(cherry picked from commit 9617778336556cd9b19c77e037fb64344021d9cc)
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 9410cc7174b..e1f6bafa238 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -704,14 +704,6 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact } std::shared_ptr<WorldPackets::Character::CharacterCreateInfo> createInfo = charCreate.CreateInfo; - // Reserve the name for the duration of callback chain - createInfo->NameToken = sCharacterCache->TryCreateCharacterWithName(createInfo->Name); - if (!createInfo->NameToken) - { - SendCharCreate(CHAR_CREATE_NAME_IN_USE); - return; - } - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME); stmt->setString(0, charCreate.CreateInfo->Name); @@ -836,6 +828,13 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact return; } + // Check name uniqueness in the same step as saving to database + if (sCharacterCache->GetCharacterCacheByName(createInfo->Name)) + { + SendCharCreate(CHAR_CREATE_NAME_IN_USE); + return; + } + std::shared_ptr<Player> newChar(new Player(this), [](Player* ptr) { ptr->CleanupsBeforeDelete(); |