public void SendToAllExcept(string message, Player except, params object[] args) { if (message == null) { throw new ArgumentNullException("message"); } if (args == null) { throw new ArgumentNullException("args"); } if (args.Length > 0) { message = String.Format(message, args); } foreach (Packet p in PacketWriter.MakeWrappedMessage("> ", message, false)) { SendToAll(p, except); } }
// Sends a message directly (synchronously). Should only be used from Session.IoThread internal void MessageNow(string message, params object[] args) { if (message == null) { throw new ArgumentNullException("message"); } if (args.Length > 0) { message = String.Format(message, args); } if (Session == null) { Logger.LogToConsole(message); } else { foreach (Packet p in PacketWriter.MakeWrappedMessage(">", Color.Sys + message, false)) { Session.Send(p); } } }
// Queues a system message with a custom color public void MessagePrefixed(string prefix, string message, params object[] args) { if (message == null) { throw new ArgumentNullException("message"); } if (args.Length > 0) { message = String.Format(message, args); } if (this == Console) { Logger.LogToConsole(message); } else { foreach (Packet p in PacketWriter.MakeWrappedMessage(prefix, Color.Sys + message, false)) { Session.Send(p); } } }
public Map AcceptPlayer(Player player, bool announce) { if (player == null) { throw new ArgumentNullException("player"); } lock ( WorldLock ) { if (IsFull) { return(null); } if (players.ContainsKey(player.Name.ToLower())) { Logger.Log("This world already contains the player by name ({0}). " + "Some sort of state corruption must have occured.", LogType.Error, player.Name); players.Remove(player.Name.ToLower()); } players.Add(player.Name.ToLower(), player); // load the map, if it's not yet loaded PendingUnload = false; if (Map == null) { LoadMap(); } if (ConfigKey.BackupOnJoin.GetBool()) { string backupFileName = String.Format("{0}_{1:yyyy-MM-dd_HH-mm}_{2}.fcm", Name, DateTime.Now, player.Name); // localized Map.SaveBackup(Path.Combine(Paths.MapPath, GetMapName()), Path.Combine(Paths.BackupPath, backupFileName), true); } AddPlayerForPatrol(player); UpdatePlayerList(); if (announce && ConfigKey.ShowJoinedWorldMessages.GetBool()) { string message = String.Format("&SPlayer {0}&S joined {1}", player.GetClassyName(), GetClassyName()); foreach (Packet packet in PacketWriter.MakeWrappedMessage(">", message, false)) { Server.SendToSeeing(packet, player); } } Logger.Log("Player {0} joined world {1}.", LogType.UserActivity, player.Name, Name); if (OnPlayerJoined != null) { OnPlayerJoined(player, this); } if (IsLocked) { player.Message("&WThis map is currently locked (read-only)."); } if (player.IsHidden) { player.Message("Reminder: You are still hidden."); } return(Map); } }