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_modify.cpp | |
parent | 0fc4a6a153ca3a09ccb6e1311131b12a59c6cba3 (diff) |
Using TC structure allowing easier patches importing
Diffstat (limited to 'src/scripts/Commands/cs_modify.cpp')
-rw-r--r-- | src/scripts/Commands/cs_modify.cpp | 1417 |
1 files changed, 0 insertions, 1417 deletions
diff --git a/src/scripts/Commands/cs_modify.cpp b/src/scripts/Commands/cs_modify.cpp deleted file mode 100644 index f1cdea9832..0000000000 --- a/src/scripts/Commands/cs_modify.cpp +++ /dev/null @@ -1,1417 +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: modify_commandscript -%Complete: 100 -Comment: All modify related commands -Category: commandscripts -EndScriptData */ - -#include "Chat.h" -#include "ObjectMgr.h" -#include "Opcodes.h" -#include "Pet.h" -#include "Player.h" -#include "ReputationMgr.h" -#include "ScriptMgr.h" -#include "AccountMgr.h" - -class modify_commandscript : public CommandScript -{ -public: - modify_commandscript() : CommandScript("modify_commandscript") { } - - std::vector<ChatCommand> GetCommands() const override - { - static std::vector<ChatCommand> modifyspeedCommandTable = - { - { "fly", SEC_GAMEMASTER, false, &HandleModifyFlyCommand, "" }, - { "all", SEC_GAMEMASTER, false, &HandleModifyASpeedCommand, "" }, - { "walk", SEC_GAMEMASTER, false, &HandleModifySpeedCommand, "" }, - { "backwalk", SEC_GAMEMASTER, false, &HandleModifyBWalkCommand, "" }, - { "swim", SEC_GAMEMASTER, false, &HandleModifySwimCommand, "" }, - { "", SEC_GAMEMASTER, false, &HandleModifyASpeedCommand, "" } - }; - - static std::vector<ChatCommand> modifyCommandTable = - { - { "hp", SEC_GAMEMASTER, false, &HandleModifyHPCommand, "" }, - { "mana", SEC_GAMEMASTER, false, &HandleModifyManaCommand, "" }, - { "rage", SEC_GAMEMASTER, false, &HandleModifyRageCommand, "" }, - { "runicpower", SEC_GAMEMASTER, false, &HandleModifyRunicPowerCommand, "" }, - { "energy", SEC_GAMEMASTER, false, &HandleModifyEnergyCommand, "" }, - { "money", SEC_GAMEMASTER, false, &HandleModifyMoneyCommand, "" }, - { "scale", SEC_GAMEMASTER, false, &HandleModifyScaleCommand, "" }, - { "bit", SEC_GAMEMASTER, false, &HandleModifyBitCommand, "" }, - { "faction", SEC_ADMINISTRATOR, false, &HandleModifyFactionCommand, "" }, - { "spell", SEC_GAMEMASTER, false, &HandleModifySpellCommand, "" }, - { "talentpoints", SEC_GAMEMASTER, false, &HandleModifyTalentCommand, "" }, - { "mount", SEC_GAMEMASTER, false, &HandleModifyMountCommand, "" }, - { "honor", SEC_GAMEMASTER, false, &HandleModifyHonorCommand, "" }, - { "reputation", SEC_GAMEMASTER, false, &HandleModifyRepCommand, "" }, - { "arenapoints", SEC_GAMEMASTER, false, &HandleModifyArenaCommand, "" }, - { "drunk", SEC_GAMEMASTER, false, &HandleModifyDrunkCommand, "" }, - { "standstate", SEC_GAMEMASTER, false, &HandleModifyStandStateCommand, "" }, - { "phase", SEC_GAMEMASTER, false, &HandleModifyPhaseCommand, "" }, - { "gender", SEC_GAMEMASTER, false, &HandleModifyGenderCommand, "" }, - { "speed", SEC_GAMEMASTER, false, nullptr, "", modifyspeedCommandTable } - }; - static std::vector<ChatCommand> commandTable = - { - { "morph", SEC_MODERATOR, false, &HandleModifyMorphCommand, "" }, - { "demorph", SEC_MODERATOR, false, &HandleDeMorphCommand, "" }, - { "modify", SEC_GAMEMASTER, false, nullptr, "", modifyCommandTable } - }; - return commandTable; - } - - //Edit Player HP - static bool HandleModifyHPCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - int32 hp = atoi((char*)args); - int32 hpm = atoi((char*)args); - - if (hp < 1 || hpm < 1 || hpm < hp) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - if (handler->HasLowerSecurity(target, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_CHANGE_HP, handler->GetNameLink(target).c_str(), hp, hpm); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_HP_CHANGED, handler->GetNameLink().c_str(), hp, hpm); - - target->SetMaxHealth(hpm); - target->SetHealth(hp); - - return true; - } - - //Edit Player Mana - static bool HandleModifyManaCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - int32 mana = atoi((char*)args); - int32 manam = atoi((char*)args); - - if (mana <= 0 || manam <= 0 || manam < mana) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_CHANGE_MANA, handler->GetNameLink(target).c_str(), mana, manam); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_MANA_CHANGED, handler->GetNameLink().c_str(), mana, manam); - - target->SetMaxPower(POWER_MANA, manam); - target->SetPower(POWER_MANA, mana); - - return true; - } - - //Edit Player Energy - static bool HandleModifyEnergyCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - // char* pmana = strtok((char*)args, " "); - // if (!pmana) - // return false; - - // char* pmanaMax = strtok(nullptr, " "); - // if (!pmanaMax) - // return false; - - // int32 manam = atoi(pmanaMax); - // int32 mana = atoi(pmana); - - int32 energy = atoi((char*)args)*10; - int32 energym = atoi((char*)args)*10; - - if (energy <= 0 || energym <= 0 || energym < energy) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_CHANGE_ENERGY, handler->GetNameLink(target).c_str(), energy/10, energym/10); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_ENERGY_CHANGED, handler->GetNameLink().c_str(), energy/10, energym/10); - - target->SetMaxPower(POWER_ENERGY, energym); - target->SetPower(POWER_ENERGY, energy); - -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - sLog->outDetail(handler->GetTrinityString(LANG_CURRENT_ENERGY), target->GetMaxPower(POWER_ENERGY)); -#endif - - return true; - } - - //Edit Player Rage - static bool HandleModifyRageCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - // char* pmana = strtok((char*)args, " "); - // if (!pmana) - // return false; - - // char* pmanaMax = strtok(nullptr, " "); - // if (!pmanaMax) - // return false; - - // int32 manam = atoi(pmanaMax); - // int32 mana = atoi(pmana); - - int32 rage = atoi((char*)args)*10; - int32 ragem = atoi((char*)args)*10; - - if (rage <= 0 || ragem <= 0 || ragem < rage) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_CHANGE_RAGE, handler->GetNameLink(target).c_str(), rage/10, ragem/10); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_RAGE_CHANGED, handler->GetNameLink().c_str(), rage/10, ragem/10); - - target->SetMaxPower(POWER_RAGE, ragem); - target->SetPower(POWER_RAGE, rage); - - return true; - } - - // Edit Player Runic Power - static bool HandleModifyRunicPowerCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - int32 rune = atoi((char*)args)*10; - int32 runem = atoi((char*)args)*10; - - if (rune <= 0 || runem <= 0 || runem < rune) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - handler->PSendSysMessage(LANG_YOU_CHANGE_RUNIC_POWER, handler->GetNameLink(target).c_str(), rune/10, runem/10); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_RUNIC_POWER_CHANGED, handler->GetNameLink().c_str(), rune/10, runem/10); - - target->SetMaxPower(POWER_RUNIC_POWER, runem); - target->SetPower(POWER_RUNIC_POWER, rune); - - return true; - } - - //Edit Player Faction - static bool HandleModifyFactionCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - char* pfactionid = handler->extractKeyFromLink((char*)args, "Hfaction"); - - Creature* target = handler->getSelectedCreature(); - if (!target) - { - handler->SendSysMessage(LANG_SELECT_CREATURE); - handler->SetSentErrorMessage(true); - return false; - } - - if (!pfactionid) - { - if (target) - { - uint32 factionid = target->getFaction(); - uint32 flag = target->GetUInt32Value(UNIT_FIELD_FLAGS); - uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS); - uint32 dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS); - handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUIDLow(), factionid, flag, npcflag, dyflag); - } - return true; - } - - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - uint32 factionid = atoi(pfactionid); - uint32 flag; - - char *pflag = strtok(nullptr, " "); - if (!pflag) - flag = target->GetUInt32Value(UNIT_FIELD_FLAGS); - else - flag = atoi(pflag); - - char* pnpcflag = strtok(nullptr, " "); - - uint32 npcflag; - if (!pnpcflag) - npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS); - else - npcflag = atoi(pnpcflag); - - char* pdyflag = strtok(nullptr, " "); - - uint32 dyflag; - if (!pdyflag) - dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS); - else - dyflag = atoi(pdyflag); - - if (!sFactionTemplateStore.LookupEntry(factionid)) - { - handler->PSendSysMessage(LANG_WRONG_FACTION, factionid); - handler->SetSentErrorMessage(true); - return false; - } - - handler->PSendSysMessage(LANG_YOU_CHANGE_FACTION, target->GetGUIDLow(), factionid, flag, npcflag, dyflag); - - target->setFaction(factionid); - target->SetUInt32Value(UNIT_FIELD_FLAGS, flag); - target->SetUInt32Value(UNIT_NPC_FLAGS, npcflag); - target->SetUInt32Value(UNIT_DYNAMIC_FLAGS, dyflag); - - return true; - } - - //Edit Player Spell - static bool HandleModifySpellCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - char* pspellflatid = strtok((char*)args, " "); - if (!pspellflatid) - return false; - - char* pop = strtok(nullptr, " "); - if (!pop) - return false; - - char* pval = strtok(nullptr, " "); - if (!pval) - return false; - - uint16 mark; - - char* pmark = strtok(nullptr, " "); - - uint8 spellflatid = atoi(pspellflatid); - uint8 op = atoi(pop); - uint16 val = atoi(pval); - if (!pmark) - mark = 65535; - else - mark = atoi(pmark); - - Player* target = handler->getSelectedPlayer(); - if (target == nullptr) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_CHANGE_SPELLFLATID, spellflatid, val, mark, handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_SPELLFLATID_CHANGED, handler->GetNameLink().c_str(), spellflatid, val, mark); - - WorldPacket data(SMSG_SET_FLAT_SPELL_MODIFIER, (1+1+2+2)); - data << uint8(spellflatid); - data << uint8(op); - data << uint16(val); - data << uint16(mark); - target->GetSession()->SendPacket(&data); - - return true; - } - - //Edit Player TP - static bool HandleModifyTalentCommand (ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - int tp = atoi((char*)args); - if (tp < 0) - return false; - - Unit* target = handler->getSelectedUnit(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - if (target->GetTypeId() == TYPEID_PLAYER) - { - // check online security - if (handler->HasLowerSecurity(target->ToPlayer(), 0)) - return false; - target->ToPlayer()->SetFreeTalentPoints(tp); - target->ToPlayer()->SendTalentsInfoData(false); - return true; - } - else if (target->IsPet()) - { - Unit* owner = target->GetOwner(); - if (owner && owner->GetTypeId() == TYPEID_PLAYER && ((Pet*)target)->IsPermanentPetFor(owner->ToPlayer())) - { - // check online security - if (handler->HasLowerSecurity(owner->ToPlayer(), 0)) - return false; - ((Pet*)target)->SetFreeTalentPoints(tp); - owner->ToPlayer()->SendTalentsInfoData(true); - return true; - } - } - - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - //Edit Player Aspeed - static bool HandleModifyASpeedCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - float ASpeed = (float)atof((char*)args); - - if (ASpeed > 50.0f || ASpeed < 0.1f) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayerOrSelf(); - if (AccountMgr::IsGMAccount(handler->GetSession()->GetSecurity())) - target = handler->GetSession()->GetPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - std::string targetNameLink = handler->GetNameLink(target); - - if (target->IsInFlight()) - { - handler->PSendSysMessage(LANG_CHAR_IN_FLIGHT, targetNameLink.c_str()); - handler->SetSentErrorMessage(true); - return false; - } - - handler->PSendSysMessage(LANG_YOU_CHANGE_ASPEED, ASpeed, targetNameLink.c_str()); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_ASPEED_CHANGED, handler->GetNameLink().c_str(), ASpeed); - - target->SetSpeed(MOVE_WALK, ASpeed, true); - target->SetSpeed(MOVE_RUN, ASpeed, true); - target->SetSpeed(MOVE_SWIM, ASpeed, true); - //target->SetSpeed(MOVE_TURN, ASpeed, true); - target->SetSpeed(MOVE_FLIGHT, ASpeed, true); - return true; - } - - //Edit Player Speed - static bool HandleModifySpeedCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - float Speed = (float)atof((char*)args); - - if (Speed > 50.0f || Speed < 0.1f) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayerOrSelf(); - if (AccountMgr::IsGMAccount(handler->GetSession()->GetSecurity())) - target = handler->GetSession()->GetPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - std::string targetNameLink = handler->GetNameLink(target); - - if (target->IsInFlight()) - { - handler->PSendSysMessage(LANG_CHAR_IN_FLIGHT, targetNameLink.c_str()); - handler->SetSentErrorMessage(true); - return false; - } - - handler->PSendSysMessage(LANG_YOU_CHANGE_SPEED, Speed, targetNameLink.c_str()); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_SPEED_CHANGED, handler->GetNameLink().c_str(), Speed); - - target->SetSpeed(MOVE_RUN, Speed, true); - - return true; - } - - //Edit Player Swim Speed - static bool HandleModifySwimCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - float Swim = (float)atof((char*)args); - - if (Swim > 50.0f || Swim < 0.1f) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayerOrSelf(); - if (AccountMgr::IsGMAccount(handler->GetSession()->GetSecurity())) - target = handler->GetSession()->GetPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - std::string targetNameLink = handler->GetNameLink(target); - - if (target->IsInFlight()) - { - handler->PSendSysMessage(LANG_CHAR_IN_FLIGHT, targetNameLink.c_str()); - handler->SetSentErrorMessage(true); - return false; - } - - handler->PSendSysMessage(LANG_YOU_CHANGE_SWIM_SPEED, Swim, targetNameLink.c_str()); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_SWIM_SPEED_CHANGED, handler->GetNameLink().c_str(), Swim); - - target->SetSpeed(MOVE_SWIM, Swim, true); - - return true; - } - - //Edit Player Walk Speed - static bool HandleModifyBWalkCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - float BSpeed = (float)atof((char*)args); - - if (BSpeed > 50.0f || BSpeed < 0.1f) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayerOrSelf(); - if (AccountMgr::IsGMAccount(handler->GetSession()->GetSecurity())) - target = handler->GetSession()->GetPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - std::string targetNameLink = handler->GetNameLink(target); - - if (target->IsInFlight()) - { - handler->PSendSysMessage(LANG_CHAR_IN_FLIGHT, targetNameLink.c_str()); - handler->SetSentErrorMessage(true); - return false; - } - - handler->PSendSysMessage(LANG_YOU_CHANGE_BACK_SPEED, BSpeed, targetNameLink.c_str()); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_BACK_SPEED_CHANGED, handler->GetNameLink().c_str(), BSpeed); - - target->SetSpeed(MOVE_RUN_BACK, BSpeed, true); - - return true; - } - - //Edit Player Fly - static bool HandleModifyFlyCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - float FSpeed = (float)atof((char*)args); - - if (FSpeed > 50.0f || FSpeed < 0.1f) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayerOrSelf(); - if (AccountMgr::IsGMAccount(handler->GetSession()->GetSecurity())) - target = handler->GetSession()->GetPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_CHANGE_FLY_SPEED, FSpeed, handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOURS_FLY_SPEED_CHANGED, handler->GetNameLink().c_str(), FSpeed); - - target->SetSpeed(MOVE_FLIGHT, FSpeed, true); - - return true; - } - - //Edit Player or Creature Scale - static bool HandleModifyScaleCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - float Scale = (float)atof((char*)args); - if (Scale > 10.0f || Scale < 0.1f) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - Unit* target = handler->getSelectedUnit(); - if (!target) - { - handler->SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); - handler->SetSentErrorMessage(true); - return false; - } - - if (Player* player = target->ToPlayer()) - { - // check online security - if (handler->HasLowerSecurity(player, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_CHANGE_SIZE, Scale, handler->GetNameLink(player).c_str()); - if (handler->needReportToTarget(player)) - (ChatHandler(player->GetSession())).PSendSysMessage(LANG_YOURS_SIZE_CHANGED, handler->GetNameLink().c_str(), Scale); - } - - target->SetObjectScale(Scale); - - return true; - } - - //Enable Player mount - static bool HandleModifyMountCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - uint16 mId = 1147; - float speed = (float)15; - uint32 num = 0; - - num = atoi((char*)args); - switch (num) - { - case 1: - mId=14340; - break; - case 2: - mId=4806; - break; - case 3: - mId=6471; - break; - case 4: - mId=12345; - break; - case 5: - mId=6472; - break; - case 6: - mId=6473; - break; - case 7: - mId=10670; - break; - case 8: - mId=10719; - break; - case 9: - mId=10671; - break; - case 10: - mId=10672; - break; - case 11: - mId=10720; - break; - case 12: - mId=14349; - break; - case 13: - mId=11641; - break; - case 14: - mId=12244; - break; - case 15: - mId=12242; - break; - case 16: - mId=14578; - break; - case 17: - mId=14579; - break; - case 18: - mId=14349; - break; - case 19: - mId=12245; - break; - case 20: - mId=14335; - break; - case 21: - mId=207; - break; - case 22: - mId=2328; - break; - case 23: - mId=2327; - break; - case 24: - mId=2326; - break; - case 25: - mId=14573; - break; - case 26: - mId=14574; - break; - case 27: - mId=14575; - break; - case 28: - mId=604; - break; - case 29: - mId=1166; - break; - case 30: - mId=2402; - break; - case 31: - mId=2410; - break; - case 32: - mId=2409; - break; - case 33: - mId=2408; - break; - case 34: - mId=2405; - break; - case 35: - mId=14337; - break; - case 36: - mId=6569; - break; - case 37: - mId=10661; - break; - case 38: - mId=10666; - break; - case 39: - mId=9473; - break; - case 40: - mId=9476; - break; - case 41: - mId=9474; - break; - case 42: - mId=14374; - break; - case 43: - mId=14376; - break; - case 44: - mId=14377; - break; - case 45: - mId=2404; - break; - case 46: - mId=2784; - break; - case 47: - mId=2787; - break; - case 48: - mId=2785; - break; - case 49: - mId=2736; - break; - case 50: - mId=2786; - break; - case 51: - mId=14347; - break; - case 52: - mId=14346; - break; - case 53: - mId=14576; - break; - case 54: - mId=9695; - break; - case 55: - mId=9991; - break; - case 56: - mId=6448; - break; - case 57: - mId=6444; - break; - case 58: - mId=6080; - break; - case 59: - mId=6447; - break; - case 60: - mId=4805; - break; - case 61: - mId=9714; - break; - case 62: - mId=6448; - break; - case 63: - mId=6442; - break; - case 64: - mId=14632; - break; - case 65: - mId=14332; - break; - case 66: - mId=14331; - break; - case 67: - mId=8469; - break; - case 68: - mId=2830; - break; - case 69: - mId=2346; - break; - default: - handler->SendSysMessage(LANG_NO_MOUNT); - handler->SetSentErrorMessage(true); - return false; - } - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - handler->PSendSysMessage(LANG_YOU_GIVE_MOUNT, handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_MOUNT_GIVED, handler->GetNameLink().c_str()); - - target->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP); - target->Mount(mId); - - WorldPacket data(SMSG_FORCE_RUN_SPEED_CHANGE, (8+4+1+4)); - data.append(target->GetPackGUID()); - data << (uint32)0; - data << (uint8)0; //new 2.1.0 - data << float(speed); - target->SendMessageToSet(&data, true); - - data.Initialize(SMSG_FORCE_SWIM_SPEED_CHANGE, (8+4+4)); - data.append(target->GetPackGUID()); - data << (uint32)0; - data << float(speed); - target->SendMessageToSet(&data, true); - - return true; - } - - //Edit Player money - static bool HandleModifyMoneyCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - int32 moneyToAdd = 0; - if (strchr(args, 'g') || strchr(args, 's') || strchr(args, 'c')) - moneyToAdd = MoneyStringToMoney(std::string(args)); - else - moneyToAdd = atoi(args); - - uint32 targetMoney = target->GetMoney(); - - if (moneyToAdd < 0) - { - int32 newmoney = int32(targetMoney) + moneyToAdd; - -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - sLog->outDebug(LOG_FILTER_CHATSYS, handler->GetTrinityString(LANG_CURRENT_MONEY), targetMoney, moneyToAdd, newmoney); -#endif - if (newmoney <= 0) - { - handler->PSendSysMessage(LANG_YOU_TAKE_ALL_MONEY, handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_ALL_MONEY_GONE, handler->GetNameLink().c_str()); - - target->SetMoney(0); - } - else - { - if (newmoney > MAX_MONEY_AMOUNT) - newmoney = MAX_MONEY_AMOUNT; - - handler->PSendSysMessage(LANG_YOU_TAKE_MONEY, abs(moneyToAdd), handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_MONEY_TAKEN, handler->GetNameLink().c_str(), abs(moneyToAdd)); - target->SetMoney(newmoney); - } - } - else - { - handler->PSendSysMessage(LANG_YOU_GIVE_MONEY, moneyToAdd, handler->GetNameLink(target).c_str()); - if (handler->needReportToTarget(target)) - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_MONEY_GIVEN, handler->GetNameLink().c_str(), moneyToAdd); - - if (moneyToAdd >= MAX_MONEY_AMOUNT) - moneyToAdd = MAX_MONEY_AMOUNT; - - if (targetMoney >= uint32(MAX_MONEY_AMOUNT) - moneyToAdd) - moneyToAdd -= targetMoney; - - target->ModifyMoney(moneyToAdd); - } - -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - sLog->outDebug(LOG_FILTER_CHATSYS, handler->GetTrinityString(LANG_NEW_MONEY), targetMoney, moneyToAdd, target->GetMoney()); -#endif - - return true; - } - - //Edit Unit field - static bool HandleModifyBitCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - Unit* target = handler->getSelectedUnit(); - if (!target) - { - handler->SendSysMessage(LANG_NO_CHAR_SELECTED); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (target->GetTypeId() == TYPEID_PLAYER && handler->HasLowerSecurity(target->ToPlayer(), 0)) - return false; - - char* pField = strtok((char*)args, " "); - if (!pField) - return false; - - char* pBit = strtok(nullptr, " "); - if (!pBit) - return false; - - uint16 field = atoi(pField); - uint32 bit = atoi(pBit); - - if (field < OBJECT_END || field >= target->GetValuesCount()) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - if (bit < 1 || bit > 32) - { - handler->SendSysMessage(LANG_BAD_VALUE); - handler->SetSentErrorMessage(true); - return false; - } - - if (target->HasFlag(field, (1<<(bit-1)))) - { - target->RemoveFlag(field, (1<<(bit-1))); - handler->PSendSysMessage(LANG_REMOVE_BIT, bit, field); - } - else - { - target->SetFlag(field, (1<<(bit-1))); - handler->PSendSysMessage(LANG_SET_BIT, bit, field); - } - return true; - } - - static bool HandleModifyHonorCommand (ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_PLAYER_NOT_FOUND); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - int32 amount = (uint32)atoi(args); - - target->ModifyHonorPoints(amount); - - handler->PSendSysMessage(LANG_COMMAND_MODIFY_HONOR, handler->GetNameLink(target).c_str(), target->GetHonorPoints()); - - return true; - } - - static bool HandleModifyDrunkCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - uint8 drunklevel = (uint8)atoi(args); - if (drunklevel > 100) - drunklevel = 100; - - if (Player* target = handler->getSelectedPlayer()) - target->SetDrunkValue(drunklevel); - - return true; - } - - static bool HandleModifyRepCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_PLAYER_NOT_FOUND); - handler->SetSentErrorMessage(true); - return false; - } - - // check online security - if (handler->HasLowerSecurity(target, 0)) - return false; - - char* factionTxt = handler->extractKeyFromLink((char*)args, "Hfaction"); - if (!factionTxt) - return false; - - uint32 factionId = atoi(factionTxt); - - int32 amount = 0; - char *rankTxt = strtok(nullptr, " "); - if (!factionTxt || !rankTxt) - return false; - - amount = atoi(rankTxt); - if ((amount == 0) && (rankTxt[0] != '-') && !isdigit(rankTxt[0])) - { - std::string rankStr = rankTxt; - std::wstring wrankStr; - if (!Utf8toWStr(rankStr, wrankStr)) - return false; - wstrToLower(wrankStr); - - int r = 0; - amount = -42000; - for (; r < MAX_REPUTATION_RANK; ++r) - { - std::string rank = handler->GetTrinityString(ReputationRankStrIndex[r]); - if (rank.empty()) - continue; - - std::wstring wrank; - if (!Utf8toWStr(rank, wrank)) - continue; - - wstrToLower(wrank); - - if (wrank.substr(0, wrankStr.size()) == wrankStr) - { - char *deltaTxt = strtok(nullptr, " "); - if (deltaTxt) - { - int32 delta = atoi(deltaTxt); - if ((delta < 0) || (delta > ReputationMgr::PointsInRank[r] -1)) - { - handler->PSendSysMessage(LANG_COMMAND_FACTION_DELTA, (ReputationMgr::PointsInRank[r]-1)); - handler->SetSentErrorMessage(true); - return false; - } - amount += delta; - } - break; - } - amount += ReputationMgr::PointsInRank[r]; - } - if (r >= MAX_REPUTATION_RANK) - { - handler->PSendSysMessage(LANG_COMMAND_FACTION_INVPARAM, rankTxt); - handler->SetSentErrorMessage(true); - return false; - } - } - - FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId); - - if (!factionEntry) - { - handler->PSendSysMessage(LANG_COMMAND_FACTION_UNKNOWN, factionId); - handler->SetSentErrorMessage(true); - return false; - } - - if (factionEntry->reputationListID < 0) - { - handler->PSendSysMessage(LANG_COMMAND_FACTION_NOREP_ERROR, factionEntry->name[handler->GetSessionDbcLocale()], factionId); - handler->SetSentErrorMessage(true); - return false; - } - - target->GetReputationMgr().SetOneFactionReputation(factionEntry, amount, false); - target->GetReputationMgr().SendState(target->GetReputationMgr().GetState(factionEntry)); - handler->PSendSysMessage(LANG_COMMAND_MODIFY_REP, factionEntry->name[handler->GetSessionDbcLocale()], factionId, - handler->GetNameLink(target).c_str(), target->GetReputationMgr().GetReputation(factionEntry)); - return true; - } - - //morph creature or player - static bool HandleModifyMorphCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - uint16 display_id = (uint16)atoi((char*)args); - - Unit* target = handler->getSelectedUnit(); - if (!target) - target = handler->GetSession()->GetPlayer(); - - // check online security - else if (target->GetTypeId() == TYPEID_PLAYER && handler->HasLowerSecurity(target->ToPlayer(), 0)) - return false; - - target->SetDisplayId(display_id); - - return true; - } - - //set temporary phase mask for player - static bool HandleModifyPhaseCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - uint32 phasemask = (uint32)atoi((char*)args); - - Unit* target = handler->getSelectedUnit(); - if (!target) - target = handler->GetSession()->GetPlayer(); - - // check online security - else if (target->GetTypeId() == TYPEID_PLAYER && handler->HasLowerSecurity(target->ToPlayer(), 0)) - return false; - - target->SetPhaseMask(phasemask, true); - - return true; - } - - //change standstate - static bool HandleModifyStandStateCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - uint32 anim_id = atoi((char*)args); - handler->GetSession()->GetPlayer()->SetUInt32Value(UNIT_NPC_EMOTESTATE, anim_id); - - return true; - } - - static bool HandleModifyArenaCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - Player* target = handler->getSelectedPlayer(); - if (!target) - { - handler->SendSysMessage(LANG_PLAYER_NOT_FOUND); - handler->SetSentErrorMessage(true); - return false; - } - - int32 amount = (uint32)atoi(args); - - target->ModifyArenaPoints(amount); - - handler->PSendSysMessage(LANG_COMMAND_MODIFY_ARENA, handler->GetNameLink(target).c_str(), target->GetArenaPoints()); - - return true; - } - - static bool HandleModifyGenderCommand(ChatHandler* handler, const char* args) - { - if (!*args) - return false; - - Player* target = handler->getSelectedPlayer(); - - if (!target) - { - handler->PSendSysMessage(LANG_PLAYER_NOT_FOUND); - handler->SetSentErrorMessage(true); - return false; - } - - PlayerInfo const* info = sObjectMgr->GetPlayerInfo(target->getRace(), target->getClass()); - if (!info) - return false; - - char const* gender_str = (char*)args; - int gender_len = strlen(gender_str); - - Gender gender; - - if (!strncmp(gender_str, "male", gender_len)) // MALE - { - if (target->getGender() == GENDER_MALE) - return true; - - gender = GENDER_MALE; - } - else if (!strncmp(gender_str, "female", gender_len)) // FEMALE - { - if (target->getGender() == GENDER_FEMALE) - return true; - - gender = GENDER_FEMALE; - } - else - { - handler->SendSysMessage(LANG_MUST_MALE_OR_FEMALE); - handler->SetSentErrorMessage(true); - return false; - } - - // Set gender - target->SetByteValue(UNIT_FIELD_BYTES_0, 2, gender); - target->SetByteValue(PLAYER_BYTES_3, 0, gender); - - // Change display ID - target->InitDisplayIds(); - - char const* gender_full = gender ? "female" : "male"; - - handler->PSendSysMessage(LANG_YOU_CHANGE_GENDER, handler->GetNameLink(target).c_str(), gender_full); - - if (handler->needReportToTarget(target)) - (ChatHandler(target->GetSession())).PSendSysMessage(LANG_YOUR_GENDER_CHANGED, gender_full, handler->GetNameLink().c_str()); - - return true; - } - - //demorph player or unit - static bool HandleDeMorphCommand(ChatHandler* handler, const char* /*args*/) - { - Unit* target = handler->getSelectedUnit(); - if (!target) - target = handler->GetSession()->GetPlayer(); - - // check online security - else if (target->GetTypeId() == TYPEID_PLAYER && handler->HasLowerSecurity(target->ToPlayer(), 0)) - return false; - - target->DeMorph(); - return true; - } -}; - -void AddSC_modify_commandscript() -{ - new modify_commandscript(); -} |