public void DispatchEvent(ACR_ServerCommunicator Script, ALFA.Database Database)
{
//
// If the event was for a player logging off of the local server,
// then don't re-broadcast it.
//
foreach (uint PlayerObject in Script.GetPlayers(true))
{
PlayerState Player = Script.TryGetPlayerState(PlayerObject);
if (Player == null)
continue;
if (Player.CharacterIdsShown.Contains(Character.CharacterId))
{
string sPlayerListBox = "";
if (Server.ServerId == Script.GetDatabase().ACR_GetServerID() || Script.GetLocalInt(PlayerObject, "chatselect_expanded") == 0)
{
if (IsDM == true)
{
sPlayerListBox = "LocalDMList";
Player.ChatSelectLocalDMsShown -= 1;
}
else
{
sPlayerListBox = "LocalPlayerList";
Player.ChatSelectLocalPlayersShown -= 1;
}
}
else
{
if (IsDM == true)
{
sPlayerListBox = "RemoteDMList";
Player.ChatSelectRemoteDMsShown -= 1;
}
else
{
sPlayerListBox = "RemotePlayerList";
Player.ChatSelectRemotePlayersShown -= 1;
}
}
Script.RemoveListBoxRow(Player.ObjectId, "ChatSelect", sPlayerListBox, Character.CharacterName);
Player.CharacterIdsShown.Remove(Character.CharacterId);
Player.UpdateChatSelectGUIHeaders();
}
}
if (Database.ACR_GetServerID() == Server.ServerId)
return;
string Message = String.Format(
"{0}<c=#FFDAB9>{1} ({2}) left {3}.</c>", // <c=Peachpuff...>
IsDM ? "<c=#99CCFF>[DM] </c>" : "",
Character.Name,
Character.Player.Name,
Server.Name);
string ChatMessage = "</c>" + Message;
foreach (uint PlayerObject in Script.GetPlayers(true))
{
PlayerState Player = Script.TryGetPlayerState(PlayerObject);
if (Player == null)
continue;
if (!Script.IsCrossServerNotificationEnabled(PlayerObject))
continue;
if ((Player.Flags & PlayerStateFlags.SendCrossServerNotificationsToCombatLog) != 0)
{
Script.SendMessageToPC(PlayerObject, Message);
}
else
{
Script.SendChatMessage(
CLRScriptBase.OBJECT_INVALID,
PlayerObject,
CLRScriptBase.CHAT_MODE_SERVER,
ChatMessage,
CLRScriptBase.FALSE);
}
}
#if DEBUG_MODE
Script.WriteTimestampedLogEntry(Message);
#endif
}