我写了一个绕过特定时间的游戏速度快车。游戏让你等待5分钟。当它首先查看系统时间以及计时器(5分钟)完成时,它再次比较系统时间并检查延迟是否是5分钟。将编程和准确的时间添加到系统时间
伪游戏:
var t = GetSystemTime();
WaitMinutes(5);
if (GetSystemTime() - t != 5000)
{
Error;
}
我明白了手动旁路这样的:
等到比赛等待1分钟,以便有剩下4分钟的等待时间。确切地说,系统时钟改为+ 4分钟。
然后用CE或我的工具加快游戏的游戏速度。
但是,我想以编程方式做到这一点,它似乎不够准确,我怎么做。
GetLocalTime(systimecurr);
wmin := systimecurr.wMinute + iWaitingTime;
whour := systimecurr.wHour;
wday := systimecurr.wDay;
wsecs := systimecurr.wSecond + iWaitingTimeSeconds;
if wsecs >= 60 then
begin
wsecs := wsecs mod 60;
wmin := wmin + 1;
end;
if wmin >= 60 then
begin
wmin := wmin mod 60;
whour := whour + 1;
if whour >= 24 then
begin
wday := wday + 1;
end;
end;
SetDateTime(systimecurr.wYear, systimecurr.wMonth, wday, wHour,
wmin, wsecs, systimecurr.wMilliseconds);
我知道这不能准确,但我实际上不知道如何完美地做到这一点。
再次:我需要添加时间(例如5分钟)到系统时钟精确到它检索到的偏移量!
感谢您的帮助!
我不知道你在说哪个游戏在这里。实际上使用系统时钟来实现事件的游戏并不多。我想这可能就是那些“永久游戏”之一,因为他们有时倾向于称他们为游戏能够快速模拟自上次游戏运行以来所经过的时间的事件。无论如何,我个人会因为您迅速改变系统时间而感到不便。为什么?这样做可以导致Windows出现一些奇怪的行为。例如,你可以防止窗口真正知道最后访问哪个文件。 – SilverWarior
此外,一些反病毒软件程序可能会将您的程序标记为潜在危险,并因此将其隔离,因为已知某些病毒会以编程方式更改系统时钟,以尝试并消除其传播痕迹。 – SilverWarior
因此,为了避免可能出现的问题,您可能至少要考虑在虚拟环境中运行您的游戏,以防止您的作弊方式影响您的主机系统。 – SilverWarior