正确使用控制台输入
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 之间的整数,那么一切都很好
我是 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 之间的整数,那么一切都很好