Retro Radial
File System
Section titled โFile Systemโ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)
- โฆ
File Purpose
Section titled โFile Purposeโ-
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.
- Everything tunable. Customer-editable, included in
-
custom_functions.lua- Optional customer hook surface declare functions here and reference them from items with
type='customFunction'. Loaded BEFOREclient.lua. Stays plain-text in the release build (escrow-ignored).
- Optional customer hook surface declare functions here and reference them from items with
-
bridge/ox_lib.lua- Opt-in ox_lib radial menu compatibility bridge. Loaded AFTER
client.luaso it can use the runtime API exports. Escrow-ignored.
- Opt-in ox_lib radial menu compatibility bridge. Loaded AFTER
-
html/- NUI bundle.
index.htmlis the root document;app.jsis the vanilla-JS UI controller and NUI message handler;icons.jsandcustom_icons.jsare the icon registries;style.cssis the theme variables + layout;assets/icons/is the default icon library.
- NUI bundle.
Files Most Server Owners Edit
Section titled โFiles Most Server Owners Editโconfig.luacustom_functions.luahtml/assets/icons/(drop your own PNG / WEBP / SVG files)html/custom_icons.js(optional register your own built-in icons)
Files Most Developers Touch
Section titled โFiles Most Developers Touchโ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 inclient.lua.exports['rs_radial']:AddSubMenu(pageId, def)declared inclient.lua.exports['rs_radial']:RegisterServerItem(pageId, itemId, config)declared inserver.lua.
For deeper customization, the entry points are:
client.luaUI flow, item dispatch, predicate evaluation, vehicle control surface.server.luaserver-side validation, Discord logging, cooldown ledger.html/app.jsNUI controller (renders the orbit, handles clicks, updates theme).
Practical Note
Section titled โPractical NoteโIf you are troubleshooting:
- Item not showing start with predicates / job gating in
config.luaand 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=Ncache-bust inindex.htmlmatches the last build and the resource name is exactlyrs_radial. - Server-side validation rejecting items check
Config.Security.serverSideValidationand the per-item validator inserver.lua.