Everything you can put in an fxmanifest.lua
The manifest is the only file every resource must have. It tells the server what the resource is, which files belong to it, and in what order they load. It is also, by a wide margin, the file people get wrong when a resource "will not start".

#The minimum that works
fx_version selects the manifest schema. cerulean is current and is what you should use; adamant and bodacious are older and lack features. game can be gta5, rdr3 or common for something that runs on both.
fx_version 'cerulean'
game 'gta5'
author 'Your Name'
description 'What this resource does'
version '1.0.0'
client_script 'client.lua'
server_script 'server.lua'#Script loading and order
Each list loads in the order you write it. This is not alphabetical and it is not by dependency graph — if config.lua defines something main.lua needs, config.lua goes first.
shared_script loads on both sides. It is the right place for a config table, and the wrong place for anything containing a secret, because clients receive it.
shared_scripts {
'@ox_lib/init.lua', -- another resource's file, loaded first
'config.lua',
'shared/*.lua', -- glob, alphabetical within the glob
}
client_scripts {
'client/main.lua',
'client/menu.lua',
}
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/main.lua',
}#NUI: HTML interfaces
ui_page names the entry point, and files lists everything the page is allowed to load. A file not listed there returns 404 to the browser with no server-side error, which is why a NUI that works locally shows a blank panel in game.
ui_page 'html/index.html'
files {
'html/index.html',
'html/style.css',
'html/script.js',
'html/assets/*.png',
'html/fonts/*.woff2',
}#Data files and streaming
data_file registers a game data file so the engine reads it. The stream folder is picked up automatically in cerulean, so you rarely need to declare it.
files {
'vehicles.meta',
'handling.meta',
}
data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta'
data_file 'HANDLING_FILE' 'handling.meta'
-- only needed if your stream folder is somewhere unusual
-- this_is_a_map 'yes'#Dependencies and load gating
dependency stops the resource starting until the named resource is running. dependencies takes a list. There is also a version form for gating on a server build.
dependency 'oxmysql'
dependencies {
'ox_lib',
'qb-core',
'/server:12000', -- requires artifact build 12000+
'/onesync', -- requires OneSync enabled
'/gameBuild:3258', -- requires this game build
}#The full field list
| Field | Purpose |
|---|---|
| fx_version | Manifest schema. Use 'cerulean'. |
| game / games | 'gta5', 'rdr3' or 'common'. |
| author, description, version | Metadata shown in txAdmin and the console. |
| client_script(s) | Runs on the client. |
| server_script(s) | Runs on the server only. |
| shared_script(s) | Runs on both. No secrets. |
| ui_page | The NUI entry HTML. |
| files | Anything the client must be able to download. |
| data_file | Registers a game data file by type. |
| dependency / dependencies | Gates the start. |
| provide | Declares this resource as a replacement for another. |
| lua54 | 'yes' to use Lua 5.4 features. |
| use_experimental_fxv2_oal | 'yes' for the newer Lua compiler. |
| escrow_ignore | Files to leave readable in an escrowed resource. |
| this_is_a_map | 'yes' for map resources. |
#Why a resource refuses to start
- A syntax error in the manifest itself — it is Lua, so a missing comma inside a table is fatal. The console names the line.
- A referenced file that does not exist. Case matters on Linux and does not on Windows.
- A dependency that is not running, or is spelled differently from the folder name.
- A folder name with a space, or with characters other than letters, digits, dash and underscore.
- Two resources with the same folder name in different bracket folders. Only one will start.
- fx_version missing entirely — the resource is treated as an old-style one and almost nothing works.
Questions
What is the difference between files and client_script?
Do I need escrow_ignore?
Does the order of the fields matter?
Ready to pick a map?
Twelve themes on three base map styles, $8 each, instant download.