From ec4eff6aa08f7cdfb39e9431afb96357cc516f68 Mon Sep 17 00:00:00 2001 From: IntelligentQuantum Date: Fri, 29 Oct 2021 17:01:42 +0330 Subject: [PATCH] feat(Scripts/Commands): convert cs_cheat to new system (#8740) --- src/server/scripts/Commands/cs_cheat.cpp | 326 ++++++++++------------- 1 file changed, 144 insertions(+), 182 deletions(-) diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp index 6a34e2e3d..407fdaaef 100644 --- a/src/server/scripts/Commands/cs_cheat.cpp +++ b/src/server/scripts/Commands/cs_cheat.cpp @@ -15,14 +15,11 @@ * with this program. If not, see . */ +#include "ScriptMgr.h" #include "Chat.h" #include "Language.h" #include "Player.h" -#include "ScriptMgr.h" - -#if AC_COMPILER == AC_COMPILER_GNU -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#endif +#include "WorldSession.h" using namespace Acore::ChatCommands; @@ -35,155 +32,104 @@ public: { static ChatCommandTable cheatCommandTable = { - { "god", SEC_GAMEMASTER, false, &HandleGodModeCheatCommand, "" }, - { "casttime", SEC_GAMEMASTER, false, &HandleCasttimeCheatCommand, "" }, - { "cooldown", SEC_GAMEMASTER, false, &HandleCoolDownCheatCommand, "" }, - { "power", SEC_GAMEMASTER, false, &HandlePowerCheatCommand, "" }, - { "waterwalk", SEC_GAMEMASTER, false, &HandleWaterwalkCheatCommand, "" }, - { "status", SEC_GAMEMASTER, false, &HandleCheatStatusCommand, "" }, - { "taxi", SEC_GAMEMASTER, false, &HandleTaxiCheatCommand, "" }, - { "explore", SEC_GAMEMASTER, false, &HandleExploreCheatCommand, "" }, + { "god", HandleGodModeCheatCommand, SEC_GAMEMASTER, Console::No }, + { "casttime", HandleCasttimeCheatCommand, SEC_GAMEMASTER, Console::No }, + { "cooldown", HandleCoolDownCheatCommand, SEC_GAMEMASTER, Console::No }, + { "power", HandlePowerCheatCommand, SEC_GAMEMASTER, Console::No }, + { "waterwalk", HandleWaterWalkCheatCommand, SEC_GAMEMASTER, Console::No }, + { "status", HandleCheatStatusCommand, SEC_GAMEMASTER, Console::No }, + { "taxi", HandleTaxiCheatCommand, SEC_GAMEMASTER, Console::No }, + { "explore", HandleExploreCheatCommand, SEC_GAMEMASTER, Console::No } }; static ChatCommandTable commandTable = { - { "cheat", SEC_GAMEMASTER, false, nullptr, "", cheatCommandTable }, + { "cheat", cheatCommandTable } }; return commandTable; } - static bool HandleGodModeCheatCommand(ChatHandler* handler, char const* args) + static bool HandleGodModeCheatCommand(ChatHandler* handler, Optional enableArg) { - std::string argstr = (char*)args; + bool enable = !handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_GOD); + if (enableArg) + enable = *enableArg; - if (!*args) - argstr = (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_GOD)) ? "off" : "on"; - - if (argstr == "off") - { - handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_GOD); - handler->SendSysMessage("Godmode is OFF. You can take damage."); - return true; - } - else if (argstr == "on") + if (enable) { handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_GOD); handler->SendSysMessage("Godmode is ON. You won't take damage."); - return true; - } - - return false; - } - - static bool HandleCasttimeCheatCommand(ChatHandler* handler, char const* args) - { - std::string argstr = (char*)args; - - if (!*args) - argstr = (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_CASTTIME)) ? "off" : "on"; - - if (argstr == "off") - { - handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_CASTTIME); - handler->SendSysMessage("CastTime Cheat is OFF. Your spells will have a casttime."); - return true; - } - else if (argstr == "on") - { - handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_CASTTIME); - handler->SendSysMessage("CastTime Cheat is ON. Your spells won't have a casttime."); - return true; - } - - return false; - } - - static bool HandleCoolDownCheatCommand(ChatHandler* handler, char const* args) - { - std::string argstr = (char*)args; - - if (!*args) - argstr = (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_COOLDOWN)) ? "off" : "on"; - - if (argstr == "off") - { - handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_COOLDOWN); - handler->SendSysMessage("Cooldown Cheat is OFF. You are on the global cooldown."); - return true; - } - else if (argstr == "on") - { - handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_COOLDOWN); - handler->SendSysMessage("Cooldown Cheat is ON. You are not on the global cooldown."); - return true; - } - - return false; - } - - static bool HandlePowerCheatCommand(ChatHandler* handler, char const* args) - { - std::string argstr = (char*)args; - - if (!*args) - argstr = (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_POWER)) ? "off" : "on"; - - if (argstr == "off") - { - handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_POWER); - handler->SendSysMessage("Power Cheat is OFF. You need mana/rage/energy to use spells."); - return true; - } - else if (argstr == "on") - { - handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_POWER); - handler->SendSysMessage("Power Cheat is ON. You don't need mana/rage/energy to use spells."); - return true; - } - - return false; - } - - static bool HandleWaterwalkCheatCommand(ChatHandler* handler, char const* args) - { - if (!*args) - return false; - - Player* player = handler->getSelectedPlayer(); - if (!player) - { - handler->PSendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(player)) - return false; - - if (strncmp(args, "on", 3) == 0) - { - player->SetMovement(MOVE_WATER_WALK); // ON - handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_WATERWALK); - } - else if (strncmp(args, "off", 4) == 0) - { - player->SetMovement(MOVE_LAND_WALK); // OFF - handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_WATERWALK); } else { - handler->SendSysMessage(LANG_USE_BOL); - return false; + handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_GOD); + handler->SendSysMessage("Godmode is OFF. You can take damage."); } - handler->PSendSysMessage(LANG_YOU_SET_WATERWALK, args, handler->GetNameLink(player).c_str()); - if (handler->needReportToTarget(player)) - ChatHandler(player->GetSession()).PSendSysMessage(LANG_YOUR_WATERWALK_SET, args, handler->GetNameLink().c_str()); return true; } - static bool HandleCheatStatusCommand(ChatHandler* handler, char const* /*args*/) + static bool HandleCasttimeCheatCommand(ChatHandler* handler, Optional enableArg) + { + bool enable = !handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_CASTTIME); + if (enableArg) + enable = *enableArg; + + if (enable) + { + handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_CASTTIME); + handler->SendSysMessage("CastTime Cheat is ON. Your spells won't have a casttime."); + } + else + { + handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_CASTTIME); + handler->SendSysMessage("CastTime Cheat is OFF. Your spells will have a casttime."); + } + + return true; + } + + static bool HandleCoolDownCheatCommand(ChatHandler* handler, Optional enableArg) + { + bool enable = !handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_COOLDOWN); + if (enableArg) + enable = *enableArg; + + if (enable) + { + handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_COOLDOWN); + handler->SendSysMessage("Cooldown Cheat is ON. You are not on the global cooldown."); + } + else + { + handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_COOLDOWN); + handler->SendSysMessage("Cooldown Cheat is OFF. You are on the global cooldown."); + } + + return true; + } + + static bool HandlePowerCheatCommand(ChatHandler* handler, Optional enableArg) + { + bool enable = !handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_POWER); + if (enableArg) + enable = *enableArg; + + if (enable) + { + handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_POWER); + handler->SendSysMessage("Power Cheat is ON. You don't need mana/rage/energy to use spells."); + } + else + { + handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_POWER); + handler->SendSysMessage("Power Cheat is OFF. You need mana/rage/energy to use spells."); + } + + return true; + } + + static bool HandleCheatStatusCommand(ChatHandler* handler) { Player* player = handler->GetSession()->GetPlayer(); @@ -201,72 +147,88 @@ public: return true; } - static bool HandleTaxiCheatCommand(ChatHandler* handler, char const* args) + static bool HandleWaterWalkCheatCommand(ChatHandler* handler, Optional enableArg) { - std::string argStr = (char*)args; + bool enable = !handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_WATERWALK); + if (enableArg) + enable = *enableArg; + if (enable) + { + handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_WATERWALK); + handler->GetSession()->GetPlayer()->SetMovement(MOVE_WATER_WALK); // ON + handler->SendSysMessage("Waterwalking is ON. You can walk on water."); + } + else + { + handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_WATERWALK); + handler->GetSession()->GetPlayer()->SetMovement(MOVE_LAND_WALK); // OFF + handler->SendSysMessage("Waterwalking is OFF. You can't walk on water."); + } + + return true; + } + + static bool HandleTaxiCheatCommand(ChatHandler* handler, Optional enableArg) + { Player* chr = handler->getSelectedPlayer(); if (!chr) chr = handler->GetSession()->GetPlayer(); - else if (handler->HasLowerSecurity(chr)) // check online security + else if (handler->HasLowerSecurity(chr, ObjectGuid::Empty)) // check online security return false; - if (!*args) - argStr = (chr->isTaxiCheater()) ? "off" : "on"; + bool enable = !chr->isTaxiCheater(); + if (enableArg) + enable = *enableArg; - if (argStr == "off") - { - chr->SetTaxiCheater(false); - handler->PSendSysMessage(LANG_YOU_REMOVE_TAXIS, handler->GetNameLink(chr).c_str()); - if (handler->needReportToTarget(chr)) - ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_TAXIS_REMOVED, handler->GetNameLink().c_str()); - - return true; - } - else if (argStr == "on") + if (enable) { chr->SetTaxiCheater(true); handler->PSendSysMessage(LANG_YOU_GIVE_TAXIS, handler->GetNameLink(chr).c_str()); if (handler->needReportToTarget(chr)) ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_TAXIS_ADDED, handler->GetNameLink().c_str()); - return true; - } - - handler->SendSysMessage(LANG_USE_BOL); - handler->SetSentErrorMessage(true); - - return false; - } - - static bool HandleExploreCheatCommand(ChatHandler* handler, char const* args) - { - if (!*args) - return false; - - int flag = atoi((char*)args); - - Player* target = handler->getSelectedPlayerOrSelf(); - - for (uint8 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) - { - if (flag != 0) - target->SetFlag(PLAYER_EXPLORED_ZONES_1 + i, 0xFFFFFFFF); - else - target->RemoveFlag(PLAYER_EXPLORED_ZONES_1 + i, 0xFFFFFFFF); - } - - if (flag != 0) - { - handler->PSendSysMessage(LANG_YOU_SET_EXPLORE_ALL, handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_EXPLORE_SET_ALL, handler->GetNameLink().c_str()); } else { - handler->PSendSysMessage(LANG_YOU_SET_EXPLORE_NOTHING, handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_EXPLORE_SET_NOTHING, handler->GetNameLink().c_str()); + chr->SetTaxiCheater(false); + handler->PSendSysMessage(LANG_YOU_REMOVE_TAXIS, handler->GetNameLink(chr).c_str()); + if (handler->needReportToTarget(chr)) + ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_TAXIS_REMOVED, handler->GetNameLink().c_str()); + } + + return true; + } + + static bool HandleExploreCheatCommand(ChatHandler* handler, bool reveal) + { + Player* chr = handler->getSelectedPlayer(); + if (!chr) + { + handler->SendSysMessage(LANG_NO_CHAR_SELECTED); + handler->SetSentErrorMessage(true); + return false; + } + + if (reveal) + { + handler->PSendSysMessage(LANG_YOU_SET_EXPLORE_ALL, handler->GetNameLink(chr).c_str()); + if (handler->needReportToTarget(chr)) + ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_EXPLORE_SET_ALL, handler->GetNameLink().c_str()); + } + else + { + handler->PSendSysMessage(LANG_YOU_SET_EXPLORE_NOTHING, handler->GetNameLink(chr).c_str()); + if (handler->needReportToTarget(chr)) + ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_EXPLORE_SET_NOTHING, handler->GetNameLink().c_str()); + } + + for (uint8 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) + { + if (reveal) + handler->GetSession()->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i, 0xFFFFFFFF); + else + handler->GetSession()->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i, 0); } return true;