diff --git a/sql/mangos.sql b/sql/mangos.sql index bfaff7eaa..48bf76334 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -23,7 +23,8 @@ DROP TABLE IF EXISTS `db_version`; CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, - `required_8361_01_mangos_spell_bonus_data` bit(1) default NULL + `cache_id` int(10) default '0', + `required_8364_01_mangos_db_version` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- diff --git a/sql/updates/8364_01_mangos_db_version.sql b/sql/updates/8364_01_mangos_db_version.sql new file mode 100644 index 000000000..97f661316 --- /dev/null +++ b/sql/updates/8364_01_mangos_db_version.sql @@ -0,0 +1,4 @@ +ALTER TABLE db_version CHANGE COLUMN required_8361_01_mangos_spell_bonus_data required_8364_01_mangos_db_version bit; + +ALTER TABLE db_version + ADD COLUMN cache_id int(10) default '0' AFTER creature_ai_version; diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index e1d63eab2..a55e7b9b6 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -81,6 +81,7 @@ pkgdata_DATA = \ 8339_02_characters_character_battleground_data.sql \ 8342_01_mangos_spell_proc_event.sql \ 8361_01_mangos_spell_bonus_data.sql \ + 8364_01_mangos_db_version.sql \ README ## Additional files to include when running 'make dist' @@ -142,4 +143,5 @@ EXTRA_DIST = \ 8339_02_characters_character_battleground_data.sql \ 8342_01_mangos_spell_proc_event.sql \ 8361_01_mangos_spell_bonus_data.sql \ + 8364_01_mangos_db_version.sql \ README diff --git a/src/game/World.cpp b/src/game/World.cpp index 6b6a337d0..65e46058d 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -237,6 +237,11 @@ World::AddSession_ (WorldSession* s) s->SendPacket (&packet); s->SendAddonsInfo(); + + WorldPacket pkt(SMSG_CLIENTCACHE_VERSION, 4); + pkt << uint32(sWorld.getConfig(CONFIG_CLIENTCACHE_VERSION)); + s->SendPacket(&pkt); + s->SendTutorialsData(); UpdateMaxSessionCounters (); @@ -867,7 +872,7 @@ void World::LoadConfigSettings(bool reload) m_configs[CONFIG_MAX_OVERSPEED_PINGS] = sConfig.GetIntDefault("MaxOverspeedPings",2); if(m_configs[CONFIG_MAX_OVERSPEED_PINGS] != 0 && m_configs[CONFIG_MAX_OVERSPEED_PINGS] < 2) { - sLog.outError("MaxOverspeedPings (%i) must be in range 2..infinity (or 0 to disable check. Set to 2.",m_configs[CONFIG_MAX_OVERSPEED_PINGS]); + sLog.outError("MaxOverspeedPings (%i) must be in range 2..infinity (or 0 to disable check). Set to 2.",m_configs[CONFIG_MAX_OVERSPEED_PINGS]); m_configs[CONFIG_MAX_OVERSPEED_PINGS] = 2; } @@ -954,6 +959,15 @@ void World::LoadConfigSettings(bool reload) m_configs[CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET] = sConfig.GetBoolDefault("OffhandCheckAtTalentsReset", false); + if(int clientCacheId = sConfig.GetIntDefault("ClientCacheVersion", 0)) + { + // overwrite DB/old value + if(clientCacheId > 0) + m_configs[CONFIG_CLIENTCACHE_VERSION] = clientCacheId; + else + sLog.outError("ClientCacheVersion can't be negative %d, ignored.", clientCacheId); + } + m_configs[CONFIG_INSTANT_LOGOUT] = sConfig.GetIntDefault("InstantLogout", SEC_MODERATOR); m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1); @@ -2115,13 +2129,16 @@ void World::UpdateMaxSessionCounters() void World::LoadDBVersion() { - QueryResult* result = WorldDatabase.Query("SELECT version, creature_ai_version FROM db_version LIMIT 1"); + QueryResult* result = WorldDatabase.Query("SELECT version, creature_ai_version, cache_id FROM db_version LIMIT 1"); if(result) { Field* fields = result->Fetch(); m_DBVersion = fields[0].GetCppString(); m_CreatureEventAIVersion = fields[1].GetCppString(); + + // will be overwrite by config values if different and non-0 + m_configs[CONFIG_CLIENTCACHE_VERSION] = fields[2].GetUInt32(); delete result; } diff --git a/src/game/World.h b/src/game/World.h index e4ff977f5..ab3dbc77c 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -212,6 +212,7 @@ enum WorldConfigs CONFIG_ARENA_SEASON_ID, CONFIG_ARENA_SEASON_IN_PROGRESS, CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET, + CONFIG_CLIENTCACHE_VERSION, CONFIG_VALUE_COUNT }; diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index ae0ac39ca..232539c9a 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -569,6 +569,11 @@ LogColors = "" # Default: 0 - recheck offhand slot weapon only at zone update # 1 - recheck offhand slot weapon at talent reset also # +# +# ClientCacheVersion +# Client resets cache if WDB files' version is not equal to this value. +# Default: 0 (no real meaning) +# # Event.Announce # Default: 0 (false) # 1 (true) @@ -627,6 +632,7 @@ MailDeliveryDelay = 3600 SkillChance.Prospecting = 0 SkillChance.Milling = 0 OffhandCheckAtTalentsReset = 0 +ClientCacheVersion = 0 Event.Announce = 0 BeepAtStart = 1 Motd = "Welcome to the Massive Network Game Object Server." diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 74062c515..3bf35dd5c 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 "8363" + #define REVISION_NR "8364" #endif // __REVISION_NR_H__