RX HUD V2 Configuration
RX HUD V2 keeps its behaviour in config.lua. Every element can be switched off individually, so start from the defaults and disable only the parts your server already handles elsewhere.
Restart the resource after changing the configuration so every connected client receives the same values.
Performance
Update intervals decide how often the HUD reads player and vehicle state. Player stats change slowly and can be polled less often; vehicle values drive animated gauges and need a shorter interval.
| Setting | Default | Behaviour |
|---|---|---|
updateInterval | 200 | How often player stats such as health, armor, hunger, and thirst update, in milliseconds. |
vehicleUpdateInterval | 50 | How often the vehicle HUD updates, in milliseconds. |
lowPerformanceMode | true | Enables the built-in performance optimizations. |
maxFPS | 60 | Upper bound used for HUD rendering. |
Config.Performance = {
updateInterval = 200,
vehicleUpdateInterval = 50,
lowPerformanceMode = true,
maxFPS = 60
} The shipped
config.luadeclaresConfig.Performancetwice. Lua replaces the whole table on the second declaration, so the first block never applies andvehicleUpdateIntervalends up unset. Keep a single merged table like the one above.
Raising updateInterval lowers CPU cost but makes status bars react later. Lowering vehicleUpdateInterval makes the speedometer smoother at the cost of more frequent updates.
Framework
auto detects the running framework and is correct for almost every server. Set the framework explicitly only when detection picks the wrong one.
| Value | Behaviour |
|---|---|
'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 V2, otherwise detection runs before the framework object exists.
Player HUD
Config.HUD controls the player-side interface: where it sits, how large it is, and which status bars are drawn.
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Enables the player HUD. |
position | 'bottom-left' | Corner used for the player HUD. |
scale | 1.0 | Overall size, from 0.5 to 2.0. |
opacity | 0.9 | Overall opacity, from 0.1 to 1.0. |
Config.HUD = {
enabled = true,
position = 'bottom-left', -- 'bottom-left', 'bottom-right', 'top-left', 'top-right'
scale = 1.0,
opacity = 0.9
} Keep the player HUD and vehicle HUD in different corners. The defaults place them bottom-left and bottom-right so neither overlaps the chat or the minimap.
Animations
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Enables transitions when a bar appears, hides, or changes value. |
duration | 300 | Transition length in milliseconds. |
easing | 'ease-out' | CSS easing function used for the transition. |
Config.HUD.animations = {
enabled = true,
duration = 300,
easing = 'ease-out'
} easing accepts any valid CSS easing value. Disable animations entirely if you prefer the bars to snap to their new value.
Status bars
Health, armor, hunger, and thirst share the same option shape. showWhenFull and showWhenEmpty decide whether a bar stays on screen when it carries no useful information.
| Bar | Visibility default | Behaviour |
|---|---|---|
health | showWhenFull = true | Always visible, including at full health. |
armor | showWhenEmpty = false | Hidden while the player has no armor. |
hunger | showWhenFull = false | Hidden while hunger is full. |
thirst | showWhenFull = false | Hidden while thirst is full. |
Config.HUD.health = {
enabled = true,
showWhenFull = true,
color = '',
icon = 'health.svg'
}
Config.HUD.armor = {
enabled = true,
showWhenEmpty = false,
color = '',
icon = 'armor.svg'
}
Config.HUD.hunger = {
enabled = true,
showWhenFull = false,
color = '',
icon = 'hunger.svg'
}
Config.HUD.thirst = {
enabled = true,
showWhenFull = false,
color = '',
icon = 'thirst.svg'
} An empty color means the bar uses the gradient defined in style.css. Set a hex value here for a flat colour, or leave it empty and edit the matching .health-bar { background: linear-gradient(...) } rule to keep the gradient. icon refers to a file shipped with the resource; replace the file itself rather than pointing the option at an external path.
Stress
Stress is drawn like the other bars but also drives optional screen effects and its own gain and loss logic.
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Enables the stress bar. |
showWhenEmpty | false | Hides the bar while stress is at zero. |
color | '#eb4d4b' | Bar colour. |
icon | 'stress.svg' | Icon used for the bar. |
Config.HUD.stress = {
enabled = true,
showWhenEmpty = false,
color = '#eb4d4b',
icon = 'stress.svg'
} Stress effects
Effects only start once stress passes minStressForEffect, so a low background level never disturbs normal play.
| Setting | Default | Behaviour |
|---|---|---|
shake | true | Shakes the camera at high stress. |
shakeInterval | 10000 | Time between shakes in milliseconds. |
shakeIntensity | 0.5 | Shake strength, from 0.1 to 1.5. |
falling | true | Allows the player to stumble while running at high stress. |
fallChance | 5 | Chance of a stumble as a percentage from 1 to 100. |
screenEffect | true | Enables the blur and flash screen effect. |
minStressForEffect | 50 | Stress 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 bar 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 bar.
Gain factors add stress from combat, driving, and sprinting:
| Setting | Default | Behaviour |
|---|---|---|
onShooting | 0.2 | Stress gained per shot fired. |
onCrash | 10.0 | Stress gained on a vehicle crash. |
minCrashDamage | 5.0 | Minimum engine or body damage drop that counts as a crash. |
onFastDriving.enabled | true | Enables stress gain while speeding. |
onFastDriving.minSpeed | 160.0 | Speed threshold in km/h, converted automatically when the speed unit is mph. |
onFastDriving.amount | 0.05 | Stress gained per second above the threshold. |
onSprinting.enabled | true | Enables stress gain while sprinting. |
onSprinting.amount | 0.35 | Stress 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:
| Setting | Default | Behaviour |
|---|---|---|
passive | 0.10 | Stress lost per second under normal conditions. |
whileSitting | 0.1 | Stress lost per second while sitting or resting. |
whileSwimming | 0.30 | Stress lost per second while swimming. |
onEating | 0.5 | Multiplier applied to stress loss when hunger increases. |
onDrinking | 0.5 | Multiplier 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
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Shows the job and gang panel. |
showJob | true | Displays the player’s job and grade. |
showGang | true | Displays 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 and follows the same position, scale, and opacity model as the player HUD.
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Enables the vehicle HUD. |
position | 'bottom-right' | Corner used for the vehicle HUD. |
scale | 1.0 | Overall size. |
opacity | 0.9 | Overall opacity. |
style | 'circular' | Gauge style: 'circular' or 'linear'. |
Config.VehicleHUD = {
enabled = true,
position = 'bottom-right',
scale = 1.0,
opacity = 0.9,
style = 'circular'
} circular uses dial gauges and suits the default bottom-right placement. linear uses bars and fits better when the vehicle HUD sits along the bottom edge next to other interfaces.
Fuel
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Shows the fuel gauge. |
showWhenFull | false | Hides the gauge while the tank is full. |
color | '#ffa502' | Gauge colour. |
icon | 'fuel.svg' | Icon used for the gauge. |
warningLevel | 20 | Warning threshold as a percentage. |
Config.VehicleHUD.fuel = {
enabled = true,
showWhenFull = false,
color = '#ffa502',
icon = 'fuel.svg',
warningLevel = 20
} Set warningLevel above the point where your fuel stations become hard to reach. A warning at 20 gives most players enough range to divert.
Speed
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Shows the speedometer. |
unit | 'kmh' | Speed unit: 'kmh' or 'mph'. |
showDigital | true | Shows the numeric readout next to the gauge. |
maxspeed | 200 | Value 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.
Engine
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Shows engine information. |
showHealth | true | Displays engine health. |
showTemperature | false | Displays engine temperature. |
warningLevel | 300 | Warning threshold for engine health. |
Config.VehicleHUD.engine = {
enabled = true,
showHealth = true,
showTemperature = false,
warningLevel = 300
} Engine health runs from 0 to 1000, so the default warns the player once the engine is well into its damaged range but before it fails.
Lock status
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Shows the vehicle lock state. |
showIcon | true | Displays the lock icon. |
icon | 'vehiclelock.svg' | Icon used for the lock state. |
Config.VehicleHUD.lock = {
enabled = true,
showIcon = true,
icon = 'vehiclelock.svg'
} Odometer
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Shows vehicle mileage. |
useJGMileage | false | Reads 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 V2. Otherwise keep the built-in odometer so mileage keeps tracking.
Minimap
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Enables minimap handling. |
onlyInVehicle | true | Shows the minimap only while the player is in a vehicle. |
Bigmode | true | Allows the expanded minimap toggle bound to Z. |
zoom | 1.3 | Linear zoom level, from 0.5 to 2.0. |
Config.Minimap = {
enabled = true,
onlyInVehicle = true,
Bigmode = true,
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
| Setting | Default | Behaviour |
|---|---|---|
UseCustomMinimap | true | Tells the HUD that a separate minimap resource is providing the map. |
MapBigBypass | false | Bypasses 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
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Enables HUD notifications. |
position | 'top-right' | Corner used for notifications. |
duration | 3000 | Time a notification stays visible, in milliseconds. |
maxVisible | 5 | Maximum notifications shown at once. |
Config.Notifications = {
enabled = true,
position = 'top-right',
duration = 3000,
maxVisible = 5
} Keep the notification corner clear of the player and vehicle HUD positions. 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.
| Function | Expected 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.