diff options
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 6b6bd1a1f7d..c7960772507 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -705,6 +705,25 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, WorldPac LoginDatabase.CommitTransaction(trans); + if (createInfo->TemplateSet.HasValue) + { + if (HasPermission(rbac::RBAC_PERM_USE_CHARACTER_TEMPLATES)) + { + if (CharacterTemplate const* charTemplate = sObjectMgr->GetCharacterTemplate(createInfo->TemplateSet.Value)) + { + if (charTemplate->Level != 1) + { + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_LEVEL); + stmt->setUInt8(0, uint8(charTemplate->Level)); + stmt->setUInt64(1, newChar.GetGUID().GetCounter()); + CharacterDatabase.Execute(stmt); + } + } + } + else + TC_LOG_WARN("cheat", "Account: %u (IP: %s) tried to use a character template without given permission. Possible cheating attempt.", GetAccountId(), GetRemoteAddress().c_str()); + } + SendCharCreate(CHAR_CREATE_SUCCESS); TC_LOG_INFO("entities.player.character", "Account: %u (IP: %s) Create Character: %s %s", GetAccountId(), GetRemoteAddress().c_str(), createInfo->Name.c_str(), newChar.GetGUID().ToString().c_str()); |