diff options
-rw-r--r-- | sql/updates/world/master/2018_02_01_00_world.sql | 24 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/GossipDef.h | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 34 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 82 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 23 |
9 files changed, 107 insertions, 86 deletions
diff --git a/sql/updates/world/master/2018_02_01_00_world.sql b/sql/updates/world/master/2018_02_01_00_world.sql new file mode 100644 index 00000000000..55c863a5964 --- /dev/null +++ b/sql/updates/world/master/2018_02_01_00_world.sql @@ -0,0 +1,24 @@ +ALTER TABLE `gossip_menu` + CHANGE `MenuID` `MenuId` INT(10) UNSIGNED NOT NULL DEFAULT '0', + CHANGE `TextID` `TextId` INT(10) UNSIGNED NOT NULL DEFAULT '0'; + +ALTER TABLE `gossip_menu_option` + CHANGE `MenuID` `MenuId` INT(10) UNSIGNED NOT NULL DEFAULT '0', + CHANGE `OptionID` `OptionIndex` INT(10) UNSIGNED NOT NULL DEFAULT '0', + CHANGE `OptionNpcflag` `OptionNpcFlag` bigint(20) UNSIGNED NOT NULL DEFAULT '0'; + +ALTER TABLE `gossip_menu_option_action` + CHANGE `MenuID` `MenuId` INT(10) UNSIGNED NOT NULL DEFAULT '0', + CHANGE `OptionID` `OptionIndex` INT(10) UNSIGNED NOT NULL DEFAULT '0'; + +ALTER TABLE `gossip_menu_option_box` + CHANGE `MenuID` `MenuId` INT(10) UNSIGNED NOT NULL DEFAULT '0', + CHANGE `OptionID` `OptionIndex` INT(10) UNSIGNED NOT NULL DEFAULT '0'; + +ALTER TABLE `gossip_menu_option_trainer` + CHANGE `MenuID` `MenuId` INT(10) UNSIGNED NOT NULL DEFAULT '0', + CHANGE `OptionID` `OptionIndex` INT(10) UNSIGNED NOT NULL DEFAULT '0'; + +ALTER TABLE `gossip_menu_option_locale` + CHANGE `MenuID` `MenuId` INT(10) UNSIGNED NOT NULL DEFAULT '0'; + CHANGE `OptionID` `OptionIndex` INT(10) UNSIGNED NOT NULL DEFAULT '0'; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 47d2db71f5f..2c2768830fd 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -548,7 +548,7 @@ enum SMART_ACTION SMART_ACTION_ADD_DYNAMIC_FLAG = 95, // Flags SMART_ACTION_REMOVE_DYNAMIC_FLAG = 96, // Flags SMART_ACTION_JUMP_TO_POS = 97, // speedXY, speedZ, targetX, targetY, targetZ - SMART_ACTION_SEND_GOSSIP_MENU = 98, // menuId, optionId + SMART_ACTION_SEND_GOSSIP_MENU = 98, // menuId, optionIndex SMART_ACTION_GO_SET_LOOT_STATE = 99, // state SMART_ACTION_SEND_TARGET_TO_TARGET = 100, // id SMART_ACTION_SET_HOME_POS = 101, // none diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 3628e9ec312..6f375bc3d99 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1325,7 +1325,7 @@ bool ConditionMgr::addToGossipMenus(Condition* cond) const { for (GossipMenusContainer::iterator itr = pMenuBounds.first; itr != pMenuBounds.second; ++itr) { - if ((*itr).second.MenuID == cond->SourceGroup && (*itr).second.TextID == uint32(cond->SourceEntry)) + if ((*itr).second.MenuId == cond->SourceGroup && (*itr).second.TextId == uint32(cond->SourceEntry)) { (*itr).second.Conditions.push_back(cond); return true; @@ -1344,7 +1344,7 @@ bool ConditionMgr::addToGossipMenuItems(Condition* cond) const { for (GossipMenuItemsContainer::iterator itr = pMenuItemBounds.first; itr != pMenuItemBounds.second; ++itr) { - if ((*itr).second.MenuID == cond->SourceGroup && (*itr).second.OptionID == uint32(cond->SourceEntry)) + if ((*itr).second.MenuId == cond->SourceGroup && (*itr).second.OptionIndex == uint32(cond->SourceEntry)) { (*itr).second.Conditions.push_back(cond); return true; diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index e5bbbfa5f1d..a8fb5710dcd 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -76,11 +76,11 @@ uint32 GossipMenu::AddMenuItem(int32 optionIndex, uint8 icon, std::string const& * @name AddMenuItem * @brief Adds a localized gossip menu item from db by menu id and menu item id. * @param menuId Gossip menu id. - * @param menuItemId Gossip menu item id. + * @param optionIndex Gossip menu item index. * @param sender Identifier of the current menu. * @param action Custom action given to OnGossipHello. */ -void GossipMenu::AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, uint32 action) +void GossipMenu::AddMenuItem(uint32 menuId, uint32 optionIndex, uint32 sender, uint32 action) { /// Find items for given menu id. GossipMenuItemsMapBounds bounds = sObjectMgr->GetGossipMenuItemsMapBounds(menuId); @@ -92,13 +92,13 @@ void GossipMenu::AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, ui for (GossipMenuItemsContainer::const_iterator itr = bounds.first; itr != bounds.second; ++itr) { /// Find the one with the given menu item id. - if (itr->second.OptionID != menuItemId) + if (itr->second.OptionIndex != optionIndex) continue; /// Store texts for localization. std::string strOptionText, strBoxText; - BroadcastTextEntry const* optionBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.OptionBroadcastTextID); - BroadcastTextEntry const* boxBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.BoxBroadcastTextID); + BroadcastTextEntry const* optionBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.OptionBroadcastTextId); + BroadcastTextEntry const* boxBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.BoxBroadcastTextId); /// OptionText if (optionBroadcastText) @@ -118,21 +118,21 @@ void GossipMenu::AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, ui if (!optionBroadcastText) { /// Find localizations from database. - if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, menuItemId))) + if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, optionIndex)) ObjectMgr::GetLocaleString(gossipMenuLocale->OptionText, GetLocale(), strOptionText); } if (!boxBroadcastText) { /// Find localizations from database. - if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, menuItemId))) + if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, optionIndex)) ObjectMgr::GetLocaleString(gossipMenuLocale->BoxText, GetLocale(), strBoxText); } } /// Add menu item with existing method. Menu item id -1 is also used in ADD_GOSSIP_ITEM macro. - uint32 optionIndex = AddMenuItem(-1, itr->second.OptionIcon, strOptionText, sender, action, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); - AddGossipMenuItemData(optionIndex, itr->second.ActionMenuID, itr->second.ActionPoiID, itr->second.TrainerId); + uint32 newOptionIndex = AddMenuItem(-1, itr->second.OptionIcon, strOptionText, sender, action, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); + AddGossipMenuItemData(newOptionIndex, itr->second.ActionMenuId, itr->second.ActionPoiId, itr->second.TrainerId); } } diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h index 0deab1c1604..aa0eb3f0d4e 100644 --- a/src/server/game/Entities/Creature/GossipDef.h +++ b/src/server/game/Entities/Creature/GossipDef.h @@ -167,8 +167,8 @@ class TC_GAME_API GossipMenu GossipMenu(); ~GossipMenu(); - uint32 AddMenuItem(int32 menuItemId, uint8 icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded = false); - void AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, uint32 action); + uint32 AddMenuItem(int32 optionIndex, uint8 icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded = false); + void AddMenuItem(uint32 menuId, uint32 optionIndex, uint32 sender, uint32 action); void SetMenuId(uint32 menu_id) { _menuId = menu_id; } uint32 GetMenuId() const { return _menuId; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 2925d78661a..ff0eaaf891f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14190,7 +14190,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool canTalk = false; break; default: - TC_LOG_ERROR("sql.sql", "Creature entry %u has unknown gossip option %u for menu %u.", creature->GetEntry(), itr->second.OptionType, itr->second.MenuID); + TC_LOG_ERROR("sql.sql", "Creature entry %u has unknown gossip option %u for menu %u.", creature->GetEntry(), itr->second.OptionType, itr->second.MenuId); canTalk = false; break; } @@ -14212,8 +14212,8 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool if (canTalk) { std::string strOptionText, strBoxText; - BroadcastTextEntry const* optionBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.OptionBroadcastTextID); - BroadcastTextEntry const* boxBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.BoxBroadcastTextID); + BroadcastTextEntry const* optionBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.OptionBroadcastTextId); + BroadcastTextEntry const* boxBroadcastText = sBroadcastTextStore.LookupEntry(itr->second.BoxBroadcastTextId); LocaleConstant locale = GetSession()->GetSessionDbLocaleIndex(); if (optionBroadcastText) @@ -14231,20 +14231,20 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool if (!optionBroadcastText) { /// Find localizations from database. - if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, itr->second.OptionID))) + if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, itr->second.OptionIndex)) ObjectMgr::GetLocaleString(gossipMenuLocale->OptionText, locale, strOptionText); } if (!boxBroadcastText) { /// Find localizations from database. - if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, itr->second.OptionID))) + if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, itr->second.OptionIndex)) ObjectMgr::GetLocaleString(gossipMenuLocale->BoxText, locale, strBoxText); } } - menu->GetGossipMenu().AddMenuItem(itr->second.OptionID, itr->second.OptionIcon, strOptionText, 0, itr->second.OptionType, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); - menu->GetGossipMenu().AddGossipMenuItemData(itr->second.OptionID, itr->second.ActionMenuID, itr->second.ActionPoiID, itr->second.TrainerId); + menu->GetGossipMenu().AddMenuItem(itr->second.OptionIndex, itr->second.OptionIcon, strOptionText, 0, itr->second.OptionType, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); + menu->GetGossipMenu().AddGossipMenuItemData(itr->second.OptionIndex, itr->second.ActionMenuId, itr->second.ActionPoiId, itr->second.TrainerId); } } } @@ -14274,7 +14274,7 @@ void Player::SendPreparedGossip(WorldObject* source) PlayerTalkClass->SendGossipMenu(textId, source->GetGUID()); } -void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 menuId) +void Player::OnGossipSelect(WorldObject* source, uint32 optionIndex, uint32 menuId) { GossipMenu& gossipMenu = PlayerTalkClass->GetGossipMenu(); @@ -14282,16 +14282,16 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men if (menuId != gossipMenu.GetMenuId()) return; - GossipMenuItem const* item = gossipMenu.GetItem(gossipListId); + GossipMenuItem const* item = gossipMenu.GetItem(optionIndex); if (!item) return; - uint32 gossipOptionId = item->OptionType; + uint32 gossipOptionType = item->OptionType; ObjectGuid guid = source->GetGUID(); if (source->GetTypeId() == TYPEID_GAMEOBJECT) { - if (gossipOptionId > GOSSIP_OPTION_QUESTGIVER) + if (gossipOptionType > GOSSIP_OPTION_QUESTGIVER) { TC_LOG_ERROR("entities.player", "Player '%s' (%s) requests invalid gossip option for GameObject (Entry: %u)", GetName().c_str(), GetGUID().ToString().c_str(), source->GetEntry()); @@ -14299,19 +14299,19 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men } } - GossipMenuItemData const* menuItemData = gossipMenu.GetItemData(gossipListId); + GossipMenuItemData const* menuItemData = gossipMenu.GetItemData(optionIndex); if (!menuItemData) return; - int32 cost = int32(item->BoxMoney); - if (!HasEnoughMoney(int64(cost))) + int64 cost = int64(item->BoxMoney); + if (!HasEnoughMoney(cost)) { SendBuyError(BUY_ERR_NOT_ENOUGHT_MONEY, nullptr, 0, 0); PlayerTalkClass->SendCloseGossip(); return; } - switch (gossipOptionId) + switch (gossipOptionType) { case GOSSIP_OPTION_GOSSIP: { @@ -14327,7 +14327,7 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men break; } case GOSSIP_OPTION_OUTDOORPVP: - sOutdoorPvPMgr->HandleGossipOption(this, source->ToCreature(), gossipListId); + sOutdoorPvPMgr->HandleGossipOption(this, source->ToCreature(), optionIndex); break; case GOSSIP_OPTION_SPIRITHEALER: if (isDead()) @@ -14417,7 +14417,7 @@ uint32 Player::GetGossipTextId(uint32 menuId, WorldObject* source) for (GossipMenusContainer::const_iterator itr = menuBounds.first; itr != menuBounds.second; ++itr) { if (sConditionMgr->IsObjectMeetToConditions(this, source, itr->second.Conditions)) - textId = itr->second.TextID; + textId = itr->second.TextId; } return textId; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index a7b90389fb4..bf60ebb1122 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1327,7 +1327,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void PrepareGossipMenu(WorldObject* source, uint32 menuId = 0, bool showQuests = false); void SendPreparedGossip(WorldObject* source); - void OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 menuId); + void OnGossipSelect(WorldObject* source, uint32 optionIndex, uint32 menuId); uint32 GetGossipTextId(uint32 menuId, WorldObject* source); uint32 GetGossipTextId(WorldObject* source); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index d030149640d..8e61eb33baa 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -349,7 +349,7 @@ void ObjectMgr::LoadGossipMenuItemsLocales() _gossipMenuItemsLocaleStore.clear(); // need for reload case // 0 1 2 3 4 - QueryResult result = WorldDatabase.Query("SELECT MenuID, OptionID, Locale, OptionText, BoxText FROM gossip_menu_option_locale"); + QueryResult result = WorldDatabase.Query("SELECT MenuId, OptionIndex, Locale, OptionText, BoxText FROM gossip_menu_option_locale"); if (!result) return; @@ -358,21 +358,20 @@ void ObjectMgr::LoadGossipMenuItemsLocales() { Field* fields = result->Fetch(); - - uint16 menuId = fields[0].GetUInt16(); - uint16 optionId = fields[1].GetUInt16(); + uint32 menuId = fields[0].GetUInt32(); + uint32 optionIndex = fields[1].GetUInt32(); std::string localeName = fields[2].GetString(); - LocaleConstant locale = GetLocaleByName(localeName); + LocaleConstant locale = GetLocaleByName(localeName); if (locale == LOCALE_enUS) continue; - GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[MAKE_PAIR32(menuId, optionId)]; + GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[std::make_pair(menuId, optionIndex)]; AddLocaleString(fields[3].GetString(), locale, data.OptionText); AddLocaleString(fields[4].GetString(), locale, data.BoxText); } while (result->NextRow()); - TC_LOG_INFO("server.loading", ">> Loaded %u gossip_menu_option locale strings in %u ms", uint32(_gossipMenuItemsLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); + TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " gossip_menu_option locale strings in %u ms", _gossipMenuItemsLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); } void ObjectMgr::LoadPointOfInterestLocales() @@ -8760,9 +8759,8 @@ void ObjectMgr::LoadGossipMenu() _gossipMenusStore.clear(); - // 0 1 - QueryResult result = WorldDatabase.Query("SELECT MenuID, TextID FROM gossip_menu"); + QueryResult result = WorldDatabase.Query("SELECT MenuId, TextId FROM gossip_menu"); if (!result) { @@ -8776,16 +8774,16 @@ void ObjectMgr::LoadGossipMenu() GossipMenus gMenu; - gMenu.MenuID = fields[0].GetUInt16(); - gMenu.TextID = fields[1].GetUInt32(); + gMenu.MenuId = fields[0].GetUInt32(); + gMenu.TextId = fields[1].GetUInt32(); - if (!GetNpcText(gMenu.TextID)) + if (!GetNpcText(gMenu.TextId)) { - TC_LOG_ERROR("sql.sql", "Table gossip_menu: ID %u is using non-existing TextID %u", gMenu.MenuID, gMenu.TextID); + TC_LOG_ERROR("sql.sql", "Table gossip_menu: ID %u is using non-existing TextId %u", gMenu.MenuId, gMenu.TextId); continue; } - _gossipMenusStore.insert(GossipMenusContainer::value_type(gMenu.MenuID, gMenu)); + _gossipMenusStore.insert(GossipMenusContainer::value_type(gMenu.MenuId, gMenu)); } while (result->NextRow()); TC_LOG_INFO("server.loading", ">> Loaded %u gossip_menu IDs in %u ms", uint32(_gossipMenusStore.size()), GetMSTimeDiffToNow(oldMSTime)); @@ -8799,18 +8797,18 @@ void ObjectMgr::LoadGossipMenuItems() QueryResult result = WorldDatabase.Query( // 0 1 2 3 4 5 6 - "SELECT o.MenuID, o.OptionID, o.OptionIcon, o.OptionText, o.OptionBroadcastTextId, o.OptionType, o.OptionNpcflag, " + "SELECT o.MenuId, o.OptionIndex, o.OptionIcon, o.OptionText, o.OptionBroadcastTextId, o.OptionType, o.OptionNpcFlag, " // 7 8 - "oa.ActionMenuID, oa.ActionPoiID, " + "oa.ActionMenuId, oa.ActionPoiId, " // 9 10 11 12 "ob.BoxCoded, ob.BoxMoney, ob.BoxText, ob.BoxBroadcastTextId, " // 13 "ot.TrainerId " "FROM gossip_menu_option o " - "LEFT JOIN gossip_menu_option_action oa ON o.MenuID = oa.MenuID AND o.OptionID = oa.OptionID " - "LEFT JOIN gossip_menu_option_box ob ON o.MenuID = ob.MenuID AND o.OptionID = ob.OptionID " - "LEFT JOIN gossip_menu_option_trainer ot ON o.MenuID = ot.MenuID AND o.OptionID = ot.OptionID " - "ORDER BY o.MenuId, o.OptionID"); + "LEFT JOIN gossip_menu_option_action oa ON o.MenuId = oa.MenuId AND o.OptionIndex = oa.OptionIndex " + "LEFT JOIN gossip_menu_option_box ob ON o.MenuId = ob.MenuId AND o.OptionIndex = ob.OptionIndex " + "LEFT JOIN gossip_menu_option_trainer ot ON o.MenuId = ot.MenuId AND o.OptionIndex = ot.OptionIndex " + "ORDER BY o.MenuId, o.OptionIndex"); if (!result) { @@ -8824,64 +8822,64 @@ void ObjectMgr::LoadGossipMenuItems() GossipMenuItems gMenuItem; - gMenuItem.MenuID = fields[0].GetUInt32(); - gMenuItem.OptionID = fields[1].GetUInt32(); + gMenuItem.MenuId = fields[0].GetUInt32(); + gMenuItem.OptionIndex = fields[1].GetUInt32(); gMenuItem.OptionIcon = fields[2].GetUInt8(); gMenuItem.OptionText = fields[3].GetString(); - gMenuItem.OptionBroadcastTextID = fields[4].GetUInt32(); + gMenuItem.OptionBroadcastTextId = fields[4].GetUInt32(); gMenuItem.OptionType = fields[5].GetUInt32(); gMenuItem.OptionNpcFlag = fields[6].GetUInt64(); - gMenuItem.ActionMenuID = fields[7].GetUInt32(); - gMenuItem.ActionPoiID = fields[8].GetUInt32(); + gMenuItem.ActionMenuId = fields[7].GetUInt32(); + gMenuItem.ActionPoiId = fields[8].GetUInt32(); gMenuItem.BoxCoded = fields[9].GetBool(); gMenuItem.BoxMoney = fields[10].GetUInt32(); gMenuItem.BoxText = fields[11].GetString(); - gMenuItem.BoxBroadcastTextID = fields[12].GetUInt32(); + gMenuItem.BoxBroadcastTextId = fields[12].GetUInt32(); gMenuItem.TrainerId = fields[13].GetUInt32(); if (gMenuItem.OptionIcon >= GOSSIP_ICON_MAX) { - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionID %u has unknown icon id %u. Replacing with GOSSIP_ICON_CHAT", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.OptionIcon); + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionIndex %u has unknown icon id %u. Replacing with GOSSIP_ICON_CHAT", gMenuItem.MenuId, gMenuItem.OptionIndex, gMenuItem.OptionIcon); gMenuItem.OptionIcon = GOSSIP_ICON_CHAT; } - if (gMenuItem.OptionBroadcastTextID) + if (gMenuItem.OptionBroadcastTextId) { - if (!sBroadcastTextStore.LookupEntry(gMenuItem.OptionBroadcastTextID)) + if (!sBroadcastTextStore.LookupEntry(gMenuItem.OptionBroadcastTextId)) { - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionID %u has non-existing or incompatible OptionBroadcastTextID %u, ignoring.", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.OptionBroadcastTextID); - gMenuItem.OptionBroadcastTextID = 0; + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionIndex %u has non-existing or incompatible OptionBroadcastTextID %u, ignoring.", gMenuItem.MenuId, gMenuItem.OptionIndex, gMenuItem.OptionBroadcastTextId); + gMenuItem.OptionBroadcastTextId = 0; } } if (gMenuItem.OptionType >= GOSSIP_OPTION_MAX) - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuID %u, OptionID %u has unknown option id %u. Option will not be used", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.OptionType); + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionIndex %u has unknown option id %u. Option will not be used", gMenuItem.MenuId, gMenuItem.OptionIndex, gMenuItem.OptionType); - if (gMenuItem.ActionPoiID && !GetPointOfInterest(gMenuItem.ActionPoiID)) + if (gMenuItem.ActionPoiId && !GetPointOfInterest(gMenuItem.ActionPoiId)) { - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuID %u, OptionID %u use non-existing action_poi_id %u, ignoring", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.ActionPoiID); - gMenuItem.ActionPoiID = 0; + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionIndex %u use non-existing action_poi_id %u, ignoring", gMenuItem.MenuId, gMenuItem.OptionIndex, gMenuItem.ActionPoiId); + gMenuItem.ActionPoiId = 0; } - if (gMenuItem.BoxBroadcastTextID) + if (gMenuItem.BoxBroadcastTextId) { - if (!sBroadcastTextStore.LookupEntry(gMenuItem.BoxBroadcastTextID)) + if (!sBroadcastTextStore.LookupEntry(gMenuItem.BoxBroadcastTextId)) { - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionID %u has non-existing or incompatible BoxBroadcastTextId %u, ignoring.", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.BoxBroadcastTextID); - gMenuItem.BoxBroadcastTextID = 0; + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionIndex %u has non-existing or incompatible BoxBroadcastTextId %u, ignoring.", gMenuItem.MenuId, gMenuItem.OptionIndex, gMenuItem.BoxBroadcastTextId); + gMenuItem.BoxBroadcastTextId = 0; } } if (gMenuItem.TrainerId && !GetTrainer(gMenuItem.TrainerId)) { - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option_trainer` for MenuId %u, OptionIndex %u use non-existing TrainerId %u, ignoring", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.TrainerId); + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option_trainer` for MenuId %u, OptionIndex %u use non-existing TrainerId %u, ignoring", gMenuItem.MenuId, gMenuItem.OptionIndex, gMenuItem.TrainerId); gMenuItem.TrainerId = 0; } - _gossipMenuItemsStore.insert(GossipMenuItemsContainer::value_type(gMenuItem.MenuID, gMenuItem)); + _gossipMenuItemsStore.insert(GossipMenuItemsContainer::value_type(gMenuItem.MenuId, gMenuItem)); } while (result->NextRow()); - TC_LOG_INFO("server.loading", ">> Loaded %u gossip_menu_option entries in %u ms", uint32(_gossipMenuItemsStore.size()), GetMSTimeDiffToNow(oldMSTime)); + TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " gossip_menu_option entries in %u ms", _gossipMenuItemsStore.size(), GetMSTimeDiffToNow(oldMSTime)); } Trainer::Trainer const* ObjectMgr::GetTrainer(uint32 trainerId) const diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index c637884c203..7f3dd1b5115 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -507,7 +507,7 @@ struct GossipMenuItemsLocale std::vector<std::string> BoxText; }; -typedef std::unordered_map<uint32, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer; +typedef std::unordered_map<std::pair<uint32, uint32>, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer; struct PointOfInterestLocale { @@ -537,7 +537,6 @@ typedef std::multimap<uint32, uint32> QuestRelationsReverse; // quest -> unit/go typedef std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator> QuestRelationBounds; typedef std::pair<QuestRelationsReverse::const_iterator, QuestRelationsReverse::const_iterator> QuestRelationReverseBounds; - struct PlayerCreateInfoItem { PlayerCreateInfoItem(uint32 id, uint32 amount) : item_id(id), item_amount(amount) { } @@ -664,27 +663,27 @@ struct PointOfInterest struct GossipMenuItems { - uint32 MenuID; - uint32 OptionID; + uint32 MenuId; + uint32 OptionIndex; uint8 OptionIcon; std::string OptionText; - uint32 OptionBroadcastTextID; + uint32 OptionBroadcastTextId; uint32 OptionType; uint64 OptionNpcFlag; - uint32 ActionMenuID; - uint32 ActionPoiID; + uint32 ActionMenuId; + uint32 ActionPoiId; bool BoxCoded; uint32 BoxMoney; std::string BoxText; - uint32 BoxBroadcastTextID; + uint32 BoxBroadcastTextId; uint32 TrainerId; ConditionContainer Conditions; }; struct GossipMenus { - uint32 MenuID; - uint32 TextID; + uint32 MenuId; + uint32 TextId; ConditionContainer Conditions; }; @@ -1390,9 +1389,9 @@ class TC_GAME_API ObjectMgr if (itr == _pageTextLocaleStore.end()) return nullptr; return &itr->second; } - GossipMenuItemsLocale const* GetGossipMenuItemsLocale(uint32 entry) const + GossipMenuItemsLocale const* GetGossipMenuItemsLocale(uint32 menuId, uint32 optionIndex) const { - GossipMenuItemsLocaleContainer::const_iterator itr = _gossipMenuItemsLocaleStore.find(entry); + auto itr = _gossipMenuItemsLocaleStore.find(std::make_pair(menuId, optionIndex)); if (itr == _gossipMenuItemsLocaleStore.end()) return nullptr; return &itr->second; } |