MrPoulpi Labs
ox_target

Scripts disponibles

EN
Centre de documentation

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 de Config.ServerActions (voir Hooks et actions serveur).
  • Retourne true si l’action est enregistrée, false si def.handler n’est pas une fonction ou si name dé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, AddGlobalPlayer et leurs Remove….
  • AddEntityZone et RemoveTargetBone de 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 / opens dans un export : ignorés ; utilisez menuName / 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.

Rechercher

Tapez un terme : paramètre, export, erreur…