MrPoulpi Labs
ox_target

Scripts disponibles

EN
Centre de documentation

Interactions

Format des options de config_interactions.lua — listes joueurs, soi-même, véhicules, PNJ, objets, modèles et zones, champs communs, types d’action, objet target et builtins.

But : écrire et comprendre chaque option du menu. Fichier à modifier : config_interactions.lua (côté client). Redémarrez la ressource après modification : les options sont construites une seule fois, au démarrage.

Les listes

Liste Cible Distance par défaut
Config.PlayerInteractions autres joueurs Distances.player
Config.SelfInteractions votre propre personnage sans effet
Config.VehicleInteractions tous les véhicules Distances.vehicle
Config.PedInteractions tous les PNJ Distances.ped
Config.ObjectInteractions tous les objets Distances.object
Config.ModelInteractions modèles précis Distances.default
Config.ZoneInteractions zones box ou sphere Distances.default

Les options d’une liste s’affichent dans l’ordre du fichier. Sur un véhicule, les options d’origine d’ox_target (portes, capot, coffre) apparaissent avant celles de VehicleInteractions, puis viennent les options de modèle et les options de zone.

Champs communs

Champ Type Rôle
name string, obligatoire Identifiant unique dans sa liste. Une option sans name est ignorée.
label string Texte affiché ; vaut name s’il est absent.
icon string Classes Font Awesome, ex. 'fa-solid fa-star'. La NUI charge Font Awesome Free depuis un CDN, sans version fixée.
iconColor string Couleur CSS de l’icône.
description string Texte affiché sous le menu au survol.
menu string Sous-menu dans lequel l’option apparaît (le opens d’une catégorie).
separatorAfter boolean Trait de séparation après l’option.
distance number Distance max en mètres (voir tableau ci-dessus).
enabled false ou fonction false : option non créée. Fonction évaluée une fois au démarrage ; une erreur ou un retour false désactive l’option.
permission string Clé de Config.Permissions, ou 'everyone', 'staff', 'admin'. Une clé inconnue masque toujours l’option.
jobs table ou string { 'police' }, { police = 2 } (grade minimum) ou 'police'. Affichage uniquement.
groups, items, anyItem — Filtres natifs d’ox_target (groupes framework, items possédés).
bones, offset, absoluteOffset, offsetSize — Ciblage d’un os ou d’une position précise de l’entité (champs natifs).
canInteract fonction function(entity, distance, coords, name, bone) → booléen, évaluée à chaque rafraîchissement.

Types d’action

Une option déclare son action avec onSelect, un type ou un builtin. Si onSelect est présent, il est prioritaire.

Déclaration Effet
onSelect = function(target) … end Votre code Lua, reçoit l’objet target.
type = 'category', opens = 'mon_menu' Ouvre un sous-menu ; opens vaut name s’il est absent.
type = 'emote', emote = 'wave' Bridge.PlayEmote('wave').
type = 'shared_emote', emote = 'hug' Bridge.PlaySharedEmote('hug', target.serverId) ; prévu pour les joueurs.
type = 'client_event', event = 'res:event' TriggerEvent(event, target, …args).
type = 'server_event', event = 'res:event' TriggerServerEvent(event, payload, …args) — non sécurisé.
type = 'server_action', action = 'nom' Action sécurisée de Config.ServerActions ; args peut être une table ou function(target).
type = 'export', resource = 'res', export = 'Fn' exports.res:Fn(target).
type = 'command', command = 'cmd {id}' ExecuteCommand ; {id} est remplacé par l’ID serveur ciblé (vide hors joueurs).
type = 'checkbox', default = false Case à cocher mémorisée ; voir Catégories et cases à cocher.
builtin = 'nom' Fonctionnalité intégrée (voir plus bas).

Pour client_event et server_event, un champ args = { … } ajoute des arguments après l’objet transmis. Pour server_event, l’objet transmis est { serverId, netId, coords, name, kind }.

Objet target

Les callbacks onSelect, les événements client_event, les exports et la fonction args d’une server_action reçoivent :

Champ Contenu
entity Handle de l’entité ciblée (votre ped pour Soi-même).
coords, distance Point visé et distance au moment du clic.
zone Identifiant de zone, pour les options de zone.
kind 'player', 'self', 'vehicle', 'ped', 'object', 'model' ou 'zone'.
name name de l’option.
isSelf true pour la liste Soi-même.
serverId ID serveur du joueur ciblé (ou le vôtre pour Soi-même).
netId Network ID si l’entité est en réseau.
model, entityType Modèle et type d’entité (hors Soi-même).
plate Plaque, pour un véhicule.
{
    name = 'check_plate', label = 'Lire la plaque', icon = 'fa-solid fa-id-card',
    onSelect = function(target)
        print(target.kind, target.plate, target.netId)
    end
},

Builtins

Les builtins sont des fonctionnalités intégrées. Chacun n’est accepté que dans certaines listes : ailleurs, le moteur l’ignore avec un avertissement. Les builtins sensibles gardent leur permission serveur même si vous retirez le champ permission de l’entrée.

Builtin Listes Fonctionnalité / Permission Effet
copy_id Joueurs Features.copyId Copie l’ID serveur du joueur ciblé dans le presse-papiers.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
show_player_id Joueurs Features.showPlayerId Affiche l’ID serveur du joueur ciblé.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
copy_emote Joueurs Features.copyEmote Demande au joueur ciblé son emote en cours et la rejoue.
Contrôle serveur : Distance joueur, cooldown 1,5 s ; la réponse doit avoir été sollicitée et arriver sous 5 s.
rps_challenge Joueurs Features.rps Défie le joueur à Pierre Feuille Ciseaux.
Contrôle serveur : Fonctionnalité rps, distance Distances.rps + tolérance, joueurs non occupés, expiration RPS.inviteTimeout.
send_bill Joueurs Features.billing Ouvre le formulaire de facture et l’envoie au script de facturation.
Contrôle serveur : Pas d’action serveur du moteur : la validation dépend du script de facturation.
admin_revive Joueurs Features.medical
Permissions.revive
Réanime le joueur ciblé.
Contrôle serveur : Permission revive, fonctionnalité medical, script médical disponible, distance Distances.player, cooldown 1 s.
admin_heal Joueurs Features.medical
Permissions.heal
Soigne le joueur ciblé.
Contrôle serveur : Permission heal, fonctionnalité medical, distance Distances.player, cooldown 1 s.
force_emote Joueurs Features.forceActions
Permissions.forceEmote
Fait jouer une emote saisie au joueur ciblé.
Contrôle serveur : Permission forceEmote, distance, nom validé par Config.Emotes.
force_me Joueurs Features.forceActions
Permissions.forceMe
Fait faire un /me saisi au joueur ciblé.
Contrôle serveur : Permission forceMe, distance, texte de 1 à 120 caractères, caractères de contrôle remplacés.
show_my_id Soi-même — Affiche votre ID serveur.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
me_input Soi-même — Saisie d’un /me puis Bridge.Me.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
anti_punch Soi-même Features.antiPunch Case à cocher mémorisée qui bloque les coups de poing à mains nues.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
self_revive Soi-même Features.medical
Permissions.selfRevive
Réanime votre personnage selon Config.Medical.selfMode.
Contrôle serveur : Permission selfRevive, fonctionnalité medical, cooldown 2 s.
self_heal Soi-même Features.medical
Permissions.selfHeal
Soigne votre personnage selon Config.Medical.selfMode.
Contrôle serveur : Permission selfHeal, fonctionnalité medical, cooldown 2 s.
weather_menu toutes Features.weather
Permissions.weather
Génère tout le sous-menu météo depuis Config.Weather.
Contrôle serveur : Permission weather, script météo disponible, valeurs limitées à Config.Weather, cooldown 0,5 s (3 s pour l’aléatoire).
dev_copy_coords Soi-même Features.devTools
Permissions.devTools
Copie vector3(x, y, z) de votre position.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_copy_coords_heading Soi-même Features.devTools
Permissions.devTools
Copie vector4(x, y, z, h).
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_restore_appearance Soi-même Features.devTools
Permissions.devTools
Recharge votre apparence via le script d’apparence.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
slash_tyre Véhicules Features.slashTyre Crève le pneu le plus proche avec une arme blanche.
Contrôle serveur : Distance Distances.slashTyre, index de pneu 0–7, arme en main contrôlée, cooldown 2,5 s.
Visible seulement si le joueur n’est pas dans un véhicule et une arme de Config.Vehicles.slashTyre.weapons est en main.
hide_in_trunk Véhicules Features.trunk Cache le joueur dans le coffre.
Contrôle serveur : Réservation serveur : un occupant par véhicule, distance Distances.trunk + tolérance + 2 m.
Visible seulement si le joueur n’est pas dans un véhicule et coffre déverrouillé, proche et libre, véhicule non détruit et non exclu.
lockpick_vehicle Véhicules Features.lockpick Crochète le véhicule (barre de progression ou hook).
Contrôle serveur : Métiers et item de Config.Vehicles.lockpick, distance Distances.vehicle, cooldown 3 s.
Visible seulement si le joueur n’est pas dans un véhicule.
repair_vehicle Véhicules Features.repair Répare le véhicule via le preset ou le hook.
Contrôle serveur : Métiers et item de Config.Vehicles.repair, retrait éventuel de l’item, distance Distances.vehicle, cooldown 3 s.
Visible seulement si le joueur n’est pas dans un véhicule.
give_keys Véhicules Features.giveKeys
Permissions.giveKeys
Vous donne les clés du véhicule.
Contrôle serveur : Permission giveKeys, distance Distances.vehicle, cooldown 1 s.
dev_copy_vehicle_name Véhicules Features.devTools
Permissions.devTools
Copie le nom d’affichage du modèle.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_copy_plate Véhicules Features.devTools
Permissions.devTools
Copie la plaque.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_delete_entity Véhicules, PNJ, Objets Features.devTools
Permissions.devTools
Supprime l’entité ciblée (jamais un joueur).
Contrôle serveur : Permission devTools, distance Distances.devTools ; les entités locales sont supprimées chez tous les clients à ±1,5 m.
Visible seulement si la cible n’est pas un joueur.
dev_copy_ped_model PNJ Features.devTools
Permissions.devTools
Copie le hash du modèle du PNJ.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_clone_ped PNJ Features.devTools
Permissions.devTools
Applique le modèle du PNJ à votre joueur.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_copy_prop_name Objets Features.devTools
Permissions.devTools
Copie le nom d’archétype du prop.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_copy_prop_full Objets Features.devTools
Permissions.devTools
Copie nom, vector3 et heading du prop.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.
dev_scan_props Objets Features.devTools
Permissions.devTools
Liste dans F8 les props dans Config.DevTools.scanRadius.
Contrôle serveur : Aucune action serveur : exécuté uniquement côté client.

Dans les listes Modèles et Zones, seul weather_menu est accepté : les autres builtins déclarent des listes précises qui n’incluent pas ces deux types.

Modèles

Config.ModelInteractions = {
    {
        models = { 'prop_atm_01', 'prop_atm_02' },
        options = {
            { name = 'atm_use', label = 'Utiliser le distributeur', icon = 'fa-solid fa-money-bill', type = 'client_event', event = 'ma_banque:ouvrirAtm' },
        },
    },
}

ma_banque:ouvrirAtm est un nom d’exemple. models accepte des noms ou des hashs. Les options de modèle activent le contour (ox_target:drawOutline) sur ces objets.

Zones

Config.ZoneInteractions = {
    {
        shape = 'box', name = 'pd_duty', coords = vec3(441.0, -981.0, 30.7), size = vec3(1.5, 1.5, 2.0), rotation = 0,
        options = {
            { name = 'pd_duty', label = 'Prendre son service', icon = 'fa-solid fa-clipboard', jobs = { 'police' }, type = 'server_event', event = 'mon_pd:service' },
        },
    },
    {
        shape = 'sphere', coords = vec3(-1037.5, -2737.8, 20.2), radius = 1.2,
        options = {
            { name = 'info_desk', label = 'Accueil', icon = 'fa-solid fa-circle-info', type = 'command', command = 'aide' },
        },
    },
}

Champs lus par le registre : shape, coords, size, radius, rotation, debug, drawSprite, name et options. Seules 'box' et 'sphere' sont prises en charge : toute autre valeur de shape est traitée comme une boîte. Les zones polygonales existent via l’export addPolyZone (voir API) mais pas via Config.ZoneInteractions.

Format simplifié et format natif

config_interactions.lua utilise un format simplifié, traduit par le moteur vers le format natif d’ox_target :

Format simplifié Format natif produit
menu menuName
type = 'category', opens isCategory = true, openMenu
type = 'checkbox', default isCheckbox = true, checked
distance absent distance résolue depuis Config.Distances
permission, jobs, enabled condition canInteract combinée
actions (type, builtin) onSelect interne

Dans vos propres ressources, les exports d’ox_target (addGlobalVehicle, addModel…) attendent le format natif : menuName et openMenu, pas menu et opens. Les champs type, builtin, permission et jobs n’y existent pas.

Erreurs fréquentes

  • Option invisible : permission absente de Config.Permissions, menu sans catégorie correspondante, ou fonctionnalité désactivée.
  • Builtin dans la mauvaise liste : F8 affiche « le builtin ‘…’ n’est pas utilisable dans la liste ‘…’ ».
  • enabled = function() qui dépend du joueur : évaluée au démarrage, avant que le personnage soit chargé. Utilisez canInteract pour une condition dynamique.
  • server_event pour une action sensible : le serveur ne vérifie rien ; utilisez une server_action.

Rechercher

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