/// <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}");
 }
Beispiel #2
0
        public void SendCommand(string cmd)
        {
            Contract.Requires(cmd != null);

            ConsoleNetworker.SendClientCommand(this.PlayerClient.netPlayer, cmd);
        }
Beispiel #3
0
 public static void broadcastCustomTo(uLink.NetworkPlayer sender, string name, string message)
 {
     ConsoleNetworker.SendClientCommand(sender, "chat.add \"" + name + "\" \"" + Vars.replaceQuotes(message) + "\"");
 }
Beispiel #4
0
        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) + "\"");
        }
Beispiel #5
0
 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);
         }
     }
 }
Beispiel #6
0
        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!");
                }
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
 public void RunClientCommand(NetUser netUser, string cmd) => ConsoleNetworker.SendClientCommand(netUser.networkPlayer, cmd);
Beispiel #10
0
 public void BroadcastConsole(string format, params object[] args) => ConsoleNetworker.Broadcast($"echo {string.Format(format, args)}");
Beispiel #11
0
 public void SendConsoleMessage(NetUser netUser, string format, params object[] args)
 {
     ConsoleNetworker.SendClientCommand(netUser.networkPlayer, $"echo {string.Format(format, args)}");
 }
Beispiel #12
0
 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()}");
 }
Beispiel #13
0
 public void BroadcastChat(string name, string message = null)
 {
     ConsoleNetworker.Broadcast(message != null ? $"chat.add {name.Quote()} {message.Quote()}" : $"chat.add \"Server\" {name.Quote()}");
 }