Skip to content

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 ​

lua
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_warning is 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 missing

Do 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 ​

lua
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 ​

BlockPurpose
fx_versionManifest format version. cerulean is current.
gameMust be 'rdr3' for RedM.
shared_scriptsLoaded on both client and server. Config files belong here.
client_scriptsClient only.
server_scriptsServer only. Database access goes here.
ui_pageThe HTML entry point for a NUI interface.
filesEvery asset the client must be able to fetch.
dependenciesResources 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:

lua
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:

lua
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:

lua
server_scripts {
    '@oxmysql/lib/MySQL.lua',
    'server/main.lua'
}

Map resources ​

Streamed MLOs and props declare themselves as maps:

lua
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' or rdr3_warning.
  • Adding your own asset means adding it to files too.
  • 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 refresh then restart <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.

Documentation for RedMorrow. Scripts are licensed per server — redistribution is not permitted.