mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
Core/Instances: Fixed crashes happening when trying to access already deleted players.
This commit is contained in:
@@ -2360,7 +2360,7 @@ bool InstanceMap::Add(Player *player)
|
||||
|
||||
// for normal instances cancel the reset schedule when the
|
||||
// first player enters (no players yet)
|
||||
SetResetSchedule(false, player);
|
||||
SetResetSchedule(false);
|
||||
|
||||
sLog->outDetail("MAP: Player '%s' entered instance '%u' of map '%s'", player->GetName(), GetInstanceId(), GetMapName());
|
||||
// initialize unload state
|
||||
@@ -2394,7 +2394,7 @@ void InstanceMap::Remove(Player *player, bool remove)
|
||||
m_unloadTimer = m_unloadWhenEmpty ? MIN_UNLOAD_DELAY : std::max(sWorld->getIntConfig(CONFIG_INSTANCE_UNLOAD_DELAY), (uint32)MIN_UNLOAD_DELAY);
|
||||
Map::Remove(player, remove);
|
||||
// for normal instances schedule the reset after all players have left
|
||||
SetResetSchedule(true, player);
|
||||
SetResetSchedule(true);
|
||||
}
|
||||
|
||||
void InstanceMap::CreateInstanceData(bool load)
|
||||
@@ -2521,7 +2521,7 @@ void InstanceMap::SendResetWarnings(uint32 timeLeft) const
|
||||
itr->getSource()->SendInstanceResetWarning(GetId(), itr->getSource()->GetDifficulty(IsRaid()), timeLeft);
|
||||
}
|
||||
|
||||
void InstanceMap::SetResetSchedule(bool on, Player* player)
|
||||
void InstanceMap::SetResetSchedule(bool on)
|
||||
{
|
||||
// only for normal instances
|
||||
// the reset time is only scheduled when there are no payers inside
|
||||
@@ -2531,9 +2531,8 @@ void InstanceMap::SetResetSchedule(bool on, Player* player)
|
||||
if (InstanceSave *save = sInstanceSaveMgr->GetInstanceSave(GetInstanceId()))
|
||||
sInstanceSaveMgr->ScheduleReset(on, save->GetResetTime(), InstanceSaveManager::InstResetEvent(0, GetId(), Difficulty(GetSpawnMode()), GetInstanceId()));
|
||||
else
|
||||
sLog->outError("InstanceMap::SetResetSchedule: cannot turn schedule %s, there is no save information for instance (map [id: %u, name: %s], instance id: %u) due to player (GUID: %u, name: %s) %s",
|
||||
on ? "on" : "off", GetId(), GetMapName(), GetInstanceId(),
|
||||
player->GetGUIDLow(), player->GetName(), on ? "leave" : "entrance");
|
||||
sLog->outError("InstanceMap::SetResetSchedule: cannot turn schedule %s, there is no save information for instance (map [id: %u, name: %s], instance id: %u)",
|
||||
on ? "on" : "off", GetId(), GetMapName(), GetInstanceId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -595,7 +595,7 @@ class InstanceMap : public Map
|
||||
void UnloadAll();
|
||||
bool CanEnter(Player* player);
|
||||
void SendResetWarnings(uint32 timeLeft) const;
|
||||
void SetResetSchedule(bool on, Player* player);
|
||||
void SetResetSchedule(bool on);
|
||||
|
||||
uint32 GetMaxPlayers() const;
|
||||
uint32 GetMaxResetDelay() const;
|
||||
|
||||
Reference in New Issue
Block a user