Jixryo HUD
The player HUD. A radar top right drawing the suite's own map with every script's blips and the GPS line, slanted tags for voice, radio, health and needs, a speedometer with flight gauges, and each player's own settings. Client only.
Version 2.1.1 Updated See it on its script page
On this page
Jixryo HUD is the player HUD in the suite's slant: see-through black, italic capitals, everything leaning like the slash, colour only when it means something. It is client only. It shows, and it never decides.
What players get
- Top right: the radar. With Jixryo Map running it is the suite's own: a map of San Andreas drawn inside a ring of compass ticks, or in a square frame, each player's pick. It turns with the camera or stays north up, you are the white arrow in the middle, and it zooms out as you go faster (on foot, driving, on a boat, flying higher). On it: every blip any script made that GTA would show on its radar, in the blip's own colour with the suite's icon for it (far ones sit on the edge, short-range ones only show near), your waypoint and GTA's route to it as a purple line. Under a tunnel or inside a building the map dims, zooms in and says so. N, E, S and W ride the ring and your heading sits over it. Under it, with no box: the area, the street and cross street, the postal code and the time. Notifications and dispatch cards stack under it. Without Jixryo Map the HUD puts GTA's own radar in the square frame instead.
- Bottom left: one row of slanted tags, each with a thin slanted bar under it. Your voice first: the mic, its bar your range (a third, two thirds, all); while you talk the tag turns white and the bar moves with your voice; changing range writes the range's name for a moment; dead or down, the mic is crossed out in red. On a radio channel the mic becomes a handheld radio with the channel, white with TX while you transmit, green with who is talking while someone else does. A phone call adds a green tag with how long. Then HEALTH and ARMOR in white tags (armour while you wear some; health turns red and beats when low), and the needs as icon tags: food, water, stress, stamina while you run, oxygen under water. Then what is acting on you: the smoke (the joint burning down along its bar, the hits) and each drug, drink or buff from other scripts with its time left (green good, amber bad, red dangerous, chevrons while it makes you faster). On foot the weapon sits over the row with its rounds; money changes pop over it.
- Bottom right, in a vehicle: the speedometer. A ring of slanted rev ticks going red at the end, the gear in a white tag, the speed, the unit, and the lamps: seatbelt (amber and blinking when unbuckled) or harness, helmet on a motorcycle, anchor on a boat, fuel with its gauge, the engine once damaged, lock, cruise with its set speed, the indicators. Over it: "Buckle up", "Ejection risk" in red past the eject speed, "2 unbuckled" for passengers, "No helmet", "Anchor down", "Low fuel". A motorcycle shows its lean. In a helicopter or plane: airspeed in knots, altitude over the ground and the climb, an attitude indicator, fuel, engine, the main rotor or the landing gear, and "Pull up", "Stall", "Rotor damage".
- Bottom centre while you drive: the vehicle's keys.
- The edges pulse red when your health runs low. The HUD fades out while the pause menu is open, while the screen is faded out, before your character loads, and while another script asks it to.
- Your own HUD with
/hud, saved on your PC: the gauges' look (Bars, Rings, Cells, Hex), their layout (Row, Stack, Stair, Grid), numbers on the tags, the radar round or square, north up or turning, blips on or off, the radar's zoom and size, which parts show, when the needs show, MPH or KM/H, the HUD's size and glass darkness, and the layout (Full, Minimal, Cinematic).
What staff get
- Nothing to run on the server. The resource has no server scripts and no database; each player's settings live on their own PC.
- A hook for cutscenes and screens. Any resource hides the HUD for a reason of its own and lets it show again, and a resource's reasons go when it stops.
- Effects and the smoke from your own scripts show on the row through two exports, up to 12 at a time; the HUD only shows them.
- Only changes travel. One thread looks at the game a few times a second and sends the page only the sections that changed, in one message; one thread hides GTA's own HUD pieces every frame. The radar's parts each run on their own clock and send only when something moved. The page draws frames only while something moves.
- The notification stack. The HUD tells the Jixryo ox_lib fork where its top-right column ends and how much room the bottom right needs, so notifications and dispatch cards start under the radar and stop above the speedometer. It is sent again when any of that changes or ox_lib restarts, and taken back when the HUD stops.
- A guard for half-done updates. When
client/radar.luais missing from the running script list (new files restarted withoutrefresh), the HUD says so once in the F8 console and uses GTA's radar in the frame until you do.
Install
What it replaces. Your old HUD: qbx_hud, ps-hud or qb-hud. Stop it; it draws over the same corners and moves the radar its own way. A map mod that streams GTA's radar textures does nothing to this radar.
Order. Copy
jixryo_hudandjixryo_mapinto your resources; the page is already built inweb/build. Start the HUD after what it reads from, with the map before it. Jixryo Map is not in the store today. The manifest depends on ox_lib and qbx_core.server.cfg ensure ox_lib ensure qbx_core ensure pma-voice ensure ox_inventory ensure qbx_seatbelt ensure jixryo_map ensure jixryo_hudItems and database. None.
Optional convars.
setr voice_syncPlayerNames 1so the radio shows who is talking; without it the HUD says "Receiving", never a player's OOC name.setr voice_enableUi 0so pma-voice stops drawing its own range in the bottom-right corner.Restart the server. Updating a running server instead: copy the new files, run
refresh, thenensure jixryo_mapandrestart jixryo_hud.restartalone keeps the manifest the server read at start, so a script file a new version adds is never loaded.
How other scripts' calls behave
- It answers as itself only. Its exports live under
jixryo_hud; it answers no other HUD's names. - What it reads, and from where. Health, armour, stamina and oxygen from the game. Food, water and stress from qbx_core's
hunger,thirstandstressstatebags, else its metadata. Muted from qbx_core'sisdeadandinlaststandmetadata, else the game. Voice range, talking and loudness from pma-voice'sproximitystatebag and the game. The radio from pma-voice'sradioChannelstatebag and itsradioActive,syncRadioData,addPlayerToRadio,removePlayerFromRadioandsetTalkingOnRadioevents. A phone call from lb-phone'sonCallWithstatebag. Money, job and duty from qbx_core's player data (QBCore:Player:SetPlayerData, taken from qbx_core only). The weapon and the rounds you carry from ox_inventory (ox_inventory:currentWeapon,getCurrentWeapon, the ammo counted once a second). The radar's map from Jixryo Map'sinfoexport. Fuel from the vehicle'sfuelstatebag, else the game. Seatbelt and harness from qbx_seatbelt'sseatbeltandharnessplayer statebags, yours and your passengers'. Cruise from acruiseplayer statebag. The postal from a postal resource's export (nearest-postal,getPostalby default). Everything else from the game. - Blips. Make them as you would for GTA's radar (
AddBlipForCoordorAddBlipForEntity, sprite, colour, display, short range). The radar reads them within a quarter of a second of GTA's blip count changing, and every 10 seconds anyway. It draws what GTA's radar would: displays 2, 5, 6, 8, 9 and 10 and over, radius blips, your own arrow and the waypoint left out. - Jixryo MDT asks
unitsfor the player's speed units on its dispatch cards. - It starts and stops with the character (
QBCore:Client:OnPlayerLoadedandOnPlayerUnload), and switches between its own radar and GTA's by itself when Jixryo Map starts or stops.
Its own API
Client exports:
| Export | What it does |
|---|---|
hide(reason, hidden) | Hides the HUD for a reason of your own (hidden true or left out) or lets it show again (false). It shows when no resource has a reason left. |
effect(id, { label, icon, tone, duration?, level?, mods? }) | Puts something acting on the player on the row. label up to 32 characters; icon one of the HUD's (leaf, cigarette, bolt, pill, flask, heart, run and so on) or a kit icon; tone good, bad, danger or neutral; duration in ms, left out for "until cleared"; level 1 to 3; mods percent changes to speed, stamina, armour and health (chevrons while speed is above 0). The same id again replaces it, a second dose restarting its time. Ids are per resource, 12 effects at most. Returns true or false. |
clearEffect(id) | Takes it off. |
smoke({ item, kind, left, hits, high }) | The smoke: kind joint, cigarette, blunt or vape; left and high 0 to 1. smoke(false) when done. |
units() | mph or kmh, the player's pick. |
A resource's effects, smoke and hide reasons go when it stops. The HUD fires no network events of its own; it tells the Jixryo ox_lib fork where the notification stack goes through a local event, and takes it back when it stops.
Commands and keybinds
| Command | Who | What it does |
|---|---|---|
/hud | everyone | Opens your HUD settings |
/hudmap x y size | everyone, only with GTA's radar in the frame | Tries a nudge live (rem right, rem down, a size factor) and prints the line for Config.minimap.nudge |
There are no keybinds. The vehicle keys and the belt key the HUD shows are only pictures of your server's binds; set Config.vehicleKeys and Config.seatbeltKey to the real ones.
Configuration
config.lua:
| Key | Default | What it does |
|---|---|---|
sources | needs auto, fuel auto, seatbelt seatbelt, harness harness, cruise cruise, call onCallWith, postal nearest-postal getPostal | Where the needs, fuel, belt, harness, cruise, the phone call and the postal come from; none hides a lamp instead of guessing |
voiceRanges | Whisper 3 m, Normal 7 m, Shout 15 m | pma-voice's voice modes in order, as shown |
voiceLoudness | 1.0 | Multiplies the game's loudness for the voice bar |
radioNames | none | Names for channels, shown beside the frequency |
radioReceiving, callLabel | Receiving, On call | The words when nobody's name is known, and on the call tag |
vehicleKeys, keysFor | G Engine, L Lock, B Seatbelt, H Lights, F Exit; 0 | The keys shown to the driver, and for how long (0: the whole drive) |
seatbeltKey, beltWarn, beltDanger | B, 10, 45 | The key in the belt warning; the MPH for "Buckle up" and for "Ejection risk" |
radar.map | jixryo_map | The map resource; not running, GTA's radar in the square frame |
radar.rate, radar.move, radar.turn | 33 ms, 0.25 m, 0.3° | How often it looks at where you are, and how far you move or turn before the page is told |
radar.moveRate, radar.rescan, radar.maxSprite, radar.perFrame | 250 ms, 10000 ms, 1023, 64 | The blips' clocks: moving blips, full reads, the highest icon number read, icon numbers per frame |
radar.routeRate, radar.routeStep, radar.routeReach | 500 ms, 20 m, 1500 m | The GPS line |
radar.underRate | 1000 ms | The tunnel or inside check |
radar.zoom | foot 190, car 270 to 600 at 45 m/s, boat 480, air 900 to 2400 at 500 m, inside 120 | Metres across the radar at zoom 100% |
minimap | hideHealthArmour true, nudge 0, 0, 1.0 | GTA's bars under its radar hidden; where GTA's radar sits in the frame |
hideNative | 2, 3, 4, 6, 7, 8, 9, 13 | GTA's own HUD pieces hidden every frame |
rate | fast 100, body 250, street 500 | How often each part looks, in ms |
lowHealth, moneyChangeTime, command | 20, 4500, hud | The red edge, how long a money change shows, the settings command |
defaults | layout full, status always, units mph, radar round turning with the camera, zoom 100, size 100, blips on, style bars, arrangement row, no numbers, size 100, glass 62, every part shown | Every player's starting settings |
Security
- Client only. It has no server side and moves nothing: no money, no health, no items. Every number it shows is read from the game, a statebag or another resource, and a value nobody knows is left out rather than guessed.
- Settings are checked field by field, from the save and from the page: choices from the lists, numbers stepped and clamped to their ranges, switches as booleans, unknown fields dropped.
- Effects and the smoke belong to the resource that set them. Ids are per resource, text is cut to length, tones and kinds come from the lists, levels and changes are clamped, 12 effects at most, and everything a resource set goes when it stops.
- Player data is taken from
QBCore:Player:SetPlayerDataonly when qbx_core sent it, as qbx_core itself checks. - Names on the radio show only when the server syncs them; otherwise "Receiving", never a player's OOC name.
- GTA's radar stays hidden every frame while the suite's own shows, even after another script turns it back on.
- The harness shows without a wear gauge: its wear is the item's, kept on the server by qbx_seatbelt, so the HUD shows no made-up number.
Tests
dev-tools/luarun/tests/jixryo_hud.client.lua runs the real client in a stand-in game. Run on 2026-10-31: 19 passed, 0 failed.
They cover start-up with the page's config and settings; the first state (body, voice, place, night); talking with loudness and muted; the radio (channel, members, who talks, names only when synced, TX); a phone call; a car (kind, belt, harness, a passenger unbuckled, indicators, lights, cruise, getting out); a motorcycle (helmet, lean, no belt); a boat, a helicopter and a plane (altitude, climb, attitude, rotor, gear); effects (added, checked, not resent while unchanged, wearing off, cleared, capped, gone with their resource); the smoke; settings checked and saved; GTA's radar in the frame without the map, /hudmap and a new resolution; the suite's radar (the page gets the map, GTA's radar hidden every frame); where you are (sent while you move or turn, not while still); blips (what GTA's radar would show, colours, followed on the move, read again when the count changes, off in /hud); the GPS line and a tunnel or a building; Jixryo Map starting and stopping mid-game; the notification stack's place and units; and client/radar.lua missing from the running script list.
cd dev-tools/luarun
node run.mjs ../../jixryo_scripts/jixryo_hud tests/jixryo_hud.client.luaThe README also records that 22 of 22 planted bugs were caught (2026-10-31), and that the built page was driven with the Lua's messages: the radar drawn from the map's tiles, near and far blips, the route, the waypoint, "Tunnel", broken messages dropped, and back to the square frame when the map leaves.
Check it in game
- The radar is the suite's: round inside the ring, the map turning with the camera, your arrow in the middle. GTA's radar never shows, even after the character screen.
- It zooms out as you drive faster and fly higher.
/hud: Radar zoom, Radar size, North up and Square all change it at once. - Shops, garages, the police station and job blips show with icons in their colours; a far job blip sits on the edge; Blips off in
/hudhides them. - Set a waypoint on the pause map: the purple line runs along the roads to it and the purple dot sits on it or on the edge.
- Drive through a tunnel: "Tunnel" and the map dims. Walk into an interior: "Inside".
- Voice: the bar is your range at rest; talking turns the tag white and the bar follows your voice. Join a radio channel and talk (white, TX); someone else talks (green, their name with names synced, else "Receiving").
- Seatbelt: B turns the lamp white; unbuckled over 10 MPH "Buckle up", over 45 "Ejection risk"; a harness shows the harness lamp; an unbuckled passenger shows "1 unbuckled".
- A motorcycle (helmet, lean), a boat (anchor), a helicopter (altitude, climb, attitude, rotor), a plane (gear up and down, "Stall" slow and high with the gear up). A call with lb-phone shows the call tag and its time.
- Notifications stack under the street, not over the radar; in a vehicle they stop above the speedometer; after
restart ox_libthey go back under the radar within a moment. stop jixryo_map: GTA's radar appears in the square frame within a second;ensure jixryo_map: the suite's again.stop jixryo_hudputs GTA's radar back bottom left.resmon 1while standing still and while driving.