The RedM fxmanifest
Every resource has an fxmanifest.lua at its root. It tells the server what the resource is, which files to load, and which to serve to clients. On RedM it has two requirements FiveM does not — and getting them wrong is the most common reason a resource refuses to start.
The two RedM requirements
game 'rdr3'
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'Both lines are mandatory:
game 'rdr3'declares the resource targets RedM rather than FiveM.rdr3_warningis an acknowledgement the server checks for. The string must match exactly — it is compared literally, so a changed word, a missing asterisk or smart quotes instead of straight quotes will all fail.
Without them you get a startup failure along the lines of:
Creating script environments for <resource> failed: rdr3_warning is missingDo not retype it
Copy the line above rather than typing it. The asterisks around *will* are part of the required text, and text editors that auto-convert ' into ' will silently break it.
A complete manifest
fx_version 'cerulean'
game 'rdr3'
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'
author 'RedMorrow'
description 'Example resource'
version '1.0.0'
shared_scripts {
'config.lua',
'shared/*.lua'
}
client_scripts {
'client/main.lua',
'client/*.lua'
}
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/main.lua'
}
ui_page 'ui/index.html'
files {
'ui/index.html',
'ui/style.css',
'ui/app.js',
'ui/images/*.png',
'ui/fonts/*.ttf'
}
dependencies {
'oxmysql'
}What each block does
| Block | Purpose |
|---|---|
fx_version | Manifest format version. cerulean is current. |
game | Must be 'rdr3' for RedM. |
shared_scripts | Loaded on both client and server. Config files belong here. |
client_scripts | Client only. |
server_scripts | Server only. Database access goes here. |
ui_page | The HTML entry point for a NUI interface. |
files | Every asset the client must be able to fetch. |
dependencies | Resources that must be running first. |
The files rule
This catches people constantly:
If a file is loaded by your UI and is not listed under
files, the client cannot fetch it.
ui_page alone is not enough. Every stylesheet, script, image, font and sound the HTML references must be declared. Missing entries produce a blank or half-styled interface with 404s in the F8 console — and no server-side error at all.
Wildcards work and are the sane approach:
files {
'ui/index.html',
'ui/**/*' -- everything under ui/, recursively
}Ordering within a block
Files load top to bottom. If main.lua calls a function defined in utils.lua, list utils.lua first:
client_scripts {
'client/utils.lua',
'client/main.lua'
}Wildcards expand alphabetically, which is why explicit ordering matters when there are dependencies between files.
Database access
Scripts using oxmysql load its library in server_scripts, with the @ prefix marking it as coming from another resource:
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/main.lua'
}Map resources
Streamed MLOs and props declare themselves as maps:
fx_version 'cerulean'
game 'rdr3'
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'
this_is_a_map 'yes'Everything streamed to clients lives under a stream/ folder and is picked up automatically — individual asset files are not listed the way UI files are. A map resource missing this_is_a_map 'yes' starts cleanly, reports no error, and does nothing.
Editing a manifest safely
You rarely need to. When you do:
- Never remove
game 'rdr3'orrdr3_warning. - Adding your own asset means adding it to
filestoo. - Keep a backup — a manifest typo takes the whole resource down, and the error message points at the resource rather than the line.
- After editing, run
refreshthenrestart <resource>so the server re-reads it.
Troubleshooting
rdr3_warning is missing — the line is absent, altered, or uses curly quotes. Copy it fresh.
Failed to load script — a path in the manifest points at a file that is not there. Check for typos and case: Linux servers are case-sensitive, Windows is not, so a manifest that works locally can fail on a Linux host.
could not find dependency — a resource in dependencies is not running, or is listed after this one in server.cfg.
UI loads but is unstyled — assets missing from files. Check F8 for 404s.