This branch is a Lua port of vMenu Enhanced, Tom Grobbe's rewrite of vMenu. It aims to be a drop-in for the C# build, with the same folder name, permissions, settings, player saves and plugins. Unlike upstream, it runs on both FiveM Legacy and FiveM Enhanced.
The port is in progress and not ready for a live server yet. For the classic vMenu in Lua, use the original branch, which is finished and tracks upstream's legacy branch.
- vMenu and vMenu Enhanced: Tom Grobbe (Vespura), https://github.com/TomGrobbe/vMenu
- MenuAPI: Tom Grobbe, https://github.com/TomGrobbe/MenuAPI
- Lua port: Lawson (oyuh)
vMenu Enhanced is GPL-3.0-or-later, so this port is too. If you hand a modified copy to anyone, you have to give them the source. Files copied from MenuAPI keep their LGPL-3.0-or-later license. LICENSE.md has the full text.
The port follows the phases in docs/BRANCH-PLAN.md:
- Branch setup: done
- Foundation (platform layer, settings, permissions, example files, storage): done
- Menu engine (MenuAPI 4 on its NUI page, the menu framework, themes, languages, notifications): done
- Plugins (both halves of upstream's plugin protocol, standalone menus, menu priority and locks, plugin themes): done in code, waiting for in-game testing. The Plugin Actions menu comes with Online Players in phase 4.
- Menus, wave 1
- Menus, wave 2
- Server extras (webhooks, update checker, integrations)
- Parity and
stable-v1.0.0
Builds aren't published yet. Once they are, each stable-v* release ships a zip that extracts as one vMenu.Enhanced folder. Keep that name, because the resource refuses to start under any other. Then add these lines to your server.cfg, in this order:
add_filesystem_permission vMenu.Enhanced write vMenu.Enhanced
ensure vMenu.EnhancedFiveM Enhanced needs the first line before vMenu can write its example config files. FiveM Legacy already lets a resource write to its own folder, so the line is harmless there.
The code is Lua 5.4. Tests run on busted with the FiveM natives mocked, so you don't need a game server. Lint with luacheck and format with StyLua:
busted
luacheck .
stylua --check .To test plugins by hand, link tools/test-plugin into a test server's resources as vMenu.TestPlugin and ensure it after vMenu.Enhanced. It uses every part of upstream's Lua plugin API, one submenu per area. The release zip doesn't include it.
docs/UPSTREAM.md explains how this branch follows upstream's enhanced releases.