rendered paste bodydiff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cppindex 280aef3..3fe8827 100755--- a/src/server/game/Entities/Player/Player.cpp+++ b/src/server/game/Entities/Player/Player.cpp@@ -650,6 +650,8 @@ Player::Player (WorldSession *session): Unit(), m_achievementMgr(this), m_reputa m_curSelection = 0; m_lootGuid = 0; + m_selectedGobject = 0; m_comboTarget = 0; m_comboPoints = 0; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.hindex a04494c..30a2446 100755--- a/src/server/game/Entities/Player/Player.h+++ b/src/server/game/Entities/Player/Player.h@@ -1531,6 +1531,10 @@ class Player : public Unit, public GridObject<Player> Player *GetSelectedPlayer() const; void SetSelection(const uint64 &guid) { m_curSelection = guid; SetUInt64Value(UNIT_FIELD_TARGET, guid); } + uint32 m_selectedGobject;+ uint32 GetSelectedGobject() { return m_selectedGobject; }+ void SetSelectedGobject(uint32 gobId) { m_selectedGobject = gobId; }+ uint8 GetComboPoints() { return m_comboPoints; } const uint64& GetComboTarget() const { return m_comboTarget; } diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cppindex aef5e85..c884d2a 100644--- a/src/server/scripts/Commands/cs_gobject.cpp+++ b/src/server/scripts/Commands/cs_gobject.cpp@@ -55,6 +55,7 @@ public: { "info", SEC_GAMEMASTER, false, &HandleGameObjectInfoCommand, "", NULL }, { "move", SEC_GAMEMASTER, false, &HandleGameObjectMoveCommand, "", NULL }, { "near", SEC_GAMEMASTER, false, &HandleGameObjectNearCommand, "", NULL },+ { "select", SEC_GAMEMASTER, false, &HandleGameObjectSelectCommand, "", NULL }, { "target", SEC_GAMEMASTER, false, &HandleGameObjectTargetCommand, "", NULL }, { "turn", SEC_GAMEMASTER, false, &HandleGameObjectTurnCommand, "", NULL }, { "add", SEC_GAMEMASTER, false, NULL, "", gobjectAddCommandTable },@@ -71,14 +72,12 @@ public: static bool HandleGameObjectActivateCommand(ChatHandler* handler, const char* args) {- if (!*args)- return false;-+ // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");- if (!cId)+ if (!cId && !args) return false; - uint32 lowguid = atoi(cId);+ uint32 lowguid = (args) ? handler->GetSession()->GetPlayer()->GetSelectedGobject(): atoi(cId); if (!lowguid) return false; @@ -334,10 +333,10 @@ public: { // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");- if (!cId)+ if (!cId && !args) return false; - uint32 lowguid = atoi(cId);+ uint32 lowguid = (args) ? handler->GetSession()->GetPlayer()->GetSelectedGobject(): atoi(cId); if (!lowguid) return false; @@ -380,12 +379,12 @@ public: //turn selected object static bool HandleGameObjectTurnCommand(ChatHandler* handler, const char* args) {- // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r+ // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");- if (!cId)+ if (!cId && !args) return false; - uint32 lowguid = atoi(cId);+ uint32 lowguid = (args) ? handler->GetSession()->GetPlayer()->GetSelectedGobject(): atoi(cId); if (!lowguid) return false; @@ -433,10 +432,10 @@ public: { // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");- if (!cId)+ if (!cId && !args) return false; - uint32 lowguid = atoi(cId);+ uint32 lowguid = (args) ? handler->GetSession()->GetPlayer()->GetSelectedGobject(): atoi(cId); if (!lowguid) return false; @@ -498,10 +497,10 @@ public: { // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");- if (!cId)+ if (!cId && !args) return false; - uint32 lowguid = atoi(cId);+ uint32 lowguid = (args) ? handler->GetSession()->GetPlayer()->GetSelectedGobject(): atoi(cId); if (!lowguid) return false; @@ -610,14 +609,44 @@ public: return true; } + static bool HandleGameObjectSelectCommand(ChatHandler* handler, const char* args)+ {+ uint32 entry = 0;+ std::string name;+ uint32 guid = 0;+ WorldObject* obj = handler->getSelectedObject();++ if (!*args)+ {+ if (obj)+ entry = obj->GetEntry();+ else+ entry = atoi((char*)args);+ }++ GameObjectInfo const* goinfo = ObjectMgr::GetGameObjectInfo(entry);++ if (!goinfo)+ return false;++ name = goinfo->name;+ guid = obj->ToGameObject()->GetGUIDLow();++ handler->PSendSysMessage("Selected GameObject [ %s ](ID: %u) which is %.3f meters away from you.", name.c_str(), entry, handler->GetSession()->GetPlayer()->GetDistance(obj));+ handler->GetSession()->GetPlayer()->SetSelectedGobject(guid);++ return true;+ }+ static bool HandleGameObjectSetStateCommand(ChatHandler* handler, const char* args) { // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r- char* cId = handler->extractKeyFromLink((char*)args, "Hgameobject");- if (!cId)+ char* cId = handler->extractKeyFromLink((char*)args,"Hgameobject");+ if (!cId && !args) return false; - uint32 lowguid = atoi(cId);+ uint32 lowguid = (args) ? handler->GetSession()->GetPlayer()->GetSelectedGobject(): atoi(cId); if (!lowguid) return false;