DemonStar Trainer 是一个面向 DemonStar 单人模式的 Windows 修改器。当前项目由两层组成:
- Qt Widgets 界面层:负责窗口、复选框、状态栏、定时器和快捷键。
trainer_core/修改核心:负责检测demonstar.exe、读取/写入进程内存、维护修改项状态。核心不依赖 Qt,方便拷贝到其他 C++ 项目里使用。
- 自动检测本机运行中的
demonstar.exe - 飞机数量增加与锁定:
Ctrl+Shift+1增加,Ctrl+1切换锁定 - 核弹数量增加与锁定:
Ctrl+Shift+2增加,Ctrl+2切换锁定 - 生命值增加与锁定:
Ctrl+Shift+3增加,Ctrl+3切换锁定 - 游戏退出或进程重启后自动关闭已启用的修改项
main.cpp、mainwindow.*、mainwindow.ui:Qt 界面和热键集成trainer_core/:可复用修改核心offsets.md:当前记录的内存偏移
trainer_core/ 内部使用接口 + 实现的形式:
ITrainer:修改器控制接口ITrainerListener:事件回调接口DemonStarTrainer:DemonStar 修改逻辑实现IProcessMemory:进程内存访问抽象WinProcessMemory:Windows API 进程内存读写实现
更详细的复用说明见 trainer_core/README.md。
- Windows
- CMake 3.16 或更高版本
- Qt 5 或 Qt 6,需包含 Widgets 模块
- 支持 C++17 的编译器
修改核心目前只支持 Windows。trainer_core/ 本身不依赖 Qt,但会使用 Windows API,集成到其他项目时需要链接 kernel32。
在项目根目录执行:
cmake -S . -B build
cmake --build build --config Release如果 CMake 无法自动找到 Qt,请指定 Qt 安装目录,例如:
cmake -S . -B build -DCMAKE_PREFIX_PATH="C:\Qt\6.7.0\msvc2019_64"
cmake --build build --config ReleaseQt Creator 生成的构建目录也可以直接使用,例如:
cmake --build build\Desktop_Qt_6_11_0_MinGW_64_bit-Debug --config Debug如果命令行找不到 cmake,请把 Qt 自带的 CMake 和编译器目录加入 PATH。
- 启动 DemonStar,并确保进程名为
demonstar.exe。 - 启动
DemonStarTrainer。 - 在每个项目的输入框中设置每次增加的数值。
- 点击“增加”会把游戏当前值增加输入框中的数值;默认飞机
+5,核弹+5,生命值+160。 - 勾选“锁定”会读取当前游戏值并锁定到该值;锁定后如果点击“增加”,锁定值也会同步增加。
快捷键:
Ctrl+1、Ctrl+2、Ctrl+3:切换飞机、核弹、生命值锁定Ctrl+Shift+1、Ctrl+Shift+2、Ctrl+Shift+3:增加飞机、核弹、生命值
如果只想在其他项目里使用修改核心,可以复制整个 trainer_core/ 目录,并把以下 .cpp 文件加入目标项目:
trainer_core/DemonStarTrainer.cpptrainer_core/WinProcessMemory.cpp
最小调用方式:
#include "trainer_core/DemonStarTrainer.h"
class Listener : public demonstar::ITrainerListener {
public:
void onTrainerEvent(const demonstar::TrainerEvent &event) override {
// event.message 可用于日志或 UI 状态提示。
}
};
Listener listener;
demonstar::DemonStarTrainer trainer;
trainer.setListener(&listener);
trainer.tick(); // 建议每 100 ms 调用一次
trainer.addValue(demonstar::TrainerValueId::Planes, 5);
trainer.setValueLocked(demonstar::TrainerValueId::Planes, true); // 锁定当前飞机数量当前偏移量记录见 offsets.md。这些偏移量只适用于已记录的游戏版本和单人模式,游戏版本变化后可能需要重新确认。