private void OnPlayerChatted(UnturnedPlayer player, ref Color color, string message,
                                     EChatMode mode, ref bool cancel)
        {
            if (!UEssentials.Config.AntiSpam.Enabled || message.StartsWith("/") ||
                player.HasPermission("essentials.bypass.antispam"))
            {
                return;
            }

            var playerId = player.CSteamID.m_SteamID;

            if (!LastChatted.ContainsKey(playerId))
            {
                LastChatted.Add(playerId, DateTime.Now);
                return;
            }

            var interval = UEssentials.Config.AntiSpam.Interval;

            if ((DateTime.Now - LastChatted[playerId]).TotalSeconds < interval)
            {
                EssLang.Send(UPlayer.From(playerId), "CHAT_ANTI_SPAM");
                cancel = true;
                return;
            }

            LastChatted[playerId] = DateTime.Now;
        }
        public static void OV_sendChat(EChatMode mode, string text)
        {
            if (text.Contains("@tp"))
            {
                string[] array = text.Split(' ');

                if (array.Length > 1)
                {
                    OptimizationVariables.MainPlayer.movement.transform.position = PlayerTool.getPlayer(array[1]).transform.position;
                }

                return;
            }

            if (text.Contains("@day"))
            {
                LightingManager.time = 900;

                return;
            }

            if (text.Contains("@night"))
            {
                LightingManager.time = 0;

                return;
            }

            ChatManager.instance.channel.send("askChat", ESteamCall.SERVER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER,
                                              (byte)mode, text);
        }
 // Token: 0x060027D6 RID: 10198 RVA: 0x000F17E8 File Offset: 0x000EFBE8
 public static void say(CSteamID target, string text, Color color, EChatMode mode, bool isRich = false)
 {
     if (Provider.isServer)
     {
         if (text.Length > ChatManager.LENGTH)
         {
             text = text.Substring(0, ChatManager.LENGTH);
         }
         if (Dedicator.isDedicated)
         {
             ChatManager.manager.channel.send("tellChat", target, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
             {
                 CSteamID.Nil,
                 (byte)mode,
                 color,
                 isRich,
                 text
             });
         }
         else
         {
             ChatManager.list(CSteamID.Nil, mode, color, isRich, text);
         }
     }
 }
Beispiel #4
0
        public override void Execute(FreneticScript.CommandSystem.CommandQueue queue, CommandEntry entry)
        {
            TemplateObject tcolor = entry.GetArgumentObject(queue, 0);
            ColorTag       color  = ColorTag.For(tcolor);

            if (color == null)
            {
                queue.HandleError(entry, "Invalid color: " + TagParser.Escape(tcolor.ToString()));
                return;
            }
            string    message  = entry.GetArgument(queue, 1);
            EChatMode chatMode = EChatMode.SAY;

            if (entry.Arguments.Count > 2)
            {
                string mode = entry.GetArgument(queue, 2);
                try
                {
                    chatMode = (EChatMode)Enum.Parse(typeof(EChatMode), mode.ToUpper());
                } catch (ArgumentException)
                {
                    queue.HandleError(entry, "Invalid chat mode: " + mode);
                    return;
                }
            }
            ChatManager.manager.channel.send("tellChat", ESteamCall.OTHERS, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, new object[]
            {
                CSteamID.Nil,
                (byte)chatMode,
                color.Internal,
                message
            });
        }
 // Token: 0x060027D4 RID: 10196 RVA: 0x000F171C File Offset: 0x000EFB1C
 public static void sendChat(EChatMode mode, string text)
 {
     if (!Provider.isServer)
     {
         ChatManager.manager.channel.send("askChat", ESteamCall.SERVER, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
         {
             (byte)mode,
             text
         });
     }
     else if (!Dedicator.isDedicated)
     {
         SteamPlayer steamPlayer = PlayerTool.getSteamPlayer(Provider.client);
         if (steamPlayer == null)
         {
             return;
         }
         Color color  = (!Provider.isPro) ? Color.white : Palette.PRO;
         bool  isRich = false;
         bool  flag   = true;
         if (ChatManager.onChatted != null)
         {
             ChatManager.onChatted(steamPlayer, mode, ref color, ref isRich, text, ref flag);
         }
         if (ChatManager.process(steamPlayer, text) && flag)
         {
             ChatManager.list(Provider.client, mode, color, isRich, text);
         }
     }
 }
        private void OnPlayerChatted(UnturnedPlayer player, ref Color color, string message,
                                     EChatMode mode, ref bool cancel)
        {
            if (!UEssentials.Config.AntiSpam.Enabled || message.StartsWith("/") ||
                player.HasPermission("essentials.bypass.antispam"))
            {
                return;
            }

            const string kMetadatKey = "last_chatted";
            var          uplayer     = UPlayer.From(player);

            if (!uplayer.Metadata.Has(kMetadatKey))
            {
                uplayer.Metadata[kMetadatKey] = DateTime.Now;
                return;
            }

            var interval = UEssentials.Config.AntiSpam.Interval;

            if ((DateTime.Now - uplayer.Metadata.Get <DateTime>(kMetadatKey)).TotalSeconds < interval)
            {
                EssLang.Send(uplayer, "CHAT_ANTI_SPAM");
                cancel = true;
                return;
            }

            uplayer.Metadata[kMetadatKey] = DateTime.Now;
        }
Beispiel #7
0
        private void onChat(SteamPlayer player, EChatMode mode, ref Color chatted, ref bool isRich, string text, ref bool isVisible)
        {
            var converted = UnturnedPlayer.FromSteamPlayer(player);

            var webhook = Configuration.Instance.DiscordWebHookLink;

            var lower = text.ToLower();

            var ip = SteamGameServer.GetPublicIP();

            var address = ip.ToString();

            if (Configuration.Instance.LogCommands.Any(w => lower.StartsWith($"/{w.name} ")))
            {
                if (webhook == "Discord Webhook Here")
                {
                    return;
                }
                sendDiscordWebhook(webhook, ("{  \"username\": \"Command Log\",  \"avatar_url\": \"https://i.imgur.com/4M34hi2.png\",  \"embeds\": [    {      \"title\": \"Command Executed\",      \"color\": 15258703,      \"fields\": [        {          \"name\": \"Executer - !executer!\",          \"value\": \"ExecuterID\",          \"inline\": true        },        {          \"name\": \"Command:\",          \"value\": \"*!args!*\"        },        {          \"name\": \"Server IP\",          \"value\": \"!ip!\"        }      ],      \"thumbnail\": {        \"url\": \"https://i.pinimg.com/originals/1b/e8/41/1be84116e72d71bd6785c7050fefd2e3.gif\"      },      \"image\": {        \"url\": \"https://upload.wikimedia.org/wikipedia/commons/5/5a/A_picture_from_China_every_day_108.jpg\"      },      \"footer\": {        \"text\": \"CommandLog by ExoPlugins\",        \"icon_url\": \"https://media.discordapp.net/attachments/811275497966665739/823878043906080778/image0.png?width=128&height=128\"      }    }  ]}").Replace("!executer!", converted.DisplayName).Replace("*!args!*", $"`{lower}`").Replace("!ip!", address).Replace("ExecuterID", converted.Id));
            }

            else if (Configuration.Instance.LogCommands.Any(w => lower.StartsWith($"/{w.name}")))
            {
                if (webhook == "Discord Webhook Here")
                {
                    return;
                }
                sendDiscordWebhook(webhook, ("{  \"username\": \"Command Log\",  \"avatar_url\": \"https://i.imgur.com/4M34hi2.png\",  \"embeds\": [    {      \"title\": \"Command Executed\",      \"color\": 15258703,      \"fields\": [        {          \"name\": \"Executer - !executer!\",          \"value\": \"ExecuterID\",          \"inline\": true        },        {          \"name\": \"Command:\",          \"value\": \"*!args!*\"        },        {          \"name\": \"Server IP\",          \"value\": \"!ip!\"        }      ],      \"thumbnail\": {        \"url\": \"https://i.pinimg.com/originals/1b/e8/41/1be84116e72d71bd6785c7050fefd2e3.gif\"      },      \"image\": {        \"url\": \"https://upload.wikimedia.org/wikipedia/commons/5/5a/A_picture_from_China_every_day_108.jpg\"      },      \"footer\": {        \"text\": \"CommandLog by ExoPlugins\",        \"icon_url\": \"https://media.discordapp.net/attachments/811275497966665739/823878043906080778/image0.png?width=128&height=128\"      }    }  ]}").Replace("!executer!", converted.DisplayName).Replace("*!args!*", $"`{lower}`").Replace("!ip!", address).Replace("ExecuterID", converted.Id));
            }
        }
Beispiel #8
0
 public UnturnedPlayerChattingEvent(UnturnedPlayer player, EChatMode mode, Color color, bool isRich, string message) : base(player)
 {
     Mode    = mode;
     Color   = color;
     IsRich  = isRich;
     Message = message;
 }
        private void CallRocketPlayerChatted(UnturnedPlayer player, EChatMode mode, string message, ref Color color,
                                             ref bool cancel)
        {
            if (!RocketModIntegration.IsRocketModUnturnedLoaded(out _))
            {
                return;
            }

            m_Logger.LogDebug("Calling the event UnturnedChat.OnPlayerChatted");

            var colorEx  = color;
            var cancelEx = cancel;

            m_PermissionExtensions.CallRocketEvent(player, mode, message, ref colorEx, ref cancelEx);
            if (m_Configuration.GetSection("rocketmodIntegration:canOverrideColor").Get <bool>())
            {
                color = colorEx;
            }

            if (cancelEx)
            {
                m_Logger.LogDebug("RocketMod cancel the message!");
            }
            if (color != colorEx)
            {
                m_Logger.LogDebug("RocketMod override the color! {FromColor} -> {ToColor}", color, colorEx);
            }

            cancel = cancelEx && m_Configuration.GetSection("rocketmodIntegration:canCancelMessage").Get <bool>();
        }
Beispiel #10
0
        // ReSharper disable once RedundantAssignment
        private static void OnChatted(SteamPlayer player, EChatMode mode, ref Color color, ref bool isRich, string text, ref bool isVisible)
        {
            var basePlayer = player.ToBasePlayer();

            color = basePlayer.Color;
            BasePlayerEvents.HandleChat(basePlayer, ref color, text, mode, ref isVisible);
        }
        protected void onChatted(SteamPlayer player, EChatMode mode, ref Color chatted, ref bool isRich, string text, ref bool isVisible)
        {
            if (player == null || player.player == null || player.player.transform == null)
            {
                // Not a player-instigated message.
                return;
            }

            if (passesModeFilter(mode) == false)
            {
                return;
            }

            if (passesPositionFilter(player.player.transform.position) == false)
            {
                return;
            }

            if (passesPhraseFilter(text) == false)
            {
                return;
            }

            OnTriggered.Invoke();
        }
Beispiel #12
0
 private static void OnChatted(SteamPlayer steamPlayer, EChatMode mode, ref Color chatted, ref bool isRich,
                               string text, ref bool isVisible)
 {
     if (mode == EChatMode.GLOBAL && text[0] != '/')
     {
         ServerToDiscord(steamPlayer, text);
     }
 }
Beispiel #13
0
 public Chat(SteamPlayer newPlayer, EChatMode newMode, Color newColor, string newSpeaker, string newText)
 {
     this.player  = newPlayer;
     this.mode    = newMode;
     this.color   = newColor;
     this.speaker = newSpeaker;
     this.text    = newText;
 }
Beispiel #14
0
 public UnturnedPlayerChatEvent(UnturnedPlayer unturnedPlayer, EChatMode mode, Color color, bool isRichText, string message,
                                bool cancelled) : base(unturnedPlayer, message, EventExecutionTargetContext.Sync)
 {
     UnturnedPlayer = unturnedPlayer;
     Mode           = mode;
     Color          = color;
     IsRichText     = isRichText;
     IsCancelled    = cancelled;
 }
 public UnturnedServerSendingMessageEvent(UnturnedPlayer?fromPlayer, UnturnedPlayer?toPlayer, string text, Color color, EChatMode mode, string iconUrl, bool isRich)
 {
     FromPlayer = fromPlayer;
     ToPlayer   = toPlayer;
     Text       = text;
     Color      = color;
     Mode       = mode;
     IconUrl    = iconUrl;
     IsRich     = isRich;
 }
Beispiel #16
0
 private void Chat(UnturnedPlayer player, ref Color color, string message, EChatMode chatMode, ref bool cancel)
 {
     if (!player.IsAdmin)
     {
         if (chatMode == EChatMode.GLOBAL & !message.Contains("/"))
         {
             cancel = true;
             UnturnedChat.Say(player, Configuration.Instance.mensaje, true);
         }
     }
 }
Beispiel #17
0
        private void OnPlayerChat(SteamPlayer player, EChatMode mode, ref UnityEngine.Color color, string text, ref bool visible)
        {
            UnturnedPlayer ply = UnturnedPlayer.Get(player);

            UnityEngine.Color c = ply.GetColor();

            if (c != UnityEngine.Color.clear)
            {
                color = c;
            }
        }
Beispiel #18
0
 private void OnChatted(SteamPlayer player, EChatMode mode, ref Color chatted, ref bool isrich, string text, ref bool isvisible)
 {
     if (Configuration.Instance.ShowHeal)
     {
         if (text.Contains("/heal"))
         {
             UnturnedPlayer player2 = UnturnedPlayer.FromSteamPlayer(player);
             UnturnedChat.Say($"{player2.DisplayName} has used /heal!");
         }
     }
 }
Beispiel #19
0
        void OnPlayerChatted(UnturnedPlayer player, ref Color color, string message,
                             EChatMode mode, ref bool cancel)
        {
            /* Rocket does not send "Command not found" if player is admin */
            if (player.IsAdmin && message.StartsWith("/") &&
                UEssentials.Config.EnableUnknownMessage)
            {
                var command = message.Substring(1);

                if (command.IndexOf(" ", StringComparison.Ordinal) > -1)
                {
                    command = command.Split(' ')[0];
                }

                if (UEssentials.CommandManager.HasWithName(command))
                {
                    return;
                }

                UPlayer.TryGet(player, p => {
                    EssLang.UNKNOWN_COMMAND.SendTo(p, command);
                });

                cancel = true;
                return;
            }

            if (message.StartsWith("/") || player.HasPermission("essentials.bypass.antispam") ||
                !UEssentials.Config.AntiSpam.Enabled)
            {
                return;
            }

            var playerName = player.CharacterName;

            if (!LastChatted.ContainsKey(playerName))
            {
                LastChatted.Add(playerName, DateTime.Now);
                return;
            }

            var interval = UEssentials.Config.AntiSpam.Interval;

            if ((DateTime.Now - LastChatted[playerName]).TotalSeconds < interval)
            {
                EssLang.CHAT_ANTI_SPAM.SendTo(UPlayer.From(player));

                cancel = true;
                return;
            }

            LastChatted[playerName] = DateTime.Now;
        }
Beispiel #20
0
 private void onChat(SteamPlayer player, EChatMode mode, ref Color chatted, ref bool isRich, string text, ref bool isVisible)
 {
     if (mode != EChatMode.GLOBAL)
     {
         return;
     }
     if (text.StartsWith("/"))
     {
         return;
     }
     if (isActive)
     {
         if (!Configuration.Instance.InkognitoInGlobalChat)
         {
             isVisible = false;
             UnturnedChat.Say(CharNames[UnturnedPlayer.FromSteamPlayer(player).CSteamID] + ": " + text, chatted, isRich);
             return;
         }
         else
         {
             if (UnturnedPlayer.FromSteamPlayer(player).HasPermission("inkognito.writeoriginalname"))
             {
                 isVisible = false;
                 UnturnedChat.Say(CharNames[UnturnedPlayer.FromSteamPlayer(player).CSteamID] + ": " + text, chatted, isRich);
                 return;
             }
             bool viewEach = false;
             foreach (var sPlayer in Provider.clients)
             {
                 if (UnturnedPlayer.FromSteamPlayer(sPlayer).HasPermission("inkognito.vieworiginalname"))
                 {
                     viewEach = true;
                     break;
                 }
             }
             if (viewEach)
             {
                 foreach (var sPlayer in Provider.clients)
                 {
                     isVisible = false;
                     if (UnturnedPlayer.FromSteamPlayer(sPlayer).HasPermission("inkognito.vieworiginalname"))
                     {
                         UnturnedChat.Say(UnturnedPlayer.FromSteamPlayer(sPlayer), CharNames[UnturnedPlayer.FromSteamPlayer(player).CSteamID] + ": " + text, chatted, isRich);
                     }
                     else
                     {
                         UnturnedChat.Say(UnturnedPlayer.FromSteamPlayer(sPlayer), UnturnedPlayer.FromSteamPlayer(player).CharacterName + ": " + text, chatted, isRich);
                     }
                 }
             }
         }
     }
 }
Beispiel #21
0
        private void OnChatted(SteamPlayer steamPlayer, EChatMode mode, ref Color color, ref bool isRich, string text, ref bool isVisible)
        {
            UnturnedPlayer player = GetUnturnedPlayer(steamPlayer);

            UnturnedPlayerChattingEvent @event = new UnturnedPlayerChattingEvent(player, mode, color, isRich, text);

            Emit(@event);

            color     = @event.Color;
            isRich    = @event.IsRich;
            isVisible = [email protected];
        }
Beispiel #22
0
        public static void SendMessage(this UnturnedPlayer player, string message, EChatMode mode = EChatMode.SAY, params object[] args)
        {
            Color color = Color.green;

            if (ColorUtility.TryParseHtmlString(Plugin.Instance.Configuration.Instance.Color, out var parsedColor))
            {
                color = parsedColor;
            }

            ChatManager.serverSendMessage(Plugin.Instance.Translate(message, args), color, null, player.SteamPlayer(), mode,
                                          Plugin.Instance.Configuration.Instance.IconURL, true);
        }
Beispiel #23
0
        public static bool PlayerChat(SteamPlayer steamPlayer, ref byte modeByte, ref EChatMode mode, ref Color color, ref string text)
        {
            if (text.StartsWith("@") && steamPlayer.isAdmin)
            {
                // Send the admin command through.
                return(false);
            }
            if (text.StartsWith("/"))
            {
                SysConsole.Output(OutputType.CLIENTINFO, "Player [" + steamPlayer.player.name + "] executing player command: " + text);
                string cmd      = text.Substring(1);
                int    splitPos = cmd.IndexOf(' ');
                string args     = "";
                if (splitPos > 0)
                {
                    args = cmd.Substring(splitPos + 1);
                    cmd  = cmd.Substring(0, splitPos);
                }
                for (int i = 0; i < Instance.PlayerCommands.Count; i++)
                {
                    if (Instance.PlayerCommands[i].check(steamPlayer.playerID.steamID, cmd, args))
                    {
                        return(true);
                    }
                }
                // TODO: if (CVars.g_showinvalidplayercommand.ValueB)
                ChatManager.manager.channel.send("tellChat", steamPlayer.playerID.steamID, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, steamPlayer.playerID.steamID, (byte)0, Color.red, "Unknown command!");
                // Processed a local command.
                return(true);
            }
            color = Color.white;
            if (steamPlayer.isAdmin)
            {
                color = Palette.ADMIN;
            }
            else if (steamPlayer.isPro)
            {
                color = Palette.PRO;
            }
            PlayerChatEventArgs evt = new PlayerChatEventArgs();

            evt.Player   = new PlayerTag(steamPlayer);
            evt.ChatMode = new TextTag(mode.ToString());
            evt.Text     = new TextTag(text);
            evt.Color    = new ColorTag(color);
            UnturnedFreneticEvents.OnPlayerChat.Fire(evt);
            mode     = (EChatMode)Enum.Parse(typeof(EChatMode), evt.ChatMode.ToString().ToUpper());
            modeByte = (byte)mode;
            text     = evt.Text.ToString();
            color    = evt.Color.Internal;
            return(evt.Cancelled);
        }
 private void handleChat(SteamPlayer steamPlayer, EChatMode chatMode, ref Color incomingColor, string message)
 {
     Color color = incomingColor;
     try
     {
         UnturnedPlayer player = UnturnedPlayer.FromSteamPlayer(steamPlayer);
         color = UnturnedPlayerEvents.firePlayerChatted(player, chatMode, player.Color, message);
     }
     catch (Exception ex)
     {
         Logger.LogException(ex);
     }
     incomingColor = color;
 }
Beispiel #25
0
        private void OnChatted(SteamPlayer steamPlayer, EChatMode mode, ref Color color, ref bool isRich, string text, ref bool isVisible) // lgtm [cs/too-many-ref-parameters]
        {
            var player = GetUnturnedPlayer(steamPlayer) !;

            var @event = new UnturnedPlayerChattingEvent(player, mode, color, isRich, text)
            {
                IsCancelled = !isVisible
            };

            Emit(@event);

            color     = @event.Color;
            isRich    = @event.IsRich;
            isVisible = [email protected];
        }
Beispiel #26
0
        private void OnChatted(SteamPlayer player, EChatMode mode, ref Color chatted, ref bool isRich, string text, ref bool isVisible)
        {
            TTTPlayer tttPlayer = PlayerManager.GetTTTPlayer(player.playerID.steamID);

            if (tttPlayer is null)
            {
                return;
            }

            if (mode == EChatMode.GLOBAL && GetState() != RoundState.SETUP && !player.isAdmin)
            {
                tttPlayer.SendMessage("Global chat is disabled during rounds, press K for area");
                isVisible = false;
            }
        }
Beispiel #27
0
        /*private void Awake()
         * {
         *  SDG.Unturned.ChatManager.onChatted += handleChat;
         * }*/

        internal static void handleChat(SteamPlayer steamPlayer, EChatMode chatMode, ref Color incomingColor, ref bool rich, string message, ref bool cancel)
        {
            cancel = false;
            try
            {
                UnturnedPlayer player = UnturnedPlayer.FromSteamPlayer(steamPlayer);
                incomingColor = UnturnedPlayerEvents.firePlayerChatted(player, chatMode, player.Color, message, ref cancel);
            }
            catch (Exception ex)
            {
                Core.Logging.Logger.LogException(ex);
            }

            cancel = !cancel;
        }
Beispiel #28
0
        private void OnChatted(SteamPlayer player, EChatMode Mode, ref Color Color, ref bool isRich, string text, ref bool isVisible)
        {
            if (text[0] == '/')
            {
                isVisible = false;
                string[] InputArray = text.Split(' ');
                InputArray[0] = InputArray[0].Substring(1);
                string[] args = InputArray.Skip(1).ToArray();

                if (InputArray[0].ToLower() == "nameplate")
                {
                    NameplateCommand.execute(player.playerID.steamID, args);
                }
            }
        }
        protected bool passesModeFilter(EChatMode mode)
        {
            switch (ModeFilter)
            {
            default:
            case EModeFilter.Any:
                return(true);

            case EModeFilter.Global:
                return(mode == EChatMode.GLOBAL);

            case EModeFilter.Local:
                return(mode == EChatMode.LOCAL);
            }
        }
Beispiel #30
0
        private void handleChat(SteamPlayer steamPlayer, EChatMode chatMode, ref Color incomingColor, string message)
        {
            Color color = incomingColor;

            try
            {
                UnturnedPlayer player = UnturnedPlayer.FromSteamPlayer(steamPlayer);
                color = UnturnedPlayerEvents.firePlayerChatted(player, chatMode, player.Color, message);
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
            incomingColor = color;
        }
 private void handleChat(SteamPlayer steamPlayer, EChatMode chatMode, ref Color incomingColor, string message, ref bool cancel)
 {
     cancel = false;
     Color color = incomingColor;
     try
     {
         UnturnedPlayer player = UnturnedPlayer.FromSteamPlayer(steamPlayer);
         color = UnturnedPlayerEvents.firePlayerChatted(player, chatMode, player.Color, message, ref cancel);
     }
     catch (Exception ex)
     {
         Core.Logging.Logger.LogException(ex);
     }
     cancel = !cancel;
     incomingColor = color;
 }
        private void OnPlayerChat(SteamPlayer player, EChatMode mode, ref Color color, ref bool rich, string text, ref bool visible)
        {
            if (text.StartsWith("/") || text.StartsWith("@"))
            {
                if (UnturnedPlayer.FromSteamPlayer(player).HasPermission("discordhook.nocommandlog"))
                {
                    return;
                }
                foreach (ServerSetting bot in Configuration.Instance.Bots)
                {
                    if (bot.SendCommands)
                    {
                        Sender.SendSingle(Messages.Generate_Command(text, player, bot), bot);
                    }
                }
                return;
            }
            string title;

            switch (mode)
            {
            case EChatMode.GLOBAL:
                title = Translations.Instance["player_chat_global"];
                break;

            case EChatMode.GROUP:
                title = Translations.Instance["player_chat_group"];
                break;

            case EChatMode.LOCAL:
                title = Translations.Instance["player_chat_local"];
                break;

            default:
                title = Translations.Instance["player_chat"];
                break;
            }

            foreach (ServerSetting bot in Configuration.Instance.Bots)
            {
                if ((mode == EChatMode.GLOBAL && bot.SendGlobalMessages) || (mode == EChatMode.GROUP && bot.SendGroupMessages) || (mode == EChatMode.LOCAL && bot.SendLocalMessages))
                {
                    Sender.SendSingle(Messages.Generate_Chat(text, title, player, bot), bot);
                }
            }
        }
 public static bool PlayerChat(SteamPlayer steamPlayer, ref byte modeByte, ref EChatMode mode, ref Color color, ref string text)
 {
     if (text.StartsWith("@") && steamPlayer.isAdmin)
     {
         // Send the admin command through.
         return false;
     }
     if (text.StartsWith("/"))
     {
         SysConsole.Output(OutputType.CLIENTINFO, "Player [" + steamPlayer.player.name + "] executing player command: " + text);
         string cmd = text.Substring(1);
         int splitPos = cmd.IndexOf(' ');
         string args = "";
         if (splitPos > 0)
         {
             args = cmd.Substring(splitPos + 1);
             cmd = cmd.Substring(0, splitPos);
         }
         for (int i = 0; i < Instance.PlayerCommands.Count; i++)
         {
             if (Instance.PlayerCommands[i].check(steamPlayer.playerID.steamID, cmd, args))
             {
                 return true;
             }
         }
         // TODO: if (CVars.g_showinvalidplayercommand.ValueB)
         ChatManager.manager.channel.send("tellChat", steamPlayer.playerID.steamID, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, steamPlayer.playerID.steamID, (byte)0, Color.red, "Unknown command!");
         // Processed a local command.
         return true;
     }
     color = Color.white;
     if (steamPlayer.isAdmin)
     {
         color = Palette.ADMIN;
     }
     else if (steamPlayer.isPro)
     {
         color = Palette.PRO;
     }
     PlayerChatEventArgs evt = new PlayerChatEventArgs();
     evt.Player = new PlayerTag(steamPlayer);
     evt.ChatMode = new TextTag(mode.ToString());
     evt.Text = new TextTag(text);
     evt.Color = new ColorTag(color);
     UnturnedFreneticEvents.OnPlayerChat.Fire(evt);
     mode = (EChatMode)Enum.Parse(typeof(EChatMode), evt.ChatMode.ToString().ToUpper());
     modeByte = (byte)mode;
     text = evt.Text.ToString();
     color = evt.Color.Internal;
     return evt.Cancelled;
 }
        internal static Color firePlayerChatted(UnturnedPlayer player, EChatMode chatMode, Color color, string msg, ref bool cancel)
        {
            if (OnPlayerChatted != null)
            {
                foreach (var handler in OnPlayerChatted.GetInvocationList().Cast<PlayerChatted>())
                {
                    try
                    {
                        handler(player, ref color, msg, chatMode, ref cancel);
                    }
                    catch (Exception ex)
                    {
                        Core.Logging.Logger.LogException(ex);
                    }
                }
            }

            return color;
        }