diff options
-rw-r--r-- | sql/updates/world/3.3.5/2017_04_24_02_world.sql | 86 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 32 |
2 files changed, 104 insertions, 14 deletions
diff --git a/sql/updates/world/3.3.5/2017_04_24_02_world.sql b/sql/updates/world/3.3.5/2017_04_24_02_world.sql new file mode 100644 index 00000000000..cd8b301ffe1 --- /dev/null +++ b/sql/updates/world/3.3.5/2017_04_24_02_world.sql @@ -0,0 +1,86 @@ +DROP TABLE IF EXISTS `item_template_locale`; +CREATE TABLE IF NOT EXISTS `item_template_locale` ( + `ID` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `locale` VARCHAR(4) NOT NULL, + `Name` TEXT, + `Description` TEXT, + `VerifiedBuild` SMALLINT(5) DEFAULT '0', + PRIMARY KEY (`ID`, `locale`) +) ENGINE=MYISAM DEFAULT CHARSET=utf8; + +-- koKR +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "koKR", `name_loc1`, `description_loc1`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc1) > 0 OR LENGTH(description_loc1) > 0); + +-- frFR +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "frFR", `name_loc2`, `description_loc2`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc2) > 0 OR LENGTH(description_loc2) > 0); + +-- deDE +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "deDE", `name_loc3`, `description_loc3`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc3) > 0 OR LENGTH(description_loc3) > 0); + +-- zhCN +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "zhCN", `name_loc4`, `description_loc4`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc4) > 0 OR LENGTH(description_loc4) > 0); + +-- zhTW +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "zhTW", `name_loc5`, `description_loc5`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc5) > 0 OR LENGTH(description_loc5) > 0); + +-- esES +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "esES", `name_loc6`, `description_loc6`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc6) > 0 OR LENGTH(description_loc6) > 0); + +-- esMX +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "esMX", `name_loc7`, `description_loc7`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc7) > 0 OR LENGTH(description_loc7) > 0); + +-- ruRU +INSERT INTO `item_template_locale` (`ID`, `locale`, `Name`, `Description`, `VerifiedBuild`) + (SELECT `entry`, "ruRU", `name_loc8`, `description_loc8`, `VerifiedBuild` FROM `locales_item` WHERE LENGTH(name_loc8) > 0 OR LENGTH(description_loc8) > 0); + +DROP TABLE IF EXISTS `locales_item`; + +DROP TABLE IF EXISTS `item_set_names_locale`; +CREATE TABLE IF NOT EXISTS `item_set_names_locale` ( + `ID` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `locale` VARCHAR(4) NOT NULL, + `Name` TEXT, + `VerifiedBuild` SMALLINT(5) DEFAULT '0', + PRIMARY KEY (`ID`, `locale`) +) ENGINE=MYISAM DEFAULT CHARSET=utf8; + +-- koKR +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "koKR", `name_loc1`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc1) > 0); + +-- frFR +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "frFR", `name_loc2`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc2) > 0); + +-- deDE +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "deDE", `name_loc3`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc3) > 0); + +-- zhCN +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "zhCN", `name_loc4`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc4) > 0); + +-- zhTW +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "zhTW", `name_loc5`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc5) > 0); + +-- esES +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "esES", `name_loc6`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc6) > 0); + +-- esMX +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "esMX", `name_loc7`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc7) > 0); + +-- ruRU +INSERT INTO `item_set_names_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) + (SELECT `entry`, "ruRU", `name_loc8`, `VerifiedBuild` FROM `locales_item_set_names` WHERE LENGTH(name_loc8) > 0); + +DROP TABLE IF EXISTS `locales_item_set_names`; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 89521fda4a9..15ee1f7e5cd 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2239,7 +2239,8 @@ void ObjectMgr::LoadItemLocales() _itemLocaleStore.clear(); // need for reload case - QueryResult result = WorldDatabase.Query("SELECT entry, name_loc1, description_loc1, name_loc2, description_loc2, name_loc3, description_loc3, name_loc4, description_loc4, name_loc5, description_loc5, name_loc6, description_loc6, name_loc7, description_loc7, name_loc8, description_loc8 FROM locales_item"); + // 0 1 2 3 + QueryResult result = WorldDatabase.Query("SELECT ID, locale, Name, Description FROM item_template_locale"); if (!result) return; @@ -2248,16 +2249,16 @@ void ObjectMgr::LoadItemLocales() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); + std::string Name = fields[2].GetString(); + std::string Description = fields[3].GetString(); - ItemLocale& data = _itemLocaleStore[entry]; + ItemLocale& data = _itemLocaleStore[id]; + LocaleConstant locale = GetLocaleByName(localeName); - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) - { - LocaleConstant locale = (LocaleConstant) i; - AddLocaleString(fields[1 + 2 * (i - 1)].GetString(), locale, data.Name); - AddLocaleString(fields[1 + 2 * (i - 1) + 1].GetString(), locale, data.Description); - } + AddLocaleString(Name, locale, data.Name); + AddLocaleString(Description, locale, data.Description); } while (result->NextRow()); TC_LOG_INFO("server.loading", ">> Loaded %u Item locale strings in %u ms", uint32(_itemLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); @@ -2884,7 +2885,8 @@ void ObjectMgr::LoadItemSetNameLocales() _itemSetNameLocaleStore.clear(); // need for reload case - QueryResult result = WorldDatabase.Query("SELECT `entry`, `name_loc1`, `name_loc2`, `name_loc3`, `name_loc4`, `name_loc5`, `name_loc6`, `name_loc7`, `name_loc8` FROM `locales_item_set_names`"); + // 0 1 2 + QueryResult result = WorldDatabase.Query("SELECT ID, locale, Name FROM item_set_names_locale"); if (!result) return; @@ -2893,12 +2895,14 @@ void ObjectMgr::LoadItemSetNameLocales() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); + std::string Name = fields[2].GetString(); - ItemSetNameLocale& data = _itemSetNameLocaleStore[entry]; + ItemSetNameLocale& data = _itemSetNameLocaleStore[id]; + LocaleConstant locale = GetLocaleByName(localeName); - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) - AddLocaleString(fields[i].GetString(), LocaleConstant(i), data.Name); + AddLocaleString(Name, locale, data.Name); } while (result->NextRow()); TC_LOG_INFO("server.loading", ">> Loaded " UI64FMTD " Item set name locale strings in %u ms", uint64(_itemSetNameLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); |