aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/CharacterHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-04-11 00:05:59 +0200
committerShauren <shauren.trinity@gmail.com>2018-04-11 00:05:59 +0200
commit9617778336556cd9b19c77e037fb64344021d9cc (patch)
tree5f395357b812828645ce06c75cd5f92509920f15 /src/server/game/Handlers/CharacterHandler.cpp
parentfdb2b90685ebc3852740c424170101a196c29ebb (diff)
Core/Players: Greatly simplifiy fdb2b90685ebc3852740c424170101a196c29ebb
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 5e6534459e0..700e98902cd 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -397,14 +397,6 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData)
}
}
- // 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;
- }
-
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME);
stmt->setString(0, createInfo->Name);
@@ -556,6 +548,13 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData)
return;
}
+ // Check name uniqueness in the same step as saving to database
+ if (sCharacterCache->GetCharacterCacheByName(createInfo->Name))
+ {
+ SendCharCreate(CHAR_CREATE_NAME_IN_USE);
+ return;
+ }
+
Player newChar(this);
newChar.GetMotionMaster()->Initialize();
if (!newChar.Create(sObjectMgr->GetGenerator<HighGuid::Player>().Generate(), createInfo.get()))