|
|
|
@@ -73,14 +73,14 @@ bool Map::ExistMap(uint32 mapid, int gx, int gy)
|
|
|
|
|
FILE* pf = fopen(tmp, "rb");
|
|
|
|
|
|
|
|
|
|
if (!pf)
|
|
|
|
|
sLog->outError("Map file '%s': does not exist!", tmp);
|
|
|
|
|
LOG_ERROR("server", "Map file '%s': does not exist!", tmp);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
map_fileheader header;
|
|
|
|
|
if (fread(&header, sizeof(header), 1, pf) == 1)
|
|
|
|
|
{
|
|
|
|
|
if (header.mapMagic != MapMagic.asUInt || header.versionMagic != MapVersionMagic.asUInt)
|
|
|
|
|
sLog->outError("Map file '%s' is from an incompatible clientversion. Please recreate using the mapextractor.", tmp);
|
|
|
|
|
LOG_ERROR("server", "Map file '%s' is from an incompatible clientversion. Please recreate using the mapextractor.", tmp);
|
|
|
|
|
else
|
|
|
|
|
ret = true;
|
|
|
|
|
}
|
|
|
|
@@ -100,7 +100,7 @@ bool Map::ExistVMap(uint32 mapid, int gx, int gy)
|
|
|
|
|
if (!exists)
|
|
|
|
|
{
|
|
|
|
|
std::string name = vmgr->getDirFileName(mapid, gx, gy);
|
|
|
|
|
sLog->outError("VMap file '%s' is missing or points to wrong version of vmap file. Redo vmaps with latest version of vmap_assembler.exe.", (sWorld->GetDataPath() + "vmaps/" + name).c_str());
|
|
|
|
|
LOG_ERROR("server", "VMap file '%s' is missing or points to wrong version of vmap file. Redo vmaps with latest version of vmap_assembler.exe.", (sWorld->GetDataPath() + "vmaps/" + name).c_str());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -119,17 +119,17 @@ void Map::LoadMMap(int gx, int gy)
|
|
|
|
|
{
|
|
|
|
|
case MMAP::MMAP_LOAD_RESULT_OK:
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("MMAP loaded name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
LOG_DEBUG("server", "MMAP loaded name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
case MMAP::MMAP_LOAD_RESULT_ERROR:
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("Could not load MMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
LOG_DEBUG("server", "Could not load MMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
case MMAP::MMAP_LOAD_RESULT_IGNORED:
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outStaticDebug("Ignored MMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
LOG_DEBUG("server", "Ignored MMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@@ -143,17 +143,17 @@ void Map::LoadVMap(int gx, int gy)
|
|
|
|
|
{
|
|
|
|
|
case VMAP::VMAP_LOAD_RESULT_OK:
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("VMAP loaded name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
LOG_DEBUG("server", "VMAP loaded name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
case VMAP::VMAP_LOAD_RESULT_ERROR:
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("Could not load VMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
LOG_DEBUG("server", "Could not load VMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
case VMAP::VMAP_LOAD_RESULT_IGNORED:
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outStaticDebug("Ignored VMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
LOG_DEBUG("server", "Ignored VMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", GetMapName(), GetId(), gx, gy, gx, gy);
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@@ -180,7 +180,7 @@ void Map::LoadMap(int gx, int gy, bool reload)
|
|
|
|
|
if (GridMaps[gx][gy])
|
|
|
|
|
{
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("Unloading previously loaded map %u before reloading.", GetId());
|
|
|
|
|
LOG_DEBUG("server", "Unloading previously loaded map %u before reloading.", GetId());
|
|
|
|
|
#endif
|
|
|
|
|
sScriptMgr->OnUnloadGridMap(this, GridMaps[gx][gy], gx, gy);
|
|
|
|
|
|
|
|
|
@@ -194,13 +194,13 @@ void Map::LoadMap(int gx, int gy, bool reload)
|
|
|
|
|
tmp = new char[len];
|
|
|
|
|
snprintf(tmp, len, (char*)(sWorld->GetDataPath() + "maps/%03u%02u%02u.map").c_str(), GetId(), gx, gy);
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("Loading map %s", tmp);
|
|
|
|
|
LOG_DEBUG("server", "Loading map %s", tmp);
|
|
|
|
|
#endif
|
|
|
|
|
// loading data
|
|
|
|
|
GridMaps[gx][gy] = new GridMap();
|
|
|
|
|
if (!GridMaps[gx][gy]->loadData(tmp))
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Error loading map file: \n %s\n", tmp);
|
|
|
|
|
LOG_ERROR("server", "Error loading map file: \n %s\n", tmp);
|
|
|
|
|
}
|
|
|
|
|
delete [] tmp;
|
|
|
|
|
|
|
|
|
@@ -312,7 +312,7 @@ void Map::SwitchGridContainers(Creature* obj, bool on)
|
|
|
|
|
CellCoord p = acore::ComputeCellCoord(obj->GetPositionX(), obj->GetPositionY());
|
|
|
|
|
if (!p.IsCoordValid())
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Map::SwitchGridContainers: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), p.x_coord, p.y_coord);
|
|
|
|
|
LOG_ERROR("server", "Map::SwitchGridContainers: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), p.x_coord, p.y_coord);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -321,7 +321,7 @@ void Map::SwitchGridContainers(Creature* obj, bool on)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outStaticDebug("Switch object " UI64FMTD " from grid[%u, %u] %u", obj->GetGUID(), cell.data.Part.grid_x, cell.data.Part.grid_y, on);
|
|
|
|
|
LOG_DEBUG("maps", "Switch object " SZFMTD " from grid[%u, %u] %d", obj->GetGUID(), cell.GridX(), cell.GridY(), on);
|
|
|
|
|
#endif
|
|
|
|
|
NGridType* ngrid = getNGrid(cell.GridX(), cell.GridY());
|
|
|
|
|
ASSERT(ngrid != nullptr);
|
|
|
|
@@ -351,7 +351,7 @@ void Map::SwitchGridContainers(GameObject* obj, bool on)
|
|
|
|
|
CellCoord p = acore::ComputeCellCoord(obj->GetPositionX(), obj->GetPositionY());
|
|
|
|
|
if (!p.IsCoordValid())
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Map::SwitchGridContainers: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), p.x_coord, p.y_coord);
|
|
|
|
|
LOG_ERROR("server", "Map::SwitchGridContainers: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), p.x_coord, p.y_coord);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -446,7 +446,7 @@ bool Map::EnsureGridLoaded(const Cell& cell)
|
|
|
|
|
//if (!isGridObjectDataLoaded(cell.GridX(), cell.GridY()))
|
|
|
|
|
//{
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDebug(LOG_FILTER_MAPS, "Loading grid[%u, %u] for map %u instance %u", cell.GridX(), cell.GridY(), GetId(), i_InstanceId);
|
|
|
|
|
LOG_DEBUG("maps", "Loading grid[%u, %u] for map %u instance %u", cell.GridX(), cell.GridY(), GetId(), i_InstanceId);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
setGridObjectDataLoaded(true, cell.GridX(), cell.GridY());
|
|
|
|
@@ -481,7 +481,7 @@ bool Map::AddPlayerToMap(Player* player)
|
|
|
|
|
CellCoord cellCoord = acore::ComputeCellCoord(player->GetPositionX(), player->GetPositionY());
|
|
|
|
|
if (!cellCoord.IsCoordValid())
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Map::Add: Player (GUID: %u) has invalid coordinates X:%f Y:%f grid cell [%u:%u]", player->GetGUIDLow(), player->GetPositionX(), player->GetPositionY(), cellCoord.x_coord, cellCoord.y_coord);
|
|
|
|
|
LOG_ERROR("server", "Map::Add: Player (GUID: %u) has invalid coordinates X:%f Y:%f grid cell [%u:%u]", player->GetGUIDLow(), player->GetPositionX(), player->GetPositionY(), cellCoord.x_coord, cellCoord.y_coord);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -540,7 +540,7 @@ bool Map::AddToMap(T* obj, bool checkTransport)
|
|
|
|
|
ASSERT(cellCoord.IsCoordValid());
|
|
|
|
|
if (!cellCoord.IsCoordValid())
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Map::Add: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), cellCoord.x_coord, cellCoord.y_coord);
|
|
|
|
|
LOG_ERROR("server", "Map::Add: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), cellCoord.x_coord, cellCoord.y_coord);
|
|
|
|
|
return false; //Should delete object
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -588,7 +588,7 @@ bool Map::AddToMap(MotionTransport* obj, bool /*checkTransport*/)
|
|
|
|
|
CellCoord cellCoord = acore::ComputeCellCoord(obj->GetPositionX(), obj->GetPositionY());
|
|
|
|
|
if (!cellCoord.IsCoordValid())
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Map::Add: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), cellCoord.x_coord, cellCoord.y_coord);
|
|
|
|
|
LOG_ERROR("server", "Map::Add: Object " UI64FMTD " has invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), cellCoord.x_coord, cellCoord.y_coord);
|
|
|
|
|
return false; //Should delete object
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1214,7 +1214,7 @@ bool Map::UnloadGrid(NGridType& ngrid)
|
|
|
|
|
GridMaps[gx][gy] = nullptr;
|
|
|
|
|
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outStaticDebug("Unloading grid[%u, %u] for map %u finished", x, y, GetId());
|
|
|
|
|
LOG_DEBUG("server", "Unloading grid[%u, %u] for map %u finished", x, y, GetId());
|
|
|
|
|
#endif
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@@ -1229,7 +1229,7 @@ void Map::RemoveAllPlayers()
|
|
|
|
|
if (!player->IsBeingTeleportedFar())
|
|
|
|
|
{
|
|
|
|
|
// this is happening for bg
|
|
|
|
|
sLog->outError("Map::UnloadAll: player %s is still in map %u during unload, this should not happen!", player->GetName().c_str(), GetId());
|
|
|
|
|
LOG_ERROR("server", "Map::UnloadAll: player %s is still in map %u during unload, this should not happen!", player->GetName().c_str(), GetId());
|
|
|
|
|
player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->GetOrientation());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -1321,28 +1321,28 @@ bool GridMap::loadData(char* filename)
|
|
|
|
|
// loadup area data
|
|
|
|
|
if (header.areaMapOffset && !loadAreaData(in, header.areaMapOffset, header.areaMapSize))
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Error loading map area data\n");
|
|
|
|
|
LOG_ERROR("server", "Error loading map area data\n");
|
|
|
|
|
fclose(in);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// loadup height data
|
|
|
|
|
if (header.heightMapOffset && !loadHeightData(in, header.heightMapOffset, header.heightMapSize))
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Error loading map height data\n");
|
|
|
|
|
LOG_ERROR("server", "Error loading map height data\n");
|
|
|
|
|
fclose(in);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// loadup liquid data
|
|
|
|
|
if (header.liquidMapOffset && !loadLiquidData(in, header.liquidMapOffset, header.liquidMapSize))
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Error loading map liquids data\n");
|
|
|
|
|
LOG_ERROR("server", "Error loading map liquids data\n");
|
|
|
|
|
fclose(in);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
fclose(in);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
sLog->outError("Map file '%s' is from an incompatible clientversion. Please recreate using the mapextractor.", filename);
|
|
|
|
|
LOG_ERROR("server", "Map file '%s' is from an incompatible clientversion. Please recreate using the mapextractor.", filename);
|
|
|
|
|
fclose(in);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
@@ -2053,7 +2053,7 @@ bool Map::IsOutdoors(float x, float y, float z) const
|
|
|
|
|
if (wmoEntry)
|
|
|
|
|
{
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outStaticDebug("Got WMOAreaTableEntry! flag %u, areaid %u", wmoEntry->Flags, wmoEntry->areaId);
|
|
|
|
|
LOG_DEBUG("server", "Got WMOAreaTableEntry! flag %u, areaid %u", wmoEntry->Flags, wmoEntry->areaId);
|
|
|
|
|
#endif
|
|
|
|
|
atEntry = sAreaTableStore.LookupEntry(wmoEntry->areaId);
|
|
|
|
|
}
|
|
|
|
@@ -2159,7 +2159,7 @@ ZLiquidStatus Map::getLiquidStatus(float x, float y, float z, uint8 ReqLiquidTyp
|
|
|
|
|
if (vmgr->GetLiquidLevel(GetId(), x, y, z, ReqLiquidType, liquid_level, ground_level, liquid_type))
|
|
|
|
|
{
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDebug(LOG_FILTER_MAPS, "getLiquidStatus(): vmap liquid level: %f ground: %f type: %u", liquid_level, ground_level, liquid_type);
|
|
|
|
|
LOG_DEBUG("maps", "getLiquidStatus(): vmap liquid level: %f ground: %f type: %u", liquid_level, ground_level, liquid_type);
|
|
|
|
|
#endif
|
|
|
|
|
// Check water level and ground level
|
|
|
|
|
if (liquid_level > ground_level && z > ground_level - 2)
|
|
|
|
@@ -2333,7 +2333,7 @@ void Map::UpdateObjectsVisibilityFor(Player* player, Cell cell, CellCoord cellpa
|
|
|
|
|
void Map::SendInitSelf(Player* player)
|
|
|
|
|
{
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("Creating player data for himself %u", player->GetGUIDLow());
|
|
|
|
|
LOG_DEBUG("server", "Creating player data for himself %u", player->GetGUIDLow());
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
UpdateData data;
|
|
|
|
@@ -2398,7 +2398,7 @@ inline void Map::setNGrid(NGridType* grid, uint32 x, uint32 y)
|
|
|
|
|
{
|
|
|
|
|
if (x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS)
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("map::setNGrid() Invalid grid coordinates found: %d, %d!", x, y);
|
|
|
|
|
LOG_ERROR("server", "map::setNGrid() Invalid grid coordinates found: %d, %d!", x, y);
|
|
|
|
|
ABORT();
|
|
|
|
|
}
|
|
|
|
|
i_grids[x][y] = grid;
|
|
|
|
@@ -2427,7 +2427,7 @@ void Map::AddObjectToRemoveList(WorldObject* obj)
|
|
|
|
|
obj->CleanupsBeforeDelete(false); // remove or simplify at least cross referenced links
|
|
|
|
|
|
|
|
|
|
i_objectsToRemove.insert(obj);
|
|
|
|
|
//sLog->outDebug(LOG_FILTER_MAPS, "Object (GUID: %u TypeId: %u) added to removing list.", obj->GetGUIDLow(), obj->GetTypeId());
|
|
|
|
|
//LOG_DEBUG("maps", "Object (GUID: %u TypeId: %u) added to removing list.", obj->GetGUIDLow(), obj->GetTypeId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Map::AddObjectToSwitchList(WorldObject* obj, bool on)
|
|
|
|
@@ -2472,7 +2472,7 @@ void Map::RemoveAllObjectsInRemoveList()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//sLog->outDebug(LOG_FILTER_MAPS, "Object remover 1 check.");
|
|
|
|
|
//LOG_DEBUG("maps", "Object remover 1 check.");
|
|
|
|
|
while (!i_objectsToRemove.empty())
|
|
|
|
|
{
|
|
|
|
|
std::unordered_set<WorldObject*>::iterator itr = i_objectsToRemove.begin();
|
|
|
|
@@ -2485,7 +2485,7 @@ void Map::RemoveAllObjectsInRemoveList()
|
|
|
|
|
{
|
|
|
|
|
Corpse* corpse = ObjectAccessor::GetCorpse(*obj, obj->GetGUID());
|
|
|
|
|
if (!corpse)
|
|
|
|
|
sLog->outError("Tried to delete corpse/bones %u that is not in map.", obj->GetGUIDLow());
|
|
|
|
|
LOG_ERROR("server", "Tried to delete corpse/bones %u that is not in map.", obj->GetGUIDLow());
|
|
|
|
|
else
|
|
|
|
|
RemoveFromMap(corpse, true);
|
|
|
|
|
break;
|
|
|
|
@@ -2506,12 +2506,12 @@ void Map::RemoveAllObjectsInRemoveList()
|
|
|
|
|
RemoveFromMap(obj->ToCreature(), true);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
sLog->outError("Non-grid object (TypeId: %u) is in grid object remove list, ignored.", obj->GetTypeId());
|
|
|
|
|
LOG_ERROR("server", "Non-grid object (TypeId: %u) is in grid object remove list, ignored.", obj->GetTypeId());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//sLog->outDebug(LOG_FILTER_MAPS, "Object remover 2 check.");
|
|
|
|
|
//LOG_DEBUG("maps", "Object remover 2 check.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32 Map::GetPlayersCountExceptGMs() const
|
|
|
|
@@ -2651,7 +2651,7 @@ bool InstanceMap::CanEnter(Player* player, bool loginCheck)
|
|
|
|
|
{
|
|
|
|
|
if (!loginCheck && player->GetMapRef().getTarget() == this)
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("InstanceMap::CanEnter - player %s(%u) already in map %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), GetId(), GetInstanceId(), GetSpawnMode());
|
|
|
|
|
LOG_ERROR("server", "InstanceMap::CanEnter - player %s(%u) already in map %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), GetId(), GetInstanceId(), GetSpawnMode());
|
|
|
|
|
ABORT();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
@@ -2665,7 +2665,7 @@ bool InstanceMap::CanEnter(Player* player, bool loginCheck)
|
|
|
|
|
if (GetPlayersCountExceptGMs() >= (loginCheck ? maxPlayers + 1 : maxPlayers))
|
|
|
|
|
{
|
|
|
|
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
|
|
|
sLog->outDetail("MAP: Instance '%u' of map '%s' cannot have more than '%u' players. Player '%s' rejected", GetInstanceId(), GetMapName(), maxPlayers, player->GetName().c_str());
|
|
|
|
|
LOG_DEBUG("server", "MAP: Instance '%u' of map '%s' cannot have more than '%u' players. Player '%s' rejected", GetInstanceId(), GetMapName(), maxPlayers, player->GetName().c_str());
|
|
|
|
|
#endif
|
|
|
|
|
player->SendTransferAborted(GetId(), TRANSFER_ABORT_MAX_PLAYERS);
|
|
|
|
|
return false;
|
|
|
|
@@ -2731,7 +2731,7 @@ bool InstanceMap::AddPlayerToMap(Player* player)
|
|
|
|
|
InstanceSave* mapSave = sInstanceSaveMgr->GetInstanceSave(GetInstanceId());
|
|
|
|
|
if (!mapSave)
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("InstanceMap::Add: InstanceSave does not exist for map %d spawnmode %d with instance id %d", GetId(), GetSpawnMode(), GetInstanceId());
|
|
|
|
|
LOG_ERROR("server", "InstanceMap::Add: InstanceSave does not exist for map %d spawnmode %d with instance id %d", GetId(), GetSpawnMode(), GetInstanceId());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -2741,7 +2741,7 @@ bool InstanceMap::AddPlayerToMap(Player* player)
|
|
|
|
|
{
|
|
|
|
|
if (playerBind->save != mapSave)
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("InstanceMap::Add: player %s(%d) is permanently bound to instance %d, %d, %d, %d but he is being put into instance %d, %d, %d, %d", player->GetName().c_str(), player->GetGUIDLow(), playerBind->save->GetMapId(), playerBind->save->GetInstanceId(), playerBind->save->GetDifficulty(), playerBind->save->CanReset(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), mapSave->CanReset());
|
|
|
|
|
LOG_ERROR("server", "InstanceMap::Add: player %s(%d) is permanently bound to instance %d, %d, %d, %d but he is being put into instance %d, %d, %d, %d", player->GetName().c_str(), player->GetGUIDLow(), playerBind->save->GetMapId(), playerBind->save->GetInstanceId(), playerBind->save->GetDifficulty(), playerBind->save->CanReset(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), mapSave->CanReset());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -2912,7 +2912,7 @@ void InstanceMap::PermBindAllPlayers()
|
|
|
|
|
InstanceSave* save = sInstanceSaveMgr->GetInstanceSave(GetInstanceId());
|
|
|
|
|
if (!save)
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("Cannot bind players because no instance save is available for instance map (Name: %s, Entry: %u, InstanceId: %u)!", GetMapName(), GetId(), GetInstanceId());
|
|
|
|
|
LOG_ERROR("server", "Cannot bind players because no instance save is available for instance map (Name: %s, Entry: %u, InstanceId: %u)!", GetMapName(), GetId(), GetInstanceId());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -3010,7 +3010,7 @@ bool BattlegroundMap::CanEnter(Player* player, bool loginCheck)
|
|
|
|
|
{
|
|
|
|
|
if (!loginCheck && player->GetMapRef().getTarget() == this)
|
|
|
|
|
{
|
|
|
|
|
sLog->outError("BGMap::CanEnter - player %u is already in map!", player->GetGUIDLow());
|
|
|
|
|
LOG_ERROR("server", "BGMap::CanEnter - player %u is already in map!", player->GetGUIDLow());
|
|
|
|
|
ABORT();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
@@ -3548,7 +3548,7 @@ bool Map::CheckCollisionAndGetValidCoords(const WorldObject* source, float start
|
|
|
|
|
// Prevent invalid coordinates here, position is unchanged
|
|
|
|
|
if (!acore::IsValidMapCoord(startX, startY, startZ) || !acore::IsValidMapCoord(destX, destY, destZ))
|
|
|
|
|
{
|
|
|
|
|
sLog->outCrash("Map::CheckCollisionAndGetValidCoords invalid coordinates startX: %f, startY: %f, startZ: %f, destX: %f, destY: %f, destZ: %f", startX, startY, startZ, destX, destY, destZ);
|
|
|
|
|
LOG_FATAL("server", "Map::CheckCollisionAndGetValidCoords invalid coordinates startX: %f, startY: %f, startZ: %f, destX: %f, destY: %f, destZ: %f", startX, startY, startZ, destX, destY, destZ);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|