Do not allow base map be accessed from outside if map is instanceable.

This commit is contained in:
megamage
2011-11-23 13:14:59 -05:00
parent 0eb193f2b4
commit f091360940
4 changed files with 17 additions and 7 deletions
+1 -1
View File
@@ -2207,7 +2207,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
// If the map is not created, assume it is possible to enter it. // If the map is not created, assume it is possible to enter it.
// It will be created in the WorldPortAck. // It will be created in the WorldPortAck.
Map* map = sMapMgr->FindBaseMap(mapid); Map* map = sMapMgr->FindBaseNonInstanceMap(mapid);
if (!map || map->CanEnter(this)) if (!map || map->CanEnter(this))
{ {
//lets reset near teleport flag if it wasn't reset during chained teleports //lets reset near teleport flag if it wasn't reset during chained teleports
+8
View File
@@ -119,6 +119,14 @@ Map* MapManager::CreateBaseMap(uint32 id)
return m; return m;
} }
Map* MapManager::FindBaseNonInstanceMap(uint32 mapId) const
{
Map* map = FindBaseMap(mapId);
if(map && map->Instanceable())
return NULL;
return map;
}
Map* MapManager::CreateMap(uint32 id, Player* player) Map* MapManager::CreateMap(uint32 id, Player* player)
{ {
Map* m = CreateBaseMap(id); Map* m = CreateBaseMap(id);
+7 -5
View File
@@ -36,11 +36,7 @@ class MapManager
public: public:
Map* CreateBaseMap(uint32 mapId); Map* CreateBaseMap(uint32 mapId);
Map* FindBaseMap(uint32 mapId) const Map* FindBaseNonInstanceMap(uint32 mapId) const;
{
MapMapType::const_iterator iter = i_maps.find(mapId);
return (iter == i_maps.end() ? NULL : iter->second);
}
Map* CreateMap(uint32 mapId, Player* player); Map* CreateMap(uint32 mapId, Player* player);
Map* FindMap(uint32 mapId, uint32 instanceId) const; Map* FindMap(uint32 mapId, uint32 instanceId) const;
@@ -164,6 +160,12 @@ class MapManager
MapManager(); MapManager();
~MapManager(); ~MapManager();
Map* FindBaseMap(uint32 mapId) const
{
MapMapType::const_iterator iter = i_maps.find(mapId);
return (iter == i_maps.end() ? NULL : iter->second);
}
MapManager(const MapManager &); MapManager(const MapManager &);
MapManager& operator=(const MapManager &); MapManager& operator=(const MapManager &);
@@ -351,7 +351,7 @@ void FlightPathMovementGenerator::InitEndGridInfo()
void FlightPathMovementGenerator::PreloadEndGrid() void FlightPathMovementGenerator::PreloadEndGrid()
{ {
// used to preload the final grid where the flightmaster is // used to preload the final grid where the flightmaster is
Map* endMap = sMapMgr->FindBaseMap(m_endMapId); Map* endMap = sMapMgr->FindBaseNonInstanceMap(m_endMapId);
// Load the grid // Load the grid
if (endMap) if (endMap)