diff options
author | Yehonal <yehonal.azeroth@gmail.com> | 2017-12-20 20:48:35 +0100 |
---|---|---|
committer | Yehonal <yehonal.azeroth@gmail.com> | 2017-12-21 00:20:29 +0100 |
commit | 17332304fdf129076d0196010602350d5750c808 (patch) | |
tree | d161f8845df9e5c8ec0b149bd846646c2b112d49 /src/scripts/Commands/cs_instance.cpp | |
parent | 0fc4a6a153ca3a09ccb6e1311131b12a59c6cba3 (diff) |
Using TC structure allowing easier patches importing
Diffstat (limited to 'src/scripts/Commands/cs_instance.cpp')
-rw-r--r-- | src/scripts/Commands/cs_instance.cpp | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/src/scripts/Commands/cs_instance.cpp b/src/scripts/Commands/cs_instance.cpp deleted file mode 100644 index 2a6f28d135..0000000000 --- a/src/scripts/Commands/cs_instance.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2 - * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> - */ - -/* ScriptData -Name: instance_commandscript -%Complete: 100 -Comment: All instance related commands -Category: commandscripts -EndScriptData */ - -#include "ScriptMgr.h" -#include "Chat.h" -#include "Group.h" -#include "InstanceSaveMgr.h" -#include "InstanceScript.h" -#include "MapManager.h" -#include "Player.h" -#include "Language.h" - -class instance_commandscript : public CommandScript -{ -public: - instance_commandscript() : CommandScript("instance_commandscript") { } - - std::vector<ChatCommand> GetCommands() const override - { - static std::vector<ChatCommand> instanceCommandTable = - { - { "listbinds", SEC_MODERATOR, false, &HandleInstanceListBindsCommand, "" }, - { "unbind", SEC_MODERATOR, false, &HandleInstanceUnbindCommand, "" }, - { "stats", SEC_MODERATOR, true, &HandleInstanceStatsCommand, "" }, - { "savedata", SEC_ADMINISTRATOR, false, &HandleInstanceSaveDataCommand, "" }, - { "setbossstate", SEC_MODERATOR, true, &HandleInstanceSetBossStateCommand, "" }, - { "getbossstate", SEC_MODERATOR, true, &HandleInstanceGetBossStateCommand, "" } - }; - - static std::vector<ChatCommand> commandTable = - { - { "instance", SEC_MODERATOR, true, nullptr, "", instanceCommandTable } - }; - - return commandTable; - } - - static std::string GetTimeString(uint64 time) - { - uint64 days = time / DAY, hours = (time % DAY) / HOUR, minute = (time % HOUR) / MINUTE; - std::ostringstream ss; - if (days) - ss << days << "d "; - if (hours) - ss << hours << "h "; - ss << minute << 'm'; - return ss.str(); - } - - static bool HandleInstanceListBindsCommand(ChatHandler* handler, char const* /*args*/) - { - Player* player = handler->getSelectedPlayer(); - if (!player) - player = handler->GetSession()->GetPlayer(); - - uint32 counter = 0; - for (uint8 i = 0; i < MAX_DIFFICULTY; ++i) - { - BoundInstancesMap const& m_boundInstances = sInstanceSaveMgr->PlayerGetBoundInstances(player->GetGUIDLow(), Difficulty(i)); - for (BoundInstancesMap::const_iterator itr = m_boundInstances.begin(); itr != m_boundInstances.end(); ++itr) - { - InstanceSave* save = itr->second.save; - uint32 resetTime = itr->second.extended ? save->GetExtendedResetTime() : save->GetResetTime(); - uint32 ttr = (resetTime >= time(nullptr) ? resetTime - time(nullptr) : 0); - std::string timeleft = GetTimeString(ttr); - handler->PSendSysMessage("map: %d, inst: %d, perm: %s, diff: %d, canReset: %s, TTR: %s%s", itr->first, save->GetInstanceId(), itr->second.perm ? "yes" : "no", save->GetDifficulty(), save->CanReset() ? "yes" : "no", timeleft.c_str(), (itr->second.extended ? " (extended)" : "")); - counter++; - } - } - handler->PSendSysMessage("player binds: %d", counter); - - return true; - } - - static bool HandleInstanceUnbindCommand(ChatHandler* handler, char const* args) - { - if (!*args) - return false; - - Player* player = handler->getSelectedPlayer(); - if (!player) - player = handler->GetSession()->GetPlayer(); - - char* map = strtok((char*)args, " "); - char* pDiff = strtok(nullptr, " "); - int8 diff = -1; - if (pDiff) - diff = atoi(pDiff); - uint16 counter = 0; - uint16 MapId = 0; - - if (strcmp(map, "all")) - { - MapId = uint16(atoi(map)); - if (!MapId) - return false; - } - - for (uint8 i = 0; i < MAX_DIFFICULTY; ++i) - { - BoundInstancesMap const& m_boundInstances = sInstanceSaveMgr->PlayerGetBoundInstances(player->GetGUIDLow(), Difficulty(i)); - for (BoundInstancesMap::const_iterator itr = m_boundInstances.begin(); itr != m_boundInstances.end();) - { - InstanceSave* save = itr->second.save; - if (itr->first != player->GetMapId() && (!MapId || MapId == itr->first) && (diff == -1 || diff == save->GetDifficulty())) - { - uint32 resetTime = itr->second.extended ? save->GetExtendedResetTime() : save->GetResetTime(); - uint32 ttr = (resetTime >= time(nullptr) ? resetTime - time(nullptr) : 0); - std::string timeleft = GetTimeString(ttr); - handler->PSendSysMessage("unbinding map: %d, inst: %d, perm: %s, diff: %d, canReset: %s, TTR: %s%s", itr->first, save->GetInstanceId(), itr->second.perm ? "yes" : "no", save->GetDifficulty(), save->CanReset() ? "yes" : "no", timeleft.c_str(), (itr->second.extended ? " (extended)" : "")); - sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUIDLow(), itr->first, Difficulty(i), true, player); - itr = m_boundInstances.begin(); - counter++; - } - else - ++itr; - } - } - handler->PSendSysMessage("instances unbound: %d", counter); - - return true; - } - - static bool HandleInstanceStatsCommand(ChatHandler* handler, char const* /*args*/) - { - uint32 dungeon = 0, battleground = 0, arena = 0, spectators = 0; - sMapMgr->GetNumInstances(dungeon, battleground, arena); - handler->PSendSysMessage("instances loaded: dungeons (%d), battlegrounds (%d), arenas (%d)", dungeon, battleground, arena); - dungeon = 0; battleground = 0; arena = 0; spectators = 0; - sMapMgr->GetNumPlayersInInstances(dungeon, battleground, arena, spectators); - handler->PSendSysMessage("players in instances: dungeons (%d), battlegrounds (%d), arenas (%d + %d spect)", dungeon, battleground, arena, spectators); - - handler->SetSentErrorMessage(true); - return false; - } - - static bool HandleInstanceSaveDataCommand(ChatHandler* handler, char const* /*args*/) - { - Player* player = handler->GetSession()->GetPlayer(); - Map* map = player->GetMap(); - if (!map->IsDungeon()) - { - handler->PSendSysMessage("Map is not a dungeon."); - handler->SetSentErrorMessage(true); - return false; - } - - if (!map->ToInstanceMap()->GetInstanceScript()) - { - handler->PSendSysMessage("Map has no instance data."); - handler->SetSentErrorMessage(true); - return false; - } - - map->ToInstanceMap()->GetInstanceScript()->SaveToDB(); - - return true; - } - - static bool HandleInstanceSetBossStateCommand(ChatHandler* handler, char const* args) - { - if (!*args) - return false; - - char* param1 = strtok((char*)args, " "); - char* param2 = strtok(nullptr, " "); - char* param3 = strtok(nullptr, " "); - uint32 encounterId = 0; - int32 state = 0; - Player* player = nullptr; - std::string playerName; - - // Character name must be provided when using this from console. - if (!param2 || (!param3 && !handler->GetSession())) - { - handler->PSendSysMessage(LANG_CMD_SYNTAX); - handler->SetSentErrorMessage(true); - return false; - } - - if (!param3) - player = handler->GetSession()->GetPlayer(); - else - { - playerName = param3; - if (normalizePlayerName(playerName)) - player = ObjectAccessor::FindPlayerByName(playerName); - } - - if (!player) - { - handler->PSendSysMessage(LANG_PLAYER_NOT_FOUND); - handler->SetSentErrorMessage(true); - return false; - } - - InstanceMap* map = player->GetMap()->ToInstanceMap(); - if (!map) - { - handler->PSendSysMessage(LANG_NOT_DUNGEON); - handler->SetSentErrorMessage(true); - return false; - } - - if (!map->GetInstanceScript()) - { - handler->PSendSysMessage(LANG_NO_INSTANCE_DATA); - handler->SetSentErrorMessage(true); - return false; - } - - encounterId = atoi(param1); - state = atoi(param2); - - // Reject improper values. - if (state > TO_BE_DECIDED || encounterId > map->GetInstanceScript()->GetEncounterCount()) - { - handler->PSendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - map->GetInstanceScript()->SetBossState(encounterId, EncounterState(state)); - std::string stateName = InstanceScript::GetBossStateName(state); - handler->PSendSysMessage(LANG_COMMAND_INST_SET_BOSS_STATE, encounterId, state, stateName.c_str()); - return true; - } - - static bool HandleInstanceGetBossStateCommand(ChatHandler* handler, char const* args) - { - if (!*args) - return false; - - char* param1 = strtok((char*)args, " "); - char* param2 = strtok(nullptr, " "); - uint32 encounterId = 0; - Player* player = nullptr; - std::string playerName; - - // Character name must be provided when using this from console. - if (!param1 || (!param2 && !handler->GetSession())) - { - handler->PSendSysMessage(LANG_CMD_SYNTAX); - handler->SetSentErrorMessage(true); - return false; - } - - if (!param2) - player = handler->GetSession()->GetPlayer(); - else - { - playerName = param2; - if (normalizePlayerName(playerName)) - player = ObjectAccessor::FindPlayerByName(playerName); - } - - if (!player) - { - handler->PSendSysMessage(LANG_PLAYER_NOT_FOUND); - handler->SetSentErrorMessage(true); - return false; - } - - InstanceMap* map = player->GetMap()->ToInstanceMap(); - if (!map) - { - handler->PSendSysMessage(LANG_NOT_DUNGEON); - handler->SetSentErrorMessage(true); - return false; - } - - if (!map->GetInstanceScript()) - { - handler->PSendSysMessage(LANG_NO_INSTANCE_DATA); - handler->SetSentErrorMessage(true); - return false; - } - - encounterId = atoi(param1); - - if (encounterId > map->GetInstanceScript()->GetEncounterCount()) - { - handler->PSendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - uint32 state = map->GetInstanceScript()->GetBossState(encounterId); - std::string stateName = InstanceScript::GetBossStateName(state); - handler->PSendSysMessage(LANG_COMMAND_INST_GET_BOSS_STATE, encounterId, state, stateName.c_str()); - return true; - } -}; - -void AddSC_instance_commandscript() -{ - new instance_commandscript(); -} |