Skip to content

Retro Radial

Current rs_radial structure is intentionally flat: one client file, one server file, one config file, one customer-hook file, an HTML/JS/CSS NUI bundle, and an opt-in bridge folder.

  • client.lua
  • server.lua
  • config.lua
  • custom_functions.lua
  • fxmanifest.lua
  • CHANGELOG.md
  • README.md
  • LICENSE.md
  • Directorybridge/
    • ox_lib.lua
  • Directoryhtml/
    • index.html
    • app.js
    • icons.js
    • custom_icons.js
    • style.css
    • Directoryassets/
      • r-logo.png
      • back.png
      • Directoryicons/ (100+ PNG / WEBP / SVG icons)
        • โ€ฆ
  • client.lua

    • Single client entrypoint. Framework + inventory bridges, page rendering, NUI message bridge, runtime API exports, vehicle control surface, predicate dispatcher, cooldown enforcement.
  • server.lua

    • Server-side validation, per-player items, server predicates, cooldown ledger, Discord logging, resource-stop sweep, trigger protection.
  • config.lua

    • Everything tunable. Customer-editable, included in escrow_ignore.
  • custom_functions.lua

    • Optional customer hook surface declare functions here and reference them from items with type='customFunction'. Loaded BEFORE client.lua. Stays plain-text in the release build (escrow-ignored).
  • bridge/ox_lib.lua

    • Opt-in ox_lib radial menu compatibility bridge. Loaded AFTER client.lua so it can use the runtime API exports. Escrow-ignored.
  • html/

    • NUI bundle. index.html is the root document; app.js is the vanilla-JS UI controller and NUI message handler; icons.js and custom_icons.js are the icon registries; style.css is the theme variables + layout; assets/icons/ is the default icon library.
  • config.lua
  • custom_functions.lua
  • html/assets/icons/ (drop your own PNG / WEBP / SVG files)
  • html/custom_icons.js (optional register your own built-in icons)

For runtime integration from other resources, you donโ€™t edit rs_radial itself you call its exports. The relevant entry points:

  • exports['rs_radial']:AddMenuItem(pageId, item) declared in client.lua.
  • exports['rs_radial']:AddSubMenu(pageId, def) declared in client.lua.
  • exports['rs_radial']:RegisterServerItem(pageId, itemId, config) declared in server.lua.

For deeper customization, the entry points are:

  • client.lua UI flow, item dispatch, predicate evaluation, vehicle control surface.
  • server.lua server-side validation, Discord logging, cooldown ledger.
  • html/app.js NUI controller (renders the orbit, handles clicks, updates theme).

If you are troubleshooting:

  • Item not showing start with predicates / job gating in config.lua and the F8 console (Config.Debug = true).
  • Item shows but click does nothing check the dispatch type in client.luaโ€™s action dispatcher and confirm the event/export/command exists.
  • NUI not loading verify ?v=N cache-bust in index.html matches the last build and the resource name is exactly rs_radial.
  • Server-side validation rejecting items check Config.Security.serverSideValidation and the per-item validator in server.lua.