For the complete documentation index, see llms.txt. This page is also available as Markdown.

Configuration

Everything lives in rm_scenes/cfg.lua (open file, comments included). The important knobs, in the order they appear:

Locale & bridges

cfg.locale = 'en'            -- locales/<locale>.json
cfg.bridge = {
    framework = 'auto',      -- 'auto' | 'qb' | 'esx' | 'standalone'
    notification = 'builtin' -- any file name from bridge/notification/
}

'auto' tries qb, then esx, then falls back to standalone. Every notification adapter is an open file in rm_scenes/bridge/notification/ and its file name is the value for cfg.bridge.notification; the annotation in cfg.lua lists the set bundled with your version. Copy an adapter to integrate a resource we don't cover.

Entry points

cfg.commands = {
    create = 'create_scene', -- string | false
    list   = 'scenes',       -- string | false
}

Set either to false to remove the command; the server exports keep working, so you can route entry through an item, a menu or another script instead.

Interface

cfg.nui = {
    primaryColor = '#f15d38', -- accent color of the whole interface

    overlays = {              -- where the hint overlays dock on screen
        placement = 'bottom-right', -- key hints while selecting the surface area for a new scene
        depth     = 'bottom-right', -- key hints while adjusting depth / repositioning before saving
        saving    = 'bottom-right', -- spinner shown while a confirmed scene save uploads
        list      = 'top-left',     -- the scene list panel
    },

    fonts = {                 -- extra editor fonts on top of the built-in system list
        { label = 'Bangers', family = 'Bangers, cursive', url = 'https://fonts.googleapis.com/css2?family=Bangers&display=swap' },
    },
}

Fonts load at runtime when the editor opens; nothing ships in the resource. url accepts a CSS stylesheet (Google Fonts embed URL) or a direct font file, and family must match the font's real family name.

Scenes

  • occlusion runs light line-of-sight checks so scenes behind buildings cost nothing to draw. Disable it if you see scenes pop late around complex geometry.

  • deleteUnseenAfter prunes at resource start. It's what removes drawings stuck on objects that no longer spawn; "seen" means any player actually rendered the scene.

  • allowHttpImageUrls relaxes the editor's URL image rule from https-only to https+http, for hosts without TLS. The bytes travel unencrypted and the private-address guard still applies; keep it off unless you need it.

Durations

The list the save dialog offers; the server only accepts values from it. Labels are free text. The stock Permanent entry is one year in seconds; raise the value if that's not permanent enough.

Controls

Values are FiveM control ids. The resize* keys fine-tune a locked selection before the editor opens: scroll grows or shrinks it, and holding the width/height key limits the change to one dimension. The hint overlays always display the labels of whatever you bind here.

Texture pool

The per-client texture memory cap. When more scenes are in range than the pool holds, the farthest ones give up their slot. If dense builds show blank scenes up close, raise max and budget the memory cost.

Permissions

With onlyAuthorized = true, creation is limited to listed identifiers, jobs and gangs. A job/gang entry can restrict grades and pin creation to locations (sphere areas); the location check is enforced server-side on every save, move and copy, not just in the preview.

Admins see and manage every scene, bypass limitPerPerson and the location restrictions, and get the extra list tools (Scene list).

Custom check

When set, it replaces the built-in check entirely. Return true/false, or a table with locations to allow creation only inside those areas.

Advanced

Three optional keys exist for tuning images; the defaults suit most servers, add them under cfg.scenes only if you need them:

Changing maxImageUrlBytes also moves the save, edit and Discord webhook ceilings to match, so a large imported layer can still bake and save. Imported images travel back to the editor on their own lane at editorImageBps; saved scenes stay small regardless of import size, because the editor export is capped and re-encoded, and they stream to players at imageBps.

Last updated