Retro Radial
Configuration
Section titled โConfigurationโPrimary config file:
config.lua(customer-editable, escrow-ignored)- Customer hook surface:
custom_functions.lua(escrow-ignored) - Bridge:
bridge/ox_lib.lua(escrow-ignored, opt-in)
config.lua is one file with all server-tunable settings. There is no hidden defaults file every value the script reads is visible.
Admin-Facing Settings
Section titled โAdmin-Facing SettingsโAccess and permissions:
Config.Framework'auto'|'qb'|'qbox'|'esx'|'standalone'Config.DebugF8 console loggingConfig.Inventory.provider'auto'|'ox'|'qb'|'qbox'|'esx'|'custom'|'none'Config.Security.serverSideValidationre-validate item visibility on server before dispatchConfig.Security.triggerProtectionrefuse server events for items that fail server-side checksConfig.Logging.enabled/Config.Logging.webhookUrlDiscord webhook for security and item eventsConfig.RuntimeApi.enabledmaster switch forAddMenuItem/AddSubMenuexports
Core feature toggles:
Config.Controls.openMode'hold'|'toggle'Config.Controls.closeOnSelectclose radial when an item is clickedConfig.Settings.enabledSettings panel availabilityConfig.Settings.allowThemeEditor/allowMenuScale/allowMenuPosition/allowItemReorder/allowSoundToggle/allowResetDefaultsConfig.Favorites.enabledper-player favoritesConfig.Blips.enabledblip systemConfig.Vehicle.enabledVehicle Control barConfig.Clothing.enabledclothing pageConfig.OxLibBridge.enabledox_lib radial compatibility bridgeConfig.Icons.fontAwesome.enabledauto-inject FA from CDN
Common server-specific values:
Config.Pagesall radial pages and itemsConfig.UI.brand.logoSrc/backIconcenter hub assetsConfig.UI.geometry.hubSize/orbitRadius/startAngleradial layoutConfig.Theme.default12-color palette for the radialConfig.VehicleControlTheme.default13-color palette for the Vehicle Control barConfig.Vehicle.controlswhat shows up on the Vehicle Control barConfig.Clothing.itemswhat shows up on the Clothing pageConfig.Blips.categoriesblip categories and per-category locationsConfig.Predicates.registryreusablecanSeecallbacks (also viaRegisterPredicateexport)Config.Localeevery user-facing string
Per-Player Customization
Section titled โPer-Player CustomizationโSettings the player can change at runtime via the Settings panel (each toggleable from Config.Settings):
- Theme colors (KVP-persisted per-player).
- Menu scale (
Config.Customization.minScale/maxScale/scaleStep). - Menu position (drag-edit, clamped by
Config.Customization.positionClamp). - Item order per page.
- Vehicle Control bar position + colors.
- Sound effects (master toggle + per-event mute + volume).
Item Schema (Config.Pages)
Section titled โItem Schema (Config.Pages)โAction item fires an event / command / export:
{ id = 'cuff', label = 'CUFF', icon = 'cuff.png', iconType = 'image', -- 'image' | 'svg' | 'file' | 'builtin' | 'class' | 'url' type = 'client', -- see docs/features.md for all item types event = 'police:client:CuffPlayer', args = nil, -- optional jobs = { police = 0 }, cooldown = 5000, -- ms async = true, -- show spinner until CompleteAsyncAction confirm = { enabled = true, title = '...', body = '...' }, visibleIf = 'isPolice', -- named predicate canSee = function(ctx) return ctx.job == 'police' end, -- inline predicate}Page navigation item:
{ id='garage', label='GARAGE', icon='garage.png', type='page', targetPage='garage' }Settings entry:
{ id='settings', label='SETTINGS', icon='settings.png', type='settings' }Full item schema (all fields, all modal types, predicate modes, badges) is documented inline in Config.Pages in config.lua.
Server-Side Validation
Section titled โServer-Side ValidationโEnabled with Config.Security.serverSideValidation = true. When set, every type='server' item is routed through rs_radial:server:dispatch, which re-runs the visibility checks (job, gang, cuffed, dead, cooldown, predicates, reqItems) before firing the configured event.
Register a server-side validator/handler pair:
exports['rs_radial']:RegisterServerItem('police', 'jail', { validate = function(src) return Bridge.getJob(src).name == 'police' end, handler = function(src, args) ... end})Operational Guidance
Section titled โOperational GuidanceโRecommended defaults for most servers:
- keep
Config.Framework = 'auto'unless you need to force one - keep
Config.Security.serverSideValidation = trueonce items are wired - keep
Config.Debug = falsein production - keep
Config.OxLibBridge.enabled = falseunless you actually depend on third-party scripts that calllib.addRadialItem - only edit
custom_functions.luawhen you need server-specific behavior (the file is loaded BEFOREclient.luaand stays plain-text for the customer)