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); } }; }
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); } } }