Skip to the content
Docs

HUDs (JG HUD & others)

On this page7
lua
Config.HudSystem = 'auto'

Support and auto order

SystemSupportAuto orderWhat we do
our own NUI HUDSupportedalways onThe recognition HUD.
JG HUDSupported1Default offset; optional hide stack.
17mov_HudStub2Hide stack only.
0r-hud-v3Stub3Hide stack only.
mHudStub4Hide stack only.
qb-hud, qbx_hud, esx_hud, ps-hudDetect only5–8Default offset.

The two things the selector controls

1. Where our HUD sits by default

lua
Config.Hud.Position = { x = 0.985, y = 0.02 }
Config.Hud.Offsets = {
    ['jg-hud'] = { x = 0.0, y = 0.08 },   -- below JG's usual top-right block
}

The offset applies only while the player has no saved HUD position of their own. The moment they move it in /recognition:hud, their choice wins and the offset stops mattering.

Add an entry for any other HUD that owns your top-right corner.

2. Whether the other HUD is hidden behind our full-screen windows

lua
Config.Hud.HideThirdPartyOnFullscreen = false   -- off by default

If our resource stops while a HUD is hidden, the other HUD is shown once on the way out — a restart never leaves somebody's HUD switched off.

JG HUD

What we ship

  1. Our own HUD, always. It works exactly the same with or without JG.

  2. Detection by resource state, plus a guarded first call. The first toggleHud is wrapped so that a build without that export cannot error: if it does, the adapter turns itself off for the session and prints one warning.

    Code
    jg-hud has no toggleHud export on this version; other HUDs are left alone.

    That happens on the unofficial resources that share the jg-hud folder name.

  3. A default offset of { x = 0.0, y = 0.08 }, which puts our HUD below JG's usual top-right block. Players move it freely.

  4. An optional hide stack around our full-screen windows, off by default.

What we never do

  • Write JG's own state bags (stress, hunger, thirst) to squeeze our percentage into one of their built-in slots. That breaks real stress systems, and it is not what those slots mean.
  • Edit their files.
  • Imply affiliation, or use their name or logo as an endorsement.

What JG exposes today

Four client exports, and no component API: toggleHud(show), toggleVehicleControl(show), setWeaponAmmoOverride(clip, reserve), clearWeaponAmmoOverride(). There is no visibility getter and no documented event, which is exactly why the hide stack is opt-in rather than on.

If JG ever adds a way to register third-party elements, an opt-in mode for it may follow — with our own HUD still the default. We re-check their exports page and changelog before every release.

JG and the face implant

After an implant the framework updates the character's name and JG reads the name from the framework, so there is nothing to call. If a future JG build needs a re-init after a rename, it goes in the adapter.

Strict state-bag mode

You can keep JG's strict state-bag mode on: we never write player state from a client.

17mov_Hud, 0r-hud-v3, mHud

Hide-stack only, through each one's own toggle:

HUDCall
17mov_Hudits ToggleDisplay(bool)
0r-hud-v3its ToggleVisible(bool)
mHudits show / hide events

All three are written from each HUD's documentation. If a call errors, the adapter turns itself off for the session and leaves that HUD alone rather than retrying.

qb-hud, qbx_hud, esx_hud, ps-hud

Detect only. We notice them and apply the default offset — {0, 0} unless you add one for them in Config.Hud.Offsets.

Our HUD's own settings

Everything about how our HUD looks and behaves is in HUD & Prompt. The short version:

KeyDefaultWhat it does
Config.Hud.Position{ x = 0.985, y = 0.02 }Default anchor position.
Config.Hud.Anchor'top-right'Which corner that refers to.
Config.Hud.Scale1.0Default size.
Config.Hud.Shape'circle'circle or rounded-square icons.
Config.Hud.Background'panel'panel, text, or none.
Config.Hud.HideInPauseMenutrueHide ours while the pause menu is open.
Config.Hud.AllowQuietModefalseLet players hide the grey idle view.

Players adjust position, scale, shape and the marks toggle in /recognition:hud. Those choices are saved on their own PC — not on your server, and not in any table.

Custom

Set Config.HudSystem = 'custom' and fill the 'custom' branch in bridge/hud.lua. Two things: say whether the HUD is present, and show or hide it.

See Writing a Custom Adapter.