Documentation
R_Loading

r_loading Configuration

Configure r_loading in web/build/config.js: branding, background video, accent colour, music, social buttons, updates, team, rules and keybinds.

Everything lives in web/build/config.js. It is a plain JavaScript file that sets window.R_CONFIG. The loading screen reads it directly, so there is no Lua config and nothing to build. Edit it, restart the resource and reconnect.

After editing config.js, run restart r_loading (or restart the server) and reconnect to see your changes. Every section below has an enabled switch. Set it to false to hide that feature.

Branding

serverName: 'R-Scripts',
logo: 'media/images/logo.png',

Background Video

video: {
  src: 'media/video/background.mp4',
  brightness: 0.35 // 0 = black, 1 = full brightness
},

Lower the brightness if your text is hard to read over a bright clip.

Use a local .mp4 (H.264) file inside web/build/media/video. Streaming links such as YouTube do not work.

Accent Colour

colors: {
  primary: '#9a27ea' // any hex; used for the bar, icons and highlights
},

Progress & Log

progress: {
  showLog: true,    // live feed of what's loading, next to the spinner
  showPercent: true // big percentage on the right
},

Music Player

Add as many tracks as you like. Players get next/previous, a seek bar, volume and mute.

music: {
  enabled: true,
  autoplay: true,
  defaultVolume: 0.2, // 0 to 1
  tracks: [
    { title: 'Ambient One', artist: 'R-Scripts', src: 'media/music/track1.mp3' },
    { title: 'Night Drive', artist: 'R-Scripts', src: 'media/music/track2.mp3' }
  ]
},

Players can toggle playback with the spacebar. Each track's src must be a local .mp3 inside web/build/media/music. The same streaming limitation as the video applies.

Social Buttons

Icon buttons in the top-right corner. Hovering shows the label, clicking opens the link in the player's browser.

social: {
  enabled: true,
  links: [
    { label: 'Discord', icon: 'discord', url: 'https://discord.gg/rscripts' },
    { label: 'YouTube', icon: 'youtube', url: 'https://www.youtube.com/@rscriptsfivem' },
    { label: 'TikTok', icon: 'tiktok', url: 'https://www.tiktok.com/@rscripts' },
    { label: 'X', icon: 'x', url: 'https://twitter.com/yourserver' },
    { label: 'Store', icon: 'store', url: 'https://r-scripts.net' }
  ]
},

Available icon values: discord, youtube, tiktok, x, store, website.

Side Rail Panels

The four sections below are the tabs of the icon rail on the left of the screen. Each one opens a flyout next to the rail. A tab is hidden automatically when its section is enabled: false or its list is empty.

Updates

Changelog and announcements.

updates: {
  enabled: true,
  items: [
    { date: '16.6.2026', title: 'New era update', body: 'A fresh, modern loading screen.' }
  ]
},

Team

Your staff list.

team: {
  enabled: true,
  members: [
    { name: 'Staff Member', role: 'Administrator' },
    { name: 'Helper', role: 'Moderator' }
  ]
},

Rules

One line per rule.

rules: {
  enabled: true,
  items: [
    'Be respectful to all players and staff.',
    'No cheating or exploiting.',
    'Use common sense.'
  ]
},

Keybinds

Shown on an on-screen keyboard: every listed key lights up in your accent colour, and hovering it shows the action.

keybinds: {
  enabled: true,
  items: [
    { key: 'F1', action: 'Phone' },
    { key: 'F2', action: 'Inventory' },
    { key: 'F3', action: 'Emote menu' },
    { key: 'B', action: 'Seatbelt' }
  ]
},

key is the label printed on a tenkeyless keyboard: letters, digits, F1 to F12, Tab, Space, Enter, Shift, Ctrl, Alt and the arrow/navigation keys. Matching ignores case.

The loading screen disappears on its own once the game finishes loading. There's nothing to configure for that.

Next Steps

Interface Colours

The loading screen reads its colours from config.js:

colors: {
  primary: '#9a27ea',   // one accent colour for the bar, icons and highlights
  button: '#ffffff',    // solid buttons (the music play button)
  buttonText: '#000000' // text/icon on those buttons
}

These are the same tokens every other R-Scripts resource exposes as R.UI in config.lua, so one palette carries across the whole fleet.