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); }
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>" * }); */ } }
public RustPlayerChattingEvent(RustPlayer player, string message, Chat.ChatChannel channel) : base(player) { Message = message; Channel = channel; }
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 }
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() ); } } } }
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); }
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); }
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)); }
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); }
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); }
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 }
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 }
private object OnPlayerChat(BasePlayer bplayer, string message, Chat.ChatChannel chatchannel) { IPlayer player = bplayer.IPlayer;
private BetterChatMessage.CancelOptions SendBetterChatMessage(BetterChatMessage chatMessage, Chat.ChatChannel chatchannel)
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); }
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); }
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 }
private object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel) { var @event = new RustPlayerChattingEvent(new RustPlayer(player), message, channel); return(EmitCancellableReturnsObject(@event)); }
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); }
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 } ); }
private void OnPlayerChat(BasePlayer rustPlayer, string message, Chat.ChatChannel chatChannel) { IPlayer player = rustPlayer.IPlayer; int channel = (int)chatChannel;
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); }
// 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); }