Core/Channels: Fix a bug that would cause channel settings to disappear in certain settings. Fix a bug that would cause channels to not be saved on .server shutdown without delay.
Port From (https://github.com/TrinityCore/TrinityCore/commit/f434241305089942e7df5579e81137624c3ae0ef)
This commit is contained in:
@@ -193,18 +193,6 @@ namespace Game.Chat
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LeftChannel(string name)
|
|
||||||
{
|
|
||||||
string channelName = name.ToLower();
|
|
||||||
|
|
||||||
var channel = _customChannels.LookupByKey(channelName);
|
|
||||||
if (channel == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (channel.GetNumPlayers() == 0)
|
|
||||||
_customChannels.Remove(channelName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LeftChannel(uint channelId, AreaTableRecord zoneEntry)
|
public void LeftChannel(uint channelId, AreaTableRecord zoneEntry)
|
||||||
{
|
{
|
||||||
var guid = CreateBuiltinChannelGuid(channelId, zoneEntry);
|
var guid = CreateBuiltinChannelGuid(channelId, zoneEntry);
|
||||||
|
|||||||
@@ -2617,12 +2617,8 @@ namespace Game.Entities
|
|||||||
// delete channel if empty
|
// delete channel if empty
|
||||||
ChannelManager cMgr = ChannelManager.ForTeam(GetTeam());
|
ChannelManager cMgr = ChannelManager.ForTeam(GetTeam());
|
||||||
if (cMgr != null)
|
if (cMgr != null)
|
||||||
{
|
|
||||||
if (ch.IsConstant())
|
if (ch.IsConstant())
|
||||||
cMgr.LeftChannel(ch.GetChannelId(), ch.GetZoneEntry());
|
cMgr.LeftChannel(ch.GetChannelId(), ch.GetZoneEntry());
|
||||||
else
|
|
||||||
cMgr.LeftChannel(ch.GetName());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Log.outDebug(LogFilter.ChatSystem, "Player {0}: channels cleaned up!", GetName());
|
Log.outDebug(LogFilter.ChatSystem, "Player {0}: channels cleaned up!", GetName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,8 +102,6 @@ namespace Game
|
|||||||
|
|
||||||
if (packet.ZoneChannelID != 0)
|
if (packet.ZoneChannelID != 0)
|
||||||
cMgr.LeftChannel((uint)packet.ZoneChannelID, zone);
|
cMgr.LeftChannel((uint)packet.ZoneChannelID, zone);
|
||||||
else
|
|
||||||
cMgr.LeftChannel(packet.ChannelName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1806,14 +1806,9 @@ namespace Game
|
|||||||
m_ShutdownMask = options;
|
m_ShutdownMask = options;
|
||||||
m_ExitCode = exitcode;
|
m_ExitCode = exitcode;
|
||||||
|
|
||||||
// If the shutdown time is 0, set m_stopEvent (except if shutdown is 'idle' with remaining sessions)
|
// If the shutdown time is 0, evaluate shutdown on next tick (no message)
|
||||||
if (time == 0)
|
if (time == 0)
|
||||||
{
|
m_ShutdownTimer = 1;
|
||||||
if (!options.HasAnyFlag(ShutdownMask.Idle) || GetActiveAndQueuedSessionCount() == 0)
|
|
||||||
IsStopped = true; // exist code already set
|
|
||||||
else
|
|
||||||
m_ShutdownTimer = 1; //So that the session count is re-evaluated at next world tick
|
|
||||||
}
|
|
||||||
// Else set the shutdown timer and warn users
|
// Else set the shutdown timer and warn users
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user