Exemple #1
0
 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);
     }
 }
Exemple #2
0
 // 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);
         }
     }
 }
Exemple #3
0
 // 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);
         }
     }
 }
Exemple #4
0
        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);
            }
        }