diff options
author | Vincent-Michael <Vincent_Michael@gmx.de> | 2015-04-10 18:10:52 +0200 |
---|---|---|
committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2015-04-10 18:16:00 +0200 |
commit | 653954c14d6136295691e18d7e21918d46d0761f (patch) | |
tree | e842dec20cb3c73968ee65151c6c9176d12f3df3 /src | |
parent | 38def5969a3e3c7aa07f9ab6fdad0103ef265b21 (diff) |
Core/Misc:
- Update LocaleConstant enum
- Update Quest locale system for WoD
- Fix some rnd typo in quest template
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Accounts/RBAC.h | 2 | ||||
-rw-r--r-- | src/server/game/Chat/ChatLink.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 94 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 112 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 21 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.h | 17 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.cpp | 31 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_lookup.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_reload.cpp | 14 | ||||
-rw-r--r-- | src/server/shared/Common.cpp | 10 | ||||
-rw-r--r-- | src/server/shared/Common.h | 11 |
14 files changed, 183 insertions, 140 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index edd63404543..bcd20af30ae 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -571,7 +571,7 @@ enum RBACPermissions RBAC_PERM_COMMAND_RELOAD_LOCALES_NPC_TEXT = 664, RBAC_PERM_COMMAND_RELOAD_LOCALES_PAGE_TEXT = 665, RBAC_PERM_COMMAND_RELOAD_LOCALES_POINTS_OF_INTEREST = 666, - RBAC_PERM_COMMAND_RELOAD_LOCALES_QUEST = 667, + RBAC_PERM_COMMAND_RELOAD_QUEST_LOCALE = 667, RBAC_PERM_COMMAND_RELOAD_MAIL_LEVEL_REWARD = 668, RBAC_PERM_COMMAND_RELOAD_MAIL_LOOT_TEMPLATE = 669, RBAC_PERM_COMMAND_RELOAD_MILLING_LOOT_TEMPLATE = 670, diff --git a/src/server/game/Chat/ChatLink.cpp b/src/server/game/Chat/ChatLink.cpp index ea12ff91a1d..89a7d64c432 100644 --- a/src/server/game/Chat/ChatLink.cpp +++ b/src/server/game/Chat/ChatLink.cpp @@ -242,7 +242,7 @@ bool QuestChatLink::ValidateName(char* buffer, const char* context) bool res = (_quest->GetLogTitle() == buffer); if (!res) - if (QuestLocale const* ql = sObjectMgr->GetQuestLocale(_quest->GetQuestId())) + if (QuestTemplateLocale const* ql = sObjectMgr->GetQuestLocale(_quest->GetQuestId())) for (uint8 i = 0; i < ql->LogTitle.size(); i++) if (ql->LogTitle[i] == buffer) { diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 2e52ad10641..23fc857e2d1 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -237,7 +237,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) std::string title = quest->GetLogTitle(); int32 locale = _session->GetSessionDbLocaleIndex(); if (locale >= 0) - if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(questID)) + if (QuestTemplateLocale const* localeData = sObjectMgr->GetQuestLocale(questID)) ObjectMgr::GetLocaleString(localeData->LogTitle, locale, title); if (questLevelInTitle) @@ -355,7 +355,7 @@ void PlayerMenu::SendQuestGiverQuestList(QEmote const& eEmote, const std::string int32 locale = _session->GetSessionDbLocaleIndex(); if (locale >= 0) - if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(questID)) + if (QuestTemplateLocale const* localeData = sObjectMgr->GetQuestLocale(questID)) ObjectMgr::GetLocaleString(localeData->LogTitle, locale, title); if (questLevelInTitle) @@ -394,7 +394,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU int32 locale = _session->GetSessionDbLocaleIndex(); if (locale >= 0) { - if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) + if (QuestTemplateLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) { ObjectMgr::GetLocaleString(localeData->LogTitle, locale, questLogTitle); ObjectMgr::GetLocaleString(localeData->LogDescription, locale, questLogDescription); @@ -456,6 +456,8 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const { + LocaleConstant locale = _session->GetSessionDbLocaleIndex(); + std::string questLogTitle = quest->GetLogTitle(); std::string questLogDescription = quest->GetLogDescription(); std::string questDescription = quest->GetQuestDescription(); @@ -466,29 +468,19 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const std::string portraitTurnInText = quest->GetPortraitTurnInText(); std::string portraitTurnInName = quest->GetPortraitTurnInName(); - QuestObjectives const& objectives = quest->GetObjectives(); - - std::vector<std::string> questObjectiveDescription(objectives.size()); - for (uint8 i = 0; i < objectives.size(); ++i) - questObjectiveDescription[i] = objectives[i].Description; - - int32 locale = _session->GetSessionDbLocaleIndex(); - if (locale >= 0) + if (locale >= LOCALE_enUS) { - if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) + if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(quest->GetQuestId())) { - ObjectMgr::GetLocaleString(localeData->LogTitle, locale, questLogTitle); - ObjectMgr::GetLocaleString(localeData->LogDescription, locale, questLogDescription); - ObjectMgr::GetLocaleString(localeData->QuestDescription, locale, questDescription); - ObjectMgr::GetLocaleString(localeData->AreaDescription, locale, areaDescription); - ObjectMgr::GetLocaleString(localeData->QuestCompletionLog, locale, questCompletionLog); - ObjectMgr::GetLocaleString(localeData->PortraitGiverText, locale, portraitGiverText); - ObjectMgr::GetLocaleString(localeData->PortraitGiverName, locale, portraitGiverName); - ObjectMgr::GetLocaleString(localeData->PortraitTurnInText, locale, portraitTurnInText); - ObjectMgr::GetLocaleString(localeData->PortraitTurnInName, locale, portraitTurnInName); - - for (uint8 i = 0; i < objectives.size(); ++i) - ObjectMgr::GetLocaleString(localeData->ObjectiveDescription[i], locale, questObjectiveDescription[i]); + ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, locale, questLogTitle); + ObjectMgr::GetLocaleString(questTemplateLocale->LogDescription, locale, questLogDescription); + ObjectMgr::GetLocaleString(questTemplateLocale->QuestDescription, locale, questDescription); + ObjectMgr::GetLocaleString(questTemplateLocale->AreaDescription, locale, areaDescription); + ObjectMgr::GetLocaleString(questTemplateLocale->QuestCompletionLog, locale, questCompletionLog); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverText, locale, portraitGiverText); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverName, locale, portraitGiverName); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInText, locale, portraitTurnInText); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInName, locale, portraitTurnInName); } } @@ -575,11 +567,15 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const packet.Info.QuestCompletionLog = questCompletionLog; packet.Info.AllowableRaces = quest->GetAllowableRaces(); - for (QuestObjective const& obj : quest->Objectives) + for (QuestObjective const& questObjective : quest->GetObjectives()) { - packet.Info.Objectives.push_back(obj); - // @todo update quets objective locales - //packet.Info.Objectives.back().Description = questObjectiveDescription[i]; + packet.Info.Objectives.push_back(questObjective); + + if (locale >= LOCALE_enUS) + { + if (QuestObjectivesLocale const* questObjectivesLocaleData = sObjectMgr->GetQuestObjectivesLocale(questObjective.ID)) + ObjectMgr::GetLocaleString(questObjectivesLocaleData->Description, locale, packet.Info.Objectives.back().Description); + } } for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) @@ -605,24 +601,24 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool enableNext) const { - std::string questTitle = quest->GetLogTitle(); - std::string questOfferRewardText = quest->GetOfferRewardText(); - std::string portraitGiverText = quest->GetPortraitGiverText(); - std::string portraitGiverName = quest->GetPortraitGiverName(); - std::string portraitTurnInText = quest->GetPortraitTurnInText(); - std::string portraitTurnInName = quest->GetPortraitTurnInName(); - - int32 locale = _session->GetSessionDbLocaleIndex(); - if (locale >= 0) + std::string questTitle = quest->GetLogTitle(); + std::string questOfferRewardText = quest->GetOfferRewardText(); + std::string portraitGiverText = quest->GetPortraitGiverText(); + std::string portraitGiverName = quest->GetPortraitGiverName(); + std::string portraitTurnInText = quest->GetPortraitTurnInText(); + std::string portraitTurnInName = quest->GetPortraitTurnInName(); + + LocaleConstant locale = _session->GetSessionDbLocaleIndex(); + if (locale >= LOCALE_enUS) { - if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) + if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(quest->GetQuestId())) { - ObjectMgr::GetLocaleString(localeData->LogTitle, locale, questTitle); - ObjectMgr::GetLocaleString(localeData->OfferRewardText, locale, questOfferRewardText); - ObjectMgr::GetLocaleString(localeData->PortraitGiverText, locale, portraitGiverText); - ObjectMgr::GetLocaleString(localeData->PortraitGiverName, locale, portraitGiverName); - ObjectMgr::GetLocaleString(localeData->PortraitTurnInText, locale, portraitTurnInText); - ObjectMgr::GetLocaleString(localeData->PortraitTurnInName, locale, portraitTurnInName); + ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, locale, questTitle); + ObjectMgr::GetLocaleString(questTemplateLocale->OfferRewardText, locale, questOfferRewardText); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverText, locale, portraitGiverText); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverName, locale, portraitGiverName); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInText, locale, portraitTurnInText); + ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInName, locale, portraitTurnInName); } } @@ -671,13 +667,13 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGU std::string questTitle = quest->GetLogTitle(); std::string requestItemsText = quest->GetRequestItemsText(); - int32 locale = _session->GetSessionDbLocaleIndex(); - if (locale >= 0) + LocaleConstant locale = _session->GetSessionDbLocaleIndex(); + if (locale >= LOCALE_enUS) { - if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) + if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(quest->GetQuestId())) { - ObjectMgr::GetLocaleString(localeData->LogTitle, locale, questTitle); - ObjectMgr::GetLocaleString(localeData->RequestItemsText, locale, requestItemsText); + ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, locale, questTitle); + ObjectMgr::GetLocaleString(questTemplateLocale->RequestItemsText, locale, requestItemsText); } } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9d5c40b4601..c1a58ad5669 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16306,7 +16306,7 @@ void Player::SendQuestConfirmAccept(const Quest* quest, Player* pReceiver) int loc_idx = pReceiver->GetSession()->GetSessionDbLocaleIndex(); if (loc_idx >= 0) - if (const QuestLocale* pLocale = sObjectMgr->GetQuestLocale(quest->GetQuestId())) + if (const QuestTemplateLocale* pLocale = sObjectMgr->GetQuestLocale(quest->GetQuestId())) ObjectMgr::GetLocaleString(pLocale->LogTitle, loc_idx, strTitle); WorldPacket data(SMSG_QUEST_CONFIRM_ACCEPT, (4 + strTitle.size() + 8)); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index da1529a5730..daf48ac5fda 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -341,7 +341,7 @@ void ObjectMgr::LoadCreatureLocales() CreatureLocale& data = _creatureLocaleStore[entry]; - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) + for (uint8 i = OLD_TOTAL_LOCALES - 1; i > 0; --i) { LocaleConstant locale = (LocaleConstant) i; AddLocaleString(fields[1 + 3 * (i - 1)].GetString(), locale, data.Name); @@ -378,7 +378,7 @@ void ObjectMgr::LoadGossipMenuItemsLocales() GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[MAKE_PAIR32(menuId, id)]; - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) + for (uint8 i = OLD_TOTAL_LOCALES - 1; i > 0; --i) { LocaleConstant locale = (LocaleConstant) i; AddLocaleString(fields[2 + 2 * (i - 1)].GetString(), locale, data.OptionText); @@ -409,7 +409,7 @@ void ObjectMgr::LoadPointOfInterestLocales() PointOfInterestLocale& data = _pointOfInterestLocaleStore[entry]; - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) + for (uint8 i = OLD_TOTAL_LOCALES - 1; i > 0; --i) AddLocaleString(fields[i].GetString(), LocaleConstant(i), data.IconName); } while (result->NextRow()); @@ -4223,23 +4223,16 @@ void ObjectMgr::LoadQuests() TC_LOG_INFO("server.loading", ">> Loaded %lu quests definitions in %u ms", (unsigned long)_questTemplates.size(), GetMSTimeDiffToNow(oldMSTime)); } -void ObjectMgr::LoadQuestLocales() +void ObjectMgr::LoadQuestTemplateLocale() { uint32 oldMSTime = getMSTime(); - _questLocaleStore.clear(); // need for reload case - - QueryResult result = WorldDatabase.Query("SELECT Id, " - "Title_loc1, Details_loc1, Objectives_loc1, OfferRewardText_loc1, RequestItemsText_loc1, EndText_loc1, CompletedText_loc1, ObjectiveText1_loc1, ObjectiveText2_loc1, ObjectiveText3_loc1, ObjectiveText4_loc1, QuestGiverTextWindow_loc1, QuestGiverTargetName_loc1, QuestTurnTextWindow_loc1, QuestTurnTargetName_loc1," - "Title_loc2, Details_loc2, Objectives_loc2, OfferRewardText_loc2, RequestItemsText_loc2, EndText_loc2, CompletedText_loc2, ObjectiveText1_loc2, ObjectiveText2_loc2, ObjectiveText3_loc2, ObjectiveText4_loc2, QuestGiverTextWindow_loc2, QuestGiverTargetName_loc2, QuestTurnTextWindow_loc2, QuestTurnTargetName_loc2," - "Title_loc3, Details_loc3, Objectives_loc3, OfferRewardText_loc3, RequestItemsText_loc3, EndText_loc3, CompletedText_loc3, ObjectiveText1_loc3, ObjectiveText2_loc3, ObjectiveText3_loc3, ObjectiveText4_loc3, QuestGiverTextWindow_loc3, QuestGiverTargetName_loc3, QuestTurnTextWindow_loc3, QuestTurnTargetName_loc3," - "Title_loc4, Details_loc4, Objectives_loc4, OfferRewardText_loc4, RequestItemsText_loc4, EndText_loc4, CompletedText_loc4, ObjectiveText1_loc4, ObjectiveText2_loc4, ObjectiveText3_loc4, ObjectiveText4_loc4, QuestGiverTextWindow_loc4, QuestGiverTargetName_loc4, QuestTurnTextWindow_loc4, QuestTurnTargetName_loc4," - "Title_loc5, Details_loc5, Objectives_loc5, OfferRewardText_loc5, RequestItemsText_loc5, EndText_loc5, CompletedText_loc5, ObjectiveText1_loc5, ObjectiveText2_loc5, ObjectiveText3_loc5, ObjectiveText4_loc5, QuestGiverTextWindow_loc5, QuestGiverTargetName_loc5, QuestTurnTextWindow_loc5, QuestTurnTargetName_loc5," - "Title_loc6, Details_loc6, Objectives_loc6, OfferRewardText_loc6, RequestItemsText_loc6, EndText_loc6, CompletedText_loc6, ObjectiveText1_loc6, ObjectiveText2_loc6, ObjectiveText3_loc6, ObjectiveText4_loc6, QuestGiverTextWindow_loc6, QuestGiverTargetName_loc6, QuestTurnTextWindow_loc6, QuestTurnTargetName_loc6," - "Title_loc7, Details_loc7, Objectives_loc7, OfferRewardText_loc7, RequestItemsText_loc7, EndText_loc7, CompletedText_loc7, ObjectiveText1_loc7, ObjectiveText2_loc7, ObjectiveText3_loc7, ObjectiveText4_loc7, QuestGiverTextWindow_loc7, QuestGiverTargetName_loc7, QuestTurnTextWindow_loc7, QuestTurnTargetName_loc7," - "Title_loc8, Details_loc8, Objectives_loc8, OfferRewardText_loc8, RequestItemsText_loc8, EndText_loc8, CompletedText_loc8, ObjectiveText1_loc8, ObjectiveText2_loc8, ObjectiveText3_loc8, ObjectiveText4_loc8, QuestGiverTextWindow_loc8, QuestGiverTargetName_loc8, QuestTurnTextWindow_loc8, QuestTurnTargetName_loc8" - " FROM locales_quest"); - + _questTemplateLocaleStore.clear(); // need for reload case + // 0 1 + QueryResult result = WorldDatabase.Query("SELECT Id, locale, " + // 2 3 4 5 6 7 8 9 10 + "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog" + " FROM quest_template_locale"); if (!result) return; @@ -4247,34 +4240,63 @@ void ObjectMgr::LoadQuestLocales() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); + + std::string logTitle = fields[2].GetString(); + std::string logDescription = fields[3].GetString(); + std::string questDescription = fields[4].GetString(); + std::string areaDescription = fields[5].GetString(); + std::string portraitGiverText = fields[6].GetString(); + std::string portraitGiverName = fields[7].GetString(); + std::string portraitTurnInText = fields[8].GetString(); + std::string portraitTurnInName = fields[9].GetString(); + std::string questCompletionLog = fields[10].GetString(); + + QuestTemplateLocale& data = _questTemplateLocaleStore[id]; + LocaleConstant locale = GetLocaleByName(localeName); + + AddLocaleString(logTitle, locale, data.LogTitle); + AddLocaleString(logDescription, locale, data.LogDescription); + AddLocaleString(questDescription, locale, data.QuestDescription); + AddLocaleString(areaDescription, locale, data.AreaDescription); + AddLocaleString(portraitGiverText, locale, data.PortraitGiverText); + AddLocaleString(portraitGiverName, locale, data.PortraitGiverName); + AddLocaleString(portraitTurnInText, locale, data.PortraitTurnInText); + AddLocaleString(portraitTurnInName, locale, data.PortraitTurnInName); + AddLocaleString(questCompletionLog, locale, data.QuestCompletionLog); + } while (result->NextRow()); - QuestLocale& data = _questLocaleStore[entry]; + TC_LOG_INFO("server.loading", ">> Loaded %u Quest Tempalate locale strings in %u ms", uint32(_questTemplateLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); +} - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) - { - LocaleConstant locale = (LocaleConstant) i; +void ObjectMgr::LoadQuestObjectivesLocale() +{ + uint32 oldMSTime = getMSTime(); - AddLocaleString(fields[1 + 15 * (i - 1)].GetString(), locale, data.LogTitle); - AddLocaleString(fields[1 + 15 * (i - 1) + 1].GetString(), locale, data.LogDescription); - AddLocaleString(fields[1 + 15 * (i - 1) + 2].GetString(), locale, data.QuestDescription); - AddLocaleString(fields[1 + 15 * (i - 1) + 3].GetString(), locale, data.OfferRewardText); - AddLocaleString(fields[1 + 15 * (i - 1) + 4].GetString(), locale, data.RequestItemsText); - AddLocaleString(fields[1 + 15 * (i - 1) + 5].GetString(), locale, data.AreaDescription); - AddLocaleString(fields[1 + 15 * (i - 1) + 6].GetString(), locale, data.QuestCompletionLog); + _questObjectivesLocaleStore.clear(); // need for reload case + // 0 1 2 + QueryResult result = WorldDatabase.Query("SELECT Id, locale, Description FROM quest_objectives_locale"); + if (!result) + return; - data.ObjectiveDescription.resize(4); - for (uint8 k = 0; k < 4; ++k) - AddLocaleString(fields[1 + 15 * (i - 1) + 7 + k].GetString(), locale, data.ObjectiveDescription[k]); + do + { + Field* fields = result->Fetch(); - AddLocaleString(fields[1 + 15 * (i - 1) + 11].GetString(), locale, data.PortraitGiverText); - AddLocaleString(fields[1 + 15 * (i - 1) + 12].GetString(), locale, data.PortraitGiverName); - AddLocaleString(fields[1 + 15 * (i - 1) + 13].GetString(), locale, data.PortraitTurnInText); - AddLocaleString(fields[1 + 15 * (i - 1) + 14].GetString(), locale, data.PortraitTurnInName); - } - } while (result->NextRow()); + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); + + std::string Description = fields[2].GetString(); - TC_LOG_INFO("server.loading", ">> Loaded %u Quest locale strings in %u ms", uint32(_questLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); + QuestObjectivesLocale& data = _questObjectivesLocaleStore[id]; + LocaleConstant locale = GetLocaleByName(localeName); + + AddLocaleString(Description, locale, data.Description); + } + while (result->NextRow()); + + TC_LOG_INFO("server.loading", ">> Loaded %u Quest Objectives locale strings in %u ms", uint32(_questObjectivesLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); } void ObjectMgr::LoadScripts(ScriptsType type) @@ -4880,7 +4902,7 @@ void ObjectMgr::LoadPageTextLocales() PageTextLocale& data = _pageTextLocaleStore[entry]; - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) + for (uint8 i = OLD_TOTAL_LOCALES - 1; i > 0; --i) AddLocaleString(fields[i].GetString(), LocaleConstant(i), data.Text); } while (result->NextRow()); @@ -5143,7 +5165,7 @@ void ObjectMgr::LoadNpcTextLocales() NpcTextLocale& data = _npcTextLocaleStore[entry]; - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) + for (uint8 i = OLD_TOTAL_LOCALES - 1; i > 0; --i) { LocaleConstant locale = (LocaleConstant) i; for (uint8 j = 0; j < MAX_GOSSIP_TEXT_OPTIONS; ++j) @@ -6115,10 +6137,10 @@ void ObjectMgr::LoadGameObjectLocales() GameObjectLocale& data = _gameObjectLocaleStore[entry]; - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) + for (uint8 i = OLD_TOTAL_LOCALES - 1; i > 0; --i) { AddLocaleString(fields[i].GetString(), LocaleConstant(i), data.Name); - AddLocaleString(fields[i + (TOTAL_LOCALES - 1)].GetString(), LocaleConstant(i), data.CastBarCaption); + AddLocaleString(fields[i + (OLD_TOTAL_LOCALES - 1)].GetString(), LocaleConstant(i), data.CastBarCaption); } } while (result->NextRow()); @@ -6503,7 +6525,7 @@ void ObjectMgr::LoadCorpses() Field* fields = phaseResult->Fetch(); uint32 guid = fields[0].GetUInt32(); uint32 phaseId = fields[1].GetUInt32(); - + phases[guid].push_back(phaseId); } while (phaseResult->NextRow()); @@ -7403,7 +7425,7 @@ bool ObjectMgr::LoadTrinityStrings() data.Content.resize(DEFAULT_LOCALE + 1); - for (int8 i = TOTAL_LOCALES - 1; i >= 0; --i) + for (int8 i = OLD_TOTAL_LOCALES - 1; i >= 0; --i) AddLocaleString(fields[i + 1].GetString(), LocaleConstant(i), data.Content); } while (result->NextRow()); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index b49b46cb555..738bff89397 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -433,7 +433,8 @@ typedef std::unordered_map<ObjectGuid::LowType, GameObjectData> GameObjectDataCo typedef std::map<TempSummonGroupKey, std::vector<TempSummonData> > TempSummonDataContainer; typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer; typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer; -typedef std::unordered_map<uint32, QuestLocale> QuestLocaleContainer; +typedef std::unordered_map<uint32, QuestTemplateLocale> QuestTemplateLocaleContainer; +typedef std::unordered_map<uint32, QuestObjectivesLocale> QuestObjectivesLocaleContainer; typedef std::unordered_map<uint32, NpcTextLocale> NpcTextLocaleContainer; typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer; typedef std::unordered_map<uint32, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer; @@ -963,7 +964,8 @@ class ObjectMgr void LoadItemTemplates(); void LoadItemTemplateAddon(); void LoadItemScriptNames(); - void LoadQuestLocales(); + void LoadQuestTemplateLocale(); + void LoadQuestObjectivesLocale(); void LoadNpcTextLocales(); void LoadPageTextLocales(); void LoadGossipMenuItemsLocales(); @@ -1112,10 +1114,16 @@ class ObjectMgr if (itr == _gameObjectLocaleStore.end()) return NULL; return &itr->second; } - QuestLocale const* GetQuestLocale(uint32 entry) const + QuestTemplateLocale const* GetQuestLocale(uint32 entry) const { - QuestLocaleContainer::const_iterator itr = _questLocaleStore.find(entry); - if (itr == _questLocaleStore.end()) return NULL; + QuestTemplateLocaleContainer::const_iterator itr = _questTemplateLocaleStore.find(entry); + if (itr == _questTemplateLocaleStore.end()) return NULL; + return &itr->second; + } + QuestObjectivesLocale const* GetQuestObjectivesLocale(uint32 entry) const + { + QuestObjectivesLocaleContainer::const_iterator itr = _questObjectivesLocaleStore.find(entry); + if (itr == _questObjectivesLocaleStore.end()) return NULL; return &itr->second; } NpcTextLocale const* GetNpcTextLocale(uint32 entry) const @@ -1434,7 +1442,8 @@ class ObjectMgr TempSummonDataContainer _tempSummonDataStore; ItemTemplateContainer _itemTemplateStore; - QuestLocaleContainer _questLocaleStore; + QuestTemplateLocaleContainer _questTemplateLocaleStore; + QuestObjectivesLocaleContainer _questObjectivesLocaleStore; NpcTextLocaleContainer _npcTextLocaleStore; PageTextLocaleContainer _pageTextLocaleStore; GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore; diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index da0830734e5..c878287b4ac 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -194,7 +194,7 @@ void Quest::LoadQuestObjective(Field* fields) void Quest::LoadQuestObjectiveVisualEffect(Field* fields) { - uint8 objID = fields[1].GetUInt32(); + uint32 objID = fields[1].GetUInt32(); for (QuestObjective& obj : Objectives) { diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index d893784212e..3e62348a5c3 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -202,21 +202,26 @@ enum QuestObjectiveType QUEST_OBJECTIVE_WINPVPPETBATTLES = 13 }; -struct QuestLocale +struct QuestTemplateLocale { StringVector LogTitle; StringVector LogDescription; StringVector QuestDescription; StringVector AreaDescription; - StringVector OfferRewardText; - StringVector RequestItemsText; - StringVector QuestCompletionLog; - std::vector< StringVector > ObjectiveDescription; - // new on 4.x StringVector PortraitGiverText; StringVector PortraitGiverName; StringVector PortraitTurnInText; StringVector PortraitTurnInName; + StringVector QuestCompletionLog; + + /// @todo: implemente this in new tables + StringVector OfferRewardText; + StringVector RequestItemsText; +}; + +struct QuestObjectivesLocale +{ + StringVector Description; }; struct QuestObjective diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index ce3f9115772..2ea344f240f 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -138,22 +138,22 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.Objectives.size()); _worldPacket << int32(Info.AllowableRaces); - for (uint32 i = 0; i < Info.Objectives.size(); ++i) + for (QuestObjective const& questObjective : Info.Objectives) { - _worldPacket << Info.Objectives[i].ID; - _worldPacket << Info.Objectives[i].Type; - _worldPacket << Info.Objectives[i].StorageIndex; - _worldPacket << Info.Objectives[i].ObjectID; - _worldPacket << Info.Objectives[i].Amount; - _worldPacket << Info.Objectives[i].Flags; - _worldPacket << Info.Objectives[i].UnkFloat; - - _worldPacket << int32(Info.Objectives[i].VisualEffects.size()); - for (uint32 j = 0; j < Info.Objectives[i].VisualEffects.size(); ++j) - _worldPacket << Info.Objectives[i].VisualEffects[i]; - - _worldPacket.WriteBits(Info.Objectives[i].Description.size(), 8); - _worldPacket.WriteString(Info.Objectives[i].Description); + _worldPacket << questObjective.ID; + _worldPacket << questObjective.Type; + _worldPacket << questObjective.StorageIndex; + _worldPacket << questObjective.ObjectID; + _worldPacket << questObjective.Amount; + _worldPacket << questObjective.Flags; + _worldPacket << questObjective.UnkFloat; + + _worldPacket << int32(questObjective.VisualEffects.size()); + for (auto& visualEffect : questObjective.VisualEffects) + _worldPacket << visualEffect; + + _worldPacket.WriteBits(questObjective.Description.size(), 8); + _worldPacket.WriteString(questObjective.Description); } _worldPacket.WriteBits(Info.LogTitle.size(), 9); @@ -165,7 +165,6 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket.WriteBits(Info.PortraitTurnInText.size(), 10); _worldPacket.WriteBits(Info.PortraitTurnInName.size(), 8); _worldPacket.WriteBits(Info.QuestCompletionLog.size(), 11); - _worldPacket.FlushBits(); _worldPacket.WriteString(Info.LogTitle); _worldPacket.WriteString(Info.LogDescription); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index c22bc214666..6398f5b0dcf 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1506,7 +1506,8 @@ void World::SetInitialWorldSettings() uint32 oldMSTime = getMSTime(); sObjectMgr->LoadCreatureLocales(); sObjectMgr->LoadGameObjectLocales(); - sObjectMgr->LoadQuestLocales(); + sObjectMgr->LoadQuestTemplateLocale(); + sObjectMgr->LoadQuestObjectivesLocale(); sObjectMgr->LoadNpcTextLocales(); sObjectMgr->LoadPageTextLocales(); sObjectMgr->LoadGossipMenuItemsLocales(); diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 8666e38b84b..d8f98e90275 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -565,7 +565,7 @@ public: if (localeIndex >= 0) { uint8 ulocaleIndex = uint8(localeIndex); - if (QuestLocale const* questLocale = sObjectMgr->GetQuestLocale(qInfo->GetQuestId())) + if (QuestTemplateLocale const* questLocale = sObjectMgr->GetQuestLocale(qInfo->GetQuestId())) { if (questLocale->LogTitle.size() > ulocaleIndex && !questLocale->LogTitle[ulocaleIndex].empty()) { diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 78f23ceab25..72f0744cd29 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -109,7 +109,6 @@ public: { "locales_npc_text", rbac::RBAC_PERM_COMMAND_RELOAD_LOCALES_NPC_TEXT, true, &HandleReloadLocalesNpcTextCommand, "", NULL }, { "locales_page_text", rbac::RBAC_PERM_COMMAND_RELOAD_LOCALES_PAGE_TEXT, true, &HandleReloadLocalesPageTextCommand, "", NULL }, { "locales_points_of_interest", rbac::RBAC_PERM_COMMAND_RELOAD_LOCALES_POINTS_OF_INTEREST, true, &HandleReloadLocalesPointsOfInterestCommand, "", NULL }, - { "locales_quest", rbac::RBAC_PERM_COMMAND_RELOAD_LOCALES_QUEST, true, &HandleReloadLocalesQuestCommand, "", NULL }, { "mail_level_reward", rbac::RBAC_PERM_COMMAND_RELOAD_MAIL_LEVEL_REWARD, true, &HandleReloadMailLevelRewardCommand, "", NULL }, { "mail_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_MAIL_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesMailCommand, "", NULL }, { "milling_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_MILLING_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesMillingCommand, "", NULL }, @@ -120,6 +119,7 @@ public: { "pickpocketing_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_PICKPOCKETING_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesPickpocketingCommand, "", NULL }, { "points_of_interest", rbac::RBAC_PERM_COMMAND_RELOAD_POINTS_OF_INTEREST, true, &HandleReloadPointsOfInterestCommand, "", NULL }, { "prospecting_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_PROSPECTING_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesProspectingCommand, "", NULL }, + { "quest_locale", rbac::RBAC_PERM_COMMAND_RELOAD_QUEST_LOCALE, true, &HandleReloadQuestLocaleCommand, "", NULL }, { "quest_poi", rbac::RBAC_PERM_COMMAND_RELOAD_QUEST_POI, true, &HandleReloadQuestPOICommand, "", NULL }, { "quest_template", rbac::RBAC_PERM_COMMAND_RELOAD_QUEST_TEMPLATE, true, &HandleReloadQuestTemplateCommand, "", NULL }, { "rbac", rbac::RBAC_PERM_COMMAND_RELOAD_RBAC, true, &HandleReloadRBACCommand, "", NULL }, @@ -314,7 +314,7 @@ public: HandleReloadLocalesNpcTextCommand(handler, "a"); HandleReloadLocalesPageTextCommand(handler, "a"); HandleReloadLocalesPointsOfInterestCommand(handler, "a"); - HandleReloadLocalesQuestCommand(handler, "a"); + HandleReloadQuestLocaleCommand(handler, "a"); return true; } @@ -1035,11 +1035,13 @@ public: return true; } - static bool HandleReloadLocalesQuestCommand(ChatHandler* handler, const char* /*args*/) + static bool HandleReloadQuestLocaleCommand(ChatHandler* handler, const char* /*args*/) { - TC_LOG_INFO("misc", "Re-Loading Locales Quest ... "); - sObjectMgr->LoadQuestLocales(); - handler->SendGlobalGMSysMessage("DB table `locales_quest` reloaded."); + TC_LOG_INFO("misc", "Re-Loading Quest Locale ... "); + sObjectMgr->LoadQuestTemplateLocale(); + sObjectMgr->LoadQuestObjectivesLocale(); + handler->SendGlobalGMSysMessage("DB table `quest_template_locale` reloaded."); + handler->SendGlobalGMSysMessage("DB table `quest_objectives_locale` reloaded."); return true; } diff --git a/src/server/shared/Common.cpp b/src/server/shared/Common.cpp index 56e3c4faaf5..22560012b49 100644 --- a/src/server/shared/Common.cpp +++ b/src/server/shared/Common.cpp @@ -18,7 +18,8 @@ #include "Common.h" -char const* localeNames[TOTAL_LOCALES] = { +char const* localeNames[TOTAL_LOCALES] = +{ "enUS", "koKR", "frFR", @@ -27,13 +28,16 @@ char const* localeNames[TOTAL_LOCALES] = { "zhTW", "esES", "esMX", - "ruRU" + "ruRU", + "none", + "ptBR", + "itIT" }; LocaleConstant GetLocaleByName(const std::string& name) { for (uint32 i = 0; i < TOTAL_LOCALES; ++i) - if (name==localeNames[i]) + if (name == localeNames[i]) return LocaleConstant(i); return LOCALE_enUS; // including enGB case diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index 4c5773d5eb5..11c9ad3b27f 100644 --- a/src/server/shared/Common.h +++ b/src/server/shared/Common.h @@ -114,13 +114,18 @@ enum LocaleConstant LOCALE_zhTW = 5, LOCALE_esES = 6, LOCALE_esMX = 7, - LOCALE_ruRU = 8 + LOCALE_ruRU = 8, + LOCALE_none = 9, + LOCALE_ptBR = 10, + LOCALE_itIT = 11, + + TOTAL_LOCALES }; -const uint8 TOTAL_LOCALES = 9; +const uint8 OLD_TOTAL_LOCALES = 9; /// @todo convert in simple system #define DEFAULT_LOCALE LOCALE_enUS -#define MAX_LOCALES 8 +#define MAX_LOCALES 11 extern char const* localeNames[TOTAL_LOCALES]; |