正确使用控制台输入

using console input correctly

我是 C# 的新手,想知道是否有人可以帮助我。 我正在尝试的是仅将控制台输入的整数写入游戏内存。 Atm 的问题是它试图写入“/fov”+int,但它不起作用。

这是我的代码

    string input = Console.ReadLine();
    int number = Convert.ToInt32(Console.ReadLine());

    if (input.ToLower().Equals("/fov ") && number >= 10 && number <= 150)
    {
            m.WriteMemory("game.exe+0x176DCF", "bytes", "0x90 0x90 0x90");
            m.WriteMemory("game.exe+0x176BC9", "bytes", "0x90 0x90 0x90");
            m.WriteMemory("game.exe+0x00DB80E4,0x40,0x18", "Int", "" +number);
    }

欢迎使用 Whosebug。

您尝试过使用Int32.Parse()方法吗?

替换行

int number = Convert.ToInt32(Console.ReadLine());

int number = Int32.Parse(Console.ReadLine())

希望有用!如果您有更多问题,请告诉我们:)

试试这个:

const string fovPattern = @"/fov\s+(\d{2,3})";
Regex fovRegex = new Regex(fovPattern);
var entered = Console.ReadLine();
if (fovRegex.IsMatch(entered))
{
    var groups = fovRegex.Match(entered).Groups;
    if (groups.Count < 2)
    {
        Console.WriteLine("This shouldn't happen");
    }
    if (int.TryParse(fovRegex.Match(entered).Groups[1].ToString(), out var numEntered) &&
        numEntered >= 10 && numEntered <= 150)
    {
        Console.WriteLine($"We are all set FOV value is {numEntered}");
    }
    else
    {
        Console.WriteLine("Something's wrong");
    }
}

开头的那个模式叫做正则表达式。它表示“我希望看到一个以 /fov 开头的字符串,后跟一个或多个空白字符,后跟两个或三个数字。” \d{2,3} 周围的括号 () 将数字部分建立为一个我可以专门处理的组。

然后我检查输入的字符串是否与该模式匹配。如果是,那么我去获取第二组(第一组 (group[0]) 匹配整个字符串,第二组 (group[1]) 匹配数字)。

如果至少有两组(我无法想象为什么没有,但是,以防万一),我将第二组解析为一个数字。如果它是 10 到 150 之间的整数,那么一切都很好