aboutsummaryrefslogtreecommitdiff
path: root/src/game/ObjectMgr.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-04-13 17:21:59 -0500
committermegamage <none@none>2009-04-13 17:21:59 -0500
commit214307428078f937c068fb5219686e3090c97a9c (patch)
tree2febd9b6cf0a978b6cfda1bd14eb5bc6de9a1dd2 /src/game/ObjectMgr.cpp
parent53d37935a98bfb767b65c508bc53908817eaba24 (diff)
[7659] Added several security checks to prevent cheating using facked packets Author: arrai
--HG-- branch : trunk
Diffstat (limited to 'src/game/ObjectMgr.cpp')
-rw-r--r--src/game/ObjectMgr.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index b797757a9f3..9e4c7244c58 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -4267,6 +4267,23 @@ void ObjectMgr::LoadInstanceTemplate()
sLog.outString();
}
+bool ObjectMgr::IsGameObjectOfTypeInRange(Player *player, uint64 guid, GameobjectTypes type) const
+{
+ if(GameObject *go = ObjectAccessor::GetGameObject(*player, guid))
+ {
+ if(go->GetGoType() == type)
+ {
+ // TODO: find out how the client calculates the maximal usage distance to spellless working
+ // gameobjects like guildbanks and mailboxes - 10.0 is a just an abitrary choosen number
+ if (go->IsWithinDistInMap(player, 10.0f))
+ return true;
+ sLog.outError("IsGameObjectOfTypeInRange: GameObject '%s' [GUID: %u] is too far away from player %s [GUID: %u] to be used by him (distance=%f, maximal 10 is allowed)", go->GetGOInfo()->name,
+ go->GetGUIDLow(), player->GetName(), player->GetGUIDLow(), go->GetDistance(player));
+ }
+ }
+ return false;
+}
+
GossipText const *ObjectMgr::GetGossipText(uint32 Text_ID) const
{
GossipTextMap::const_iterator itr = mGossipText.find(Text_ID);