mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 09:17:36 +01:00
Core/Player: Wait for correct transaction on character creation
This commit is contained in:
@@ -19625,6 +19625,15 @@ bool Player::_LoadHomeBind(PreparedQueryResult result)
|
||||
/*********************************************************/
|
||||
|
||||
void Player::SaveToDB(bool create /*=false*/)
|
||||
{
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
SaveToDB(trans, create);
|
||||
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
void Player::SaveToDB(CharacterDatabaseTransaction trans, bool create /* = false */)
|
||||
{
|
||||
// delay auto save at any saves (manual, in code, or autosave)
|
||||
m_nextSave = sWorld->getIntConfig(CONFIG_INTERVAL_SAVE);
|
||||
@@ -19645,7 +19654,6 @@ void Player::SaveToDB(bool create /*=false*/)
|
||||
if (!create)
|
||||
sScriptMgr->OnPlayerSave(this);
|
||||
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabasePreparedStatement* stmt = nullptr;
|
||||
uint8 index = 0;
|
||||
|
||||
@@ -19972,8 +19980,6 @@ void Player::SaveToDB(bool create /*=false*/)
|
||||
if (m_session->isLogingOut() || !sWorld->getBoolConfig(CONFIG_STATS_SAVE_ONLY_ON_LOGOUT))
|
||||
_SaveStats(trans);
|
||||
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
// save pet (hunter pet level and experience and all type pets health/mana).
|
||||
if (Pet* pet = GetPet())
|
||||
pet->SavePetToDB(PET_SAVE_CURRENT_STATE);
|
||||
|
||||
@@ -1497,6 +1497,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
/*********************************************************/
|
||||
|
||||
void SaveToDB(bool create = false);
|
||||
void SaveToDB(CharacterDatabaseTransaction trans, bool create = false);
|
||||
void SaveInventoryAndGoldToDB(CharacterDatabaseTransaction& trans); // fast save function for item/money cheating preventing
|
||||
void SaveGoldToDB(CharacterDatabaseTransaction& trans) const;
|
||||
|
||||
|
||||
@@ -618,8 +618,9 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData)
|
||||
|
||||
newChar->SetAtLoginFlag(AT_LOGIN_FIRST); // First login
|
||||
|
||||
// Player created, save it now
|
||||
newChar->SaveToDB(true);
|
||||
CharacterDatabaseTransaction characterTransaction = CharacterDatabase.BeginTransaction();
|
||||
// Player created, save it now
|
||||
newChar->SaveToDB(characterTransaction, true);
|
||||
createInfo->CharCount += 1;
|
||||
|
||||
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
|
||||
@@ -637,7 +638,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData)
|
||||
|
||||
LoginDatabase.CommitTransaction(trans);
|
||||
|
||||
AddTransactionCallback(LoginDatabase.AsyncCommitTransaction(trans)).AfterComplete([this, newChar = std::move(newChar)](bool success)
|
||||
AddTransactionCallback(CharacterDatabase.AsyncCommitTransaction(characterTransaction)).AfterComplete([this, newChar = std::move(newChar)](bool success)
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user