穿越火线工具合集。项目是 Windows 桌面端 C++23 自动化工具集合,UI 基于 Dear ImGui + Win32 + DirectX 11,输入模拟依赖虚拟 HID 驱动,部分工具使用 Tesseract OCR。
本项目仅供学习交流使用。使用者应自行遵守适用的法律法规、游戏规则和服务条款,并承担因使用本项目产生的一切责任。
- 交易所扫货助手:识别价格并按预设坐标执行搜索、购买、确认流程。
- 探险模式自动插卡助手:按坐标召唤 BOSS、射击、等待冷却,可显示游戏内悬浮窗。
- 超级鼠标连点器:基于虚拟输入驱动的高速连点器,支持热键切换。
- 步骤记录器:用脚本描述键鼠动作并按序回放。
- 从 GitHub Actions 下载构建产物。
- 解压后进入
hid_driver目录安装虚拟键鼠驱动。 - 以管理员权限运行对应工具。
- 这是 Windows-only 项目;默认面向 MSVC、CMake、vcpkg、
x64-windows-static。 - 主要可执行 target 名是
TradeHelper、AdventureAssistant、SuperMouseConnector、StepRecorder、VirtualInputTest、Experiment。 - 业务改动通常从对应目录的
MainWindow.*和MyWorker.*入手。 - UI 主循环和 DX11 初始化在每个应用的
Main.cpp,全局渲染状态和单例在Global.*。 - 坐标选择逻辑在
MouseHook.*+OverviewWindow.*,自动化动作在VirtualInput.hpp。 - OCR 逻辑集中在
custom/utils/Utils.*的RecognizeNumber、ScreenCapture、GetScreenTexture。 - 运行可执行文件前需要输出目录下存在
hid_driver/;OCR 工具还需要tesseract_traineddata/。 - 不要把
thirdparty/imgui当业务代码改,除非明确是在升级 ImGui。
.
├─ CMakeLists.txt # 顶层构建、全局选项、子目录注册
├─ functions.cmake # 复制资源、管理员权限 manifest 等 CMake helper
├─ includes/ # 跨应用公共头/实现
│ ├─ Worker.hpp # 可中断后台线程基类
│ ├─ VirtualInput.hpp # 虚拟 HID 驱动 DLL 封装
│ ├─ Hotkey.hpp/.cpp # Win32 热键注册/派发
│ ├─ LowLevelMouseHook.hpp # 低级鼠标钩子,用于侧键热键
│ ├─ Logger.hpp # ImGui 日志列表用的内存 logger
│ └─ Debug.* # _DEBUG 下输出/弹窗调试
├─ custom/
│ └─ utils/ # OCR、截图、屏幕纹理、随机数、暗色模式
├─ src/
│ ├─ trade_helper/ # 交易所扫货助手
│ ├─ adventure_assistant/ # 探险模式助手
│ ├─ super_mouse_connector/ # 连点器
│ ├─ step_recorder/ # 脚本化键鼠回放
│ └─ virtual_input_test/ # 虚拟输入驱动手工测试
├─ misc/
│ ├─ fonts/ # 输出时复制到 fonts/
│ ├─ hid_driver/ # 输出时复制到 hid_driver/
│ └─ tesseract_traineddata/ # OCR 训练数据,输出时复制到 tesseract_traineddata/
├─ thirdparty/imgui/ # vendored Dear ImGui
└─ .github/workflows/ # Windows x64 static CI 构建
推荐环境:
- PowerShell 7.5.2+
- Visual Studio 2022 / MSVC,支持 C++23
- CMake 4.0+
- vcpkg,CI 当前使用
2025.06.13 - Windows x64
安装依赖:
vcpkg install leptonica:x64-windows-static
vcpkg install tesseract:x64-windows-static
vcpkg install directxtk:x64-windows-static配置:
$env:VCPKG_ROOT = "C:\path\to\vcpkg"
cmake `
-B build `
-DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake `
-DVCPKG_TARGET_TRIPLET=x64-windows-static `
-DVCPKG_MANIFEST_MODE=OFF `
-DCMAKE_BUILD_TYPE=Release `
-G "Visual Studio 17 2022" `
-A x64构建:
cmake --build build --target ALL_BUILD --config Release构建单个目标:
cmake --build build --target TradeHelper --config Release
cmake --build build --target AdventureAssistant --config Release
cmake --build build --target SuperMouseConnector --config Release
cmake --build build --target StepRecorder --config Release
cmake --build build --target VirtualInputTest --config ReleaseVisual Studio 的 CMakeSettings.json 也提供了 Ninja 的 x64-Debug 和 x64-Release 配置,但里面的 vcpkg 路径是本机路径,换机器时通常需要改成自己的路径或直接使用上面的命令行配置。
- 顶层
CMakeLists.txt默认设置VCPKG_TARGET_TRIPLET=x64-windows-static,关闭共享库,启用/utf-8、WIN32_LEAN_AND_MEAN、NOMINMAX。 functions.cmake提供:RUN_AS_ADMIN(target):给可执行文件加requireAdministratormanifest。COPY_FONTS(target):复制misc/fonts到输出目录。COPY_HID_DRIVER(target):复制misc/hid_driver到输出目录。COPY_OCR_TRAINED_DATA(target):复制misc/tesseract_traineddata到输出目录。
- Release 下各主应用使用
WIN32子系统并通过/ENTRY:mainCRTStartup隐藏控制台;Debug 下保留控制台,便于Debug::Print。
应用启动时会静态初始化 Global::virtual_input = VirtualInput::New()。这意味着运行主程序会立刻检查虚拟 HID 驱动:
- 当前工作目录下必须有
hid_driver/ddhid60400.dll。 - 系统服务
ddhid60400必须已安装并运行。 - 主应用通过 manifest 要求管理员权限。
OCR 相关工具还需要:
- 输出目录下存在
tesseract_traineddata/numbers.traineddata。 Global::tess.Init("./tesseract_traineddata", "numbers", tesseract::OEM_LSTM_ONLY)成功。
如果只是改代码或编译,不需要安装驱动;如果要运行 TradeHelper、AdventureAssistant、SuperMouseConnector、StepRecorder 或 VirtualInputTest,需要先安装驱动。
每个主应用基本遵循同一模式:
Main.cpp注册 Win32 窗口类,创建隐藏宿主窗口,初始化 DX11 和 ImGui。Global.*保存 DX11 对象、窗口句柄、字体、业务单例和可选 OCR/热键状态。MainWindow.*绘制主要 UI,收集用户参数,触发后台 worker。MyWorker.*继承Worker,在后台线程里执行自动化流程。Worker::SleepFor(ms)用 Win32 event 实现可中断 sleep;后台循环不要直接长时间Sleep,否则停止按钮会不灵敏。VirtualInput封装ddhid60400.dll的鼠标、键盘、滚轮、相对移动、绝对移动和字符输入函数。Logger保存最近 300 条消息,供 ImGui 列表显示。
目录:src/trade_helper/
MainWindow.*:设置搜索按钮、OCR 区域、购买按钮、复选框、最终购买按钮、失败提示按钮、价格上限和购买数量。OverviewWindow.*:全屏截图预览,辅助用户点击选点;设置 OCR 区域时会绘制矩形预览框。MouseHook.*:安装低级鼠标钩子,捕获下一次左键释放坐标。MyWorker.*:倒计时后激活穿越火线窗口,循环搜索、OCR 识别价格、比较最高价、购买、确认、处理失败弹窗。Global.*:初始化VirtualInput、MyWorker、Logger、tesseract::TessBaseAPI和 DX11 渲染对象。
目录:src/adventure_assistant/
MainWindow.*:设置 BOSS 卡位置、召唤按钮位置、延迟参数、爆裂技能、蹭卡模式、极速模式和游戏内悬浮窗。OverviewWindow.*+MouseHook.*:复用选点思路。MyWorker.*:倒计时后激活游戏窗口,按参数执行召唤、换弹、射击、释放技能、等待击杀和冷却。Global.*:与TradeHelper类似,也包含 OCR 对象,虽然当前核心流程主要是点击和等待。
目录:src/super_mouse_connector/
MainWindow.*:设置点击按键、按下抬起时间、点击间隔、抖动/随机化和热键。MyWorker.*:循环发送按下/抬起事件,间隔可抖动或随机化。Global.*:初始化VirtualInput、Hotkey、MyWorker、Logger。LowLevelMouseHook.hpp:在选择鼠标侧键作为热键时使用。
目录:src/step_recorder/
MainWindow.hpp:定义OPCode、Command、Coord、OPCode2String和脚本文件读写接口。MainWindow.cpp:提供脚本新建、打开、保存、另存为、添加/删除指令和热键设置 UI。MyWorker.cpp:遍历MainWindow::GetCommandList(),把每条OPCode映射到VirtualInput动作。- 脚本格式:每行
opcode整数,参数;坐标参数写作x|y;延时和滚轮参数是整数;无参数指令写NULL;空行和#开头的行会被忽略。
- 改某个工具的界面:先改对应
src/<tool>/MainWindow.hpp/.cpp。 - 改某个工具的自动化流程:改对应
src/<tool>/MyWorker.hpp/.cpp。 - 改屏幕选点/全屏预览:看
trade_helper或adventure_assistant的MouseHook.*、OverviewWindow.*。 - 改 OCR:看
custom/utils/Utils.*和对应应用的 Tesseract 初始化。 - 改虚拟输入:看
includes/VirtualInput.hpp,注意PressCharacterKey注释要求不要传小写字符。 - 改热键:看
includes/Hotkey.*、includes/LowLevelMouseHook.hpp,以及连点器/步骤记录器里的热键弹窗。 - 新增工具:在
src/new_tool/复制一个接近的应用骨架,改project()、Global::ApplicationName、MainWindow、MyWorker,再在顶层CMakeLists.txt加add_subdirectory(src/new_tool)。
- 坐标都是屏幕坐标,流程依赖当前分辨率、DPI、游戏窗口状态和前台窗口。
- 主应用创建窗口时启用 DPI awareness,并使用
Global::MainScale缩放 ImGui 尺寸。 io.IniFilename = nullptr,ImGui 不持久化布局。Global.*里有静态单例初始化,新增全局对象时要考虑初始化顺序,尤其不要在hwnd创建前依赖有效窗口句柄。- 后台线程需要能被
Stop()快速打断;长等待优先用WORKER_SLEEP或Worker::SleepFor。 Logger不是严格线程安全结构,现有代码从 worker 写、UI 读;大改并发模型时需要补同步。Debug::Print和Debug::MessageBox只在_DEBUG下有效。GetScreenTexture返回的ID3D11ShaderResourceView*需要调用方在替换或隐藏窗口时Release()。- 修改脚本
OPCode时,要同步更新OPCode2String、String2OPCode、MyWorker的 switch、保存/加载参数逻辑和 UI 参数编辑逻辑。 - 修改 CMake target 名会影响 CI artifact 路径和 README 构建命令。
至少执行:
cmake --build build --target <TargetName> --config Debug
cmake --build build --target <TargetName> --config Release涉及 OCR 时检查:
- 输出目录存在
tesseract_traineddata/numbers.traineddata。 - OCR 预览区域能显示截图纹理。
RecognizeNumber返回失败时业务流程能安全继续。
涉及输入模拟时检查:
- 输出目录存在
hid_driver/。 - 驱动已安装且
VirtualInput::IsDriverInstalled()为真。 - 程序以管理员权限运行。
- 停止按钮或热键能在等待过程中打断 worker。
涉及 CI/发布时检查:
.github/workflows/build-x64-windows-static.yml仍能生成四个主 artifact。- Release 输出目录包含
fonts/、hid_driver/,OCR 工具还包含tesseract_traineddata/。

