public void DispatchEvent(ACR_ServerCommunicator Script, ALFA.Database Database)
{
//
// If the event was for a player logging on to 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;
}
if (Server.ServerId == Script.GetDatabase().ACR_GetServerID())
Script.AddListBoxRow(Player.ObjectId, "ChatSelect", sPlayerListBox, Character.CharacterName, "RosterData=/t \"" + Character.CharacterName + "\"", "", "5=/t \"" + Character.CharacterName + "\" ", "");
else
{
if (Player.Flags.HasFlag(PlayerStateFlags.ChatSelectShowLocalPlayersOnlyWhenCollapsed))
continue;
Script.AddListBoxRow(Player.ObjectId, "ChatSelect", sPlayerListBox, Character.CharacterName, "RosterData=#t \"" + Character.CharacterName + "\"", "", "5=#t \"" + Character.CharacterName + "\" ", "");
}
}
else
{
if (IsDM == true)
{
sPlayerListBox = "RemoteDMList";
Player.ChatSelectRemoteDMsShown += 1;
}
else
{
sPlayerListBox = "RemotePlayerList";
Player.ChatSelectRemotePlayersShown += 1;
}
Script.AddListBoxRow(Player.ObjectId, "ChatSelect", sPlayerListBox, Character.CharacterName, "RosterData=#t \"" + Character.CharacterName + "\"", "", "5=#t \"" + Character.CharacterName + "\" ", "");
}
Player.CharacterIdsShown.Add(Character.CharacterId);
Player.UpdateChatSelectGUIHeaders();
}
}
if (Database.ACR_GetServerID() == Server.ServerId)
return;
string Message = String.Format(
"{0}<c=#FFA500>{1} ({2}) joined {3}.</c>", // <c=Orange...>
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
}