Skip to content

Configuration

Configuration

Everything a server owner is meant to touch lives in config.lua, and the file is commented section by section. Permissions, duration and limits are covered on Permissions & Duration; the webhook has its own page. This page covers the rest.

General

config.lua
Config.Command      = 'status'
Config.Keybind      = ''             -- 'F6', 'F7', 'INSERT'… empty disables it
Config.ClearCommand = 'statusclear'
Config.Debug        = false

In-world text

What other players see floating on the ped.

Option Default Purpose
Config.Text.ViewDistance 6.0 Nothing is drawn beyond this distance, in metres.
Config.Text.ScanInterval 800 How often (ms) the client rescans for nearby players carrying notes. Higher is cheaper and slower to appear.
Config.Text.Size 0.34 Base scale; the script also scales with camera distance.
Config.Text.Font 4 GTA font id — 0 chalet, 1 sign, 2 slab, 4 chalet comprime, 7 pricedown.
Config.Text.Outline true Dark outline behind the text so it stays readable on any surface.
Config.Text.MinScale / MaxScale 0.10 / 0.58 Clamp so text never becomes unreadable or comically large.
Config.Text.Alpha 225 Text opacity, 0–255.
Config.Text.ColorBySeverity true Tint the text with the severity colour. false = always white.
Config.Text.White 255, 255, 255 Colour used when severity tinting is off or unknown.
Config.Text.OnlyWhileAiming false Only draw while the observer holds the aim key.

Camera

The panel opens over a transparent interface and the game camera does the work.

Option Default Purpose
Config.Camera.AutoFrame true Measure the ped head to feet and frame it automatically. Recommended — it works on any ped model.
Config.Camera.Fill 0.88 How much of the screen height the body fills when AutoFrame is on.
Config.Camera.VerticalNudge 0.0 Fine tuning in metres. Positive moves the character down the screen.
Config.Camera.Distance 3.35 Distance from the ped — only used when AutoFrame is false.
Config.Camera.Height 0.95 Height the camera looks at — only used when AutoFrame is false.
Config.Camera.SideOffset 0.45 Pushes the ped left so the panel never covers it. 0 centres it.
Config.Camera.Fov 34.0 Lower is more of a portrait lens with less distortion.
Config.Camera.ZoomMin / ZoomMax / ZoomStep 1.60 / 4.60 / 0.20 Zoom limits and the step per button press.
Config.Camera.RotateSensitivity 0.6 Degrees the ped turns per pixel of mouse drag.
Config.Camera.FreezePlayer true Freeze the ped while the panel is open.
Config.Camera.HideRadar true Hide the minimap while the panel is open.
Config.Camera.HotspotRefresh 30 How often (ms) bone positions are pushed to the interface. Raise to 50–60 on very busy servers.

When AutoFrame is on, the zoom limits are derived from the measured framing rather than from ZoomMin / ZoomMax, so the buttons always do something sensible whatever the ped's size.

Interface

config.lua
Config.UI = {
    Accent        = '#5b6cf0',  -- any CSS colour
    Watermark     = true,       -- hand-drawn "Status" watermark behind the character
    ShowSeverity  = true,
    ShowTypes     = true,
    CloseOnEscape = true,
}

Types and severities

Both are plain lists. The interface adapts to whatever you put in them; labels come from the locale files.

config.lua
Config.Types = {
    { id = 'injury',  icon = 'activity' },  -- label: type_injury
    { id = 'bandage', icon = 'plus'     },
    { id = 'note',    icon = 'message'  },
}

Config.Severities = {
    { id = 'minor',    color = { r = 143, g = 214, b = 171 } },
    { id = 'moderate', color = { r = 195, g = 201, b = 209 } },
    { id = 'severe',   color = { r = 255, g = 154, b = 157 } },
}

icon is a lucide icon name rendered by the interface. Adding an entry needs a matching type_<id> or sev_<id> line in every locale file.

Body parts

Sixteen regions ship by default, each anchored to a GTA ped bone.

config.lua
{ id = 'head', bone = 31086, offset = { x = 0.0, y = 0.0, z = 0.28 } },
Field Meaning
bone The ped bone index the annotation is anchored to.
offset Nudges the floating in-world text off the bone so it does not sit inside the model. Raise z if text clips into clothing. It does not move the clickable marker.
marker Optional. Nudges the clickable marker in the panel only. Leave it out and the marker sits exactly on the bone, which is right in almost every case.

Removing an entry hides that region everywhere. Adding one needs a valid bone index and a matching bp_<id> line in every locale file.

Advanced

config.lua
Config.Table = 'bupa_syncstatus'  -- created automatically on first start

The lookup tables at the bottom of config.lua (Config.BodyPartMap, Config.TypeMap, Config.SeverityMap) are built from the lists above on start. Do not edit them by hand.