ESX, QBCore und Qbox: Framework einrichten und Jobs anlegen
Ein funktionierendes Framework ist die Grundlage deines FiveM-Servers. Bevor Garagen, Tablets oder Unternehmen dazukommen, sollten Charaktererstellung, Datenbank und Jobzuweisung laufen. Dieser Guide führt durch eine frische Installation und einen kleinen Beispieljob in ESX Legacy, QBCore oder Qbox. Folge dem Abschnitt für dein Framework; alle drei gleichzeitig zu installieren gehört nicht zum Setup.
Mit einer sauberen Installation starten
Du brauchst ein Cfx.re-Konto, einen Server-Registrierungsschlüssel, ein passendes FXServer-Artifact und einen laufenden MariaDB-Dienst. Nutze eine Datenbankversion, die dein Framework unterstützt; Qbox verlangt ausdrücklich MariaDB und unterstützt weder MySQL noch XAMPP. Bei einem Gameserver-Hoster verwendest du dessen Server- und txAdmin-Verwaltung. Siehe die offizielle FiveM-Serveranleitung und die Qbox-Voraussetzungen.
- Öffne txAdmin und wähle eine neue Recipe-Installation in einem neuen Serverdaten-Verzeichnis.
- Wähle die offizielle Recipe deines Frameworks: ESX Legacy, QBCore oder Qbox.
- Trage den Serverschlüssel und die richtigen MariaDB-Zugangsdaten ein. Verwende einen eigenen Datenbankbenutzer mit Zugriff auf die Datenbank dieses Servers.
- Führe die Recipe aus, prüfe die erzeugte Konfiguration und starte den Server. Behalte die Abhängigkeiten und Ressourcen-Reihenfolge der Recipe bei.
- Verbinde dich, erstelle einen Charakter und verbinde dich erneut. Prüfe zuerst, ob dein Charakter wieder geladen wird, bevor weitere Ressourcen dazukommen.
Recipes laden Ressourcen herunter und führen deren Installations-SQL aus. Importiere danach kein zweites vollständiges Framework-Schema und installiere keine frische Recipe über einen bestehenden Server. Sichere vor späteren Änderungen sowohl Dateien als auch Datenbank. Die einzelnen Installationsschritte findest du in der ESX-Installationsanleitung, QBCore-Anleitung für Windows beziehungsweise Qbox-Installationsanleitung.
Verstehen, woraus ein Job besteht
Jeder Job hat einen internen Schlüssel, einen Anzeigenamen und nummerierte Ränge. Wir verwenden durchgehend sky_example mit den Rängen 0 und 1. Dieser Schlüssel muss im Framework, Jobskript und allen Integrationen identisch sein. Ein Label wie „Example Company“ ist lediglich der Name, den Spieler sehen.
| Framework | Jobdefinitionen | Rangschlüssel in diesem Guide |
|---|---|---|
| ESX Legacy | MariaDB: jobs und job_grades | SQL-Werte 0, 1 |
| QBCore | qb-core/shared/jobs.lua | Strings: ['0'], ['1'] |
| Qbox | qbx_core/shared/jobs.lua | Zahlen: [0], [1] |
Durch die Registrierung kennt das Framework den Job. Für Spielmechaniken, Garagen, Lager, Bossmenüs und Geschäftskonten brauchst du eigene kompatible Ressourcen und deren Konfiguration. Ein Framework-Job ist noch kein fertiger Betrieb. Die Speicherorte entsprechen dem ESX-Schema, der QBCore-Jobdatei und der Qbox-Jobdatei.
ESX Legacy: Job in MariaDB anlegen
Öffne die Datenbank, die für diesen Server konfiguriert ist, nicht die eines anderen Servers. Prüfe zunächst, ob der Beispielschlüssel bereits existiert:
SELECT name FROM jobs WHERE name = 'sky_example';
SELECT grade FROM job_grades WHERE job_name = 'sky_example';
Führe die folgenden Inserts nur aus, wenn beide Prüfungen keine Zeilen liefern. Existiert der Job bereits, prüfe und bearbeite seine vorhandenen Einträge, statt Duplikate einzufügen.
INSERT INTO jobs (name, label)
VALUES ('sky_example', 'Example Company');
INSERT INTO job_grades
(job_name, grade, name, label, salary, skin_male, skin_female)
VALUES
('sky_example', 0, 'employee', 'Employee', 100, '{}', '{}'),
('sky_example', 1, 'boss', 'Manager', 200, '{}', '{}');
job_name ordnet jeden Rang seinem Job zu. Die Spalte grade bestimmt den Rang für die Jobzuweisung; die automatische Zeilen-ID id ist nicht der Rang. Jobs ohne Ränge werden ignoriert. Lade den Jobkatalog über die Serverkonsole neu:
refreshjobs
Aktuelles ESX Legacy startet oxmysql, danach esx_lib und anschließend es_extended; in älteren Tutorials fehlt esx_lib teilweise. Behalte die Abhängigkeiten deiner Recipe bei. Siehe die aktuelle Recipe-Konfiguration und die Implementierung des Jobkatalogs.
Bei einer Integration mit esx_society wird der interne Rangname boss von dessen Standardkonfiguration als Boss erkannt. Der sichtbare Titel „Manager“ allein vergibt keine Rechte. Society-Registrierung, Konten und Startreihenfolge bleiben eigene Einrichtungsschritte. Folge der Society-Dokumentation, wenn dein Jobskript diese Integration verwendet.
QBCore: Eintrag in der Jobtabelle ergänzen
Öffne qb-core/shared/jobs.lua. Füge den Eintrag innerhalb der vorhandenen Jobtabelle neben den anderen Jobs und vor deren schließender Klammer ein. Behalte die vorhandene Tabellendeklaration und alle bestehenden Jobs bei; dieses Beispiel ist ein Eintrag, keine Ersatzdatei.
['sky_example'] = {
label = 'Example Company',
defaultDuty = false,
offDutyPay = false,
grades = {
['0'] = { name = 'Employee', payment = 100 },
['1'] = { name = 'Manager', payment = 200, isboss = true },
},
},
Behalte die Rangschlüssel als Strings bei, auch Rang null. Prüfe Kommas und Klammern an den benachbarten Einträgen, speichere und führe dann einen geplanten vollständigen Serverneustart durch. So laden abhängige Ressourcen dieselben Definitionen. Der FiveM-Befehl refresh scannt Ressourcen und Manifeste neu; er lädt keine laufende Lua-Jobtabelle neu. Lege für QBCore keine ESX-artigen jobs-SQL-Einträge an. Seine Jobdefinitionen stehen in Lua; Charakterdaten verwenden weiterhin die Datenbank.
isboss kennzeichnet den Leitungsrang; dadurch erhältst du keine Framework-Adminrechte für Befehle. Eine kompatible Verwaltungsressource muss das eigentliche Menü und dessen Position trotzdem bereitstellen und konfigurieren.
Qbox: Eigene Jobdatei und numerische Ränge verwenden
Öffne qbx_core/shared/jobs.lua und füge diesen Eintrag innerhalb der von return { ... } zurückgegebenen Tabelle vor der letzten schließenden Klammer ein. Behalte die anderen Einträge bei. Qbox verwendet hier numerische Rangschlüssel; übernimm QBCores String-Schlüssel daher nicht unverändert.
['sky_example'] = {
label = 'Example Company',
defaultDuty = false,
offDutyPay = false,
grades = {
[0] = { name = 'Employee', payment = 100 },
[1] = { name = 'Manager', payment = 200, isboss = true, bankAuth = true },
},
},
Speichere und führe einen geplanten vollständigen Serverneustart durch. bankAuth ist von isboss getrennt und wird von kompatiblen Banking-Integrationen verwendet; keines der Flags erstellt ein Konto oder Menü. Orientiere dich an den offiziellen Qbox-Jobdefinitionen.
Qbox enthält ein Multijob-System. Das Joblimit und die Frage, ob /setjob eine Mitgliedschaft ersetzt oder hinzufügt, sind konfigurierbar. Nutze bei mehreren Jobs die dafür vorgesehenen Verwaltungsbefehle; setze nicht voraus, dass ein externes QBCore-Multijob-Skript kompatibel ist. Siehe die Qbox-Befehle und Multijob-Konfiguration.
Zuweisen, testen und erneut verbinden
Verbinde dich mit einem Testcharakter und verwende einen Account mit den erforderlichen Framework-/ACE-Befehlsrechten. Ein txAdmin-Login allein vergibt diese Rechte nicht. Ist bei Qbox requireOptIn aktiviert, verwende vor Adminbefehlen /optin. Ersetze 1 unten durch die aktuelle Server-ID deines verbundenen Testcharakters; /job zeigt den Job des Spielers an, der den Befehl eingibt:
/setjob 1 sky_example 0
/job
/setjob 1 sky_example 1
/job
Prüfe, ob bei beiden Rängen der erwartete Job und Rang angezeigt werden. Die Zuweisungssyntax ist für ESX, QBCore und Qbox dokumentiert; die bedingte Opt-in-Prüfung steht in der Qbox-Befehlsimplementierung.
Bei QBCore und Qbox startet dieses Beispiel außer Dienst und deaktiviert Zahlungen außerhalb des Dienstes. Nutze den Dienstwechsel deines installierten Jobskripts; einen universellen /duty-Befehl darfst du nicht voraussetzen. Einstellungen beim Login beeinflussen außerdem, ob der gespeicherte Dienststatus oder defaultDuty gilt. Verbinde dich anschließend erneut und prüfe den gespeicherten Job, Rang und gewünschten Dienststatus.
Bevor du den Job für Spieler öffnest, teste seine Rechte mit beiden Rängen. Ein Mitarbeiter sollte keine Funktionen verwenden können, die der Leitung vorbehalten sind. Warte auf dein eingestelltes Gehaltsintervall, statt direkt nach der Zuweisung eine Zahlung zu erwarten; die Beispielbeträge sind Platzhalter für deine Wirtschaft. Schlägt eine Prüfung fehl, lies den ersten passenden Konsolenfehler und behebe ihn, bevor eine weitere Ressource dazukommt.
| Symptom | Zuerst prüfen |
|---|---|
| Job lässt sich nicht zuweisen | Exakter Schlüssel, vorhandener Rang und geladene Definitionen |
| Befehl verweigert | Framework-Rechte und ACE-Konfiguration |
| Ressource startet nach Lua-Änderung nicht | Erster Konsolenfehler, Kommas und Klammern |
| Richtiger Job, aber kein Menü | Jobressource, konfigurierte Position, Rang und Dienststatus |
| Falsche Gehaltszahlung | Ranggehalt, Dienstregeln und Gehalts-/Kontokonfiguration |
Deinen Sky-Job anschließend verbinden
Sobald die Framework-Zuweisung funktioniert, folge der Sky-Installationsanleitung und konfiguriere deine installierte Jobressource mit demselben Framework-Schlüssel und den passenden Rängen. Die gemeinsamen Jobs-Base-Funktionen erklären die jeweiligen gemeinsamen Einstellungen. Richte ein Off-Duty-Jobpaar nur ein, wenn dein gewähltes Sky-Setup eines verwendet, und lege beide Jobs mit allen benötigten Rängen an.
Zuletzt geprüft: 25. Oktober 2026. Die Quellen oben sind die offiziellen Framework-Dokumentationen, gepflegten Recipes und GitHub-Implementierungen. Prüfe deine installierte Version, bevor du Beispiele aus einer neueren Veröffentlichung übernimmst.