RX HUD V3 Configuration

RX HUD V3 keeps its server-side behaviour in config.lua. The values here are the defaults every player starts from; layout, units, colours, and most visibility rules can then be adjusted by each player from the in-game settings interface and are saved per player.

Restart the resource after changing the configuration so every connected client receives the same defaults.

Because personal settings persist, a config change only affects players who have not overridden that option themselves.

Framework

auto detects the running framework and is correct for almost every server. Set the framework explicitly only when detection picks the wrong one.

ValueBehaviour
'auto'Detects the framework from the started resources.
'esx'Forces the ESX integration.
'qbcore'Forces the QBCore integration.
'qbox'Forces the Qbox integration.
Config.Framework = 'auto'

The framework resource must start before RX HUD V3, otherwise detection runs before the framework object exists.

Player HUD

Config.HUD sets the default size, opacity, and visual style of the player interface. Position is not configured here: every element is placed by the player from the settings interface.

SettingDefaultBehaviour
enabledtrueEnables the player HUD.
scale1.0Overall size, from 0.5 to 2.0.
opacity0.9Overall opacity, from 0.1 to 1.0.
playerStyle'icon'Default player HUD style: 'icon', 'classic', or 'modern'.
Config.HUD = {
    enabled = true,
    scale = 1.0,
    opacity = 0.9,
    playerStyle = 'icon'
}

Each style keeps its own saved colour profile, so switching styles does not carry colours over from the previous one. Pick the default that suits your server and let players change it if they prefer another.

Stamina

SettingDefaultBehaviour
enabledtrueShows the stamina indicator.
showWhenFullfalseKeeps the indicator on screen even when the player is rested.
Config.HUD.stamina = {
    enabled = true,
    showWhenFull = false
}

With showWhenFull disabled, the indicator only appears while the player is sprinting or recovering. That keeps the screen clear during normal movement, which is the usual choice.

Stress

Stress is drawn like the other indicators but also drives optional screen effects and its own gain and loss logic.

SettingDefaultBehaviour
enabledtrueEnables the stress indicator.
showWhenEmptyfalseHides the indicator while stress is at zero.
Config.HUD.stress = {
    enabled = true,
    showWhenEmpty = false
}

Stress effects

Effects only start once stress passes minStressForEffect, so a low background level never disturbs normal play.

SettingDefaultBehaviour
shaketrueShakes the camera at high stress.
shakeInterval10000Time between shakes in milliseconds.
shakeIntensity0.5Shake strength, from 0.1 to 1.5.
fallingtrueAllows the player to stumble while running at high stress.
fallChance5Chance of a stumble as a percentage from 1 to 100.
screenEffecttrueEnables the blur and flash screen effect.
minStressForEffect50Stress level required before any effect starts.
Config.HUD.stress.effects = {
    shake = true,
    shakeInterval = 10000,
    shakeIntensity = 0.5,

    falling = true,
    fallChance = 5,

    screenEffect = true,
    minStressForEffect = 50
}

Keep shakeIntensity low. Values near 1.5 are strong enough to interfere with aiming and driving, which players usually read as a bug rather than a stress effect.

Built-in stress logic

autoLogic lets the HUD manage stress on its own, so the indicator still works without a separate stress resource.

Config.HUD.stress.autoLogic = {
    enabled = true
}

Disable autoLogic if another resource already writes stress values. Leaving both active means two systems raise and lower the same value.

Gain factors add stress from combat, driving, and sprinting:

SettingDefaultBehaviour
onShooting0.2Stress gained per shot fired.
onCrash10.0Stress gained on a vehicle crash.
minCrashDamage5.0Minimum engine or body damage drop that counts as a crash.
onFastDriving.enabledtrueEnables stress gain while speeding.
onFastDriving.minSpeed160.0Speed threshold in km/h, converted automatically when the speed unit is mph.
onFastDriving.amount0.05Stress gained per second above the threshold.
onSprinting.enabledtrueEnables stress gain while sprinting.
onSprinting.amount0.35Stress gained per second while sprinting.
Config.HUD.stress.autoLogic.gain = {
    onShooting = 0.2,
    onCrash = 10.0,
    minCrashDamage = 5.0,

    onFastDriving = {
        enabled = true,
        minSpeed = 160.0,
        amount = 0.05
    },

    onSprinting = {
        enabled = true,
        amount = 0.35
    }
}

Loss factors remove stress over time and reward resting, swimming, eating, and drinking:

SettingDefaultBehaviour
passive0.10Stress lost per second under normal conditions.
whileSitting0.1Stress lost per second while sitting or resting.
whileSwimming0.30Stress lost per second while swimming.
onEating0.5Multiplier applied to stress loss when hunger increases.
onDrinking0.5Multiplier applied to stress loss when thirst increases.
Config.HUD.stress.autoLogic.loss = {
    passive = 0.10,
    whileSitting = 0.1,
    whileSwimming = 0.30,
    onEating = 0.5,
    onDrinking = 0.5
}

Balance gain against passive loss. If sprinting adds 0.35 per second while passive loss removes 0.10, a player who runs constantly reaches the effect threshold in well under a minute, which is usually too fast for a roleplay server.

Player information

SettingDefaultBehaviour
enabledtrueShows the job and gang panel.
showJobtrueDisplays the player’s job and grade.
showGangtrueDisplays the player’s gang and grade.
Config.HUD.playerInfo = {
    enabled = true,
    showJob = true,
    showGang = true
}

Turn showGang off on servers without gang systems. ESX servers without a gang table should also leave it disabled, or supply the data through Config.CustomFunctions.GetGang.

Vehicle HUD

Config.VehicleHUD draws while the player is in a vehicle. Like the player HUD, its position is set by the player rather than in the config.

SettingDefaultBehaviour
enabledtrueEnables the vehicle HUD.
scale1.0Overall size.
opacity0.9Overall opacity.
style'sleek'Default vehicle HUD style: 'sleek', 'compact', or 'street'.
Config.VehicleHUD = {
    enabled = true,
    scale = 1.0,
    opacity = 0.9,
    style = 'sleek'
}

Fuel, engine condition, gear, lights, locks, handbrake, seatbelt, and turn signals are part of the vehicle styles and do not need individual config entries. Players control which of them stay visible from the settings interface.

Speed

SettingDefaultBehaviour
enabledtrueShows the speedometer.
unit'kmh'Default speed unit: 'kmh' or 'mph'.
showDigitaltrueShows the numeric readout next to the gauge.
maxspeed200Value at which the speedometer reads full, always defined in km/h.
Config.VehicleHUD.speed = {
    enabled = true,
    unit = 'kmh',
    showDigital = true,
    maxspeed = 200
}

maxspeed stays in km/h even when unit is 'mph'; only the displayed value is converted. Set it slightly above the top speed of your fastest common vehicle so the needle rarely pins.

Odometer

SettingDefaultBehaviour
enabledtrueShows vehicle mileage.
useJGMileagefalseReads mileage from jg-vehiclemileage exports instead of the built-in odometer.
Config.VehicleHUD.odometer = {
    enabled = true,
    useJGMileage = false
}

Enable useJGMileage only if jg-vehiclemileage is installed and started before RX HUD V3. Otherwise keep the built-in odometer, which persists mileage on its own.

Minimap

SettingDefaultBehaviour
enabledtrueEnables minimap handling.
onlyInVehicletrueShows the minimap only while the player is in a vehicle.
BigmodefalseAllows the expanded minimap toggle bound to Z.
zoom1.3Linear zoom level, from 0.5 to 2.0.
Config.Minimap = {
    enabled = true,
    onlyInVehicle = true,
    Bigmode = false,
    zoom = 1.3
}

onlyInVehicle is the usual choice for roleplay servers because it keeps the map out of the way on foot. Turn it off if your server relies on the minimap for navigation while walking.

Custom minimap resources

SettingDefaultBehaviour
UseCustomMinimaptrueTells the HUD that a separate minimap resource is providing the map.
MapBigBypassfalseBypasses the HUD’s own expanded-map handling.
Config.UseCustomMinimap = true
Config.MapBigBypass = false

These two flags only matter when another resource already replaces the minimap. Enable MapBigBypass when that resource handles the expanded map itself and the two implementations fight over the same state.

Notifications

SettingDefaultBehaviour
enabledtrueEnables HUD notifications.
position'top-right'Corner used for notifications.
duration3000Time a notification stays visible, in milliseconds.
maxVisible5Maximum notifications shown at once.
Config.Notifications = {
    enabled = true,
    position = 'top-right',
    duration = 3000,
    maxVisible = 5
}

Lower maxVisible if notifications from other resources are already competing for the same corner.

Weather labels

Config.WeatherLabels maps each GTA weather type to the text shown on the HUD. Change the values to translate them or to match your server’s tone.

Config.WeatherLabels = {
    EXTRASUNNY = 'Sunny',
    CLEAR = 'Clear',
    CLOUDS = 'Cloudy',
    OVERCAST = 'Overcast',
    RAIN = 'Rainy',
    THUNDER = 'Thunderstorm',
    CLEARING = 'Clearing',
    SMOG = 'Smog',
    FOGGY = 'Foggy',
    NEUTRAL = 'Neutral',
    XMAS = 'Snowy',
    BLIZZARD = 'Blizzard',
    SNOWLIGHT = 'Light Snow',
    SNOW = 'Snow'
}

Keep the keys exactly as they are: they are the weather type names the game reports. Only edit the labels on the right, and keep them short so they fit the HUD at smaller resolutions.

Custom job and gang functions

Config.CustomFunctions overrides how the HUD reads job and gang data. Use it for custom frameworks or non-standard ESX and QBCore setups.

FunctionExpected return
GetJob{ name = 'job_name', label = 'Job Label', grade = 0 }
GetGang{ name = 'gang_name', label = 'Gang Label', grade = 0 }
Config.CustomFunctions = {
    GetJob = function()
        -- local jobData = exports['my_custom_framework']:GetPlayerJob()
        -- return { name = jobData.name, label = jobData.label, grade = jobData.grade }
        return nil
    end,

    GetGang = function()
        -- local gangData = exports['my_custom_framework']:GetPlayerGang()
        -- return { name = gangData.name, label = gangData.label, grade = gangData.grade }
        return nil
    end
}

Returning nil falls back to the default framework logic, which is what both functions do out of the box. Override only the one you need; leaving GetGang at nil while replacing GetJob is perfectly valid.

Debug mode

Config.Debug = false

Keep debug disabled in production. Enable it temporarily while diagnosing framework detection, missing job or gang data, or a status value that never updates, then turn it off again to keep console output useful.