ox_target vs qb-target : choisir selon les scripts et la migration
Par Luke, RPScripts
Choisissez le système de ciblage que vos scripts indispensables prennent en charge nativement. Gardez qb-target sur une installation QB stable si le changement ne résout aucun problème démontré. Choisissez ox_target lorsque vos ressources utilisent son API et ses intégrations de framework documentées. Aucun des deux ne rend un script compatible à lui seul : renommer un export ne constitue pas une migration.
Ce comparatif examine la documentation officielle et les fichiers sources au 1er novembre 2026. Il ne présente aucun benchmark en conditions réelles. Les exemples montrent l'enregistrement côté client ; ils ne réalisent ni boutique, ni inventaire, ni métier sécurisé. Les deux projets publient leur code source. Consultez la licence de chaque dépôt avant toute redistribution.
Comparaison rapide
| Critère | ox_target | qb-target |
|---|---|---|
| Bibliothèque requise | ox_lib | PolyZone |
| Limite liée au framework | Ciblage standalone ; intégrations supplémentaires documentées pour ox_core, ESX et qbx_core | QBCore est facultatif ; les contrôles liés au framework nécessitent l'intégration correspondante |
| Enregistrement d'une zone rectangulaire | addBoxZone avec une table de paramètres | AddBoxZone avec des arguments séparés pour la géométrie et les options |
| Options relatives aux permissions | groups, items, canInteract | job, gang, citizenid, item, canInteract |
| Raccourci de migration | Compatibilité partielle avec qtarget ; aucune garantie générale de remplacement de qb-target | Les intégrations natives qb-target existantes peuvent rester inchangées |
Ce que fait réellement le système de ciblage
Une ressource de ciblage permet aux joueurs de sélectionner des interactions sur des entités, modèles ou zones. La ressource qui exécute l'action conserve la responsabilité de sa logique : ouvrir un garage, acheter un objet ou prendre son service. Évaluez les exigences de cette action indépendamment de l'icône en forme d'œil ou du design du menu.
Commencez par un inventaire du framework et des dépendances. Pour chaque script indispensable, notez le nom du système de ciblage, la version prise en charge, le sélecteur de configuration et les fichiers d'intégration modifiables. Un badge QBCore ne prouve pas la prise en charge de ox_target. Sur Qbox, le pont du core et l'intégration du ciblage sont deux vérifications distinctes ; les notes d'installation de Qbox expliquent le reste de l'installation.
API natives : une même interaction de test simple
Ces exemples clients originaux enregistrent une zone de deux mètres autour de coordonnées fictives. Utilisez-en un dans une ressource de développement après le démarrage des dépendances. Déplacez la zone vers un lieu de test accessible. Un clic écrit uniquement un message dans la console du client ; il ne modifie ni argent, ni inventaire, ni permissions.
qb-target
exports['qb-target']:AddBoxZone('comparison_demo', vector3(100.0, 200.0, 30.0), 2.0, 2.0, {
name = 'comparison_demo',
heading = 0,
debugPoly = true,
minZ = 29.0,
maxZ = 31.0
}, {
options = {
{
label = 'Tester une interaction',
icon = 'fas fa-circle',
action = function()
print('comparison_demo selected')
end
}
},
distance = 2.0
})
ox_target
local zoneId = exports.ox_target:addBoxZone({
name = 'comparison_demo',
coords = vector3(100.0, 200.0, 30.0),
size = vector3(2.0, 2.0, 2.0),
rotation = 0,
debug = true,
options = {
{
name = 'comparison_demo_option',
label = 'Tester une interaction',
icon = 'fas fa-circle',
distance = 2.0,
onSelect = function()
print('comparison_demo selected')
end
}
}
})
-- Supprimer cette zone de démonstration après utilisation :
-- exports.ox_target:removeZone(zoneId)
N'effectuez pas de remplacement global dans le code en production. La forme et la hauteur des zones, les noms d'options, les arguments des callbacks et les identifiants d'entités doivent être examinés. Dans ox_target, addEntity reçoit des identifiants réseau et addLocalEntity des handles locaux. Vérifiez chaque appel au lieu de supposer qu'un entier a le même sens dans les deux API.
Afficher une option ne suffit pas à établir la compatibilité
Les champs groups et items de ox_target dépendent de l'intégration du framework. Une condition de métier QBCore ne devient pas automatiquement un contrôle de groupe fonctionnel parce que le menu s'ouvre. La couche de compatibilité qtarget couvre une partie d'une autre API. Le manifeste fournit qtarget ; il ne garantit pas le fonctionnement de chaque ressource appelant qb-target.
La visibilité côté client n'est pas une autorisation. Un joueur peut tenter de déclencher un événement serveur sans sélectionner l'option de ciblage. Le serveur doit vérifier lui-même le rôle, la position, les objets requis et la transaction autorisée. Masquer un bouton avec canInteract ne sécurise ni récompense ni achat.
Une migration avec étapes de validation et retour arrière
- Sauvegardez les fichiers et la configuration. Recensez les appels natifs, sélecteurs de configuration, dépendances, contrôles de métier/objets et fonctions de nettoyage.
- Installez le système choisi et ses bibliothèques sur une copie. Démarrez les dépendances avant leurs consommateurs, sans modifier le répertoire de production.
- Adaptez une interaction. Testez les utilisateurs autorisés et refusés, les limites de distance, la hauteur de zone, les arguments de l'action et le redémarrage de la ressource. Vérifiez l'absence d'options en double.
- Testez les vrais parcours séparément : le garage restitue le bon véhicule ; une action de métier vérifie le service et le grade ; une boutique contrôle le paiement et l'inventaire côté serveur.
- Supprimez ou désactivez l'ancien enregistrement seulement après validation du remplaçant. Gardez les anciens fichiers et la configuration prêts à restaurer. Répétez l'audit pour chaque ressource utilisatrice.
Performances, maintenance et décision d'achat
Ce comparatif ne fournit aucun benchmark comparable. Mesurez le temps de ressource et les temps de trame sur votre client avec la même carte, les mêmes interactions et actions de joueurs. Distinguez le ciblage au repos, la liste d'options ouverte et le travail de l'action. Une interface paraissant plus rapide ne démontre pas une charge serveur plus faible.
Avant d'acheter de nouvelles ressources d'interaction et de menus, vérifiez l'API de ciblage et la version exactes. Cette catégorie rassemble différents styles d'interaction ; elle ne garantit pas que chaque fiche prend en charge les deux systèmes. Préférez un sélecteur existant documenté à un adaptateur privé à maintenir. Sur un serveur stable, éviter une conversion inutile est un choix technique et économique valable.
Questions fréquentes
Puis-je remplacer qb-target par ox_target sans modifier les scripts ?
Seulement si toutes les ressources utilisatrices prennent déjà en charge l'intégration choisie ou si vous avez vérifié un pont approprié. La couche qtarget partielle ne suffit pas à le démontrer.
ox_target est-il réservé à Qbox ?
Non. Il propose un ciblage standalone avec des intégrations de framework supplémentaires documentées. Les conditions propres au framework nécessitent toujours la prise en charge correspondante.
Faut-il faire fonctionner les deux ?
Évaluez tout besoin de coexistence sur un environnement isolé. Des enregistrements qui se chevauchent peuvent désorienter les joueurs et compliquer le diagnostic. Choisissez un chemin pris en charge pour chaque interaction et vérifiez les raccourcis clavier et les menus.
Le centre de comparatifs FiveM relie cette décision de ciblage au framework, à l'inventaire et aux autres dépendances.
Références primaires
- ox_target : installation et intégrations de framework
- ox_target : options et callbacks
- ox_target : exports clients et géométrie des zones
- Référence de l'API qb-target
- qb-target : code source, dépendances et licence
- Manifeste ox_target et implémentation de la compatibilité qtarget
- Cfx.re : sécuriser les événements serveur