ox_target vs qb-target: Nach Skripten und Migrationsaufwand wählen
Von Luke, RPScripts
Wähle das Target, das deine unverzichtbaren Skripte nativ unterstützen. Behalte qb-target auf einem stabilen QB-Stack, wenn ein Wechsel kein nachgewiesenes Problem löst. Wähle ox_target, wenn deine ausgewählten Ressourcen dessen API und dokumentierte Framework-Integrationen nutzen. Keines der beiden macht ein Skript von selbst kompatibel. Einen Export umzubenennen ist keine Migration.
Dieser Vergleich prüft offizielle Dokumentation und Quelldateien mit Stand vom 1. November 2026. Er enthält keinen Laufzeit-Benchmark. Die Beispiele zeigen die Registrierung auf dem Client; sie implementieren keinen sicheren Shop, kein Inventar und keinen Job. Beide Projekte stellen ihren Quellcode öffentlich bereit. Prüfe vor einer Weiterverteilung die jeweilige Repository-Lizenz.
Der schnelle Vergleich
| Entscheidung | ox_target | qb-target |
|---|---|---|
| Benötigte Bibliothek | ox_lib | PolyZone |
| Framework-Grenze | Standalone-Targeting; dokumentierte Zusatzintegrationen für ox_core, ESX und qbx_core | QBCore ist optional; Framework-abhängige Prüfungen benötigen die passende Integration |
| Box registrieren | addBoxZone mit einer Parametertabelle | AddBoxZone mit getrennten Argumenten für Geometrie und Optionen |
| Berechtigungsbezogene Optionen | groups, items, canInteract | job, gang, citizenid, item, canInteract |
| Abkürzung bei der Migration | Teilweise qtarget-Kompatibilität; keine pauschale Garantie als qb-target-Ersatz | Bestehende native qb-target-Integrationen können unverändert bleiben |
Was das Target tatsächlich übernimmt
Eine Target-Ressource lässt Spieler Interaktionen an Entities, Modellen oder Zonen auswählen. Die ausführende Ressource verantwortet weiterhin die Geschäftslogik: eine Garage öffnen, einen Gegenstand kaufen oder den Dienst beginnen. Prüfe die Voraussetzungen dieser Aktion getrennt vom Augensymbol oder Menüdesign.
Beginne mit einer Bestandsaufnahme von Framework und Abhängigkeiten. Notiere für jedes unverzichtbare Skript Target-Name, unterstützte Version, Konfigurationsschalter und bearbeitbare Integrationsdateien. Ein QBCore-Badge belegt keine ox_target-Unterstützung. Bei Qbox sind Core-Bridge und Target-Integration getrennte Prüfungen; die Installationshinweise für Qbox erklären den übrigen Stack.
Native APIs: dieselbe einfache Testinteraktion
Diese eigens geschriebenen Client-Beispiele registrieren eine zwei Meter große Box um Beispielkoordinaten. Verwende eines davon in einer Entwicklungsressource, nachdem die Abhängigkeiten gestartet sind. Verschiebe die Box an einen erreichbaren Testort. Ein Klick schreibt nur eine Meldung in die Client-Konsole; Geld, Inventar und Berechtigungen bleiben unberührt.
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 = 'Interaktion testen',
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 = 'Interaktion testen',
icon = 'fas fa-circle',
distance = 2.0,
onSelect = function()
print('comparison_demo selected')
end
}
}
})
-- Demo-Zone entfernen, sobald sie nicht mehr gebraucht wird:
-- exports.ox_target:removeZone(zoneId)
Führe kein globales Suchen und Ersetzen im Production-Code durch. Zonenform und -höhe, Optionsnamen, Callback-Argumente und Entity-Kennungen brauchen eine Einzelprüfung. Bei ox_target nimmt addEntity Netzwerk-IDs entgegen, addLocalEntity lokale Handles. Prüfe jeden tatsächlichen Aufruf, statt anzunehmen, dass eine Ganzzahl in beiden APIs dieselbe Bedeutung hat.
Kompatibilität endet nicht bei einer sichtbaren Option
Die ox_target-Felder groups und items hängen von der Framework-Integration ab. Eine QBCore-Jobbedingung wird nicht automatisch zu einer funktionierenden Gruppenprüfung, nur weil sich das Menü öffnet. Die qtarget-Kompatibilitätsschicht deckt einen Teil einer anderen API ab. Das Manifest stellt qtarget bereit; es verspricht keine Kompatibilität mit jeder Ressource, die qb-target aufruft.
Sichtbarkeit auf dem Client ist keine Autorisierung. Ein Spieler kann versuchen, ein Server-Event ohne die Target-Auswahl auszulösen. Der Server muss Rolle, Position, benötigte Items und die erlaubte Transaktion selbst prüfen. Ein mit canInteract versteckter Button schützt weder Belohnungen noch Käufe.
Migration mit Checkliste und Rückweg
- Sichere Ressourcendateien und Konfiguration. Erfasse native Target-Aufrufe, Konfigurationsauswahl, Abhängigkeiten, Job-/Itemprüfungen und Aufräumfunktionen.
- Installiere das gewählte Target und seine Bibliotheken auf einer Kopie. Starte Abhängigkeiten vor den nutzenden Ressourcen. Ändere dabei nicht das Live-Verzeichnis.
- Passe eine Interaktion an. Teste berechtigte und unberechtigte Nutzer, Distanzgrenzen, Zonenhöhe, Aktionsargumente und einen Ressourcen-Neustart. Prüfe auf doppelte Optionen.
- Teste echte Abläufe getrennt: Die Garage holt das richtige Fahrzeug; eine Jobaktion prüft Dienststatus und Rang; ein Shop prüft Zahlung und Inventar auf dem Server.
- Entferne oder deaktiviere die alte Registrierung erst nach bestandenem Ersatztest. Halte alte Dateien und Konfiguration für die Wiederherstellung bereit. Wiederhole die Prüfung für jede nutzende Ressource.
Performance, Wartung und Kaufentscheidung
Dieser Vergleich liefert keinen vergleichbaren Benchmark. Miss Ressourcenzeit und Frame-Verhalten auf deinem Client mit derselben Karte, denselben Interaktionen und Spieleraktionen. Trenne inaktives Targeting, geöffnete Optionsliste und die Arbeit der Aktion. Eine schneller wirkende Oberfläche belegt keine niedrigere Serverlast.
Prüfe bei neuen Interaktions- und Menüressourcen vor dem Kauf die konkrete Target-API und Version. Die Kategorie enthält unterschiedliche Interaktionsarten und garantiert nicht, dass jeder Eintrag beide Systeme unterstützt. Bevorzuge einen vorhandenen dokumentierten Konfigurationsschalter gegenüber einem selbst gepflegten Adapter. Bei einem stabilen Server ist der Verzicht auf eine unnötige Umstellung technisch und wirtschaftlich sinnvoll.
Häufige Fragen
Kann ich qb-target ohne Skriptänderungen durch ox_target ersetzen?
Nur wenn jede nutzende Ressource die gewählte Integration bereits unterstützt oder du eine geeignete Bridge überprüft hast. Die teilweise qtarget-Kompatibilität allein beweist das nicht.
Ist ox_target nur für Qbox?
Nein. Es bietet Standalone-Targeting mit zusätzlichen dokumentierten Framework-Integrationen. Framework-spezifische Bedingungen benötigen weiterhin die passende Unterstützung.
Sollte ich beide betreiben?
Prüfe einen möglichen Parallelbetrieb in einer isolierten Testumgebung. Überlappende Registrierungen können Spieler verwirren und die Fehlersuche erschweren. Wähle für jede Interaktion einen unterstützten Weg und prüfe Tastenbelegungen und Menüs.
Die FiveM-Vergleichsübersicht verbindet diese Target-Entscheidung mit Framework, Inventar und weiteren Abhängigkeiten.
Primärquellen
- ox_target: Installation und Framework-Integrationen
- ox_target: Optionsfelder und Callbacks
- ox_target: Client-Exports und Zonengeometrie
- API-Referenz für qb-target
- qb-target: Quellcode, Abhängigkeiten und Lizenz
- ox_target-Manifest und Implementierung der qtarget-Kompatibilität
- Cfx.re: Server-Events absichern