Universal Targeting
Every player picks how they interact.
Universal Targeting lets each player choose their own interaction style: third-eye, radial dial, ambient prompts or a context menu. Their choice follows them to every server that runs it. One ox_target-compatible registry feeds all four modes, so your existing target options keep working.
Installation
One folder, one line in server.cfg.
Configuration
Allowed modes, ranges, keys, reticle styles and strings.
Commands
Player settings, keybinds and the demo.
Exports
The registry, radial and player-setting exports.
At a glance
| Resource | universal_targeting (plus universal_bridge if you want the ox_target redirect) |
| Needs | Nothing. Universal UI, ox_lib and frameworks are optional. |
| Replaces | ox_target, qtarget and the ox_lib radial |
| Readable files | shared/config.lua, client/demo.lua |
The four modes
| Mode | How it works |
|---|---|
| Third eye | Hold the interact key, aim at something, pick an option. |
| Dial | A radial ring of every interaction around you. |
| Prompts | Floating keypress prompts on nearby things. The one you look at expands into its options. |
| Context | A context list anchored to the thing you're looking at, driven by its own cursor. |
You decide which modes are allowed in Config.Modes. Players pick from those with /targeting, and every registered interaction works the same in all of them.
A first registration
exports.universal_targeting:addBoxZone({
coords = vec3(441.0, -981.0, 30.7),
size = vec3(2.0, 2.0, 2.0),
options = {
{
name = 'duty_toggle',
label = 'Go on duty',
icon = 'fa-solid fa-clipboard-check',
groups = 'police',
onSelect = function()
TriggerServerEvent('my_police:toggleDuty')
end,
},
},
})