From d6eccbd8e3ad269a129789c11c7e97d25549fcc7 Mon Sep 17 00:00:00 2001 From: hunuza Date: Sun, 28 Mar 2010 15:24:55 +0200 Subject: [PATCH] [9635] Restore load/save shown action bars. Signed-off-by: hunuza --- sql/characters.sql | 3 ++- sql/updates/9635_01_characters_characters.sql | 4 ++++ sql/updates/Makefile.am | 2 ++ src/game/CharacterHandler.cpp | 2 +- src/game/Corpse.cpp | 14 ++++++++------ src/game/Player.cpp | 11 +++++++---- src/shared/revision_nr.h | 2 +- src/shared/revision_sql.h | 2 +- 8 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 sql/updates/9635_01_characters_characters.sql diff --git a/sql/characters.sql b/sql/characters.sql index cfec8189a6a..069ab3f2648 100644 --- a/sql/characters.sql +++ b/sql/characters.sql @@ -21,7 +21,7 @@ DROP TABLE IF EXISTS `character_db_version`; CREATE TABLE `character_db_version` ( - `required_9634_01_characters_corpse` bit(1) default NULL + `required_9635_01_characters_characters` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Last applied sql update to DB'; -- @@ -255,6 +255,7 @@ CREATE TABLE `characters` ( `equipmentCache` longtext, `ammoId` int(10) UNSIGNED NOT NULL default '0', `knownTitles` longtext, + `actionBars` tinyint(3) UNSIGNED NOT NULL default '0', PRIMARY KEY (`guid`), KEY `idx_account` (`account`), KEY `idx_online` (`online`), diff --git a/sql/updates/9635_01_characters_characters.sql b/sql/updates/9635_01_characters_characters.sql new file mode 100644 index 00000000000..5501efed501 --- /dev/null +++ b/sql/updates/9635_01_characters_characters.sql @@ -0,0 +1,4 @@ +ALTER TABLE character_db_version CHANGE COLUMN required_9634_01_characters_corpse required_9635_01_characters_characters bit; + +ALTER TABLE characters + ADD COLUMN `actionBars` tinyint(3) UNSIGNED NOT NULL default '0' AFTER knownTitles; diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 78257d1147b..e43e04a013e 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -94,6 +94,7 @@ pkgdata_DATA = \ 9630_01_characters_characters.sql \ 9632_01_characters_characters.sql \ 9634_01_characters_corpse.sql \ + 9635_01_characters_characters.sql \ README ## Additional files to include when running 'make dist' @@ -168,4 +169,5 @@ EXTRA_DIST = \ 9630_01_characters_characters.sql \ 9632_01_characters_characters.sql \ 9634_01_characters_corpse.sql \ + 9635_01_characters_characters.sql \ README diff --git a/src/game/CharacterHandler.cpp b/src/game/CharacterHandler.cpp index aac4bfb0d43..13e45f6b51e 100644 --- a/src/game/CharacterHandler.cpp +++ b/src/game/CharacterHandler.cpp @@ -72,7 +72,7 @@ bool LoginQueryHolder::Initialize() "position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost," "resettalents_time, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeon_difficulty," "arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk," - "health, power1, power2, power3, power4, power5, power6, power7, specCount, activeSpec, exploredZones, equipmentCache, ammoId, knownTitles FROM characters WHERE guid = '%u'", GUID_LOPART(m_guid)); + "health, power1, power2, power3, power4, power5, power6, power7, specCount, activeSpec, exploredZones, equipmentCache, ammoId, knownTitles, actionBars FROM characters WHERE guid = '%u'", GUID_LOPART(m_guid)); res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADGROUP, "SELECT groupId FROM group_member WHERE memberGuid ='%u'", GUID_LOPART(m_guid)); res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADBOUNDINSTANCES, "SELECT id, permanent, map, difficulty, resettime FROM character_instance LEFT JOIN instance ON instance = id WHERE guid = '%u'", GUID_LOPART(m_guid)); res &= SetPQuery(PLAYER_LOGIN_QUERY_LOADAURAS, "SELECT caster_guid,spell,effect_index,stackcount,amount,maxduration,remaintime,remaincharges FROM character_aura WHERE guid = '%u'", GUID_LOPART(m_guid)); diff --git a/src/game/Corpse.cpp b/src/game/Corpse.cpp index bc9e7a7abef..d827eb094ab 100644 --- a/src/game/Corpse.cpp +++ b/src/game/Corpse.cpp @@ -100,6 +100,9 @@ bool Corpse::Create( uint32 guidlow, Player *owner) void Corpse::SaveToDB() { + // bones should not be saved to DB (would be deleted on startup anyway) + assert(GetType() != CORPSE_BONES); + // prevent DB data inconsistence problems and duplicates CharacterDatabase.BeginTransaction(); DeleteFromDB(); @@ -137,12 +140,11 @@ void Corpse::DeleteBonesFromWorld() void Corpse::DeleteFromDB() { - if(GetType() == CORPSE_BONES) - // only specific bones - CharacterDatabase.PExecute("DELETE FROM corpse WHERE guid = '%d'", GetGUIDLow()); - else - // all corpses (not bones) - CharacterDatabase.PExecute("DELETE FROM corpse WHERE player = '%d' AND corpse_type <> '0'", GUID_LOPART(GetOwnerGUID())); + // bones should not be saved to DB (would be deleted on startup anyway) + assert(GetType() != CORPSE_BONES); + + // all corpses (not bones) + CharacterDatabase.PExecute("DELETE FROM corpse WHERE player = '%d' AND corpse_type <> '0'", GUID_LOPART(GetOwnerGUID())); } bool Corpse::LoadFromDB(uint32 guid, Field *fields) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index e8be1c29937..6eae83bd511 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -14662,8 +14662,8 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) //"resettalents_time, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeon_difficulty," // 39 40 41 42 43 44 45 46 47 48 49 //"arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk," - // 50 51 52 53 54 55 56 57 58 59 60 61 62 63 - //"health, power1, power2, power3, power4, power5, power6, power7, specCount, activeSpec, exploredZones, equipmentCache, ammoId, knownTitles FROM characters WHERE guid = '%u'", GUID_LOPART(m_guid)); + // 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 + //"health, power1, power2, power3, power4, power5, power6, power7, specCount, activeSpec, exploredZones, equipmentCache, ammoId, knownTitles, actionBars FROM characters WHERE guid = '%u'", GUID_LOPART(m_guid)); QueryResult *result = holder->GetResult(PLAYER_LOGIN_QUERY_LOADFROM); if(!result) @@ -14732,6 +14732,7 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) SetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES, fields[47].GetUInt64()); SetUInt32Value(PLAYER_AMMO_ID, fields[62].GetUInt32()); + SetByteValue(PLAYER_FIELD_BYTES, 2, fields[64].GetUInt8()); InitDisplayIds(); @@ -16231,7 +16232,7 @@ void Player::SaveToDB() "trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, " "death_expire_time, taxi_path, arenaPoints, totalHonorPoints, todayHonorPoints, yesterdayHonorPoints, totalKills, " "todayKills, yesterdayKills, chosenTitle, knownCurrencies, watchedFaction, drunk, health, power1, power2, power3, " - "power4, power5, power6, power7, specCount, activeSpec, exploredZones, equipmentCache, ammoId, knownTitles) VALUES (" + "power4, power5, power6, power7, specCount, activeSpec, exploredZones, equipmentCache, ammoId, knownTitles, actionBars) VALUES (" << GetGUIDLow() << ", " << GetSession()->GetAccountId() << ", '" << sql_name << "', " @@ -16351,7 +16352,9 @@ void Player::SaveToDB() { ss << GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES + i) << " "; } - ss << "')"; + ss << "',"; + ss << uint32(GetByteValue(PLAYER_FIELD_BYTES, 2)); + ss << ")"; CharacterDatabase.Execute( ss.str().c_str() ); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 26e9d80776b..cec523f42d3 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 "9634" + #define REVISION_NR "9635" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index 3c785465c36..0180f132ec9 100644 --- a/src/shared/revision_sql.h +++ b/src/shared/revision_sql.h @@ -1,6 +1,6 @@ #ifndef __REVISION_SQL_H__ #define __REVISION_SQL_H__ - #define REVISION_DB_CHARACTERS "required_9634_01_characters_corpse" + #define REVISION_DB_CHARACTERS "required_9635_01_characters_characters" #define REVISION_DB_MANGOS "required_9622_01_mangos_gameobject" #define REVISION_DB_REALMD "required_9010_01_realmd_realmlist" #endif // __REVISION_SQL_H__