fCraft.Chat.SendRank C# (CSharp) Method

SendRank() public static method

Sends a rank-wide message (@@Rank message).
public static SendRank ( [ player, [ rank, [ rawMessage ) : bool
player [ Player writing the message.
rank [ Target rank.
rawMessage [ Message text.
return bool
        public static bool SendRank( [NotNull] Player player, [NotNull] Rank rank, [NotNull] string rawMessage ) {
            if ( player == null )
                throw new ArgumentNullException( "player" );
            if ( rank == null )
                throw new ArgumentNullException( "rank" );
            if ( rawMessage == null )
                throw new ArgumentNullException( "rawMessage" );
            var recepientList = rank.Players.NotIgnoring( player ).Union( player );

            string formattedMessage = String.Format( "&P({0}&P){1}: {2}",
                                                     rank.ClassyName,
                                                     player.Name,
                                                     rawMessage );

            var e = new ChatSendingEventArgs( player,
                                              rawMessage,
                                              formattedMessage,
                                              ChatMessageType.Rank,
                                              recepientList );

            if ( !SendInternal( e ) )
                return false;

            Logger.Log( LogType.RankChat,
                        "(rank {0}){1}: {2}",
                        rank.Name, player.Name, rawMessage );
            return true;
        }

Usage Example

Example #1
0
        void HandleRankChatMessage([NotNull] string rawMessage)
        {
            if (rawMessage == null)
            {
                throw new ArgumentNullException("rawMessage");
            }
            if (!Can(Permission.Chat))
            {
                return;
            }

            if (Info.IsMuted)
            {
                MessageMuted();
                return;
            }

            if (DetectChatSpam())
            {
                return;
            }

            if (rawMessage.EndsWith("//"))
            {
                rawMessage = rawMessage.Substring(0, rawMessage.Length - 1);
            }

            Rank rank;

            if (rawMessage[2] == ' ')
            {
                rank = Info.Rank;
            }
            else
            {
                string rankName = rawMessage.Substring(2, rawMessage.IndexOf(' ') - 2);
                rank = RankManager.FindRank(rankName);
                if (rank == null)
                {
                    MessageNoRank(rankName);
                    return;
                }
            }

            string messageText = rawMessage.Substring(rawMessage.IndexOf(' ') + 1);

            Player[] spectators = Server.Players.NotRanked(Info.Rank)
                                  .Where(p => p.spectatedPlayer == this)
                                  .ToArray();
            if (spectators.Length > 0)
            {
                spectators.Message("[Spectate]: &Fto rank {0}&F: {1}", rank.ClassyName, messageText);
            }

            Chat.SendRank(this, rank, messageText);
        }