/// <summary> /// Broadcasts the specified chat message and prefix to all players /// </summary> /// <param name="message"></param> /// <param name="prefix"></param> /// <param name="args"></param> public void Broadcast(string message, string prefix, params object[] args) { message = args.Length > 0 ? string.Format(Formatter.ToRustLegacy(message), args) : Formatter.ToRustLegacy(message); ConsoleNetworker.Broadcast($"chat.add {(prefix != null ? prefix : "Server")} {message.Quote()}"); UnityEngine.Debug.Log($"[Broadcast] {message}"); }
public void SendCommand(string cmd) { Contract.Requires(cmd != null); ConsoleNetworker.SendClientCommand(this.PlayerClient.netPlayer, cmd); }
public static void broadcastCustomTo(uLink.NetworkPlayer sender, string name, string message) { ConsoleNetworker.SendClientCommand(sender, "chat.add \"" + name + "\" \"" + Vars.replaceQuotes(message) + "\""); }
public static void broadcastTo(uLink.NetworkPlayer player, string message, bool b) { PlayerClient playerClient = Array.Find(Vars.AllPlayerClients.ToArray(), (PlayerClient pc) => pc.netPlayer == player); ConsoleNetworker.SendClientCommand(player, "chat.add \"[PM] " + Vars.botName + "\" \"" + Vars.replaceQuotes(message) + "\""); }
private void OnGUI() { if (windows == true) { GUI.Window(0, new Rect(3f, 18f, 100f, 140f), new GUI.WindowFunction(DoMyWindow), " 帮助菜单"); } if ((DateTime.Now - cd).TotalSeconds > 1f) { if (Input.GetKeyUp(KeyCode.F6) && !ChatUI.singleton.textInput.IsVisible) { if (this.ShowAim) { this.ShowAim = false; PopupUI.singleton.CreateNotice(5f, "☣", "准心关闭"); } else { this.ShowAim = true; PopupUI.singleton.CreateNotice(5f, "☣", "准心打开"); } cd = DateTime.Now; } else if (Input.GetKeyUp(KeyCode.Q) && !ChatUI.singleton.textInput.IsVisible) { ConsoleNetworker.SendCommandToServer("chat.say /bb"); cd = DateTime.Now; } else if (Input.GetKeyUp(KeyCode.F3) && !ChatUI.singleton.textInput.IsVisible) { ConsoleWindow consoleWindow = new ConsoleWindow(); if (zoom) { zoom = false; Zoom.On = false; PopupUI.singleton.CreateNotice(5f, "剑", "超视距已关闭"); } else { zoom = true; Zoom.On = true; PopupUI.singleton.CreateNotice(5f, "剑", "超视距已开启"); } cd = DateTime.Now; } else if (Input.GetKeyUp(KeyCode.F4) && !ChatUI.singleton.textInput.IsVisible) { ConsoleNetworker.SendCommandToServer("chat.say /who"); cd = DateTime.Now; } else if (Input.GetKeyUp(KeyCode.F5) && !ChatUI.singleton.textInput.IsVisible) { if (windows == true) { windows = false; } else { windows = true; } cd = DateTime.Now; } else if (Input.GetKeyUp(KeyCode.Return) && !ChatUI.singleton.textInput.IsVisible) { KeyboardAPI.SendKey(KeyboardAPI.DirectXKeyStrokes.DIK_T, false, KeyboardAPI.InputType.Keyboard); } else if (this.ShowAim) { Rect rect = new Rect(Screen.width / 2 - (this.Taskelis.width >> 1) + 2, Screen.height / 2 - (this.Taskelis.height >> 1) - 1, this.Taskelis.width, this.Taskelis.height); GUI.DrawTexture(rect, this.Taskelis); } } }
public static void sendPM(string sender, string[] args) { PlayerClient senderClient = Array.Find(Vars.AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName == sender); if (args.Length > 2) { bool hadQuote = false; int lastIndex = 0; string playerName = ""; List <string> playerNameList = new List <string>(); if (args[1].Contains("\"")) { foreach (string s in args) { lastIndex++; if (s.StartsWith("\"")) { hadQuote = true; } if (hadQuote) { playerNameList.Add(s); } if (s.EndsWith("\"")) { hadQuote = false; break; } } playerName = string.Join(" ", playerNameList.ToArray()); } else { playerName = args[1]; lastIndex = 1; } playerName = playerName.Replace("\"", "").Trim(); if (playerName != senderClient.userName) { string message = ""; int curIndex = 0; List <string> messageList = new List <string>(); foreach (string s in args) { if (curIndex > lastIndex) { messageList.Add(s); } curIndex++; } message = string.Join(" ", messageList.ToArray()); if (playerName != null && message != null) { PlayerClient[] possibleTargets = Array.FindAll(Vars.AllPlayerClients.ToArray(), (PlayerClient pc) => pc.userName.Contains(playerName)); if (possibleTargets.Count() == 0) { Broadcast.broadcastTo(senderClient.netPlayer, "No player names equal or contain \"" + playerName + "\"."); } else if (possibleTargets.Count() > 1) { Broadcast.broadcastTo(senderClient.netPlayer, "Too many player names contain \"" + playerName + "\"."); } else { PlayerClient targetClient = possibleTargets[0]; message = Vars.replaceQuotes(message); Vars.conLog.Chat("<PM FROM> " + senderClient.userName + ": " + message); Vars.conLog.Chat("<PM TO> " + targetClient.userName + ": " + message); string namePrefixTo = (Vars.nextToName ? "[PM to] " : ""); string msgPrefixTo = (!Vars.nextToName ? "[PM to] " : ""); string namePrefixFrom = (Vars.nextToName ? "[PM from] " : ""); string msgPrefixFrom = (!Vars.nextToName ? "[PM from] " : ""); ConsoleNetworker.SendClientCommand(senderClient.netPlayer, "chat.add \"" + namePrefixTo + targetClient.userName + "\" \"" + msgPrefixTo + message + "\""); ConsoleNetworker.SendClientCommand(targetClient.netPlayer, "chat.add \"" + namePrefixFrom + senderClient.userName + "\" \"" + msgPrefixFrom + message + "\""); if (Vars.latestPM.ContainsKey(senderClient)) { Vars.latestPM[senderClient] = targetClient; } else { Vars.latestPM.Add(senderClient, targetClient); } if (Vars.latestPM.ContainsKey(targetClient)) { Vars.latestPM[targetClient] = senderClient; } else { Vars.latestPM.Add(targetClient, senderClient); } } } } else { broadcastTo(senderClient.netPlayer, "You can't PM yourself!"); } } }
public static void ChatReceived(ref ConsoleSystem.Arg arg) { if (!chat.enabled) { return; } if (string.IsNullOrEmpty(arg.ArgsStr)) { return; } var quotedName = Facepunch.Utility.String.QuoteSafe(arg.argUser.displayName); var quotedMessage = Facepunch.Utility.String.QuoteSafe(arg.GetString(0)); if (quotedMessage.Trim('"').StartsWith("/")) { Logger.LogDebug("[CHAT-CMD] " + quotedName + " executed " + quotedMessage); } if (OnChatRaw != null) { OnChatRaw(ref arg); } if (string.IsNullOrEmpty(arg.ArgsStr)) { return; } if (quotedMessage.Trim('"').StartsWith("/")) { string[] args = Facepunch.Utility.String.SplitQuotesStrings(quotedMessage.Trim('"')); var command = args[0].TrimStart('/'); var cargs = new string[args.Length - 1]; Array.Copy(args, 1, cargs, 0, cargs.Length); if (OnCommand != null) { //OnCommand(Fougerite.Player.FindByPlayerClient(arg.argUser.playerClient), command, cargs); OnCommand(Fougerite.Server.Cache[arg.argUser.playerClient.userID], command, cargs); } } else { Logger.ChatLog(quotedName, quotedMessage); var chatstr = new ChatString(quotedMessage); if (OnChat != null) { //OnChat(Fougerite.Player.FindByPlayerClient(arg.argUser.playerClient), ref chatstr); OnChat(Fougerite.Server.Cache[arg.argUser.playerClient.userID], ref chatstr); } string newchat = Facepunch.Utility.String.QuoteSafe(chatstr.NewText.Substring(1, chatstr.NewText.Length - 2)).Replace("\\\"", "" + '\u0022'); if (string.IsNullOrEmpty(newchat)) { return; } Fougerite.Data.GetData().chat_history.Add(newchat); Fougerite.Data.GetData().chat_history_username.Add(quotedName); ConsoleNetworker.Broadcast("chat.add " + quotedName + " " + newchat); } }
private object OnRunCommand(ConsoleSystem.Arg arg, bool wantreply) { if (arg == null) { return(null); } var cmdnamefull = $"{arg.Class}.{arg.Function}"; // Get the args var str = arg.GetString(0); // Get the covalence player var iplayer = arg.argUser != null?covalence.PlayerManager.FindPlayer(arg.argUser.userID.ToString()) : null; // Is it a console command? if (cmdnamefull != "chat.say") { if (covalence.CommandSystem.HandleConsoleMessage(iplayer, $"{cmdnamefull} {str}") || cmdlib.HandleConsoleCommand(arg, wantreply)) { return(true); } return(null); } if (str.Length == 0) { return(true); } // Is it a chat command? if (str[0] != '/') { var chatSpecific = Interface.Call("OnPlayerChat", arg.argUser, str); var chatCovalence = Interface.Call("OnUserChat", iplayer, str); return(chatSpecific ?? chatCovalence); } // Get the full command var command = str.Substring(1); // Parse it string cmd; string[] args; ParseChatCommand(command, out cmd, out args); if (cmd == null) { return(true); } // Is the command blocked? var commandSpecific = Interface.Call("OnPlayerCommand", arg); var commandCovalence = Interface.Call("OnUserCommand", iplayer, cmd, args); if (commandSpecific != null || commandCovalence != null) { return(true); } // Is this a Covalence command? if (covalence.CommandSystem.HandleChatMessage(iplayer, str)) { return(true); } // Is it a regular chat command? var player = arg.argUser; if (player == null) { Interface.Oxide.LogDebug("Player is actually a {0}!", arg.argUser); } else if (!cmdlib.HandleChatCommand(player, cmd, args)) { ConsoleNetworker.SendClientCommand(player.networkPlayer, $"chat.add \"Server\" \" Unknown command {cmd}\""); } // Handled arg.ReplyWith(string.Empty); return(true); }
public void RunClientCommand(NetUser netUser, string cmd) => ConsoleNetworker.SendClientCommand(netUser.networkPlayer, cmd);
public void BroadcastConsole(string format, params object[] args) => ConsoleNetworker.Broadcast($"echo {string.Format(format, args)}");
public void SendConsoleMessage(NetUser netUser, string format, params object[] args) { ConsoleNetworker.SendClientCommand(netUser.networkPlayer, $"echo {string.Format(format, args)}"); }
public void SendChatMessage(NetUser netUser, string name, string message = null) { ConsoleNetworker.SendClientCommand(netUser.networkPlayer, message != null ? $"chat.add {name.Quote()} {message.Quote()}" : $"chat.add \"Server\" {name.Quote()}"); }
public void BroadcastChat(string name, string message = null) { ConsoleNetworker.Broadcast(message != null ? $"chat.add {name.Quote()} {message.Quote()}" : $"chat.add \"Server\" {name.Quote()}"); }