コード例 #1
0
        public static void InitHooks()
        {
            On.RoR2.Console.SubmitCmd += (orig, self, sender, cmd, submit) => {
                _logger.LogInfo("Processing Command... " + cmd);

                //Commands may be invalid/valid simply a wrapper class to provide helper props
                var cmdObj = new R2APIConCommand(cmd, sender);

                //So we try handle.
                if (TryHandleR2APICmd(cmdObj) && cmdObj.Name.ToLower() != "help")
                {
                    return;
                }


                orig.Invoke(self, sender, cmd, false);

                //extend on help
                if (cmdObj.Name.ToLower() == "help")
                {
                    var headerMsg = "R2API Console Help:\nRegistered Commands:\n";
                    var body      = _gatherCmdHelp();

                    LogUtils.Log(headerMsg);
                    LogUtils.Log(body);
                }
            };
        }
コード例 #2
0
        public static bool TryHandleR2APICmd(R2APIConCommand cmd)
        {
            uint howMuch;

            switch (cmd.Name.ToLower())
            {
            case "help":
                return(false);

            case "give-money":
                howMuch = cmd.Args != null?UInt32.Parse(cmd.Args[0]) : 100;

                PlayerAPI.GiveMoney(howMuch, cmd.Sender);
                return(true);

            case "give-xp":
                howMuch = cmd.Args != null?UInt32.Parse(cmd.Args[0]) : 100;

                PlayerAPI.GiveXp(howMuch, cmd.Sender);
                return(true);

            case "set-move-speed":
                var toSpeed = cmd.Args != null?float.Parse(cmd.Args[0]) : 1.0f;

                PlayerAPI.SetPlayerMoveSpeed(toSpeed, cmd.Sender);
                return(true);

            case "set-attack-speed":
                var attackSpeed = cmd.Args != null?float.Parse(cmd.Args[0]) : 1.0f;

                PlayerAPI.SetPlayerAttackSpeed(attackSpeed, cmd.Sender);
                return(true);

            case "give":
                var itemIndex = cmd.Args?[0];
                var howMany   = cmd.Args != null?Int32.Parse(cmd.Args[1]) : 1;

                PlayerAPI.GiveItem(itemIndex, howMany, cmd.Sender);
                return(true);

            case "print-stats":
                PlayerAPI.LogPlayerStats(cmd.Sender);
                return(true);

            default:
                if (_commands.ContainsKey(cmd.Name))
                {
                    return(_commands[cmd.Name].Invoke(cmd));
                }
                else
                {
                    var badMsg = $"No such command, {cmd.Name}.";
                    R2API.Logger.LogWarning("No such command " + cmd.Name);
                    LogUtils.Log(badMsg);
                    return(false);
                }
            }
        }