diff --git a/data/sql/updates/pending_db_world/rev_1576659911412868500.sql b/data/sql/updates/pending_db_world/rev_1576659911412868500.sql new file mode 100644 index 000000000..a833bee1e --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1576659911412868500.sql @@ -0,0 +1,8 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1576659911412868500'); + +DELETE FROM `command` WHERE `name` IN ('bank', 'character check bank', 'character check bag', 'character check profession'); + +INSERT INTO `command` VALUES +('character check bank', 2, 'Syntax: .character check bank \r\n\r\nShow your bank inventory.'), +('character check bag', 2, 'Syntax: .character check bag [$target_player]\r #bagSlot 1 - 4'), +('character check profession', 2, 'Syntax: .character check profession [$target_player]\r\nShow known professions list for selected player'); diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index a912a8239..ee417af41 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -35,10 +35,17 @@ public: static std::vector characterDeletedCommandTable = { - { "delete", SEC_CONSOLE, true, &HandleCharacterDeletedDeleteCommand, "" }, - { "list", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedListCommand, "" }, - { "restore", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedRestoreCommand, "" }, - { "old", SEC_CONSOLE, true, &HandleCharacterDeletedOldCommand, "" }, + { "delete", SEC_CONSOLE, true, &HandleCharacterDeletedDeleteCommand, "" }, + { "list", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedListCommand, "" }, + { "restore", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedRestoreCommand, "" }, + { "old", SEC_CONSOLE, true, &HandleCharacterDeletedOldCommand, "" }, + }; + + static std::vector characterCheckCommandTable = + { + { "bank", SEC_GAMEMASTER, false, &HandleCharacterCheckBankCommand, "" }, + { "bag", SEC_GAMEMASTER, false, &HandleCharacterCheckBagCommand, "" }, + { "profession", SEC_GAMEMASTER, false, &HandleCharacterCheckProfessionCommand, "" }, }; static std::vector characterCommandTable = @@ -46,6 +53,7 @@ public: { "customize", SEC_GAMEMASTER, true, &HandleCharacterCustomizeCommand, "" }, { "changefaction", SEC_GAMEMASTER, true, &HandleCharacterChangeFactionCommand, "" }, { "changerace", SEC_GAMEMASTER, true, &HandleCharacterChangeRaceCommand, "" }, + { "check", SEC_GAMEMASTER, false, nullptr, "", characterCheckCommandTable }, { "erase", SEC_CONSOLE, true, &HandleCharacterEraseCommand, "" }, { "deleted", SEC_ADMINISTRATOR, true, nullptr, "", characterDeletedCommandTable }, { "level", SEC_GAMEMASTER, true, &HandleCharacterLevelCommand, "" }, @@ -119,7 +127,7 @@ public: Field* fields = result->Fetch(); DeletedInfo info; - + info.lowGuid = fields[0].GetUInt32(); info.name = fields[1].GetString(); info.accountId = fields[2].GetUInt32(); @@ -214,7 +222,7 @@ public: stmt->setUInt32(0, delInfo.lowGuid); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) sWorld->AddGlobalPlayerData(delInfo.lowGuid, delInfo.accountId, delInfo.name, (*result)[2].GetUInt8(), (*result)[0].GetUInt8(), (*result)[1].GetUInt8(), (*result)[3].GetUInt8(), 0, 0); - + } static void HandleCharacterLevel(Player* player, uint64 playerGuid, uint32 oldLevel, uint32 newLevel, ChatHandler* handler) @@ -507,7 +515,7 @@ public: * * @param args the search string which either contains a player GUID or a part fo the character-name */ - + static bool HandleCharacterDeletedListCommand(ChatHandler* handler, char const* args) { DeletedInfoList foundList; @@ -950,6 +958,155 @@ public: return true; } + + static bool HandleCharacterCheckBankCommand(ChatHandler* handler, char const* /*args*/) + { + handler->GetSession()->SendShowBank(handler->GetSession()->GetPlayer()->GetGUID()); + return true; + } + + static bool HandleCharacterCheckBagCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + char* Slot = strtok((char*)args, " "); + + if (!Slot) + return false; + + Player* player = handler->getSelectedPlayerOrSelf(); + + if (!player) + return false; + + uint8 Counter = 0; + uint8 BagSlot = atoi(Slot); + + switch (BagSlot) + { + case 2: BagSlot = 19; break; + case 3: BagSlot = 20; break; + case 4: BagSlot = 21; break; + case 5: BagSlot = 22; break; + default: BagSlot = 1; break; + } + + handler->PSendSysMessage("--------------------------------------"); + + if (BagSlot == 1) + { + for (uint32 i = 23; i < 39; i++) + { + if (Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i)) + { + Counter++; + std::ostringstream ItemString; + ItemString << std::hex << ItemQualityColors[item->GetTemplate()->Quality]; + + handler->PSendSysMessage("%u - |c%s|Hitem:%u:0:0:0:0:0:0:0:0:0|h[%s]|h|r - %u", Counter, ItemString.str().c_str(), item->GetEntry(), item->GetTemplate()->Name1.c_str(), item->GetCount()); + } + } + } + else + { + if (Bag* bag = player->GetBagByPos(BagSlot)) + { + for (uint32 i = 0; i < bag->GetBagSize(); i++) + { + if (Item* item = player->GetItemByPos(BagSlot, i)) + { + Counter++; + std::ostringstream ItemString; + ItemString << std::hex << ItemQualityColors[item->GetTemplate()->Quality]; + + handler->PSendSysMessage("%u - |c%s|Hitem:%u:0:0:0:0:0:0:0:0:0|h[%s]|h|r - %u", Counter, ItemString.str().c_str(), item->GetEntry(), item->GetTemplate()->Name1.c_str(), item->GetCount()); + } + } + } + } + + handler->PSendSysMessage("--------------------------------------"); + return true; + } + + static bool HandleCharacterCheckProfessionCommand(ChatHandler* handler, char const*) + { + Player* player = handler->getSelectedPlayerOrSelf(); + + if (!player) + return false; + + uint8 Counter = 0; + + handler->PSendSysMessage("--------------------------------------"); + + for (uint32 i = 1; i < sSkillLineStore.GetNumRows(); ++i) + { + SkillLineEntry const* SkillInfo = sSkillLineStore.LookupEntry(i); + + if (!SkillInfo) + continue; + + if ((SkillInfo->categoryId != SKILL_CATEGORY_PROFESSION) && !SkillInfo->canLink) + continue; + + uint32 SkillID = SkillInfo->id; + + if (player->HasSkill(SkillID)) + { + Counter++; + + switch (SkillID) + { + case SKILL_ALCHEMY: + handler->PSendSysMessage("%u - Alchemy - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_BLACKSMITHING: + handler->PSendSysMessage("%u - Blacksmithing - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_ENCHANTING: + handler->PSendSysMessage("%u - Enchanting - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_ENGINEERING: + handler->PSendSysMessage("%u - Engineering - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_INSCRIPTION: + handler->PSendSysMessage("%u - Inscription - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_JEWELCRAFTING: + handler->PSendSysMessage("%u - Jewelcrafting - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_LEATHERWORKING: + handler->PSendSysMessage("%u - Leatherworking - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_TAILORING: + handler->PSendSysMessage("%u - Tailoring - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_SKINNING: + handler->PSendSysMessage("%u - Skinning - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_HERBALISM: + handler->PSendSysMessage("%u - Herbalism - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_MINING: + handler->PSendSysMessage("%u - Mining - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_COOKING: + handler->PSendSysMessage("%u - Cooking - %u", Counter, player->GetSkillValue(SkillID)); + break; + case SKILL_FIRST_AID: + handler->PSendSysMessage("%u - First Aid - %u", Counter, player->GetSkillValue(SkillID)); + break; + default: + break; + } + } + } + + handler->PSendSysMessage("--------------------------------------"); + return true; + } }; void AddSC_character_commandscript() diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index a287e9d65..a7aa2cd80 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -86,7 +86,6 @@ public: { "hidearea", SEC_ADMINISTRATOR, false, &HandleHideAreaCommand, "" }, { "additem", SEC_GAMEMASTER, false, &HandleAddItemCommand, "" }, { "additemset", SEC_GAMEMASTER, false, &HandleAddItemSetCommand, "" }, - { "bank", SEC_ADMINISTRATOR, false, &HandleBankCommand, "" }, { "wchange", SEC_ADMINISTRATOR, false, &HandleChangeWeather, "" }, { "maxskill", SEC_GAMEMASTER, false, &HandleMaxSkillCommand, "" }, { "setskill", SEC_GAMEMASTER, false, &HandleSetSkillCommand, "" }, @@ -1589,12 +1588,6 @@ public: return true; } - static bool HandleBankCommand(ChatHandler* handler, char const* /*args*/) - { - handler->GetSession()->SendShowBank(handler->GetSession()->GetPlayer()->GetGUID()); - return true; - } - static bool HandleChangeWeather(ChatHandler* handler, char const* args) { if (!*args)