예제 #1
0
        private object OnBetterChat(Dictionary <string, object> data)
        {
            String inMessage      = (String)data["Message"];
            String convertMessage = "";

            IPlayer player = (IPlayer)data["Player"];

            BasePlayer basePlayer = BasePlayer.FindByID(ulong.Parse(player.Id));

            convertMessage = "KR".Equals(InfoUtils.GetUserMode(basePlayer, User[basePlayer.UserIDString])) ? StringUtils.getConvertKor(inMessage) : inMessage;


            LogChatFile("ConvertKor_Chat", convertMessage, player.Id, player.Name);

            Chat.ChatChannel chatChannel = (Chat.ChatChannel)data["ChatChannel"];

            if (chatChannel == 0)
            {
                LogChatFile("ConvertKor_Chat", convertMessage, player.Id, player.Name);
            }
            else
            {
                TeamLogChatFile("ConvertKor_Team", convertMessage, player.Id, player.Name);
            }
            data["Message"] = this.getChangeForbiddenWord(convertMessage, basePlayer, chatChannel);

            return(data);
        }
예제 #2
0
        private void sendChatMessage(Chat.ChatChannel chatchannel, List <BasePlayer> basePlayers, String message, BasePlayer inputUser)
        {
            LogChatFile("", message, inputUser.UserIDString, inputUser.displayName);

            foreach (BasePlayer basePlayer in BasePlayer.activePlayerList)
            {
                basePlayer.SendConsoleCommand("chat.add2", new object[] {
                    chatchannel,
                    inputUser.UserIDString,
                    message,
                    inputUser.displayName,
                    "#" + InfoUtils.GetUserNameColor(),
                    1f
                });

                /*
                 * basePlayer.SendConsoleCommand("chat.add", new object[] {
                 *          chatchannel,
                 *          inputUser,
                 *          message,
                 *          inputUser.displayName,
                 *          "#" + InfoUtils.GetUserNameColor()
                 *          //"<color=#" + InfoUtils.GetUserNameColor() + ">" + playerName + ": </color>" +
                 *          //"<color=#" + InfoUtils.GetUserMessageColor() + ">" + convertMessage + "</color>"
                 *      });
                 */
            }
        }
예제 #3
0
 public RustPlayerChattingEvent(RustPlayer player,
                                string message,
                                Chat.ChatChannel channel) : base(player)
 {
     Message = message;
     Channel = channel;
 }
예제 #4
0
        private object IOnPlayerChat(ConsoleSystem.Arg arg, string message, Chat.ChatChannel channel)
        {
            // Ignore empty and "default" text
            if (string.IsNullOrEmpty(message) || message.Equals("text"))
            {
                return(true);
            }

            // Update arg with escaped message
            arg.Args[0] = message;

            // Get player objects
            BasePlayer player  = arg.Connection.player as BasePlayer;
            IPlayer    iplayer = player?.IPlayer;

            if (iplayer == null)
            {
                return(null);
            }

            // Call game and covalence hooks
            object chatSpecific  = Interface.CallHook("OnPlayerChat", arg, channel);
            object chatCovalence = Interface.CallHook("OnUserChat", iplayer, message);

            return(chatSpecific ?? chatCovalence); // TODO: Fix 'RustCore' hook conflict when both return
        }
예제 #5
0
        void OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            if (LogChat() && channel.ToString() == "Global")
            {
                executeQuery("INSERT INTO server_log_chat (player_id, player_name, player_ip, chat_message, admin, time) VALUES (@0, @1, @2, @3, @4, @5)",
                             player.userID,
                             EncodeNonAsciiCharacters(player.displayName),
                             player.net.connection.ipaddress,
                             message,
                             player.IsAdmin,
                             getDateTime());
            }

            if (LogTeamChat() && channel.ToString() == "Team")
            {
                executeQuery("INSERT INTO server_log_chat_team (player_id, player_name, player_ip, chat_message, admin, time) VALUES (@0, @1, @2, @3, @4, @5)",
                             player.userID,
                             EncodeNonAsciiCharacters(player.displayName),
                             player.net.connection.ipaddress,
                             message,
                             player.IsAdmin,
                             getDateTime());
            }

            //if player ask after admin
            if (message.Contains("admin"))
            {
                if (LogAdminCall() == true)
                {
                    executeQuery("INSERT INTO admin_log (player_id, player_name, player_ip, text, time) VALUES (@0, @1, @2, @3, @4)",
                                 player.userID,
                                 EncodeNonAsciiCharacters(player.displayName),
                                 player.net.connection.ipaddress,
                                 message,
                                 getDateTime()
                                 );
                }
            }
            else    //check message after keywords
            {
                string   words = Config["_AdminLogWords"].ToString();
                string[] word  = words.Split(new char[] { ' ', ',', ';', '\t', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string a in word)
                {
                    //PrintWarning(word);
                    if (message.Contains(a) && LogAdminCall() == true)
                    {
                        //PrintWarning(a);
                        executeQuery("INSERT INTO admin_log (player_id, player_name, player_ip, text, time) VALUES (@0, @1, @2, @3, @4)",
                                     player.userID,
                                     EncodeNonAsciiCharacters(player.displayName),
                                     player.net.connection.ipaddress,
                                     message,
                                     getDateTime()
                                     );
                    }
                }
            }
        }
예제 #6
0
 private object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
 {
     if (!permission.UserHasPermission(player.UserIDString, BypassPerm) && !player.IsAdmin)
     {
         return(ChatMessageResult(player, message, true));
     }
     return(null);
 }
예제 #7
0
        object OnPlayerChat(ConsoleSystem.Arg arg, Chat.ChatChannel chatchannel)
        {
            BasePlayer inputChatBasePlayer = arg.Connection.player as BasePlayer;
            String     playerName          = arg.Connection.username;
            String     message             = arg.GetString(0);
            String     convertMessage      = "KR".Equals(InfoUtils.GetUserMode(inputChatBasePlayer, User[inputChatBasePlayer.UserIDString])) ? StringUtils.getConvertKor(message) : message;

            // 콘솔로그
            Puts(playerName + ": " + convertMessage);

            // 욕설 변환
            convertMessage = this.getChangeForbiddenWord(convertMessage, inputChatBasePlayer, chatchannel);

            if (!isUsePlugin("BetterChat"))
            {
                if (chatchannel == Chat.ChatChannel.Team)
                {
                    List <Connection> sendUserList      = new List <Connection>();
                    RelationshipManager.PlayerTeam team = inputChatBasePlayer.Team;
                    if (null == team || team.members.Count < 1)
                    {
                        return(true);
                    }
                    foreach (ulong teamUserId in team.members)
                    {
                        Connection inUser = BasePlayer.FindByID(teamUserId).Connection;
                        if (null != inUser)
                        {
                            sendUserList.Add(inUser);
                        }
                    }
                    // 메시지 전송
                    if (sendUserList.Count > 0)
                    {
                        ConsoleNetwork.SendClientCommand(sendUserList, "chat.add2", new object[] { chatchannel, inputChatBasePlayer.UserIDString, convertMessage, "[TEAM] " + inputChatBasePlayer.displayName, "#" + InfoUtils.GetUserNameColor() });
                    }
                }
                else
                {
                    List <Connection> sendUserList = new List <Connection>();
                    foreach (BasePlayer basePlayer in BasePlayer.activePlayerList)
                    {
                        sendUserList.Add(basePlayer.Connection);
                    }
                    // 메시지 전송
                    if (sendUserList.Count > 0)
                    {
                        ConsoleNetwork.SendClientCommand(sendUserList, "chat.add2", new object[] { chatchannel, inputChatBasePlayer.UserIDString, convertMessage, inputChatBasePlayer.displayName, "#" + InfoUtils.GetUserNameColor() });
                    }
                }

                return(false);
            }

            return(null);
        }
예제 #8
0
        private object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            PrintDebug("Called OnPlayerChat");
            if (player == null || string.IsNullOrEmpty(message) || channel != Chat.ChatChannel.Global)
            {
                return(null);
            }

            return(HandleChatMessage(player, message));
        }
예제 #9
0
        object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            //Get the message of the player if using betterchat
            string a = GetMessage(player, message);

            if (!permission.UserHasPermission(player.UserIDString, perm))
            {
                //if (plugins.Exists("BetterChat")) return null;
                a.Replace($"{message}", " ");
                PrintToChat(player, lang.GetMessage("NoChat", this));
                return(null);
            }
            return(null);
        }
예제 #10
0
        private object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            if (channel == Chat.ChatChannel.Team)
            {
                return(null);
            }

            var identify = GetIdentify(player);

            if (identify == null)
            {
                return(null);
            }

            Server.Broadcast(message, $"<color=#5af>{identify.Name}</color>", identify.UserID);
            return(true);
        }
예제 #11
0
        private object IOnPlayerChat(BasePlayer basePlayer, string message, Chat.ChatChannel channel)
        {
            // Ignore empty and "default" text
            if (string.IsNullOrEmpty(message) || message.Equals("text"))
            {
                return(true);
            }

            // Get player objects
            IPlayer player = basePlayer?.IPlayer;

            if (player == null)
            {
                return(null);
            }

            // Call game and covalence hooks
            object chatSpecific  = Interface.CallHook("OnPlayerChat", basePlayer, message, channel);
            object chatCovalence = Interface.CallHook("OnUserChat", player, message);

            return(chatSpecific ?? chatCovalence); // TODO: Fix hook conflict when multiple return
        }
예제 #12
0
        private object IOnPlayerChat(BasePlayer basePlayer, string message, Chat.ChatChannel channel)
        {
            // Ignore empty and "default" text
            if (string.IsNullOrEmpty(message) || message.Equals("text"))
            {
                return(true);
            }

            // Get player objects
            IPlayer player = basePlayer?.IPlayer;

            if (player == null)
            {
                return(null);
            }

            // Call game and covalence hooks
            object chatSpecific  = Interface.CallHook("OnPlayerChat", basePlayer, message, channel);
            object chatCovalence = Interface.CallHook("OnUserChat", player, message);

            //object chatDeprecated = Interface.Oxide.CallDeprecatedHook("OnPlayerChat", "OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)",
            //    new System.DateTime(2020, 1, 1), new ConsoleSystem.Arg(ConsoleSystem.Option.Server.FromConnection(basePlayer.Connection), ConsoleSystem.BuildCommand("chat.say", message)), channel);
            return(chatSpecific ?? chatCovalence /*?? chatDeprecated*/); // TODO: Fix hook conflict when multiple return
        }
예제 #13
0
 private object OnPlayerChat(BasePlayer bplayer, string message, Chat.ChatChannel chatchannel)
 {
     IPlayer player = bplayer.IPlayer;
예제 #14
0
 private BetterChatMessage.CancelOptions SendBetterChatMessage(BetterChatMessage chatMessage, Chat.ChatChannel chatchannel)
예제 #15
0
        private bool OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            if (Chat.serverlog)
            {
                ServerConsole.PrintColoured(ConsoleColor.DarkYellow,
                                            string.Concat("[", channel, "] ", player.displayName, ": "), ConsoleColor.DarkGreen, message);

                var str = (player != null ? player.ToString() : null) ??
                          $"{player.displayName}[{player.userID}]";

                if (channel == Chat.ChatChannel.Team)
                {
                    DebugEx.Log("[TEAM CHAT] " + str + " : " + message);
                }
                else
                {
                    DebugEx.Log("[CHAT] " + str + " : " + message);
                }
            }

            var color       = "#5af";
            var displayName = player.displayName.EscapeRichText();
            var chatEntry   = new Chat.ChatEntry
            {
                Channel  = channel,
                Message  = message,
                UserId   = player.UserIDString,
                Username = displayName,
                Color    = color,
                Time     = Epoch.Current
            };

            RCon.Broadcast(RCon.LogType.Chat, chatEntry);
            if (channel != Chat.ChatChannel.Global)
            {
                if (channel == Chat.ChatChannel.Team)
                {
                    var playerTeam = RelationshipManager.Instance.FindPlayersTeam(player.userID);
                    if (playerTeam == null)
                    {
                        return(false);
                    }

                    var onlineMemberConnections = playerTeam.GetOnlineMemberConnections();
                    if (onlineMemberConnections != null)
                    {
                        ConsoleNetwork.SendClientCommand(onlineMemberConnections, "chat.add2", 1, player.userID,
                                                         message, displayName, color, 1f);
                    }

                    playerTeam.BroadcastTeamChat(player.userID, displayName, message, color);
                    return(true);
                }
            }
            else if (ConVar.Server.globalchat)
            {
                ConsoleNetwork.BroadcastToAllClients("chat.add2", 0, player.userID, message, displayName, color, 1f);
                return(true);
            }

            if (player == null)
            {
                return(true);
            }

            var radius = 2500f;

            foreach (var basePlayer in BasePlayer.activePlayerList)
            {
                var sqrMagnitude = (basePlayer.transform.position - player.transform.position).sqrMagnitude;
                if (sqrMagnitude <= radius)
                {
                    ConsoleNetwork.SendClientCommand(basePlayer.net.connection, "chat.add2", 0, player.userID,
                                                     message,
                                                     displayName, color, Mathf.Clamp01(radius - sqrMagnitude + 0.2f));
                }
            }

            return(true);
        }
예제 #16
0
        private String getChangeForbiddenWord(String text, BasePlayer inputChatBasePlayer, Chat.ChatChannel chatChannel)
        {
            bool forbiddenWordAt = false;
            // 특문 제거
            String delCharMessage = Regex.Replace(text, @"[^a-zA-Z0-9가-힣]", "", RegexOptions.Singleline);

            String[] diffTexts = forbiddenWordData.word;

            foreach (String diffText in diffTexts)
            {
                if (delCharMessage.Contains(diffText))
                {
                    char[] diffTextArray    = diffText.ToArray <char>();
                    char[] messageCharArray = text.ToArray <char>();

                    for (int i = 0; i < messageCharArray.Length; i++)
                    {
                        String cutText = Regex.Replace(text.Substring(i, text.Length - i), @"[^a-zA-Z0-9가-힣]", "", RegexOptions.Singleline);

                        if (cutText.Length < diffText.Length)
                        {
                            break;
                        }

                        if (cutText.Substring(0, diffText.Length).Equals(diffText) && messageCharArray[i].Equals(diffTextArray[0]))
                        {
                            String endAt     = "N";
                            int    nextIndex = 0;

                            while ("N".Equals(endAt))
                            {
                                if (messageCharArray[i].Equals(diffTextArray[nextIndex]))
                                {
                                    forbiddenWordAt     = true;
                                    messageCharArray[i] = char.Parse(_config.chatChangeChar);
                                    nextIndex++;
                                }

                                if (nextIndex == diffText.Length)
                                {
                                    endAt = "Y";
                                }
                                i++;
                            }
                        }
                    }
                    if (forbiddenWordAt && null != inputChatBasePlayer && inputChatBasePlayer.Connection.authLevel != 2)
                    {
                        if (Chat.ChatChannel.Global == chatChannel)
                        {
                            string userid = inputChatBasePlayer.UserIDString;

                            if (_config.WarnAutoShell == 1)
                            {
                                if (_config.AutoShell == 0)
                                {
                                }
                                else if (_config.AutoShell == 1)
                                {
                                    if (User[userid].WarnCount == _config.WarnCount)
                                    {
                                        server.Command($"bcm.mute {inputChatBasePlayer.userID} \"{string.Format(Lang("MuteReason", null, inputChatBasePlayer.displayName, _config.AutoShellTime))}\" {_config.AutoShellTime}");
                                        User[userid].WarnCount = 0;
                                    }
                                    User[userid].WarnCount += 1;
                                    DataSave();
                                }
                                else if (_config.AutoShell == 2)
                                {
                                    if (User[userid].WarnCount == _config.WarnCount)
                                    {
                                        server.Command($"kick {inputChatBasePlayer.userID} \"{string.Format(Lang("KickReason", null, inputChatBasePlayer.displayName))}\"", inputChatBasePlayer.displayName);
                                        User[userid].WarnCount = 0;
                                    }

                                    User[userid].WarnCount += 1;
                                    DataSave();
                                }
                                else if (_config.AutoShell == 3)
                                {
                                    if (User[userid].WarnCount == _config.WarnCount)
                                    {
                                        server.Command($"banid {inputChatBasePlayer.userID} {inputChatBasePlayer.displayName} \"{string.Format(Lang("BanReason", null, inputChatBasePlayer.displayName, _config.TimeBanSetting))}\" {_config.TimeBanSetting}");
                                        User[userid].WarnCount = 0;
                                    }
                                    User[userid].WarnCount += 1;
                                    DataSave();
                                }
                                else if (_config.AutoShell == 4)
                                {
                                    if (User[userid].WarnCount == _config.WarnCount)
                                    {
                                        server.Command($"banid {inputChatBasePlayer.userID} {inputChatBasePlayer.displayName} \"{string.Format(Lang("PBanReason", null, inputChatBasePlayer.displayName))}\"");
                                        User[userid].WarnCount = 0;
                                    }
                                    User[userid].WarnCount += 1;
                                    DataSave();
                                }
                            }
                            else if (_config.WarnAutoShell == 0)
                            {
                                if (_config.AutoShell == 0)
                                {
                                }
                                else if (_config.AutoShell == 1)
                                {
                                    server.Command($"bcm.mute {inputChatBasePlayer.userID} \"{string.Format(Lang("MuteReason", null, inputChatBasePlayer.displayName, _config.AutoShellTime))}\" {_config.AutoShellTime}");
                                }
                                else if (_config.AutoShell == 2)
                                {
                                    server.Command($"kick {inputChatBasePlayer.userID} \"{string.Format(Lang("KickReason", null, inputChatBasePlayer.displayName))}\"", inputChatBasePlayer.displayName);
                                }
                                else if (_config.AutoShell == 3)
                                {
                                    server.Command($"banid {inputChatBasePlayer.userID} {inputChatBasePlayer.displayName} \"{string.Format(Lang("BanReason", null, inputChatBasePlayer.displayName, _config.TimeBanSetting))}\" {_config.TimeBanSetting}");
                                }
                                else if (_config.AutoShell == 4)
                                {
                                    server.Command($"banid {inputChatBasePlayer.userID} {inputChatBasePlayer.displayName} \"{string.Format(Lang("PBanReason", null, inputChatBasePlayer.displayName))}\"");
                                }
                            }
                        }
                    }

                    text = new string(messageCharArray);

                    text = forbiddenWordAt ? "" + text : text;
                }
            }
            if (_config.WordChangeToggle == true)
            {
                // 문자열 변환
                foreach (String key in _config.WordChange.Keys)
                {
                    if (text.IndexOf(key) > -1)
                    {
                        //Puts("변환전 = " + text);
                        text = text.Replace(key, _config.WordChange[key]);
                        //Puts("변환후 = " + text);
                    }
                }
            }

            return(text);
        }
예제 #17
0
        private object IOnPlayerChat(ulong playerId, string playerName, string message, Chat.ChatChannel channel, BasePlayer basePlayer)
        {
            // Ignore empty and "default" text
            if (string.IsNullOrEmpty(message) || message.Equals("text"))
            {
                return(true);
            }

            // Check if using Rust+ app
            if (basePlayer == null || !basePlayer.IsConnected)
            {
                // Call offline chat hook
                return(Interface.CallHook("OnPlayerOfflineChat", playerId, playerName, message, channel));
            }

            // Get player objects
            IPlayer player = basePlayer?.IPlayer;

            if (player == null)
            {
                return(null);
            }

            // Call game and covalence hooks
            return(Interface.CallHook("OnPlayerChat", basePlayer, message, channel)
                   ?? Interface.CallHook("OnUserChat", player, message)); // TODO: Fix hook conflict when multiple return
        }
예제 #18
0
        private object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            var @event = new RustPlayerChattingEvent(new RustPlayer(player), message, channel);

            return(EmitCancellableReturnsObject(@event));
        }
예제 #19
0
        private bool OnPlayerChat(ConsoleSystem.Arg arg, Chat.ChatChannel channel)
        {
            var player = arg.Player();
            var text   = arg.GetString(0, "text").Replace("\n", "").Replace("\r", "").Trim().EscapeRichText();

            if (Chat.serverlog)
            {
                ServerConsole.PrintColoured(ConsoleColor.DarkYellow, string.Concat("[", channel.ToString(), "] ", player.displayName, ": "), ConsoleColor.DarkGreen, text);
                DebugEx.Log(channel == Chat.ChatChannel.Team
                    ? $"[TEAM CHAT] {player} : {text}"
                    : $"[CHAT] {player} : {text}");
            }

            var color       = "#5af";
            var displayName = player.displayName.EscapeRichText();

            player.NextChatTime = Time.realtimeSinceStartup + 1.5f;

            var chatEntry = new Chat.ChatEntry
            {
                Channel  = channel,
                Message  = text,
                UserId   = player.UserIDString,
                Username = player.displayName,
                Color    = color,
                Time     = Epoch.Current
            };

            RCon.Broadcast(RCon.LogType.Chat, chatEntry);

            if (channel != Chat.ChatChannel.Global)
            {
                if (channel == Chat.ChatChannel.Team)
                {
                    var team = arg.Player().Team;
                    var list = team?.GetOnlineMemberConnections();
                    if (list == null)
                    {
                        return(false);
                    }

                    ConsoleNetwork.SendClientCommand(list, "chat.add2", new object[]
                    {
                        1,
                        player.userID,
                        text,
                        displayName,
                        color,
                        1f
                    });

                    return(false);
                }
            }
            else if (ConVar.Server.globalchat)
            {
                ConsoleNetwork.BroadcastToAllClients("chat.add2", 0, player.userID, text, displayName, color, 1f);
                return(false);
            }

            var radius = 2500f;

            foreach (var basePlayer2 in BasePlayer.activePlayerList)
            {
                var sqrMagnitude = (basePlayer2.transform.position - player.transform.position).sqrMagnitude;
                if (sqrMagnitude <= radius)
                {
                    ConsoleNetwork.SendClientCommand(basePlayer2.net.connection, "chat.add2", 0, player.userID, text, displayName, color, Mathf.Clamp01(radius - sqrMagnitude + 0.2f));
                }
            }

            return(false);
        }
예제 #20
0
        void OnPlayerChat(BasePlayer bplayer, string message, Chat.ChatChannel chatchannel)
        {
            if (chatchannel == Chat.ChatChannel.Team)
            {
                return;
            }
            IPlayer player = bplayer.IPlayer;
#else
        void OnUserChat(IPlayer player, string message)
        {
#endif
            if (UseBetterChat)
            {
                return;
            }
            SendToPoundBot(player, message, RelayChatChannel, RelayChatColor);
        }

        void OnBetterChat(Dictionary <string, object> data)
        {
            if (!UseBetterChat)
            {
                return;
            }

#if RUST
            if ((Chat.ChatChannel)data["ChatChannel"] == Chat.ChatChannel.Team)
            {
                return;
            }
#endif

            string color = RelayChatColor;

            if (RelayChatColor != null)
            {
                Dictionary <string, object> m = (Dictionary <string, object>)data["MessageSettings"];

                color = (string)m["Color"];
            }

            IPlayer player = (IPlayer)data["Player"];

            SendToPoundBot(player, (string)data["Message"], RelayChatChannel, color);
        }

        void SendToPoundBot(IPlayer player, string message, string channel, string embed_color = null)
        {
            string playerName = player.Name;
            var    clanTag    = (string)Clans?.Call("GetClanOf", player);

            if (!string.IsNullOrEmpty(clanTag))
            {
                playerName = $"[{clanTag}]{playerName}";
            }

            SendToPoundBot(playerName, message, channel, embed_color);
        }

        void SendToPoundBot(string player, string message, string channel, string embed_color = null)
        {
            if (channel.Length == 0)
            {
                Puts("Channel not defined. Please set your channel names in config/PoundBotChatRelay.json.");
                return;
            }

            KeyValuePair <string, bool>[] message_parts = new KeyValuePair <string, bool> [4];
            message_parts[0] = new KeyValuePair <string, bool>($"{lang.GetMessage("chat.Prefix", this)}{DateTime.Now.ToString(lang.GetMessage("chat.DateFormat", this))} **", false);
            message_parts[1] = new KeyValuePair <string, bool>(player, true);
            message_parts[2] = new KeyValuePair <string, bool>("**: ", false);
            message_parts[3] = new KeyValuePair <string, bool>(message, true);
            PoundBot.Call(
                "API_SendChannelMessage",
                new object[] { this, channel, message_parts, embed_color, null }
                );
        }
예제 #21
0
 private void OnPlayerChat(BasePlayer rustPlayer, string message, Chat.ChatChannel chatChannel)
 {
     IPlayer player  = rustPlayer.IPlayer;
     int     channel = (int)chatChannel;
예제 #22
0
        private object IOnPlayerChat(ulong playerId, string playerName, string message, Chat.ChatChannel channel, BasePlayer basePlayer)
        {
            // Ignore empty and "default" text
            if (string.IsNullOrEmpty(message) || message.Equals("text"))
            {
                return(true);
            }

            // Check if using Rust+ app
            if (basePlayer == null || !basePlayer.IsConnected)
            {
                // Call offline chat hook
                return(Interface.CallHook("OnPlayerOfflineChat", playerId, playerName, message, channel));
            }

            // Call hooks for plugins
            object chatSpecific  = Interface.CallHook("OnPlayerChat", basePlayer, message, channel);
            object chatCovalence = Interface.CallHook("OnUserChat", basePlayer.IPlayer, message);

            return(chatSpecific is null ? chatCovalence : chatSpecific);
        }
예제 #23
0
 // On Player Chat
 // Called when the player sends chat to the server
 object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
 {
     CreateLogEntry("on_player_chat.log", new ResidentChatMessage(player, message, channel.ToString()));
     return(null);
 }