diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index ae84e8347..04a9f5d0e 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -432,7 +432,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) std::function finalizeCharacterCreation = [this, createInfo](PreparedQueryResult result) { - if (!sScriptMgr->CanAccountCreateCharacter(createInfo, GetAccountId())) + if (!sScriptMgr->CanAccountCreateCharacter(GetAccountId(), createInfo->Race, createInfo->Class)) { SendCharCreate(CHAR_CREATE_DISABLED); return; diff --git a/src/server/game/Scripting/ScriptDefines/AccountScript.cpp b/src/server/game/Scripting/ScriptDefines/AccountScript.cpp index 4368e87d0..ff12bd54e 100644 --- a/src/server/game/Scripting/ScriptDefines/AccountScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/AccountScript.cpp @@ -82,11 +82,11 @@ void ScriptMgr::OnFailedPasswordChange(uint32 accountId) }); } -bool ScriptMgr::CanAccountCreateCharacter(std::shared_ptr createInfo, uint32 accountId) +bool ScriptMgr::CanAccountCreateCharacter(uint32 accountId, uint8 charRace, uint8 charClass) { auto ret = IsValidBoolScript([&](AccountScript* script) { - return !script->CanAccountCreateCharacter(createInfo, accountId); + return !script->CanAccountCreateCharacter(accountId, charRace, charClass); }); if (ret && *ret) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index ec4fa798e..680c75747 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -1461,7 +1461,7 @@ public: virtual void OnFailedPasswordChange(uint32 /*accountId*/) { } // Called when creating a character on the Account - [[nodiscard]] virtual bool CanAccountCreateCharacter(std::shared_ptr /*createInfo*/, uint32 /*accountId*/) { return true;} + [[nodiscard]] virtual bool CanAccountCreateCharacter(uint32 /*accountId*/, uint8 /*charRace*/, uint8 /*charClass*/) { return true;} }; class GuildScript : public ScriptObject @@ -2360,7 +2360,7 @@ public: /* AccountScript */ void OnFailedEmailChange(uint32 accountId); void OnPasswordChange(uint32 accountId); void OnFailedPasswordChange(uint32 accountId); - bool CanAccountCreateCharacter(std::shared_ptr createInfo, uint32 accountId); + bool CanAccountCreateCharacter(uint32 accountId, uint8 charRace, uint8 charClass); public: /* GuildScript */ void OnGuildAddMember(Guild* guild, Player* player, uint8& plRank);