红警2尤里的复仇内存修改器, 适用于 尤里的复仇 1.001
之前的 aa_engine 链接已失效,现在可以去看雪论坛下载 aa_engine 源码 https://bbs.kanxue.com/thread-187871.htm . 感谢原作者 axdx 的程序。目前 aa_engine 使用源码编译方式集成在该修改器中。
使用 CMake 和 Visual Studio 17 2022 构建。
git clone --recursive https://github.com/AdjWang/RA2YurisRevengeTrainer.git
cd ./RA2YurisRevengeTrainer
cmake -B ./build -G "Visual Studio 17 2022" -T host=x86 -A win32
cmake --build ./build --config Release --target ra2_trainer -j $env:NUMBER_OF_PROCESSORS
快捷键:Alt+功能括号后标记的按键
说明信息中涉及的功能用斜体表示。
- 钱:顾名思义
- 快速建造:提高建造速度
- 删除单位:让选中的单位直接消失
- 地图全开:地图迷雾全开(如果要看透裂缝产生器还需要开启 瘫痪裂缝产生器 功能)
- 核弹攻击:获得一枚核弹
- 单位升级:选中的单位升3级(可以对群体使用)
- 单位加速:选中的单位移动速度增加(可以对群体使用)
- 立即胜利:跳关用
- 这是我的:选中的单位归到我方阵营
- 成为幽灵玩家:必须先选中一个我方建筑,该功能会销毁该建筑。该建筑被销毁后名亡实存,就算玩家所有建筑和单位被消灭也不会输。系统会认定玩家还有建筑,但是该建筑没有实体无法再被AI消灭。
- 无敌:免疫任何伤害,但是不免疫工程师占领(免疫工程师占领的功能是 全是我的-占领 )
- 瞬间建造:顾名思义。
- 无限超武:无限施放超级武器和伞兵之类,但是对上面的一次性 核弹攻击 功能无效。如果有发射井,核弹攻击 也是无效的。
- 永久雷达:无视电力和是否有雷达建筑,都开启雷达。需要手动刷新(比如展开基地车)。
- 极速攻击:攻击速度最大化。
- 极速转身:战车和炮塔旋转速度最大化。(巨炮会变得很变态...)
- 远程攻击:攻击距离最大化。(但是不警戒,不会自动远距离攻击)
- 远程警戒:警戒距离最大化。( 远程攻击 开启后使能。配合 远程攻击 使用,自动远距离攻击)
- 瘫痪裂缝产生器:裂缝产生器无效化。
- 瘫痪敌方所有单位:类似冻结效果。
- 卖卖卖:可以售卖地图上所有单位,比如敌方建筑,任意中立建筑,步兵,战车等。
- 无限电力:顾名思义。
- 随意建筑:无视是否邻近、水面和陆地。
- 自动修理:个人认为是最爽的功能。玩家占领的中立建筑也是可以修的~
- 敌方血越修越少:敌方建筑修理时掉血。
- 社会主义万岁:企图控制玩家单位的尤里(包括建筑和车)会归属给玩家。玩家的尤里阵亡后控制的单位不会回到敌方阵营。
- 全是我的-攻击:企图攻击玩家的单位会归属给玩家。
- 全是我的-占领:任何"占领"事件的目标单位归属给玩家。
- 全是我的-房屋驻军:任何"房屋驻军"事件的目标单位归属给玩家,但是房子里的部队不会改变归属。
- 侵略模式:开启后可以自动攻击敌方建筑物。
- 全科技:开启全科技,开启后需要随便造个东西才能生效。
- 极速重装-重新建造生效:单位重新装填速度最大化。(不是实时功能,仅对开启该功能后建造的单位生效)
- 大量弹药-重新建造生效:单位弹药容量扩容到
20
。(不是实时功能,仅对开启该功能后建造的单位生效) - 瞬间超时空:超时空单位移动和攻击无冷却。配合 极速攻击 使用效果更佳。
- 无间道:被敌方间谍入侵会获得敌方科技。
- 滑板鞋:所有步兵高速滑行移动。
- 部队全部三级:建筑也会升三级。
- 任务调速:开启后执行任务时可以在暂停界面调整游戏速度。
- 如果全局快捷键存在冲突,会注册失败,对应功能后的括号为空。
- 项目使用
git submodule
管理依赖,必须使用--recursive
选项拉取仓库。 - 滑板鞋功能尚有问题,会导致步兵无法上桥,如果桥下是水面就会卡死在水里。
- 修改器退出时会在相同目录下产生
dbglog.txt
日志,默认记录最后 50 条以供故障排查。
做修改器只是产出逆向红警引擎的副产品,供单人游戏娱乐用,目标不是做出能在线上使用的外挂,请公平竞争。程序员要多研究网络,编程语言,操作系统和体系结构,少研究怎么搞钱。
-
考虑使用bigsinger 提出的 DLL 注入方式实现。以多一个 DLL 文件的代价换来如下好处:
- 使用局部快捷键,避免全局快捷键冲突。
- 在 DLL 里用 C++ 而不是汇编实现复杂功能更加容易。
- 现有 aa_engine 可在改造接口后在游戏进程内部使用,同样可以规避 msvc 内联汇编写法上的繁琐。
- 我一直怀疑远程线程,比如地图全开、核弹攻击,与引擎存在数据竞争是导致这些功能使游戏小概率崩溃的原因。改进方式是使用与游戏主循环串行执行的任务队列,在 DLL 中实现任务队列显然比跨进程消息传递和注入任务队列来得轻松许多。
-
添加功能记录和修改快捷键的配置文件