API et exports publics
Exports client d’ox_target vérifiés dans l’archive 1.17.2, export serveur registerAction, événements publics, compatibilité qtarget et qb-target, et format natif des options.
But : ajouter des options depuis vos propres ressources et enregistrer des actions serveur sans modifier ox_target. Où : dans le code de vos ressources, pas dans les fichiers d’ox_target.
Exports client
Ces exports sont définis dans client/api.lua. Les options s’écrivent au format natif (voir plus bas), pas au format simplifié de config_interactions.lua.
| Signature | Retour | Effet |
|---|---|---|
exports.ox_target:addBoxZone(data) | id de zone (number) | Zone boîte ox_lib (coords, size, rotation, options…). |
exports.ox_target:addSphereZone(data) | id de zone (number) | Zone sphère ox_lib (coords, radius, options…). |
exports.ox_target:addPolyZone(data) | id de zone (number) | Zone polygonale ox_lib. Disponible via l’API uniquement : Config.ZoneInteractions ne gère que box et sphere. |
exports.ox_target:zoneExists(id) | booléen | id numérique ou nom de zone. |
exports.ox_target:removeZone(id, suppressWarning) | rien | Supprime une zone par id ou par nom. |
exports.ox_target:addGlobalPlayer(options) | rien | Options sur tous les joueurs. |
exports.ox_target:removeGlobalPlayer(names) | rien | Retire des options par nom (ressource appelante uniquement). |
exports.ox_target:addSelfTarget(options) | rien | Options affichées quand le joueur se cible lui-même. |
exports.ox_target:removeSelfTarget(names) | rien | Retire des options de soi-même par nom. |
exports.ox_target:addGlobalPed(options) | rien | Options sur tous les PNJ. |
exports.ox_target:removeGlobalPed(names) | rien | Retire des options PNJ par nom. |
exports.ox_target:addGlobalVehicle(options) | rien | Options sur tous les véhicules. |
exports.ox_target:removeGlobalVehicle(names) | rien | Retire des options véhicule par nom. |
exports.ox_target:addGlobalObject(options) | rien | Options sur tous les objets. |
exports.ox_target:removeGlobalObject(names) | rien | Retire des options objet par nom. |
exports.ox_target:addGlobalOption(options) | rien | Options affichées sur toute cible. |
exports.ox_target:removeGlobalOption(names) | rien | Retire des options globales par nom. |
exports.ox_target:addModel(models, options) | rien | Options sur un ou plusieurs modèles (nom ou hash). |
exports.ox_target:removeModel(models, names) | rien | Sans names : retire toutes les options du modèle. |
exports.ox_target:addEntity(netIds, options) | rien | Options sur des entités réseau (netId). |
exports.ox_target:removeEntity(netIds, names) | rien | Retire des options d’entités réseau. |
exports.ox_target:addLocalEntity(entities, options) | rien | Options sur des entités locales (handle). |
exports.ox_target:removeLocalEntity(entities, names) | rien | Retire des options d’entités locales. |
exports.ox_target:getTargetOptions(entity, type, model) | table des options applicables | Sans argument : l’objet d’options courant. |
exports.ox_target:disableTargeting(value) | rien | true ferme et bloque le ciblage ; false le réautorise. |
exports.ox_target:isActive() | booléen | Le ciblage est-il ouvert ? |
exports.ox_target:entityHasTargets(entity, entityType, model) | booléen | L’entité a-t-elle des options (globales comprises) ? |
exports.ox_target:entityHasSpecificTargets(entity, model) | booléen | Options de modèle, d’entité réseau ou locale uniquement. |
exports.ox_target:getEntityTargetDistance(entity, entityType, model) | plus petite distance (7 par défaut) | Distance minimale parmi les options applicables. |
exports.ox_target:getEntitySpecificTargetDistance(entity, model) | plus grande distance, 0 sans option spécifique | Utilisée pour le contour. |
Les options ajoutées par une ressource lui appartiennent : remove… ne retire que les options de la ressource appelante, et elles sont supprimées automatiquement à l’arrêt de cette ressource. Ajouter une option avec un name déjà utilisé par la même ressource remplace l’ancienne.
Format natif des options
exports.ox_target:addModel({ 'prop_vend_soda_01', 'prop_vend_soda_02' }, {
{
name = 'ma_ressource:soda',
label = 'Acheter une boisson',
icon = 'fa-solid fa-bottle-water',
distance = 1.5,
items = 'money',
onSelect = function(data)
TriggerServerEvent('ma_ressource:acheterSoda', data.coords)
end,
},
})
ma_ressource est un nom d’exemple. Champs natifs reconnus : name, label, icon, iconColor, distance, bones, offset, absoluteOffset, offsetSize, groups, items, anyItem, canInteract, onSelect, export, event, serverEvent, command. La NUI de cette édition lit aussi description et separatorAfter.
Sous-menus au format natif : openMenu = 'nom' sur l’option parente (ajoutez isCategory = true pour afficher la flèche) et menuName = 'nom' sur les options enfants. Les cases à cocher (type = 'checkbox') ne sont pas disponibles via les exports : leur état est géré par le moteur pour les seules options de config_interactions.lua.
onSelect reçoit ici les données natives d’ox_target (entity, coords, distance, zone et les champs de l’option), pas l’objet target du format simplifié. Avec serverEvent, entity est converti en network ID.
Export serveur
| Signature | Retour | Effet |
|---|---|---|
exports.ox_target:registerAction(name, def) | true si enregistrée, false sinon | Enregistre une action serveur sécurisée depuis une autre ressource. Elle est retirée à l’arrêt de cette ressource. Les noms d’actions intégrées sont refusés. |
exports.ox_target:registerAction(name, def)
name: chaîne ;def: table au format deConfig.ServerActions(voir Hooks et actions serveur).- Retourne
truesi l’action est enregistrée,falsesidef.handlern’est pas une fonction ou sinamedésigne une action intégrée. - Une action enregistrée par une ressource est retirée à l’arrêt de cette ressource.
- Un nom déjà utilisé par une action personnalisée (y compris de
Config.ServerActions) est remplacé.
CreateThread(function()
local ok = exports.ox_target:registerAction('mon_garage:sortir', {
permission = 'everyone',
jobs = { 'mechanic' },
target = 'vehicle',
maxDistance = 4.0,
cooldown = 3000,
handler = function(ctx)
TriggerEvent('mon_garage:sortirVehicule', ctx.source, ctx.netId)
end,
})
if not ok then
print('registerAction refusé')
end
end)
Démarrez votre ressource après ox_target. Côté client, déclenchez l’action avec une option type = 'server_action', action = 'mon_garage:sortir' dans config_interactions.lua : l’événement réseau interne du moteur n’est pas une API publique et n’est pas documenté.
Événements publics
| Événement | Sens | Usage |
|---|---|---|
ox_target:exitTrunk |
client local | TriggerEvent('ox_target:exitTrunk') fait sortir le joueur du coffre. Les événements de Config.Vehicles.trunk.exitEvents ont le même effet. |
ox_target:core:run |
serveur → client | Routines whitelistées : PlayEmote, Me, ReviveSelf, HealSelf, NativeRevive, NativeHeal. |
Compatibilité qtarget et qb-target
La ressource déclare provide 'qtarget' et provide 'qb-target'. Les exports suivants sont convertis vers l’API ox_target :
- qtarget :
AddBoxZone,AddPolyZone,AddCircleZone,RemoveZone,AddTargetBone,AddTargetEntity,RemoveTargetEntity,AddTargetModel,RemoveTargetModel,Ped,RemovePed,Vehicle,RemoveVehicle,Object,RemoveObject,Player,RemovePlayer. - qb-target : les mêmes zones et cibles, plus
AddGlobalPed,AddGlobalVehicle,AddGlobalObject,AddGlobalPlayeret leursRemove…. AddEntityZoneetRemoveTargetBonede qb-target ne sont pas pris en charge (sans effet).
Ces conversions viennent du moteur d’origine ; testez chaque script qui les utilise.
Erreurs fréquentes
- Utiliser
menu/opensdans un export : ignorés ; utilisezmenuName/openMenu. - Appeler un export avant le démarrage d’ox_target : erreur « No such export ». Corrigez l’ordre des
ensure. - Attendre une case à cocher via export : non pris en charge, passez par
config_interactions.lua.