您当前的位置:首页 > 游戏 > 游戏环境

game - 用cheatEngine来替代时间齿轮工具

时间:08-06来源:作者:点击数:

概述

在玩一些很老的单机游戏时,一般会找时间齿轮软件来使游戏中的时间变慢。

但是,现在的时间齿轮的类似软件在国内都是收费的,可以理解。但是,收费的软件(如果不是刚需)是不可能用的。

查资料,看到cheatEngine也有时间齿轮的功能,试了一下,好使。

现在写个测试程序,来演示cheatEngine的时间齿轮的功能是有效的。

同时演示,如何使用cheatEngine来使程序内部使用的时间函数变慢。

笔记

测试程序

vs2019 vc++ console

// @file testTimeCnt_GetTickCount.cpp  
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <windows.h>  // 添加 GetTickCount 支持

int main()
{
    unsigned long long cnt_sec = 0;
    unsigned long long cnt_loop = 0;

    // 等待用户按'c'键 
    std::cout << "Press 'c' to start counting..." << std::endl;
    while (true) {
        if (_kbhit()) {
            char ch = _getch();
            if (ch == 'c' || ch == 'C') break;
        }
        Sleep(10);  // Windows 休眠函数替换 
    }

    std::cout << "\rStarting counter...          " << std::endl;

    DWORD lastTick = GetTickCount();          // 记录起始时间
    DWORD nextTime = lastTick + 1000;         // 初始目标时间:1秒后 (1000ms)

    do {
        cnt_loop++;
        DWORD currentTick = GetTickCount();   // 替换 steady_clock::now()

        // 时间回绕检测(49.7天周期)
        if (currentTick < lastTick) {
            nextTime = currentTick + 1000;    // 重置目标时间
        }
        lastTick = currentTick;               // 更新记录值 

        if (currentTick >= nextTime) {
            cnt_sec++;
            std::cout << "\rCount: "
                << std::setw(10) << cnt_sec << "s"
                << std::setw(20) << cnt_loop << "loop"
                << std::flush;
            nextTime += 1000;  // 增加1秒(1000毫秒)
        }

        Sleep(0);  // 替换 std::this_thread::yield()
    } while (true);
}

测试效果

必须直接运行程序(不能在vs2019中运行(开始执行且不调试)),才能看出时间齿轮有效。

未使用cheatEngine的时间齿轮功能时
在这里插入图片描述

此时,没有cheatEngine的干预,秒数是实际的每一秒变一次。

正常运行10秒钟左右时,进入循环次数为666,313,481次。

使用cheatEngine的时间齿轮功能时
在这里插入图片描述

此时,有cheatEngine的干预(我在cheatEngine中设置的时间系数为0.02, 使时间变慢50倍),秒数是实际的大概50秒才变一次。

正常运行100秒后,程序认为才走了2秒钟,进入循环次数为516,052,621次。

循环的进入次数,我们就不看了,没大用(没参考意义).

cheatEngine的时间齿轮功能确实有效

从效果上看, 程序中的时间函数(e.g. GetTickCount()), 确实被hook住了。

可以将时间系数用滑杆减慢为0.25.

如果嫌弃0.25的时间系数不够慢,可以自己在编辑框内填写更小的时间系数,填写完回车,然后再应用即可。

cheatEngine时间齿轮的用法操作

先运行目标程序,在目标程序已经运行的前提下,可以随时用cheatEngine来变化目标程序的时间快慢。

  • 在cheateEngine中选择目标程序。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 开启时间齿轮
  • 选择了目标进程后,默认是没开启时间齿轮的。勾选"Enable Speedhack"
    在这里插入图片描述
  • 设置时间齿轮中的时间系数
    在这里插入图片描述

    有2种操作方法:

  1. 如果对速度没特殊要求(粗略的变慢一点就行),可以用鼠标拖动滑杆条,这样可以设置的时间系数最小为0.25.
    不能设置为0,否则没效果。然后点击"Apply"
  2. 如果对滑杆条的最小值(0.25倍的时间系数)不满意(目标程序的时间慢的还不够多), 可以在Speed右边的编辑框内,写上非0的时间系数(e.g. 0.02), 然后回车,让自己填写的时间系数生效,然后点击Apply

如果是心有余而力足的同学

cheatEngine是开源的,如果现成的版本你不满意,可以自己编译修改。

对于如何编译CheatEngine,请查看此文章 CE - cheat-engine-7.2/7.5 编译

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐