Example #1
0
 private static void LogNetworkCommands(On.RoR2.Console.orig_RunCmd orig, RoR2.Console self, NetworkUser sender, string concommandName, System.Collections.Generic.List <string> userArgs)
 {
     if (sender != null && sender.isLocalPlayer == false)
     {
         StringBuilder s = new StringBuilder();
         userArgs.ForEach((str) => s.AppendLine(str));
         Log.Message(string.Format(Lang.NETWORKING_OTHERPLAYER_4, sender.userName, sender.id.value, concommandName, s.ToString()));
     }
     orig(self, sender, concommandName, userArgs);
     ScrollConsoleDown();
 }
Example #2
0
        private void CheckChatForJoinRequest(On.RoR2.Console.orig_RunCmd orig, RoR2.Console self, RoR2.Console.CmdSender sender, string concommandName, List <string> userArgs)
        {
            orig(self, sender, concommandName, userArgs);

            if (concommandName.Equals("say", StringComparison.InvariantCultureIgnoreCase))
            {
                var userInput   = userArgs.FirstOrDefault().Split(' ');
                var chatCommand = userInput.FirstOrDefault();
                if (chatCommand.IsNullOrWhiteSpace())
                {
                    return;
                }

                if (chatCommand.Equals("join_as", StringComparison.InvariantCultureIgnoreCase) || chatCommand.Equals("join", StringComparison.InvariantCultureIgnoreCase))
                {
                    List <string> data       = userInput.ToList();
                    string        bodyString = userInput.ElementAtOrDefault(1) ?? "";
                    string        userString = userInput.LastOrDefault() ?? "";
                    string        newstring  = "";
                    bool          open       = false;
                    if (bodyString.Contains('"') && userString.Contains('"'))
                    {
                        bodyString = "";
                        for (int i = 1; i < data.Count; i++)
                        {
                            var str = data.ElementAt(i) ?? "";
                            if (str == userInput.ElementAtOrDefault(1))
                            {
                            }
                            foreach (var item in str)
                            {
                                if (item == '"')
                                {
                                    open = open == false ? true : false;
                                }
                                else
                                {
                                    newstring += item;
                                }
                            }
                            bodyString += open == true ? newstring + " " : newstring;
                            newstring   = "";
                        }
                        userString = "";
                    }
                    else
                    {
                        bodyString = userInput.ElementAtOrDefault(1) ?? "";
                        userString = userInput.ElementAtOrDefault(2) ?? "";
                    }
                    JoinAs(sender.networkUser, bodyString, userString);
                }
            }
        }
Example #3
0
        protected override void Hook()
        {
            // Higher priority to make sure this hook executed before the one from DebugToolkit if it exists
            // It'll make sure correct permissions are applied if needed.

            _hookConfig = new HookConfig {
                ManualApply = true, Priority = 2
            };

            _runCmdHook = new Hook(typeof(Console).GetMethod("RunCmd", BindingFlags.Instance | BindingFlags.NonPublic),
                                   typeof(ChatCommands).GetMethod(nameof(Console_RunCmd), BindingFlags.Instance | BindingFlags.NonPublic), this, _hookConfig);
            _origRunCmd = _runCmdHook.GenerateTrampoline <On.RoR2.Console.orig_RunCmd>();

            _runCmdHook.Apply();
        }
Example #4
0
        private void Console_RunCmd(On.RoR2.Console.orig_RunCmd _, Console self, Console.CmdSender sender, string concommandName, System.Collections.Generic.List <string> userArgs)
        {
            if (concommandName == "say" && userArgs != null && userArgs.Count >= 1 && userArgs[0].StartsWith("/"))
            {
                var oldArgs = userArgs[0].Split(' ');
                concommandName = oldArgs[0].Substring(1);
                if (oldArgs.Length > 1)
                {
                    userArgs[0] = string.Join(" ", oldArgs, 1, oldArgs.Length - 1);
                }
                else
                {
                    userArgs[0] = "";
                }
            }

            _origRunCmd(self, sender, concommandName, userArgs);
        }
Example #5
0
        private void CheckforJoinAsRequest(On.RoR2.Console.orig_RunCmd orig, RoR2.Console self, RoR2.Console.CmdSender sender, string concommandName, List <string> userArgs)
        {
            orig(self, sender, concommandName, userArgs);

            if (concommandName.Equals("say", StringComparison.OrdinalIgnoreCase))
            {
                var userMsg   = ArgsHelper.GetValue(userArgs, 0).ToLower();
                var isRequest = userMsg.StartsWith("join_as");
                if (isRequest)
                {
                    var    argsRequest = userMsg.Split(' ').ToList();
                    string bodyString  = ArgsHelper.GetValue(argsRequest, 1);
                    string userString  = ArgsHelper.GetValue(argsRequest, 2);

                    JoinAs(sender.networkUser, bodyString, userString);
                }
            }
        }
Example #6
0
        private void CheckChatForJoinRequest(On.RoR2.Console.orig_RunCmd orig, RoR2.Console self, RoR2.Console.CmdSender sender, string concommandName, List <string> userArgs)
        {
            orig(self, sender, concommandName, userArgs);

            if (concommandName.Equals("say", StringComparison.InvariantCultureIgnoreCase))
            {
                string[] userInput   = userArgs.FirstOrDefault().Split(new char[] { ' ' }, count: 3);
                string   chatCommand = userInput.FirstOrDefault();
                if (string.IsNullOrWhiteSpace(chatCommand))
                {
                    return;
                }

                if (chatCommand.Equals("join_as", StringComparison.InvariantCultureIgnoreCase) || chatCommand.Equals("join", StringComparison.InvariantCultureIgnoreCase))
                {
                    string bodyString = userInput.ElementAtOrDefault(1) ?? "";
                    string userString = userInput.ElementAtOrDefault(2) ?? "";

                    JoinAs(sender.networkUser, bodyString, userString);
                }
            }
        }
Example #7
0
        private static void Console_RunCmd(On.RoR2.Console.orig_RunCmd orig, RoR2.Console self, RoR2.Console.CmdSender sender, string concommandName, List <string> userArgs)
        {
            orig(self, sender, concommandName, userArgs);

            if (!NetworkServer.active || Run.instance == null)
            {
                return;
            }

            if (!concommandName.Equals("say", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            string chatMessage = userArgs.FirstOrDefault();

            if (string.IsNullOrWhiteSpace(chatMessage) || !chatMessage.StartsWith("/"))
            {
                return;
            }
            string[] splitMessage    = chatMessage.Split(new char[] { ' ' });
            string   chatCommandName = splitMessage.FirstOrDefault().Substring(1); // substring removes leading slash

            string[] commandArgs = splitMessage.Skip(1).ToArray();


            if (!_chatCommands.TryGetValue(chatCommandName.ToUpperInvariant(), out ChatCommand chatCommand))
            {
                SendChatMessage("Unable to find command, try /help");
            }

            string resultMessage = chatCommand.Handler(sender.networkUser, commandArgs);

            if (!string.IsNullOrWhiteSpace(resultMessage))
            {
                SendChatMessage(resultMessage);
            }
        }