Configuration

Almost everything is edited in the Loading Creator. The /hzpanel form itself only carries the editor button and one section: Telemetry & diagnostics.

One setting, one home. No field is editable in two places. If you are looking for something and it is not in the panel, it is in the Creator.

Appearance

Two modes, toggled by Custom appearance in the editor:

  • Off (default) — the loading screen follows the global HZ-Bridge appearance: accent, colours and corner radii. Change your accent once in HZ-Bridge and every HZ resource follows, this one included.
  • On — you override accent, highlight, gold, surface and text colours, corner radius, and panel opacity / blur, for this loading screen only. Ready-made palettes are one click away.
A separate theme setting (Cyan / Vice) picks the typography and the base look. It restyles the same composition — it never moves or removes panels.

Content

Updates and Rules accept Markdown: headings, lists, bold, links. In Rules, each ## heading becomes a searchable section in the player-facing search box.
Leave a body empty and you get the built-in localised example — real rules, real news, real tips, translated into all 7 languages. That is why a fresh install already looks finished. The Load example button copies that text into the field so you can edit it instead of retyping it.
Keep the number of ## headings consistent across languages, or the searchable-section list will not line up between locales.

Embedded HTML inside Markdown is stripped, not rendered. A compromised panel account cannot inject a script into every connecting player.


Keybinds

Entries use a pipe-separated format:

KEY|LABEL|icon|description
  • KEY — the key identifier, e.g. F1, TAB, M
  • LABEL — what the player reads, e.g. Inventory
  • icon (optional) — the name of an SVG in assets/keybinds/. When there is no matching file, the key name is shown as a text chip instead.
  • description (optional) — the tooltip text
Older three-field entries still parse. In the editor you normally never type this by hand — you click a key on the visual keyboard and fill the label and description. QWERTY / AZERTY toggle. GTA binds the physical key: an AZERTY player's A sits where QWERTY prints Q. Showing the wrong board mislabels an entire row, so the layout is an explicit setting. Only the letter rows change — digits are in the same place and the game reports them as digits.
The visual keyboard covers letters, digits and the common modifiers. Numpad, arrow keys and mouse buttons are not drawn on the board — those binds are not lost, they appear in the searchable list underneath it.

Language

One setting, server-wide. It decides which language every player reads — there is no in-screen language picker, by design: the loading screen is your server's front door, not a per-player preference.

Available: English, French, Spanish, German, Portuguese, Turkish, Italian.

The interface strings (button labels, "Search rules", toasts) live in locales/*.json inside the resource. They are compiled into the interface, so editing them requires rebuilding — that is a developer task, not an operator one. Player-facing content (rules, news, tips, team, keybinds) is all editable in the Creator.


Telemetry & diagnostics

The one section that stays in the panel form.

SettingDefaultWhat it does
Track session timingsonRecords boot duration per session — the last 50, in memory only. Viewed with /hzloading:diag. No identifiers are stored and the data is lost on resource restart.
Enable Discord webhookoffMaster switch for the webhook below.
Discord webhook URLemptyPOSTs JSON events. Only https://discord.com/api/webhooks/… and https://discordapp.com/… are accepted; anything else is rejected server-side with a console warning.
Webhook eventsconfigChanged, loadCompletedWhich events to POST. configChanged = an admin saved a field. loadCompleted = a player finished loading, with total boot time.
The webhook URL is a secret and is never included in anything sent to a client. Keep it out of the Creator — that is why it lives here.