GenZeeDocs

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.

At a glance

Resourceuniversal_targeting (plus universal_bridge if you want the ox_target redirect)
NeedsNothing. Universal UI, ox_lib and frameworks are optional.
Replacesox_target, qtarget and the ox_lib radial
Readable filesshared/config.lua, client/demo.lua

The four modes

ModeHow it works
Third eyeHold the interact key, aim at something, pick an option.
DialA radial ring of every interaction around you.
PromptsFloating keypress prompts on nearby things. The one you look at expands into its options.
ContextA 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,
        },
    },
})

View on the store

On this page