/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2 * Copyright (C) 2008-2016 TrinityCore * Copyright (C) 2005-2009 MaNGOS */ /* ScriptData Name: achievement_commandscript %Complete: 100 Comment: All achievement related commands Category: commandscripts EndScriptData */ #include "Chat.h" #include "Language.h" #include "Player.h" #include "ScriptMgr.h" class achievement_commandscript : public CommandScript { public: achievement_commandscript() : CommandScript("achievement_commandscript") { } std::vector GetCommands() const override { static std::vector achievementCommandTable = { { "add", SEC_GAMEMASTER, false, &HandleAchievementAddCommand, "" }, { "checkall", SEC_ADMINISTRATOR, false, &HandleAchievementCheckAllCommand, "" } }; static std::vector commandTable = { { "achievement", SEC_GAMEMASTER, false, nullptr, "", achievementCommandTable } }; return commandTable; } static bool HandleAchievementAddCommand(ChatHandler* handler, char const* args) { if (!*args) return false; uint32 achievementId = atoi((char*)args); if (!achievementId) { if (char* id = handler->extractKeyFromLink((char*)args, "Hachievement")) achievementId = atoi(id); if (!achievementId) return false; } Player* target = handler->getSelectedPlayer(); if (!target) { handler->SendSysMessage(LANG_NO_CHAR_SELECTED); handler->SetSentErrorMessage(true); return false; } if (AchievementEntry const* achievementEntry = sAchievementStore.LookupEntry(achievementId)) target->CompletedAchievement(achievementEntry); return true; } static bool HandleAchievementCheckAllCommand(ChatHandler* handler, char const* args) { Player* target = handler->getSelectedPlayer(); if (!target) { handler->SendSysMessage(LANG_NO_CHAR_SELECTED); handler->SetSentErrorMessage(true); return false; } target->CheckAllAchievementCriteria(); return true; } }; void AddSC_achievement_commandscript() { new achievement_commandscript(); }