Docs/ORB Multicharacter/Scenes & Garage

Scenes & Garage

A scene is where the character lineup is showcased during selection. Three ship by default, and each one is a genuinely different map location with its own weather, time of day, camera preset and welcome cinematic.

KeyLabelWeatherTimeDefault camera
studioAirportEXTRASUNNY13:00Cinematic
noirNoirCLEAR23:30Dramatic
garageGarageCLOUDS19:15Full body
lua
Config.DefaultScene = 'studio'
The `studio` key is kept for backwards-compatible saved preferences — its **label is "Airport"**, resolved from the `scene_studio` locale key.

Scene Fields

lua
{
    key      = 'noir',                                      -- saved in the player's preferences
    labelKey = 'scene_noir',                                -- locale key for the UI label
    coords   = vector4(906.3, 7.13, 111.28, 279.81),        -- where the lineup stands
    weather  = 'CLEAR',
    time     = { hour = 23, minute = 30 },
    camera   = 'dramatic',                                  -- default camera preset for this scene
    welcome         = vector4(923.56, 4.71, 118.99, 102.8), -- this scene's own welcome cinematic
    welcomeDuration = 5500,
}

coords is where the rightmost character stands by default, with the rest of the lineup extending to its left (see Config.LineupAnchor). Pick a quiet, well-lit, out-of-the-way spot — players are placed in their own routing bucket, so nobody else can see them there.

Switching scenes fades the screen out, relocates the entire lineup, re-frames the camera, and fades back in.

Capturing Coordinates

Set Config.Debug = true, fly to a spot you like in normal gameplay, and run:

/mccoords

It prints a ready-to-paste vector4(x, y, z, heading) to the F8 console and to chat. Use it for scene coords, welcome cameras, and garage slots.

Weather & Time Control

Each scene forces its own weather and time. To stop the server's weather-sync resource from snapping the scene back, that sync is paused client-side only, for the player viewing the menu — nobody else on the server is affected.

Adapters ship for qb-weathersync, qbx_weathersync, Renewed-Weathersync, cd_easytime and vSync, and the right one is auto-detected. Only touch this if yours is not picked up:

lua
Config.WeatherControl = {
    resource = nil,   -- force a resource name, e.g. 'qb-weathersync' (nil = auto-detect)
    -- Or provide fully custom client-side pause/resume for an unlisted system:
    -- pause  = function() TriggerEvent('my-weather:client:disable') end,
    -- resume = function() TriggerEvent('my-weather:client:enable')  end,
}

The Garage Showroom

The garage scene is a showroom rather than a row lineup. Each character stands at a fixed slot with their own selected vehicle parked beside them — a real owned car, with the real colours and mods read from your framework's vehicle tables.

lua
{
    key         = 'garage',
    labelKey    = 'scene_garage',
    coords      = vector4(-76.68, -820.83, 285.0, 337.52),   -- centre (used for streaming focus)
    weather     = 'CLOUDS',
    time        = { hour = 19, minute = 15 },
    camera      = 'fullbody',
    welcome         = vector4(-72.11, -811.53, 285.0, 161.83),
    welcomeDuration = 5500,
    showVehicle = true,                                      -- show each character's owned car
    slots = {
        { ped = vector4(-78.66, -823.61, 285.02, 323.84), vehicle = vector4(-80.60, -825.07, 284.59, 306.23) },
        { ped = vector4(-75.79, -824.68, 285.04, 353.01), vehicle = vector4(-76.25, -827.04, 284.59, 348.55) },
        { ped = vector4(-78.00, -817.37, 285.06, 251.96), vehicle = vector4(-80.28, -816.66, 284.59, 251.40) },
        { ped = vector4(-71.78, -823.53, 285.00,  12.87), vehicle = vector4(-71.09, -825.86, 284.59,  17.65) },
    },
}
FieldDescription
showVehicleEnables the showroom behaviour for this scene
slotsOne entry per character slotped is where the character stands, vehicle is where their car sits. Both are vector4
There should be one slot per character slot (`Config.Characters.DefaultSlots`). Capture new positions with `/mccoords`.

The Vehicle Picker

A "Your Vehicles" panel lists every car the selected character owns. The choice is remembered per character, so each of your characters can show off a different car.

Vehicles are read from your framework's tables:

FrameworkTableData used
QBCore / QBoxplayer_vehiclesModel, plate, garage and the stored mods (real colours and parts)
ESXowned_vehiclesModel and plate

Ownership is validated server-side for every citizen ID before any vehicle is returned, and the whole lineup's vehicles are fetched in a single round-trip.

The showroom car is **preview only** — it does not change what you spawn with.