mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Commands: implement commands to look up a map/item/quest name for a given id (#23416)
* Core/Commands: implement commands to look up a map/item/quest name for a given id. * Add entry to updates table. * Rename 9999_99_99_99_auth.sql to 2019_06_16_00_auth.sql * Add missed change, thanks jackpoz! * Update auth_database.sql
This commit is contained in:
committed by
Giacomo Pozzoni
parent
14c2bdc5da
commit
ce3dcdcb1a
@@ -770,6 +770,9 @@ INSERT INTO `rbac_linked_permissions` VALUES
|
||||
(196,871),
|
||||
(196,872),
|
||||
(196,873),
|
||||
(196,875),
|
||||
(196,876),
|
||||
(196,877),
|
||||
(197,232),
|
||||
(197,236),
|
||||
(197,237),
|
||||
@@ -1647,7 +1650,10 @@ INSERT INTO `rbac_permissions` VALUES
|
||||
(871,'Command: debug instancespawn'),
|
||||
(872,'Command: server debug'),
|
||||
(873,'Command: reload creature_movement_override'),
|
||||
(874,'Command: debug asan');
|
||||
(874,'Command: debug asan'),
|
||||
(875,'Command: lookup map id'),
|
||||
(876,'Command: lookup item id'),
|
||||
(877,'Command: lookup quest id');
|
||||
/*!40000 ALTER TABLE `rbac_permissions` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@@ -1777,12 +1783,13 @@ INSERT INTO `updates` VALUES
|
||||
('2018_09_06_00_auth.sql','309D21E0DF82ED8921F77EAFDE741F38AC32BB13','ARCHIVED','2018-09-06 00:00:00',0),
|
||||
('2018_09_17_00_auth.sql','4DB671F0A4FA1A93AF28FB6426AF13DE72C7DA3D','ARCHIVED','2018-09-17 00:00:00',0),
|
||||
('2018_12_30_00_auth.sql','680F4F9194FC37592041C2DB5B2B7006B14E836D','ARCHIVED','2018-12-30 00:00:00',0),
|
||||
('2019_03_19_00_auth.sql','03BA8CFC60ACD5B874840A3E50F11CD2643730A0','ARCHIVED','2019-03-19 07:17:45',5),
|
||||
('2019_04_15_00_auth.sql','EC67389946A24BFAA226B9DFCFEDB3BA095B4C42','ARCHIVED','2019-04-15 06:16:09',5),
|
||||
('2019_03_19_00_auth.sql','03BA8CFC60ACD5B874840A3E50F11CD2643730A0','ARCHIVED','2019-03-19 07:17:45',0),
|
||||
('2019_04_15_00_auth.sql','EC67389946A24BFAA226B9DFCFEDB3BA095B4C42','ARCHIVED','2019-04-15 06:16:09',0),
|
||||
('2019_04_27_00_auth.sql','84B1EB9CC9B09BAF55E6295D202EC57D99B1B60E','ARCHIVED','2019-04-27 18:07:18',0),
|
||||
('2019_05_15_00_auth.sql','8A7B96E66D689DA63380654142FF60A1EE938697','ARCHIVED','2019-05-15 06:13:20',5),
|
||||
('2019_05_15_00_auth.sql','8A7B96E66D689DA63380654142FF60A1EE938697','ARCHIVED','2019-05-15 06:13:20',0),
|
||||
('2019_06_06_00_auth.sql','6DE8159E04BEE7BA0A4A81D72D160EB74934B6A5','ARCHIVED','2019-06-06 18:09:54',0),
|
||||
('2019_06_15_00_auth.sql','456B92D99FFD2E7B6CBF64F4C68555A42B24B298','ARCHIVED','2019-06-15 07:33:45',5);
|
||||
('2019_06_15_00_auth.sql','456B92D99FFD2E7B6CBF64F4C68555A42B24B298','ARCHIVED','2019-06-15 07:33:45',0),
|
||||
('2019_06_16_00_auth.sql','B14AED4D3387B56FF8C8161D3671750AEEAE0F2E','ARCHIVED','2019-06-15 23:32:12',0);
|
||||
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
10
sql/updates/auth/3.3.5/2019_06_16_00_auth.sql
Normal file
10
sql/updates/auth/3.3.5/2019_06_16_00_auth.sql
Normal file
@@ -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);
|
||||
@@ -772,6 +772,9 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_SERVER_DEBUG = 872,
|
||||
RBAC_PERM_COMMAND_RELOAD_CREATURE_MOVEMENT_OVERRIDE = 873,
|
||||
RBAC_PERM_COMMAND_DEBUG_ASAN = 874,
|
||||
RBAC_PERM_COMMAND_LOOKUP_MAP_ID = 875,
|
||||
RBAC_PERM_COMMAND_LOOKUP_ITEM_ID = 876,
|
||||
RBAC_PERM_COMMAND_LOOKUP_QUEST_ID = 877,
|
||||
//
|
||||
// IF YOU ADD NEW PERMISSIONS, ADD THEM IN MASTER BRANCH AS WELL!
|
||||
//
|
||||
|
||||
@@ -44,6 +44,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, "" },
|
||||
@@ -57,23 +69,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, "" },
|
||||
{ "player", rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER, true, nullptr, "", lookupPlayerCommandTable },
|
||||
{ "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 },
|
||||
{ "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 =
|
||||
@@ -471,6 +489,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->Name1;
|
||||
|
||||
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)
|
||||
@@ -738,6 +784,56 @@ 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->GetTitle();
|
||||
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())
|
||||
handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, id, id, quest->GetQuestLevel(), 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)
|
||||
@@ -1294,6 +1390,53 @@ 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))
|
||||
{
|
||||
uint8 locale = handler->GetSession() ? handler->GetSession()->GetSessionDbcLocale() : sWorld->GetDefaultDbcLocale();
|
||||
std::string name = mapInfo->name[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->map_type)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user