YimMenuV2从零到跑起来:GTA 5增强菜单10分钟实战指南
【免费下载链接】YimMenuV2Experimental menu for GTA 5: Enhanced项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenuV2
YimMenuV2是一个用 C++23 编写的 GTA 5(增强版)增强菜单项目:它编译出单个 YimMenuV2.dll,注入游戏后提供九个子菜单的神殿模式、传送、匹配操控与线上功能,还带一个沙盒化的 LuaJIT 脚本引擎。做 GTA 5模组开发 想自己写功能,它是一份能直接上手的底子;只想玩现成功能,注入一个 dll 再按个键就行。
🛠 它凭什么值得试
这一节说清楚四件事:为什么它值得你花十分钟。
- 写功能不碰 C++。自定义功能直接写 Lua,丢进
%appdata%/YimMenuV2/scripts/重启即生效;脚本跑在独立沙盒里,io、os、ffi都被禁掉,写崩了也只挂脚本不挂游戏。 - 功能清单已经铺好,省掉你接原生函数的活。菜单里现成挂着上百个开关,从 Godmode、Noclip 到抢劫修改器,全部是一键切换的 Command,不需要自己查函数签名。
- 底层钩子不用你重搭。Detour、VMT、IAT、Call 四种钩子实现在 src/core/hooking/ 里,特征码扫描结果有缓存层,你加新指针只要写一条 pattern。
- 一次配置,之后都记住。四套内置风格 Classic / Modern / Modern Vertical / Modular 存进 themes.json,窗口位置存进 imgui.ini,重启后菜单还是你上次摆的样子,不用再调颜色。
底层是怎么跑起来的
这一节用一个比喻把项目分层讲明白,后面读代码就不会迷路。整体像给老房子做智能化改造:房子是游戏进程,菜单是装进去的整套系统。
核心层是水电改造,游戏层是家具,frontend 是面板
结论先行:src/core/管“能不能干”,src/game/管“具体干什么”。前者放着任何注入式菜单都需要的东西——内存特征码扫描、钩子框架、ImGui 渲染、Lua 引擎、异步日志,与 GTA 5 本身无关;后者按业务切分:backend 存全局状态,features 放功能,pointers 放游戏指针。最上面的面板则是src/game/frontend/,九个子菜单和主题切换都画在那一层。
菜单靠注入进入游戏,钩子是主板上的扩展槽
结论先行:它就是一个 DLL——CMakeLists.txt 里写的是add_library(... MODULE),主菜单阶段被注入器挂进游戏进程。DllMain触发后主线程按顺序做:加载模块、Pointers::Init扫指针、装钩子、勾 D3D12 画界面、注册脚本。每个钩子相当于一个扩展槽,菜单从槽里截住游戏的执行流,塞进自己的逻辑再放行。
功能就是 Command 对象,菜单只是它的开关
结论先行:代码里没有“功能类”这个概念,一切都是 src/core/commands/ 下的 Command——执行一次的叫 Command,每帧循环的叫 LoopedCommand。一个功能文件通常就三四十行:注册命令、写OnTick逻辑,界面上自动多一个开关,开关状态由 settings 系统序列化进 settings.json。这就是加新功能成本低的原因:UI 代码一行不用碰。
⏱ 10分钟从零跑起来
这一节帮你亲手编译出 YimMenuV2.dll 并验证它能进游戏,命令给全,每步标了成功判据。
环境检查
产物是 Windows DLL,最稳的路径是 Windows + Visual Studio 2022(勾选 C++ 核心工作负载,会带上 CMake 和 Ninja),仓库里的 CMakeSettings.json 预置了 x64-Release-MSVC 和 x64-Release-Clang 两套模板,CMake 要求 3.20 以上。在 Linux/macOS 上则走cmake/cross-compile.cmake,默认用 Zig 或 Clang+MinGW 交叉编译。卡住先看:cmake --version低于 3.20 是大多数报错的第一原因。
克隆并构建
git clone https://gitcode.com/GitHub_Trending/yi/YimMenuV2 cd YimMenuV2 mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo cmake --build . --config Release成功的样子:build 目录下产出 YimMenuV2.dll(MODULE 库,没有 exe 是正常的)。ImGui、LuaJIT、MinHook、nlohmann_json 都由cmake/下的脚本拉取,不用你自备任何依赖。
注入与启动验证
把 FSL 的 WINMM.dll 放进 GTA V 目录(可选项,README 建议为账号安全启用),Rockstar Launcher 里对 GTA V Enhanced 关闭 BattlEye(Steam/Epic 版再给启动参数加-nobattleye),启动游戏进主菜单,用注入器把 YimMenuV2.dll 挂进去。成功的样子:屏幕右上角弹一条绿色 “Loaded succesfully” 通知,按INSERT或Ctrl+\呼出菜单,能看到 Self、Vehicle、Teleport 直到 Debug 共九个一级子菜单。卡住先看:打开%appdata%/YimMenuV2/cout.log,日志停在哪个 Init 就对应哪一步失败;停在Pointers::Init基本是游戏版本不匹配。
🎮 三个最值得玩的功能
从上百个功能里挑三个一分钟能感受到效果的,按“能做什么 → 怎么开启 → 体验如何”讲。
Freecam:把相机从角色身上拔下来
能做什么:镜头脱离玩家自由飞,第一人称“无人机视角”看地图。怎么开启:Self 子菜单勾上 Freecam,开着菜单时用 WASD 移动,左 Shift 上升、左 Ctrl 下降,速度由菜单里的 “Freecam Speed” 滑条控制(0.01 到 10)。体验如何:实现文件 src/game/features/self/Freecam.cpp 会创建一个脚本相机并复制当前游戏相机的姿态做起点,所以开起来的瞬间没有跳变;关掉之后控制权直接交还角色。
Teleport to Waypoint:红点在哪就去哪
能做什么:一键把人送到地图红点位置。怎么开启:Teleport 子菜单点 “Teleport to Waypoint”(旁边还有常驻的自动模式)。体验如何:它和别的菜单的差距在细节——传送前会跑最多 20 轮碰撞查询找地面高度(ResolveZCoordinate),落点贴着地表面,传进海里则对齐水面,不会出现“传进墙体卡死”的情况。
Modify Rocket Boost:火箭助推永不耗尽
能做什么:给支持火箭助推的载具把助推能量行为改成“永远满格”或“用完瞬充”。怎么开启:Vehicle 子菜单勾 “Modify Boost Behavior”,列表里选 Infinite 或 Instant recharge。体验如何:src/game/features/vehicle/RocketBoost.cpp 里整段逻辑不到 40 行,上车后助推条恒满,想按多久按多久。
老手才有的5个技巧
这几条 README 里没细讲,但每次都用得上,且能直接上手。
- 共享代码放进名字含
include的文件夹(区分大小写),菜单不会自动执行它,只用require引入,这就是模块的写法:
-- scripts/include/hello.lua local hello = {} function hello.run() notify.info("YimMenuV2", "Hello") end return hello- 不想跑某个脚本?把它挪进
disabled/文件夹即停用,挪回来恢复,相当于免重启的开关。 - 把 docs/yimmenu_v2.lua 指向语言服务器(
.luarc.json里配workspace.library),Lua 侧就拿到全套 API 的自动补全和类型检查。 - 非 Windows 交叉编译时,configure 阶段选 Zig 或 Clang 工具链即可,链接选项已静态化,产物没有运行时依赖问题。
- 每条命令默认都能绑热键:HotkeySystem 对全部命令做了注册,绑好后开车时单手就能开功能。
🩹 新手踩坑急救
README 的 Common issues 里出现频率最高的三个问题,各用三句话答完。
公共局每五分钟被踢出现象:屏幕 desync,约五分钟后被移出会话。原因:项目不做 BattlEye 绕过,宿主机的 heartbeat 校验最终会移除你。处理:线上使用需要真正的(私有)绕过,或只在自己开的局里玩。
移除 FSL 后存档进度全丢现象:删掉 WINMM.dll 后,线上账号里攒的进度找不到了。原因:FSL 把账号存档重定向到磁盘,FSL 关闭时这些数据不会出现在官方存档里。处理:把 FSL 装回去,之前用 FSL 跑的进度会重新出现。
移除 FSL 后游戏启动不了现象:删 FSL 之后游戏直接开不起来。原因:一个已知的兼容性问题。处理:删除Documents/GTAV Enhanced/Profiles目录,游戏即可恢复启动。
这份项目适合两类人:想在 GTA 5 里快速试用增强功能的玩家,以及做 GTA 5模组开发、想复用一套成熟钩子、渲染和脚本底子的开发者。建议的下一步很短:先按上面的步骤自己编译出 dll 并跑通,然后翻一遍 docs/lua-api.md,照着写一个几行的 Lua 脚本,能把某个功能从菜单里手动开关起来,就可以开始写属于自己的东西了。
【免费下载链接】YimMenuV2Experimental menu for GTA 5: Enhanced项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenuV2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考