aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2015-07-18 19:58:13 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2015-07-18 19:58:13 +0200
commitf4536f38123c536d90733d047e1072b4dd88e910 (patch)
treed7bf87863679f79e95e88545459c7452d602c2d8
parent21b11e67fe2e3e630954ac52d3bf04c5cb17e993 (diff)
Core/Misc: Update game object template locale in simple system
-rw-r--r--sql/updates/world/2015_07_18_04_world.sql46
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h1
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp30
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp28
4 files changed, 80 insertions, 25 deletions
diff --git a/sql/updates/world/2015_07_18_04_world.sql b/sql/updates/world/2015_07_18_04_world.sql
new file mode 100644
index 00000000000..dcdb7c2a590
--- /dev/null
+++ b/sql/updates/world/2015_07_18_04_world.sql
@@ -0,0 +1,46 @@
+DROP TABLE IF EXISTS `gameobject_template_locale`;
+CREATE TABLE IF NOT EXISTS `gameobject_template_locale` (
+ `entry` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
+ `locale` VARCHAR(4) NOT NULL,
+ `name` TEXT,
+ `castBarCaption` TEXT,
+ `unk1` TEXT,
+ `VerifiedBuild` SMALLINT(5) DEFAULT '0'
+) ENGINE=MYISAM DEFAULT CHARSET=utf8;
+
+ALTER TABLE `gameobject_template_locale`
+ ADD PRIMARY KEY (`entry`,`locale`);
+
+-- koKR
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "koKR", `name_loc1`, `castbarcaption_loc1`, `VerifiedBuild` FROM `locales_gameobject`);
+
+-- frFR
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "frFR", `name_loc2`, `castbarcaption_loc2`, `VerifiedBuild` FROM `locales_gameobject`);
+
+-- deDE
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "deDE", `name_loc3`, `castbarcaption_loc3`, `VerifiedBuild` FROM `locales_gameobject`);
+
+-- zhCN
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "zhCN", `name_loc4`, `castbarcaption_loc4`, `VerifiedBuild` FROM `locales_gameobject`);
+
+-- zhTW
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "zhTW", `name_loc5`, `castbarcaption_loc5`, `VerifiedBuild` FROM `locales_gameobject`);
+
+-- esES
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "esES", `name_loc6`, `castbarcaption_loc6`, `VerifiedBuild` FROM `locales_gameobject`);
+
+-- esMX
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "esMX", `name_loc7`, `castbarcaption_loc7`, `VerifiedBuild` FROM `locales_gameobject`);
+
+-- ruRU
+INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`)
+ (SELECT `entry`, "ruRU", `name_loc8`, `castbarcaption_loc8`, `VerifiedBuild` FROM `locales_gameobject`);
+
+DROP TABLE IF EXISTS `locales_gameobject`;
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index c00cbe1d350..efd2eba2d00 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -804,6 +804,7 @@ struct GameObjectLocale
{
StringVector Name;
StringVector CastBarCaption;
+ StringVector Unk1;
};
// `gameobject_addon` table
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 1e412e5796f..a4a12215c05 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -6388,13 +6388,10 @@ void ObjectMgr::LoadGameObjectLocales()
{
uint32 oldMSTime = getMSTime();
- _gameObjectLocaleStore.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, "
- "castbarcaption_loc1, castbarcaption_loc2, castbarcaption_loc3, castbarcaption_loc4, "
- "castbarcaption_loc5, castbarcaption_loc6, castbarcaption_loc7, castbarcaption_loc8 FROM locales_gameobject");
+ _gameObjectLocaleStore.clear(); // need for reload case
+ // 0 1 2 3 4
+ QueryResult result = WorldDatabase.Query("SELECT entry, locale, name, castBarCaption, unk1 FROM gameobject_template_locale");
if (!result)
return;
@@ -6402,18 +6399,23 @@ void ObjectMgr::LoadGameObjectLocales()
{
Field* fields = result->Fetch();
- uint32 entry = fields[0].GetUInt32();
+ uint32 id = fields[0].GetUInt32();
+ std::string localeName = fields[1].GetString();
- GameObjectLocale& data = _gameObjectLocaleStore[entry];
+ std::string name = fields[2].GetString();
+ std::string castBarCaption = fields[3].GetString();
+ std::string unk1 = fields[4].GetString();
+
+ GameObjectLocale& data = _gameObjectLocaleStore[id];
+ LocaleConstant locale = GetLocaleByName(localeName);
+
+ AddLocaleString(name, locale, data.Name);
+ AddLocaleString(castBarCaption, locale, data.CastBarCaption);
+ AddLocaleString(unk1, locale, data.Unk1);
- for (uint8 i = OLD_TOTAL_LOCALES - 1; i > 0; --i)
- {
- AddLocaleString(fields[i].GetString(), LocaleConstant(i), data.Name);
- AddLocaleString(fields[i + (OLD_TOTAL_LOCALES - 1)].GetString(), LocaleConstant(i), data.CastBarCaption);
- }
} while (result->NextRow());
- TC_LOG_INFO("server.loading", ">> Loaded %u gameobject locale strings in %u ms", uint32(_gameObjectLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded %u gameobject_template_locale strings in %u ms", uint32(_gameObjectLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime));
}
inline void CheckGOLockId(GameObjectTemplate const* goInfo, uint32 dataN, uint32 N)
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index 5d40165df04..fdbe74fd123 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -126,26 +126,32 @@ void WorldSession::HandleGameObjectQueryOpcode(WorldPackets::Query::QueryGameObj
response.Allow = true;
WorldPackets::Query::GameObjectStats& stats = response.Stats;
- stats.CastBarCaption = gameObjectInfo->castBarCaption;
+ stats.Type = gameObjectInfo->type;
stats.DisplayID = gameObjectInfo->displayId;
- stats.IconName = gameObjectInfo->IconName;
+
stats.Name[0] = gameObjectInfo->name;
+ stats.IconName = gameObjectInfo->IconName;
+ stats.CastBarCaption = gameObjectInfo->castBarCaption;
+ stats.UnkString = gameObjectInfo->unk1;
- GameObjectQuestItemList const* items = sObjectMgr->GetGameObjectQuestItemList(packet.GameObjectID);
- if (items)
+ LocaleConstant localeConstant = GetSessionDbLocaleIndex();
+ if (localeConstant >= LOCALE_enUS)
+ if (GameObjectLocale const* gameObjectLocale = sObjectMgr->GetGameObjectLocale(packet.GameObjectID))
+ {
+ ObjectMgr::GetLocaleString(gameObjectLocale->Name, localeConstant, stats.Name[0]);
+ ObjectMgr::GetLocaleString(gameObjectLocale->CastBarCaption, localeConstant, stats.CastBarCaption);
+ ObjectMgr::GetLocaleString(gameObjectLocale->Unk1, localeConstant, stats.UnkString);
+ }
+
+ stats.Size = gameObjectInfo->size;
+
+ if (GameObjectQuestItemList const* items = sObjectMgr->GetGameObjectQuestItemList(packet.GameObjectID))
for (uint32 item : *items)
stats.QuestItems.push_back(item);
for (uint32 i = 0; i < MAX_GAMEOBJECT_DATA; i++)
stats.Data[i] = gameObjectInfo->raw.data[i];
-
- stats.Size = gameObjectInfo->size;
- stats.Type = gameObjectInfo->type;
- stats.UnkString = gameObjectInfo->unk1;
- stats.Expansion = 0;
}
- else
- response.Allow = false;
SendPacket(response.Write());
}