aboutsummaryrefslogtreecommitdiff
path: root/src/game/Level3.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-02-25 16:47:22 -0600
committermegamage <none@none>2009-02-25 16:47:22 -0600
commit0f9238ecb1f0706320d71fd658aa6029a49fa6a9 (patch)
tree94d4ac954df284423117f4336b588737f1ccf8c2 /src/game/Level3.cpp
parent98b8e2eeb6b62bcc27412a172d9c52a6e2a16bed (diff)
[7332] Allow provided target for .distance command using player name or shift-link with guid. Author: VladimirMangos
--HG-- branch : trunk
Diffstat (limited to 'src/game/Level3.cpp')
-rw-r--r--src/game/Level3.cpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp
index 9eb19d90bc0..b00ef1764d2 100644
--- a/src/game/Level3.cpp
+++ b/src/game/Level3.cpp
@@ -3672,18 +3672,36 @@ bool ChatHandler::HandleGuildDeleteCommand(const char* args)
return true;
}
-bool ChatHandler::HandleGetDistanceCommand(const char* /*args*/)
+bool ChatHandler::HandleGetDistanceCommand(const char* args)
{
- Unit* pUnit = getSelectedUnit();
+ WorldObject* obj;
- if(!pUnit)
+ if (*args)
{
- SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE);
- SetSentErrorMessage(true);
- return false;
+ uint64 guid = extractGuidFromLink((char*)args);
+ if(guid)
+ obj = (WorldObject*)ObjectAccessor::GetObjectByTypeMask(*m_session->GetPlayer(),guid,TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT);
+
+ if(!obj)
+ {
+ SendSysMessage(LANG_PLAYER_NOT_FOUND);
+ SetSentErrorMessage(true);
+ return false;
+ }
+ }
+ else
+ {
+ obj = getSelectedUnit();
+
+ if(!obj)
+ {
+ SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE);
+ SetSentErrorMessage(true);
+ return false;
+ }
}
- PSendSysMessage(LANG_DISTANCE, m_session->GetPlayer()->GetDistance(pUnit),m_session->GetPlayer()->GetDistance2d(pUnit));
+ PSendSysMessage(LANG_DISTANCE, m_session->GetPlayer()->GetDistance(obj),m_session->GetPlayer()->GetDistance2d(obj));
return true;
}