diff --git a/src/game/GuildHandler.cpp b/src/game/GuildHandler.cpp index 80417c0f3..d40bb9b4d 100644 --- a/src/game/GuildHandler.cpp +++ b/src/game/GuildHandler.cpp @@ -977,7 +977,7 @@ void WorldSession::HandleGuildBankDeposit( WorldPacket & recv_data ) pGuild->SetBankMoney(pGuild->GetGuildBankMoney()+money); GetPlayer()->ModifyMoney(-int(money)); - GetPlayer()->SaveGoldToDB(); + GetPlayer()->SaveDataFieldToDB(); //contains money CharacterDatabase.CommitTransaction(); @@ -1033,7 +1033,7 @@ void WorldSession::HandleGuildBankWithdraw( WorldPacket & recv_data ) } GetPlayer()->ModifyMoney(money); - GetPlayer()->SaveGoldToDB(); + GetPlayer()->SaveDataFieldToDB(); // contains money CharacterDatabase.CommitTransaction(); diff --git a/src/game/Mail.cpp b/src/game/Mail.cpp index aafcdfa93..06499d15b 100644 --- a/src/game/Mail.cpp +++ b/src/game/Mail.cpp @@ -517,7 +517,7 @@ void WorldSession::HandleTakeMoney(WorldPacket & recv_data ) // save money and mail to prevent cheating CharacterDatabase.BeginTransaction(); - pl->SetUInt32ValueInDB(PLAYER_FIELD_COINAGE,pl->GetMoney(),pl->GetGUID()); + pl->SaveDataFieldToDB(); // contains money pl->_SaveMail(); CharacterDatabase.CommitTransaction(); } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 5d470c924..2c02327c6 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -14993,7 +14993,8 @@ void Player::SaveToDB() void Player::SaveInventoryAndGoldToDB() { _SaveInventory(); - SetUInt32ValueInDB(PLAYER_FIELD_COINAGE,GetMoney(),GetGUID()); + //money is in data field + SaveDataFieldToDB(); } void Player::_SaveActions() @@ -15384,6 +15385,20 @@ void Player::SavePositionInDB(uint32 mapid, float x,float y,float z,float o,uint CharacterDatabase.Execute(ss.str().c_str()); } +void Player::SaveDataFieldToDB() +{ + std::ostringstream ss; + ss<<"UPDATE characters SET data='"; + + for(uint16 i = 0; i < m_valuesCount; i++ ) + { + ss << GetUInt32Value(i) << " "; + } + ss<<"' WHERE guid='"<< GUID_LOPART(GetGUIDLow()) <<"'"; + + CharacterDatabase.Execute(ss.str().c_str()); +} + bool Player::SaveValuesArrayInDB(Tokens const& tokens, uint64 guid) { std::ostringstream ss2; diff --git a/src/game/Player.h b/src/game/Player.h index 659d8c57e..88fbe8009 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1264,7 +1264,7 @@ class MANGOS_DLL_SPEC Player : public Unit void SaveToDB(); void SaveInventoryAndGoldToDB(); // fast save function for item/money cheating preventing - void SaveGoldToDB() { SetUInt32ValueInDB(PLAYER_FIELD_COINAGE,GetMoney(),GetGUID()); } + void SaveDataFieldToDB(); static bool SaveValuesArrayInDB(Tokens const& data,uint64 guid); static void SetUInt32ValueInArray(Tokens& data,uint16 index, uint32 value); static void SetFloatValueInArray(Tokens& data,uint16 index, float value); @@ -1517,7 +1517,7 @@ class MANGOS_DLL_SPEC Player : public Unit void SetInArenaTeam(uint32 ArenaTeamId, uint8 slot) { SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * 6), ArenaTeamId); - SetUInt32ValueInDB(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * 6), ArenaTeamId, GetGUID()); + SaveDataFieldToDB(); // needed? } uint32 GetArenaTeamId(uint8 slot) { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * 6)); } static uint32 GetArenaTeamIdFromDB(uint64 guid, uint8 slot); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a005c5b9a..4828f0151 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "6867" + #define REVISION_NR "6868" #endif // __REVISION_NR_H__