Bablo ResourcesDocs

Configuration

Edit shared/settings.lua inside bablo-freecam. The examples below use the shipped defaults unless marked as an example. Restart the resource after editing.

Commands & opening key

LUA
Settings.Command = "freecam"
Settings.CommandAlias = "cam"
Settings.KeyMapping = {
    enabled = true,
    description = "Toggle Photo Freecam",
    defaultKey = ""
}

Use command names without a leading slash in the file. Set the alias to "" to disable it. An empty defaultKey means no opening key is assigned by default; set it to a key such as "F6" to provide one. Players can change the registered opening shortcut in their FiveM key bindings.

This setting maps the command that opens Freecam, not the individual movement or Studio controls.

Access permissions

LUA
Settings.AdminOnly = false
Settings.AllowedGroups = { "admin", "superadmin", "god", "mod" }
Settings.AllowedAce = "bablo.freecam"

When AdminOnly is false, all players can use Freecam. When it is true, the server accepts either the configured ACE permission or a matching framework permission/group. Standalone servers use ACE permission for restricted access.

For example, enable admin-only mode and add this to server.cfg to allow members of your existing group.admin principal:

TXT
add_ace group.admin bablo.freecam allow

That line grants the permission to the group; players must already be assigned to that group in your server permissions.

Camera distance

LUA
Settings.MaxDistance = 20.0

This is a spherical movement radius in metres, measured from the character’s position when Freecam opens. It does not follow the character if another script moves them. It is not a HUD safe-zone or screen-margin setting.

Set it to 10.0 for a tighter 10-metre radius, or 0 / false for unlimited movement. The limit constrains camera movement, not the lens zoom.

Movement speed & sensitivity

LUA
Settings.Speed = {
    normal = 8.0,
    fast = 24.0,
    slow = 1.5,
    vertical = 6.0,
    roll = 70.0,
    minSpeed = 0.05,
    maxSpeed = 4.0
}
 
Settings.Sensitivity = {
    x = 3.5,
    y = 3.5
}

Normal, fast, and slow movement values are metres per second at a Studio multiplier of 1.0x. The multiplier scales those speeds. Movement and keyboard roll use frame time; roll is degrees per second. Sensitivity changes horizontal and vertical mouse look.

For slower default framing, for example, change normal to 4.0 and slow to 0.75.

In the current implementation, vertical movement uses the selected normal/fast/slow speed. Speed.vertical is present in the file but is not read by the movement loop. minSpeed and maxSpeed are not passed to the Studio UI, so changing them does not change its slider limits.

Lens & roll

LUA
Settings.FOV = {
    default = 60.0,
    min = 12.0,
    max = 110.0,
    step = 2.0
}
 
Settings.Roll = {
    maxAngle = 85.0,
    step = 1.0
}

FOV values are degrees. default is applied when Freecam opens, and min / max clamp lens changes. step controls normal scroll zoom; holding Shift uses a fixed 0.4-degree step.

Roll.maxAngle limits keyboard tilt in either direction. Roll.step is not used by the current movement loop; keyboard roll speed comes from Settings.Speed.roll.

The Studio sliders have their own UI bounds. If you customize lens or roll limits, review the UI bounds too; changing Lua configuration alone does not redraw the slider range.

Player protection

LUA
Settings.PlayerSafety = {
    freeze = false,
    invincible = true,
    invisible = false,
    disableCollision = false
}

freeze sets the initial position-lock state, which can also be toggled in Studio. invincible protects the player ped while Freecam is active. disableCollision disables ped collision during the session when enabled.

invisible exists in the configuration but is not applied by the current camera code. The character remains visible for photos. Freeze locks position; it does not stop animation playback.

Depth of field

LUA
Settings.DepthOfField = {
    enabled = false,
    nearDof = 1.5,
    farDof = 10.0,
    strength = 0.6
}

enabled sets the initial blur state; strength = 0.6 corresponds to 60%. Live strength is clamped between 5% and 100%; turn depth of field off for no blur.

The current camera starts with auto focus enabled, a 2.5-metre manual focus distance, and a 1.2-metre focus depth. Studio exposes these focus controls. The live focus planes are calculated from those controls, so nearDof and farDof in the settings table do not control the current effect.

Studio light

LUA
Settings.StudioLight = {
    enabled = false,
    range = 14.0,
    intensity = 4.5,
    color = { r = 255, g = 242, b = 225 }
}

The light is positioned at the camera. Range controls its reach, intensity controls brightness, and the RGB values define the light color. Use whole numbers from 0 to 255 for each color channel.

Filters

Settings.Filters contains the color-grading presets sent to the UI. Keep Natural / Standard as the first entry: filter reset returns to the first item.

Each entry has this structure:

LUA
{
    id = "cinema",
    label = "Filmic Cinema",
    category = "Cinema",
    description = "Warm cinematic movie tone with balanced contrast",
    timecycle = "cinema"
}

Use a unique id and a valid GTA timecycle name in timecycle. Labels and descriptions are displayed in Studio. The UI has a fixed category list; presets with other categories remain available under All.

Text & defaults

Notification strings used by the client are in shared/strings.lua. The resource also includes locales/en.json and locales/hr.json and initializes ox_lib locales. Studio labels live in the frontend; editing locale JSON files alone does not translate the whole interface.

Most Studio adjustments remain in client memory until changed or the resource/client reloads. Opening Freecam resets the FOV, and closing it releases the player freeze. Reset Defaults in Studio uses frontend defaults; it does not rewrite or reload shared/settings.lua.