From eba7b3d408a1354a69e475b5787e925748319799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Dur=C3=A3o?= Date: Tue, 5 Feb 2019 09:19:18 +0000 Subject: [PATCH] Gm command face me (#231) * wip * wip #2 * wip #3 * wip #4 * wip #5 * wip #6 * wip #7 * wip #8 * wip #9 * wip #10 * wip #11 * wip #12 * wip #13 * wip #14 * wip #15 * wip #16 * wip #17 * wip #18 * wip #19 * wip #20 * wip #21 * Use InterruptNonMeleeSpells instead of CastSpell --- src/game/Chat/Chat.cpp | 3 ++- src/game/Chat/Chat.h | 3 ++- src/game/Commands/Level3.cpp | 24 ++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/game/Chat/Chat.cpp b/src/game/Chat/Chat.cpp index c8788751..3344dbb8 100644 --- a/src/game/Chat/Chat.cpp +++ b/src/game/Chat/Chat.cpp @@ -972,7 +972,7 @@ ChatCommand * ChatHandler::getCommandTable() { NODE, "", SEC_GAMEMASTER, true, &ChatHandler::HandleGMTicketGetByIdOrNameCommand, "", nullptr }, { MSTR, nullptr, 0, false,nullptr, "", nullptr } }; - + static ChatCommand serviceCommandTable[] = { { NODE, "del_characters", SEC_ADMINISTRATOR, true, &ChatHandler::HandleServiceDeleteCharacters, "", nullptr }, @@ -1055,6 +1055,7 @@ ChatCommand * ChatHandler::getCommandTable() { NODE, "commands", SEC_PLAYER, true, &ChatHandler::HandleCommandsCommand, "", nullptr }, { NODE, "demorph", SEC_GAMEMASTER, false, &ChatHandler::HandleDeMorphCommand, "", nullptr }, { NODE, "die", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDieCommand, "", nullptr }, + { NODE, "faceme", SEC_MODERATOR, false, &ChatHandler::HandleFacemeCommand, "", nullptr }, { NODE, "fear", SEC_GAMEMASTER, false, &ChatHandler::HandleFearCommand, "", nullptr }, { NODE, "revive", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReviveCommand, "", nullptr }, { NODE, "dismount", SEC_PLAYER, false, &ChatHandler::HandleDismountCommand, "", nullptr }, diff --git a/src/game/Chat/Chat.h b/src/game/Chat/Chat.h index 89b363c5..a21ad8fd 100644 --- a/src/game/Chat/Chat.h +++ b/src/game/Chat/Chat.h @@ -412,7 +412,7 @@ class MANGOS_DLL_SPEC ChatHandler bool HandleDebugPlaySoundCommand(char* args); bool HandleDebugPlayScriptText(char* args); bool HandleDebugPlayMusicCommand(char* args); - + bool HandleDebugSendBuyErrorCommand(char* args); bool HandleDebugSendChannelNotifyCommand(char* args); bool HandleDebugSendChatMsgCommand(char* args); @@ -809,6 +809,7 @@ class MANGOS_DLL_SPEC ChatHandler bool HandleGetAngleCommand(char* args); bool HandleModifyStandStateCommand(char* args); bool HandleDieCommand(char* args); + bool HandleFacemeCommand(char* args); bool HandleFearCommand(char* args); bool HandleDamageCommand(char* args); bool HandleReviveCommand(char* args); diff --git a/src/game/Commands/Level3.cpp b/src/game/Commands/Level3.cpp index 39dc036d..db712f29 100644 --- a/src/game/Commands/Level3.cpp +++ b/src/game/Commands/Level3.cpp @@ -1125,7 +1125,7 @@ bool ChatHandler::HandleRemoveRidingCommand(char* args) } auto it = skills.find(args); - + if (it == skills.end()) { std::stringstream options; @@ -2434,7 +2434,7 @@ bool ChatHandler::HandleDeleteItemCommand(char* args) SetSentErrorMessage(true); return false; } - + if (!CharacterDatabase.DirectPExecute("DELETE FROM character_inventory WHERE item = %u", guid)) { SendSysMessage("Encountered an error while attempting to remove item from inventory"); @@ -3906,6 +3906,26 @@ bool ChatHandler::HandleGetAngleCommand(char* args) return true; } +bool ChatHandler::HandleFacemeCommand(char* /*args*/) +{ + Unit* target = getSelectedUnit(); + if (!target || !m_session->GetPlayer()->GetSelectionGuid()) + { + SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); + SetSentErrorMessage(true); + return false; + } + + if (target->GetTypeId() == TYPEID_PLAYER) + { + target->InterruptNonMeleeSpells(true); + target->SetFacingToObject(m_session->GetPlayer()); + PSendSysMessage("%s is facing you.", GetNameLink((Player*) target).c_str()); + } + + return true; +} + bool ChatHandler::HandleDieCommand(char* /*args*/) { Unit* target = getSelectedUnit();