Documentation

Config

Explanations and examples for the current Image Studio configuration.

General Information

Config File
The main settings are in zyke_imagestudio/shared/unlocked/config.lua. The complete current beta defaults are included below.

Advanced Calibration
shared/unlocked/advanced_config.lua contains matte extraction, lighting recovery, and shadow-processing calibration. Changing those values can reduce capture quality, so leave them unchanged unless you are deliberately calibrating the processor.

Additional Settings
Framework and permission behavior provided by zyke_lib is configured in zyke_lib.

Keymapping
Studio controls that use FiveM keymapping can be changed in GTA / FiveM keybind settings.

#Full Default Config

#General

Top-level debugging, branding, and command settings.

#Config.Debug

Enables resource debug output. Keep this disabled during normal production use and enable it while diagnosing capture or publishing behavior.

Example:

lua
Config.Debug = false

Image shown in the menu header. Use a path relative to nui/index.html or an HTTPS URL. Transparent PNG and WebP images work best.

Example:

lua
Config.MenuLogo = "./zyke-logo-nbg.svg"

#Config.Commands.menu

Command that opens the full Image Studio library and capture interface.

Example:

lua
menu = "imagestudio"

#Config.Commands.lightDebug

Developer command that opens the studio-light debugging workflow for a vehicle model.

Example:

lua
lightDebug = "vehicleimagelights"

#Config.Commands.adjustLight

Developer command used to change a field on an active debug light.

Example:

lua
adjustLight = "adjustlight"

#Config.Commands.cancel

Command that requests cancellation after the current capture finishes.

Example:

lua
cancel = "vehicleimagecancel"

#Config.Capture

Capture output, processing capacity, timing, and client/server timeout settings.

#outputFolder

Hosted folder used for normal captures. An empty string publishes at the gallery root; a value such as vehicles places output below that folder.

Example:

lua
outputFolder = ""

#editedOutputFolder

Folder used for edited/final output. Keep this non-empty so reusable source captures and edited images remain distinct.

Example:

lua
editedOutputFolder = "edited"

#overwriteExisting

Allows matching captures to overwrite or version the existing logical image instead of failing as a duplicate.

Example:

lua
overwriteExisting = true

#encoding

Base capture encoding used by the capture pipeline before configured output formats are produced.

Example:

lua
encoding = "png"

#debugTrace

Enables detailed capture-stage tracing. Disable it when the extra capture logs are not needed.

Example:

lua
debugTrace = true

#nuiProcessingProbe

Runs the optional browser-processing probe used for diagnostics. Leave disabled during normal operation.

Example:

lua
nuiProcessingProbe = false

#blackoutArtificialLights

Temporarily blacks out world artificial lights during controlled captures when enabled.

Example:

lua
blackoutArtificialLights = false

#studioLightIntensityMultiplier

Global intensity multiplier applied to configured studio point lights.

Example:

lua
studioLightIntensityMultiplier = 0.85

#studioSpotLightIntensityMultiplier

Global intensity multiplier applied to configured studio spotlights.

Example:

lua
studioSpotLightIntensityMultiplier = 0.35

#exteriorLightIntensityMultiplier

Intensity multiplier used by the exterior-recovery lighting pass.

Example:

lua
exteriorLightIntensityMultiplier = 0.0

#exteriorSpotLightIntensityMultiplier

Spotlight intensity multiplier used by the exterior-recovery pass.

Example:

lua
exteriorSpotLightIntensityMultiplier = 0.45

#cabinLightIntensityMultiplier

Intensity multiplier applied to cabin/interior recovery lights.

Example:

lua
cabinLightIntensityMultiplier = 0.55

#outputFormats

Finished image formats generated by the browser processor. The current beta publishes WebP output by default.

Example:

lua
outputFormats = { "webp" }

#maxWidth

Maximum accepted capture width in pixels.

Example:

lua
maxWidth = 3840

#maxHeight

Maximum accepted capture height in pixels.

Example:

lua
maxHeight = 2160

#captureFrames

Number of frames sampled by the capture process for a capture request.

Example:

lua
captureFrames = 4

#backgroundSettleFrames

Frames allowed for the capture background to settle before the image is accepted.

Example:

lua
backgroundSettleFrames = 60

#verifyCaptureBackground

Verifies the expected capture background before processing the result.

Example:

lua
verifyCaptureBackground = true

#directUploadConcurrency

Maximum simultaneous direct uploads issued by one capture workflow.

Example:

lua
directUploadConcurrency = 3

#directUploadMaxAttempts

Maximum direct-upload attempts before the capture is reported as failed.

Example:

lua
directUploadMaxAttempts = 3

#directUploadTimeout

Direct-upload timeout in milliseconds.

Example:

lua
directUploadTimeout = 120000

#resizeOutput

Enables resizing of normal Studio output. The editor can also control this per capture.

Example:

lua
resizeOutput = false

#outputWidth

Target width in pixels when output resizing is enabled. Aspect ratio is preserved.

Example:

lua
outputWidth = 1600

#webpQuality

WebP quality from 1 to 100.

Example:

lua
webpQuality = 95

#postProcessingWorkers

Number of editable-image rendering workers on the capturing player's PC. The runtime limits the useful value to 2.

Example:

lua
postProcessingWorkers = 1

#maxPendingProcessing

Maximum unfinished browser-processing and upload work allowed in a capture batch.

Example:

lua
maxPendingProcessing = 1

#readyDelay

Additional delay in milliseconds before capture processing begins.

Example:

lua
readyDelay = 0

#previewSettleFrames

Frames allowed for a normal preview to settle.

Example:

lua
previewSettleFrames = 0

#bulkPreviewSettleFrames

Frames allowed for each bulk preview to settle.

Example:

lua
bulkPreviewSettleFrames = 0

#bulkLightingWarmupFrames

Lighting warmup frames used by bulk captures.

Example:

lua
bulkLightingWarmupFrames = 0

#bulkLightingWarmupNui

Adds a NUI synchronization point during bulk lighting warmup.

Example:

lua
bulkLightingWarmupNui = false

#bulkLightingWarmupReadback

Adds a pixel readback during bulk lighting warmup.

Example:

lua
bulkLightingWarmupReadback = false

#lightingWarmupFrames

Lighting warmup frames used by non-bulk captures.

Example:

lua
lightingWarmupFrames = 0

#lightingWarmupNui

Adds a NUI synchronization point during normal lighting warmup.

Example:

lua
lightingWarmupNui = false

#lightingWarmupReadback

Adds a pixel readback during normal lighting warmup.

Example:

lua
lightingWarmupReadback = false

#passSettleFrames

Frames allowed between capture passes.

Example:

lua
passSettleFrames = 0

#localAdaptiveBeautySettleFrames

Additional settle frames used by local adaptive beauty captures.

Example:

lua
localAdaptiveBeautySettleFrames = 24

#windowStateFrames

Frames allowed for vehicle window state changes to become visible.

Example:

lua
windowStateFrames = 4

#vehicleSceneTimeout

Maximum wait in milliseconds for a vehicle scene to become usable.

Example:

lua
vehicleSceneTimeout = 120

#vehicleSceneMinimumSettle

Minimum vehicle-scene settle duration in milliseconds.

Example:

lua
vehicleSceneMinimumSettle = 120

#vehicleDeleteTimeout

Maximum wait in milliseconds for capture-vehicle deletion.

Example:

lua
vehicleDeleteTimeout = 150

#vehicleDeleteSettleFrames

Frames allowed after capture-vehicle deletion.

Example:

lua
vehicleDeleteSettleFrames = 2

#serverTimeout

Maximum client wait for the server capture flow in milliseconds.

Example:

lua
serverTimeout = 120000

#screenshotTimeout

Maximum wait for a screenshot/capture result in milliseconds.

Example:

lua
screenshotTimeout = 30000

#spawnTimeout

Maximum wait for a capture vehicle to spawn in milliseconds.

Example:

lua
spawnTimeout = 5000

#cancelControl

FiveM control ID used by the capture cancellation flow.

Example:

lua
cancelControl = 73

#progressEvery

Updates batch progress after this many completed vehicles.

Example:

lua
progressEvery = 1

#hidePlayer

Hides the capturing player's ped during the capture session when enabled.

Example:

lua
hidePlayer = false

#commonBlacklist

Loads the shared model blacklist supplied with the resource. Edit shared/unlocked/common_blacklist.lua rather than replacing the loader.

Example:

lua
commonBlacklist = assert(load(LoadResourceFile(ResName, "shared/unlocked/common_blacklist.lua")))()

#Config.GreenScreen

Capture-stage location, cleanup radius, and safe recovery position.

#vehiclePosition

World position used for the isolated studio vehicle.

Example:

lua
vehiclePosition = vec3(-1359.5915527344, -2789.1623535156, 500.0)

#vehicleHeading

Default world heading of the capture vehicle.

Example:

lua
vehicleHeading = 214.03

#vehicleGroundOffset

Vertical adjustment applied when positioning the capture vehicle.

Example:

lua
vehicleGroundOffset = 0.18

#snapToGround

Uses ground detection at the studio position when enabled. The high-altitude default studio keeps this disabled.

Example:

lua
snapToGround = false

#hiddenSpot

Temporary hidden position used while preparing the isolated capture session.

Example:

lua
hiddenSpot = vector3(-1224.22, -3349.63, 13.96)

#clearRadius

Radius cleared around the studio to prevent unrelated entities from entering captures.

Example:

lua
clearRadius = 120.0

#restartSafeRadius

Radius used to detect players who need recovery after a resource restart.

Example:

lua
restartSafeRadius = 140.0

#restartSafePosition

Position used to return a player found inside the capture area after restart or shutdown.

Example:

lua
restartSafePosition = vector3(-1037.72, -2738.16, 20.17)

#restartSafeHeading

Heading applied at the restart-safe position.

Example:

lua
restartSafeHeading = 330.0

#Config.Scenery

Shared world-location presets used by scenery captures.

#placementDistance

Maximum placement distance used while selecting a scenery location.

Example:

lua
placementDistance = 250.0

#presets

Server-wide scenery presets. Each entry needs a stable id, locale labelKey, vehicle position, and vehicle heading. Players can also save personal presets from the Studio.

Example:

lua
presets = {
    {
        id = "airport",
        labelKey = "scenery:airport",
        vehiclePosition = vector3(-1037.72, -2738.16, 20.17),
        vehicleHeading = 330.0,
    },
}

#Config.LightDebug

Defaults for the developer light-debug workflow.

#defaultModel

Vehicle model loaded when the light-debug command does not receive another model.

Example:

lua
defaultModel = "2015gtr"

#drawBackdrop

Draws the configured studio backdrop while debugging lights.

Example:

lua
drawBackdrop = true

#drawDistance

Maximum distance at which debug light helpers are drawn.

Example:

lua
drawDistance = 90.0

#textScale

Scale of the in-world debug labels.

Example:

lua
textScale = 0.28

#markerScale

Scale of the light-position markers.

Example:

lua
markerScale = 0.22

#directionLength

Length of spotlight direction helpers.

Example:

lua
directionLength = 2.5

#backgroundColor

Backdrop color used by the light-debug environment.

Example:

lua
backgroundColor = { r = 18, g = 18, b = 18, a = 255 }

#viewerOffset

Position offset used for the initial light-debug viewer.

Example:

lua
viewerOffset = vector3(0.0, 9.5, 3.0)

#restorePlayerPosition

Returns the player to their previous position after light debugging.

Example:

lua
restorePlayerPosition = true

#freecam

Movement, speed multipliers, look sensitivity, and FOV for the light-debug free camera.

Example:

lua
freecam = {
    speed = 0.35,
    fastMultiplier = 5.0,
    slowMultiplier = 0.25,
    lookSensitivity = 7.5,
    fov = 70.0,
}

#Config.Studio

Generated backdrop geometry, headings, key colors, and optional custom lights.

#enabled

Enables the generated studio capture mode.

Example:

lua
enabled = true

#backdropEnabled

Creates the generated floor and wall backdrop.

Example:

lua
backdropEnabled = true

#defaultVehicleHeading

Default vehicle heading used by normal Studio sessions.

Example:

lua
defaultVehicleHeading = 250.0

#displayVehicleHeading

Heading used when displaying the initial vehicle in the Studio.

Example:

lua
displayVehicleHeading = 180.0

#defaultDisplayVehicleHeading

Default heading exposed to display-facing Studio controls.

Example:

lua
defaultDisplayVehicleHeading = 145.0

#defaultSetupHeading

Default heading of the capture setup before user adjustment.

Example:

lua
defaultSetupHeading = 255.0

#color

Default studio key color.

Example:

lua
color = { r = 0, g = 255, b = 0, a = 255 }

#keyColors

Named key colors available to the matte workflow. Keep names aligned with Config.Matte.keyName and alternateKeyName.

Example:

lua
keyColors = {
    green = { r = 0, g = 255, b = 0, a = 255 },
    magenta = { r = 255, g = 0, b = 255, a = 255 },
    blue = { r = 0, g = 80, b = 255, a = 255 },
}

#floorZOffset

Vertical offset of the generated studio floor relative to the vehicle.

Example:

lua
floorZOffset = -0.90

#floorWidth

Width of the generated floor.

Example:

lua
floorWidth = 192.0

#floorCameraDistance

Floor coverage distance toward the camera.

Example:

lua
floorCameraDistance = 192.0

#floorBackdropDistance

Floor coverage distance toward the backdrop.

Example:

lua
floorBackdropDistance = 96.0

#wallWidth

Width of the generated backdrop wall.

Example:

lua
wallWidth = 48.0

#wallHeight

Height of the generated backdrop wall.

Example:

lua
wallHeight = 96.0

#wallDistance

Distance between the vehicle setup and generated wall.

Example:

lua
wallDistance = 18.0

#lights

Additional point-light definitions applied to the Studio. Empty by default.

Example:

lua
lights = {}

#spotLights

Additional spotlight definitions applied to the Studio. Empty by default.

Example:

lua
spotLights = {}

#Config.Matte & Config.Shadow

Default matte colors, vehicle presentation, and contact-shadow behavior.

#Matte.keyName

Primary key color name from Config.Studio.keyColors.

Example:

lua
keyName = "magenta"

#Matte.alternateKeyName

Alternate key color used by dual-key processing.

Example:

lua
alternateKeyName = "green"

#Matte.primaryColor

Default indexed primary vehicle color used for matte passes.

Example:

lua
primaryColor = 111

#Matte.secondaryColor

Default indexed secondary vehicle color used for matte passes.

Example:

lua
secondaryColor = 111

#Matte.pearlescentColor

Default indexed pearlescent color used for matte passes.

Example:

lua
pearlescentColor = 111

#Matte.wheelColor

Default indexed wheel color used for matte passes.

Example:

lua
wheelColor = 111

#Matte.clearLivery

Clears the vehicle livery for matte capture when enabled.

Example:

lua
clearLivery = true

#Matte.beautyBackgroundColor

Neutral background color used by beauty-image analysis.

Example:

lua
beautyBackgroundColor = { r = 96, g = 104, b = 112, a = 255 }

#Shadow.enabled

Enables the projected/contact-shadow capture workflow.

Example:

lua
Config.Shadow = {
    enabled = true,
}

#Config.Camera

Default framing, adaptive analysis, centering, height, and free-camera controls.

#fov

Default studio camera field of view.

Example:

lua
fov = 34.0

#heading

Default orbit heading used to position the camera around the vehicle.

Example:

lua
heading = 340.0

#aspectRatio

Capture aspect ratio. The default is 16:9.

Example:

lua
aspectRatio = 16.0 / 9.0

#frameFill

Target fraction of the frame occupied by the vehicle during normal fitting.

Example:

lua
frameFill = 0.98

#fitPadding

Additional multiplier applied around the fitted vehicle bounds.

Example:

lua
fitPadding = 1.0

#distanceMultiplier

Scales the calculated camera distance after fitting.

Example:

lua
distanceMultiplier = 0.94

#minDistance

Minimum allowed fitted camera distance.

Example:

lua
minDistance = 2.5

#maxDistance

Maximum allowed fitted camera distance.

Example:

lua
maxDistance = 160.0

#distancePadding

Fixed distance added after camera fitting.

Example:

lua
distancePadding = 0.0

#fitBoundsScale

Per-axis scaling applied to vehicle bounds during framing.

Example:

lua
fitBoundsScale = { x = 0.96, y = 0.90, z = 0.96 }

#adaptiveFramingEnabled

Enables browser-assisted adaptive framing by default. Players can still select supported framing modes in the Studio.

Example:

lua
adaptiveFramingEnabled = false

#adaptiveFramingMaxBatchSize

Maximum batch size allowed to use adaptive framing.

Example:

lua
adaptiveFramingMaxBatchSize = 1000

#adaptiveFramingAnalysisMaxWidth

Maximum analysis-image width used by adaptive framing.

Example:

lua
adaptiveFramingAnalysisMaxWidth = 960

#adaptiveAnalysisBackgroundColor

Neutral background expected by adaptive framing analysis.

Example:

lua
adaptiveAnalysisBackgroundColor = { r = 96, g = 104, b = 112, a = 255 }

#adaptiveAnalysisLightMultiplier

Studio light multiplier used by the adaptive analysis pass.

Example:

lua
adaptiveAnalysisLightMultiplier = Config.Capture.studioLightIntensityMultiplier

#adaptiveTargetFill

Target visible-frame fill used by adaptive framing.

Example:

lua
adaptiveTargetFill = 0.86

#adaptiveMinDistanceScale

Minimum distance scale adaptive framing may apply.

Example:

lua
adaptiveMinDistanceScale = 0.76

#adaptiveMaxDistanceScale

Maximum distance scale adaptive framing may apply.

Example:

lua
adaptiveMaxDistanceScale = 1.25

#adaptiveHorizontalOffsetStrength

Strength of horizontal recentering from adaptive analysis.

Example:

lua
adaptiveHorizontalOffsetStrength = 0.85

#adaptiveVerticalOffsetStrength

Strength of vertical recentering from adaptive analysis.

Example:

lua
adaptiveVerticalOffsetStrength = 0.85

#adaptiveMaxHorizontalOffsetRatio

Maximum horizontal offset as a fraction of frame size.

Example:

lua
adaptiveMaxHorizontalOffsetRatio = 0.30

#adaptiveMaxVerticalOffsetRatio

Maximum vertical offset as a fraction of frame size.

Example:

lua
adaptiveMaxVerticalOffsetRatio = 0.60

#adaptiveMinTopMargin

Minimum top margin targeted by adaptive framing.

Example:

lua
adaptiveMinTopMargin = 0.04

#adaptiveMinBottomMargin

Minimum bottom margin targeted by adaptive framing.

Example:

lua
adaptiveMinBottomMargin = 0.04

#adaptiveVerticalMarginStrength

Correction strength used when vertical margins are too small.

Example:

lua
adaptiveVerticalMarginStrength = 3.0

#adaptiveVerticalBalanceStrength

Strength used to balance top and bottom margins.

Example:

lua
adaptiveVerticalBalanceStrength = 0.50

#adaptiveMarginZoomStrength

Zoom correction strength derived from adaptive margins.

Example:

lua
adaptiveMarginZoomStrength = 1.0

#adaptiveFramingIterations

Maximum adaptive framing correction iterations.

Example:

lua
adaptiveFramingIterations = 3

#adaptiveMinimumIterations

Minimum adaptive iterations before framing may settle.

Example:

lua
adaptiveMinimumIterations = 2

#adaptiveSafeMargin

Additional safety margin retained around analyzed vehicle pixels.

Example:

lua
adaptiveSafeMargin = 0.025

#adaptiveTimeout

Adaptive analysis timeout in milliseconds.

Example:

lua
adaptiveTimeout = 5000

#targetCenteringEnabled

Enables the normal target-centering pass.

Example:

lua
targetCenteringEnabled = true

#targetCenteringIterations

Maximum target-centering correction iterations.

Example:

lua
targetCenteringIterations = 2

#targetCenteringStrength

Strength applied to each target-centering correction.

Example:

lua
targetCenteringStrength = 0.85

#targetCenteringMaxOffsetRatio

Maximum target-centering offset as a fraction of the frame.

Example:

lua
targetCenteringMaxOffsetRatio = 0.30

#targetCenteringFullHeadingDelta

Heading delta at which full target-centering correction is applied.

Example:

lua
targetCenteringFullHeadingDelta = 90.0

#heightMultiplier

Scales camera height from vehicle bounds.

Example:

lua
heightMultiplier = 0.36

#heightOffset

Fixed camera-height adjustment.

Example:

lua
heightOffset = 0.25

#targetHeightMultiplier

Scales target height from vehicle bounds.

Example:

lua
targetHeightMultiplier = 0.0

#targetHeightOffset

Fixed target-height adjustment.

Example:

lua
targetHeightOffset = 0.0

#freecam

Free-camera movement, sensitivity, FOV limits, and named bone-relative presets. Add presets with a stable ID, locale label key, position, target, and FOV.

Example:

lua
freecam = {
    speed = 4.0,
    fastMultiplier = 4.0,
    slowMultiplier = 0.25,
    lookSensitivity = 7.5,
    fovStep = 2.5,
    minFov = 10.0,
    maxFov = 80.0,
    presets = { ... },
}

#Config.Vehicle

Default capture-vehicle plate, glass, lighting, condition, and paint presentation.

#plate

Plate text applied to Studio-spawned vehicles.

Example:

lua
plate = "ZYKE"

#windowTint

Default FiveM window-tint index.

Example:

lua
windowTint = 0

#openWindowsForBeauty

Opens configured windows during beauty captures.

Example:

lua
openWindowsForBeauty = false

#openWindowsForMatte

Opens configured windows during matte captures.

Example:

lua
openWindowsForMatte = false

#rollDownWindowIndexes

Window indexes rolled down when the selected capture mode opens windows.

Example:

lua
rollDownWindowIndexes = { 0, 1, 2, 3, 4, 5, 6, 7 }

#smashWindowIndexes

Window indexes available to the window-removal capture fallback.

Example:

lua
smashWindowIndexes = { 0, 1, 2, 3, 4, 5, 6, 7 }

#removeWindowIndexes

Window indexes removed by the corresponding capture fallback.

Example:

lua
removeWindowIndexes = { 0, 1, 2, 3, 4, 5, 6, 7 }

#dirtLevel

Dirt level applied to capture vehicles.

Example:

lua
dirtLevel = 0.0

#interiorLight

Default interior-light state.

Example:

lua
interiorLight = false

#forceLightsOff

Forces normal vehicle lights off during controlled captures.

Example:

lua
forceLightsOff = true

#lightMultiplier

Vehicle light intensity multiplier.

Example:

lua
lightMultiplier = 0.0

#defaultPrimaryColor

Default indexed primary paint color.

Example:

lua
defaultPrimaryColor = 0

#defaultSecondaryColor

Default indexed secondary paint color.

Example:

lua
defaultSecondaryColor = 0

#defaultCustomPrimaryColor

Default custom RGB primary paint color.

Example:

lua
defaultCustomPrimaryColor = { r = 255, g = 255, b = 255, a = 255 }

#defaultCustomSecondaryColor

Default custom RGB secondary paint color.

Example:

lua
defaultCustomSecondaryColor = { r = 255, g = 255, b = 255, a = 255 }

#defaultPearlescentColor

Default indexed pearlescent paint color.

Example:

lua
defaultPearlescentColor = 4

#defaultWheelColor

Default indexed wheel color.

Example:

lua
defaultWheelColor = 111

#displayPaintForBeautyCapture

Keeps selected display paint for beauty captures instead of the normal beauty defaults.

Example:

lua
displayPaintForBeautyCapture = false

#displayPaintForNaturalCapture

Keeps selected display paint for natural captures.

Example:

lua
displayPaintForNaturalCapture = false

#displayPrimaryColor

Indexed primary paint shown by the initial Studio display vehicle.

Example:

lua
displayPrimaryColor = 111

#displaySecondaryColor

Indexed secondary paint shown by the initial Studio display vehicle.

Example:

lua
displaySecondaryColor = 111

#displayCustomPrimaryColor

Custom primary display color, or false to use the indexed color.

Example:

lua
displayCustomPrimaryColor = false

#displayCustomSecondaryColor

Custom secondary display color, or false to use the indexed color.

Example:

lua
displayCustomSecondaryColor = false

#displayPrimaryPaintType

FiveM paint type used for the display primary color.

Example:

lua
displayPrimaryPaintType = 3

#displaySecondaryPaintType

FiveM paint type used for the display secondary color.

Example:

lua
displaySecondaryPaintType = 3

#displayPearlescentColor

Indexed pearlescent color shown by the display vehicle.

Example:

lua
displayPearlescentColor = 111

#displayWheelColor

Indexed wheel color shown by the display vehicle.

Example:

lua
displayWheelColor = 111

#Config.IncludedVehicleClasses

Vehicle classes included when the Studio builds its bulk model list. Set a class to false or remove it to exclude that class.

#Class map

Uses the FiveM GetVehicleClass indexes. The current beta enables classes 0 through 22, including land vehicles, boats, aircraft, service vehicles, trains, and open-wheel vehicles.

Example:

lua
Config.IncludedVehicleClasses = {
    [0] = true,  -- Compacts
    [7] = true,  -- Super
    [14] = true, -- Boats
    [22] = true, -- Open Wheel
}

#Config.Weather

Capture time/weather and supported weather-resource pause/resume events.

#enabled

Applies the configured time and weather during capture sessions.

Example:

lua
enabled = true

#hour

Capture hour.

Example:

lua
hour = 12

#minute

Capture minute.

Example:

lua
minute = 0

#second

Capture second.

Example:

lua
second = 0

#type

FiveM weather type used during capture.

Example:

lua
type = "EXTRASUNNY"

#resources

Weather integrations checked in order. Each entry names a resource and the events/arguments used to pause and restore synchronization. Add your provider here when it is not included.

Example:

lua
resources = {
    {
        name = "qb-weathersync",
        disableEvent = "qb-weathersync:client:DisableSync",
        enableEvent = "qb-weathersync:client:EnableSync",
    },
}

#Config.Settings

Menu access, routing-bucket allocation, and server/personal settings shown by the Studio.

#fullMenuAccessPermission

ACE permission or permission list required to open the full Studio. false, nil, or an empty table allows unrestricted access and is not recommended on public servers.

Example:

lua
fullMenuAccessPermission = { "command" }

#captureRoutingBucketBase

Base bucket used for isolated capture sessions. Keep the generated range clear of routing buckets owned by other resources.

Example:

lua
captureRoutingBucketBase = 150000

#serverSettings.settings

Definitions exposed as server-managed Studio settings. Empty by default.

Example:

lua
serverSettings = {
    settings = {},
}

#personalSettings.kvp

Client KVP key used for saved Image Studio preferences.

Example:

lua
kvp = "zyke_imagestudio:personalSettings"

#personalSettings.settings

Personal settings shown in the Studio. default applies before a player saves a value; force = true applies and locks the configured value without overwriting the saved preference.

Example:

lua
settings = {
    {
        name = "showUnnamedColors",
        values = { false, true },
        default = false,
        force = false,
        location = "studio",
    },
    {
        name = "toolbarPosition",
        values = { "left", "middle" },
        default = "left",
        force = false,
        location = "studio",
    },
}

#Config.PlayerCapture

Queue, timeout, and output rules for captures requested by another trusted server resource.

#enabled

Allows server resources to request personal-vehicle capture sessions.

Example:

lua
enabled = true

#processingConcurrency

Number of player capture stages processed at the same time.

Example:

lua
processingConcurrency = 1

#maxQueuedProcessing

Maximum queued stages while all processing slots are busy.

Example:

lua
maxQueuedProcessing = 20

#processingTimeoutSeconds

Maximum time allowed for one leased capture/final stage.

Example:

lua
processingTimeoutSeconds = 120

#sessionInactivityMinutes

Idle duration before an abandoned player session is removed.

Example:

lua
sessionInactivityMinutes = 15

#output.format

Final player-capture format. Supported values are png and webp; invalid values fall back to WebP.

Example:

lua
format = "webp"

#output.width

Target output width, clamped by the runtime and never used to upscale beyond rendered dimensions.

Example:

lua
width = 800

#output.quality

Output quality from 1 to 100.

Example:

lua
quality = 95

#output.uploadSource

Uploads the reusable transparent source as <filename>_source after the final image succeeds.

Example:

lua
uploadSource = false

#Config.Hosting

Hosted publishing, library refresh, queue limits, local cleanup, and recovery retention.

#removeLocalAfterPublish

Removes local capture artifacts after confirmed hosted publication when they are no longer required.

Example:

lua
removeLocalAfterPublish = true

#captureUploadBatchSize

Maximum number of capture artifacts grouped into one hosted upload batch.

Example:

lua
captureUploadBatchSize = 250

#libraryRefreshIntervalMinutes

Interval used to refresh the hosted library cache.

Example:

lua
libraryRefreshIntervalMinutes = 5

#publishFormatPriority

Preferred format order when multiple artifacts represent the same logical image.

Example:

lua
publishFormatPriority = { "webp", "png" }

#uploadConcurrency

Maximum simultaneous Media Studio uploads from the hosted publisher.

Example:

lua
uploadConcurrency = 4

#maxQueuedJobs

Maximum hosted publishing jobs waiting in the queue.

Example:

lua
maxQueuedJobs = 20

#maxArtifactsPerJob

Maximum logical artifacts accepted by one hosted publishing job.

Example:

lua
maxArtifactsPerJob = 5000

#maxSessionBytes

Maximum total bytes accepted for one capture session.

Example:

lua
maxSessionBytes = 256 * 1024 * 1024

#cleanup.enabled

Runs periodic hosted-state and temporary-file cleanup.

Example:

lua
enabled = true

#cleanup.intervalMinutes

Cleanup interval in minutes.

Example:

lua
intervalMinutes = 60

#cleanup.transientGraceMinutes

Grace period before abandoned transient artifacts become cleanup candidates.

Example:

lua
transientGraceMinutes = 60

#cleanup.completedJobRetentionDays

Days to retain completed publish-job history.

Example:

lua
completedJobRetentionDays = 7

#cleanup.failedJobRetentionDays

Days to retain failed publish-job history for investigation/retry.

Example:

lua
failedJobRetentionDays = 30

#cleanup.orphanMetadataRetentionDays

Days to retain metadata that no longer has a matching artifact.

Example:

lua
orphanMetadataRetentionDays = 30

#cleanup.orphanMetadataDeleteEnabled

Allows cleanup to delete orphan metadata after its retention period.

Example:

lua
orphanMetadataDeleteEnabled = false

#cleanup.localDeliveryRetentionDays

Days to retain local delivery files, or false to disable age-based pruning.

Example:

lua
localDeliveryRetentionDays = false

#cleanup.localDeliveryPruneAllowlist

Allowlist used when local-delivery pruning is enabled.

Example:

lua
localDeliveryPruneAllowlist = {}

#cleanup.trashRetentionHours

Hours deleted local artifacts remain recoverable in trash.

Example:

lua
trashRetentionHours = 24

#cleanup.quarantineRetentionHours

Hours quarantined files are retained.

Example:

lua
quarantineRetentionHours = 24

#cleanup.quarantineMaxFiles

Maximum number of quarantined files retained.

Example:

lua
quarantineMaxFiles = 100