Core/Misc: Update game object template locale in simple system
This commit is contained in:
@@ -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`;
|
||||
@@ -804,6 +804,7 @@ struct GameObjectLocale
|
||||
{
|
||||
StringVector Name;
|
||||
StringVector CastBarCaption;
|
||||
StringVector Unk1;
|
||||
};
|
||||
|
||||
// `gameobject_addon` table
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
GameObjectQuestItemList const* items = sObjectMgr->GetGameObjectQuestItemList(packet.GameObjectID);
|
||||
if (items)
|
||||
stats.Name[0] = gameObjectInfo->name;
|
||||
stats.IconName = gameObjectInfo->IconName;
|
||||
stats.CastBarCaption = gameObjectInfo->castBarCaption;
|
||||
stats.UnkString = gameObjectInfo->unk1;
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user