Target
The target providers provide a service that allows resources to create targetable interactions.
Usage
To retrieve the target provider, use the load function with "target" for the service parameter.
Lua:
local targetProvider = exports.r3_servicesmanager:load("target")JavaScript:
const targetProvider = exports.r3_servicesmanager.load("target");Client
On the client side, the following methods are available:
enableTargeting
Enable or disable targeting.
targetProvider.enableTargeting(bool)Parameters:
- enabled:
boolean
Returns:
nil
addGlobalObject
Adds global options for all objects.
targetProvider.addGlobalObject(options)Parameters:
- options:
TargetOption[]
Returns:
nil
removeGlobalObject
Removes global options for all objects by their names.
targetProvider.removeGlobalObject(optionNames)Parameters:
- optionNames:
string[]
Returns:
nil
addGlobalPlayer
Adds global options for players.
targetProvider.addGlobalPlayer(options)Parameters:
- options:
TargetOption[]
Returns:
nil
removeGlobalPlayer
Removes global options for players by their names.
targetProvider.removeGlobalPlayer(optionNames)Parameters:
- optionNames:
string[]
Returns:
nil
addGlobalVehicle
Adds global options for vehicles.
targetProvider.addGlobalVehicle(options)Parameters:
- options:
TargetOption[]
Returns:
nil
removeGlobalVehicle
Removes global options for vehicles by their names.
targetProvider.removeGlobalVehicle(optionNames)Parameters:
- optionNames:
string[]
Returns:
nil
addModel
Adds options for specific models.
targetProvider.addModel(models, options)Parameters:
- models:
integer | string | (integer | string)[] - options:
TargetOption[]
Returns:
nil
removeModel
Removes options for specific models by their names.
targetProvider.removeModel(models, optionNames)Parameters:
- models:
integer | string | (integer | string)[] - optionNames:
string[]
Returns:
nil
addEntity
Adds options for specific entities.
targetProvider.addEntity(netIds, options)Parameters:
- netIds:
integer | integer[] - options:
TargetOption[]
Returns:
nil
removeEntity
Removes options for specific entities by their names.
targetProvider.removeEntity(netIds, optionNames)Parameters:
- netIds:
integer | integer[] - optionNames:
string[]
Returns:
nil
addLocalEntity
Adds options for specific local entities.
targetProvider.addLocalEntity(entities, options)Parameters:
- entities:
integer | integer[] - options:
TargetOption[]
Returns:
nil
removeLocalEntity
Removes options for specific local entities by their names.
targetProvider.removeLocalEntity(entities, optionNames)Parameters:
- entities:
integer | integer[] - optionNames:
string[]
Returns:
nil
addSphereZone
Creates a new targetable sphere zone with the provided options.
targetProvider.addSphereZone(parameters)Parameters:
- parameters:
- name:
string - options:
TargetOption[] - coords:
vector3 - radius:
number(optional) - debug:
boolean(optional)
- name:
Returns:
stringThe name of the zone which can be used to remove it later.
addBoxZone
Creates a new targetable box zone with the provided options.
targetProvider.addBoxZone(parameters)Parameters:
- parameters:
- name:
string - options:
TargetOption[] - coords:
vector3 - size:
number(optional) - debug:
boolean(optional)
- name:
Returns:
stringThe name of the zone which can be used to remove it later.
addPolyZone
Creates a new targetable poly zone with the provided options.
targetProvider.addPolyZone(parameters)Parameters:
- parameters:
- name:
string - options:
TargetOption[] - points:
vector3[] - thickness:
number(optional) - debug:
boolean(optional)
- name:
Returns:
stringThe name of the zone which can be used to remove it later.
removeZone
Removes a targetable zone by name.
targetProvider.removeZone(name)Parameters:
- name:
string
Returns:
nil
Types
The following types are used within the target provider:
TargetOption
An object containing the options for a single target option.
Fields:
- label:
string - name:
string(optional, used to remove an option) - icon:
string(optional, full font awesome 5 icon including prefix such as “fas fa-”) - distance:
number(optional) - bones:
string[](optional) - groups:
table<string, integer>(optional, group: minimum grade map) - canInteract:
fun(entity: number, distance: number): boolean(optional) - onSelect:
fun(data: TargetResponse): nil
TargetResponse
An object containing the data that is passed to the onSelect function when an option is selected.
Fields:
- entity:
integer
Registration
To register a target provider, ensure it implements all methods described above. Check out target.lua and target.ts for type definitions.
When your provider object implements all methods, you can register it as follows:
Lua:
exports.r3_servicesmanager:register("target", provider, priority, GetCurrentResourceName())JavaScript:
exports.r3_servicesmanager.register("target", provider, priority, GetCurrentResourceName());For priority, it is recommended to use priority 2, this corresponds to ServicePriority.Normal. It would be even better to allow server owners to configure the used priority in the configuration of your resource so that they can choose which resource takes priority.