diff options
-rw-r--r-- | sql/base/auth_database.sql | 7 | ||||
-rw-r--r-- | sql/updates/auth/master/2019_06_16_00_auth.sql | 10 | ||||
-rw-r--r-- | sql/updates/world/master/2021_12_11_12_world.sql | 3 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Language.h | 3 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_lookup.cpp | 170 |
5 files changed, 189 insertions, 4 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index a613a59c755..a42fd4ef9ef 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1245,6 +1245,9 @@ INSERT INTO `rbac_linked_permissions` VALUES (196,871), (196,872), (196,873), +(196,875), +(196,876), +(196,877), (196,881), (196,882), (197,232), @@ -2155,6 +2158,9 @@ INSERT INTO `rbac_permissions` VALUES (872,'Command: server debug'), (873,'Command: reload creature_movement_override'), (874,'Command: debug asan'), +(875,'Command: lookup map id'), +(876,'Command: lookup item id'), +(877,'Command: lookup quest id'), (881,'Command: reload vehicle_template'), (882,'Command: reload spell_script_names'); /*!40000 ALTER TABLE `rbac_permissions` ENABLE KEYS */; @@ -2393,6 +2399,7 @@ INSERT INTO `updates` VALUES ('2019_06_08_01_auth.sql','8165B1B787E3ECF0C8C0AD2D641513270977ABB4','ARCHIVED','2019-06-04 16:51:31',0), ('2019_06_08_02_auth.sql','B39DCBD902290700A81C9D028F54B58601C19A99','ARCHIVED','2019-06-05 16:26:31',0), ('2019_06_08_03_auth.sql','F483B657015D39D4F63E3905C27C3AA48241AB03','ARCHIVED','2019-06-08 17:14:21',0), +('2019_06_16_00_auth.sql','B14AED4D3387B56FF8C8161D3671750AEEAE0F2E','ARCHIVED','2019-06-15 23:32:12',0), ('2019_07_14_00_auth.sql','94C2B877BD906538E1E008350BEA8D8B58E0A158','ARCHIVED','2019-07-14 19:22:08',0), ('2019_07_15_00_auth.sql','3649248104CFEC70553016273069A9AE744798E3','ARCHIVED','2019-07-15 19:22:08',0), ('2019_07_26_00_auth.sql','DC9D0651602AE78B1243B40555A1A7B8447D01B2','ARCHIVED','2019-07-26 18:21:34',0), diff --git a/sql/updates/auth/master/2019_06_16_00_auth.sql b/sql/updates/auth/master/2019_06_16_00_auth.sql new file mode 100644 index 00000000000..627e4dcab5d --- /dev/null +++ b/sql/updates/auth/master/2019_06_16_00_auth.sql @@ -0,0 +1,10 @@ +DELETE FROM `rbac_permissions` WHERE `id` IN (875, 876, 877); +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(875, "Command: lookup map id"), +(876, "Command: lookup item id"), +(877, "Command: lookup quest id"); + +INSERT INTO `rbac_linked_permissions` (`id`, `linkedId`) VALUES +(196, 875), +(196, 876), +(196, 877); diff --git a/sql/updates/world/master/2021_12_11_12_world.sql b/sql/updates/world/master/2021_12_11_12_world.sql new file mode 100644 index 00000000000..811e1f046e5 --- /dev/null +++ b/sql/updates/world/master/2021_12_11_12_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `trinity_string` WHERE `entry`=5088; +INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES +(5088,'[Scenario]'); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 81423034476..7b69fd52872 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1144,8 +1144,9 @@ enum TrinityStrings LANG_NPCINFO_UNIT_FIELD_FLAGS_3 = 5085, LANG_NPCINFO_NPC_FLAGS = 5086, LANG_NPCINFO_PHASE_IDS = 5087, + LANG_SCENARIO = 5088, - // Room for more Trinity strings 5088-6603 + // Room for more Trinity strings 5089-6603 // Level requirement notifications LANG_SAY_REQ = 6604, diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 608d4b3408a..55cc08587c8 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -45,6 +45,18 @@ public: std::vector<ChatCommand> GetCommands() const override { + static std::vector<ChatCommand> lookupItemCommandTable = + { + { "id", rbac::RBAC_PERM_COMMAND_LOOKUP_ITEM_ID, true, &HandleLookupItemIdCommand, "" }, + { "", rbac::RBAC_PERM_COMMAND_LOOKUP_ITEM, true, &HandleLookupItemCommand, "" }, + }; + + static std::vector<ChatCommand> lookupQuestCommandTable = + { + { "id", rbac::RBAC_PERM_COMMAND_LOOKUP_QUEST_ID, true, &HandleLookupQuestIdCommand, "" }, + { "", rbac::RBAC_PERM_COMMAND_LOOKUP_QUEST, true, &HandleLookupQuestCommand, "" }, + }; + static std::vector<ChatCommand> lookupPlayerCommandTable = { { "ip", rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER_IP, true, &HandleLookupPlayerIpCommand, "" }, @@ -58,23 +70,29 @@ public: { "", rbac::RBAC_PERM_COMMAND_LOOKUP_SPELL, true, &HandleLookupSpellCommand, "" }, }; + static std::vector<ChatCommand> lookupMapCommandTable = + { + { "id", rbac::RBAC_PERM_COMMAND_LOOKUP_SPELL_ID, true, &HandleLookupMapIdCommand, "" }, + { "", rbac::RBAC_PERM_COMMAND_LOOKUP_SPELL, true, &HandleLookupMapCommand, "" }, + }; + static std::vector<ChatCommand> lookupCommandTable = { { "area", rbac::RBAC_PERM_COMMAND_LOOKUP_AREA, true, &HandleLookupAreaCommand, "" }, { "creature", rbac::RBAC_PERM_COMMAND_LOOKUP_CREATURE, true, &HandleLookupCreatureCommand, "" }, { "event", rbac::RBAC_PERM_COMMAND_LOOKUP_EVENT, true, &HandleLookupEventCommand, "" }, { "faction", rbac::RBAC_PERM_COMMAND_LOOKUP_FACTION, true, &HandleLookupFactionCommand, "" }, - { "item", rbac::RBAC_PERM_COMMAND_LOOKUP_ITEM, true, &HandleLookupItemCommand, "" }, + { "item", rbac::RBAC_PERM_COMMAND_LOOKUP_ITEM, true, nullptr, "", lookupItemCommandTable }, { "itemset", rbac::RBAC_PERM_COMMAND_LOOKUP_ITEMSET, true, &HandleLookupItemSetCommand, "" }, { "object", rbac::RBAC_PERM_COMMAND_LOOKUP_OBJECT, true, &HandleLookupObjectCommand, "" }, - { "quest", rbac::RBAC_PERM_COMMAND_LOOKUP_QUEST, true, &HandleLookupQuestCommand, "" }, + { "quest", rbac::RBAC_PERM_COMMAND_LOOKUP_QUEST, true, nullptr, "", lookupQuestCommandTable }, { "player", rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER, true, nullptr, "", lookupPlayerCommandTable }, { "skill", rbac::RBAC_PERM_COMMAND_LOOKUP_SKILL, true, &HandleLookupSkillCommand, "" }, { "spell", rbac::RBAC_PERM_COMMAND_LOOKUP_SPELL, true, nullptr, "", lookupSpellCommandTable }, { "taxinode", rbac::RBAC_PERM_COMMAND_LOOKUP_TAXINODE, true, &HandleLookupTaxiNodeCommand, "" }, { "tele", rbac::RBAC_PERM_COMMAND_LOOKUP_TELE, true, &HandleLookupTeleCommand, "" }, { "title", rbac::RBAC_PERM_COMMAND_LOOKUP_TITLE, true, &HandleLookupTitleCommand, "" }, - { "map", rbac::RBAC_PERM_COMMAND_LOOKUP_MAP, true, &HandleLookupMapCommand, "" }, + { "map", rbac::RBAC_PERM_COMMAND_LOOKUP_MAP, true, nullptr, "", lookupMapCommandTable }, }; static std::vector<ChatCommand> commandTable = @@ -443,6 +461,34 @@ public: return true; } + static bool HandleLookupItemIdCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + uint32 id = atoi((char*)args); + + if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(id)) + { + std::string name = itemTemplate->GetName(handler->GetSessionDbcLocale()); + + if (name.empty()) + { + handler->SendSysMessage(LANG_COMMAND_NOITEMFOUND); + return true; + } + + if (handler->GetSession()) + handler->PSendSysMessage(LANG_ITEM_LIST_CHAT, id, id, name.c_str()); + else + handler->PSendSysMessage(LANG_ITEM_LIST_CONSOLE, id, name.c_str()); + } + else + handler->SendSysMessage(LANG_COMMAND_NOITEMFOUND); + + return true; + } + static bool HandleLookupItemSetCommand(ChatHandler* handler, char const* args) { if (!*args) @@ -740,6 +786,71 @@ public: return true; } + static bool HandleLookupQuestIdCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + uint32 id = atoi((char*)args); + + // can be NULL at console call + Player* target = handler->getSelectedPlayerOrSelf(); + + if (Quest const* quest = sObjectMgr->GetQuestTemplate(id)) + { + std::string title = quest->GetLogTitle(); + if (title.empty()) + { + handler->SendSysMessage(LANG_COMMAND_NOQUESTFOUND); + return true; + } + + char const* statusStr = ""; + + if (target) + { + switch (target->GetQuestStatus(id)) + { + case QUEST_STATUS_COMPLETE: + statusStr = handler->GetTrinityString(LANG_COMMAND_QUEST_COMPLETE); + break; + case QUEST_STATUS_INCOMPLETE: + statusStr = handler->GetTrinityString(LANG_COMMAND_QUEST_ACTIVE); + break; + case QUEST_STATUS_REWARDED: + statusStr = handler->GetTrinityString(LANG_COMMAND_QUEST_REWARDED); + break; + default: + break; + } + } + + if (handler->GetSession()) + { + int32 maxLevel = 0; + if (Optional<ContentTuningLevels> questLevels = sDB2Manager.GetContentTuningData(quest->GetContentTuningId(), + handler->GetSession()->GetPlayer()->m_playerData->CtrOptions->ContentTuningConditionMask)) + maxLevel = questLevels->MaxLevel; + + int32 scalingFactionGroup = 0; + if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(quest->GetContentTuningId())) + scalingFactionGroup = contentTuning->GetScalingFactionGroup(); + + handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, id, id, + handler->GetSession()->GetPlayer()->GetQuestLevel(quest), + handler->GetSession()->GetPlayer()->GetQuestMinLevel(quest), + maxLevel, scalingFactionGroup, + title.c_str(), statusStr); + } + else + handler->PSendSysMessage(LANG_QUEST_LIST_CONSOLE, id, title.c_str(), statusStr); + } + else + handler->SendSysMessage(LANG_COMMAND_NOQUESTFOUND); + + return true; + } + static bool HandleLookupSkillCommand(ChatHandler* handler, char const* args) { if (!*args) @@ -1282,6 +1393,9 @@ public: case MAP_ARENA: ss << handler->GetTrinityString(LANG_ARENA); break; + case MAP_SCENARIO: + ss << handler->GetTrinityString(LANG_SCENARIO); + break; } handler->SendSysMessage(ss.str().c_str()); @@ -1297,6 +1411,56 @@ public: return true; } + static bool HandleLookupMapIdCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + uint32 id = atoi((char*)args); + + if (MapEntry const* mapInfo = sMapStore.LookupEntry(id)) + { + LocaleConstant locale = handler->GetSession() ? handler->GetSession()->GetSessionDbcLocale() : sWorld->GetDefaultDbcLocale(); + std::string name = mapInfo->MapName[locale]; + if (name.empty()) + { + handler->SendSysMessage(LANG_COMMAND_NOSPELLFOUND); + return true; + } + + std::ostringstream ss; + ss << id << " - [" << name << ']'; + + if (mapInfo->IsContinent()) + ss << handler->GetTrinityString(LANG_CONTINENT); + + switch (mapInfo->MapType) + { + case MAP_INSTANCE: + ss << handler->GetTrinityString(LANG_INSTANCE); + break; + case MAP_RAID: + ss << handler->GetTrinityString(LANG_RAID); + break; + case MAP_BATTLEGROUND: + ss << handler->GetTrinityString(LANG_BATTLEGROUND); + break; + case MAP_ARENA: + ss << handler->GetTrinityString(LANG_ARENA); + break; + case MAP_SCENARIO: + ss << handler->GetTrinityString(LANG_SCENARIO); + break; + } + + handler->SendSysMessage(ss.str().c_str()); + } + else + handler->SendSysMessage(LANG_COMMAND_NOMAPFOUND); + + return true; + } + static bool HandleLookupPlayerIpCommand(ChatHandler* handler, char const* args) { std::string ip; |