Füge Autos zum FiveM-Autoshop hinzu (ESX vehicles-Tabelle, QBCore, QBox)

Wie man ein Auto zu einem Autohaus hinzufügt: die ESX vehicles- und vehicle_categories-Tabellen, QBCore- und QBox-Einträge in der shared vehicles.lua, und warum ein Auto ohne Preis angezeigt wird.

Typische Symptome:

text
The addon car works with /car, but the dealership does not sell it. Or it shows with no name, no price, or in the wrong category.

Ein Autohaus verkauft, was in seinen Daten aufgelistet ist, nicht was im Spiel existiert. Das Hinzufügen eines Autos erfolgt in zwei Schritten: Das Modell muss zum Spiel gestreamt werden, dann muss es in den Daten aufgelistet werden, die dein Framework verwendet. Dieser Artikel behandelt den zweiten Schritt für ESX, QBCore und QBox.

Schritt eins: Das Modell muss gestreamt werden

Wenn das Modell nicht geladen wird, kann das Autohaus es nicht anzeigen, und ein Kauf spawnt nichts. Füge das Auto zuerst als Ressource hinzu und überprüfe, dass es im Spiel funktioniert:

text
/car mycar

Verwende den Spawn-Namen, der aus dem vehicles.meta des Autos kommt. Wenn /car fehlschlägt, behebe das zuerst, bevor du den Shop berührst, siehe Addon-Autos hinzufügen.

ESX: Die vehicles-Tabelle

Das ESX-Autohaus liest zwei SQL-Tabellen. vehicle_categories enthält die im Menü des Shops angezeigten Kategorien, und vehicles enthält die Autos.

sql
DESCRIBE vehicle_categories;
DESCRIBE vehicles;

In einer Standard-ESX-Legacy-Datenbank sehen sie so aus:

Tabelle Spalten
vehicle_categories name, label
vehicles name, model, price, category

Füge eine Kategorie hinzu, wenn du eine neue brauchst:

sql
INSERT INTO vehicle_categories (name, label) VALUES ('mycars', 'My cars');

Dann füge das Auto hinzu:

sql
INSERT INTO vehicles (name, model, price, category)
VALUES ('My Car', 'mycar', 85000, 'mycars');
  • name ist die im Shop angegebene Beschriftung.
  • model ist der Spawn-Name wie in /car. Kleinbuchstaben, genau.
  • price ist eine ganze Zahl.
  • category muss dem name einer Reihe in vehicle_categories entsprechen, oder das Auto erscheint in keiner Kategorie.

Starte die Autohaus-Ressource oder den ganzen Shop neu, damit sie die Tabelle erneut liest. Deine Spaltenliste kann unterschiedlich sein, wenn du einen angepassten Fahrzeugshop verwendest, vertraue daher auf DESCRIBE als auf diese Tabelle.

Tipp: Um zu sehen, wie ein funktionierendes Auto aussieht, kopiere die Werte einer Reihe, die bereits im Shop mit SELECT * FROM vehicles LIMIT 5; vorhanden ist, und bearbeite sie.

QBCore: shared/vehicles.lua

QBCore speichert seine Fahrzeugliste in einer Lua-Datei, qb-core/shared/vehicles.lua. Jeder Eintrag ist ein Auto:

lua
['mycar'] = {
    model = 'mycar',
    name = 'My Car',
    brand = 'Mic',
    price = 85000,
    category = 'sports',
    categoryLabel = 'Sports',
    hash = `mycar`,
    shop = 'pdm',
},

Die Felder:

  • model: der Spawn-Name, gleich wie der Tabellenslüssel.
  • name und brand: was der Shop anzeigt.
  • price: der Verkaufspreis.
  • category und categoryLabel: die Gruppe im Menü.
  • hash: das Modell-Hash. Die Backtick-Form berechnet es für dich.
  • shop: die ID des Autohauses, das es verkauft, zum Beispiel das Standard-Autohaus. Ein Shop-Name, der nicht existiert, bedeutet, dass kein Shop das Auto verkauft.

Das genaue Layout hängt von der Version von qb-core ab. Einige Versionen verwenden eine Tabelle mit dem Modell als Schlüssel, andere eine einfache Liste. Öffne deine eigene Datei und kopiere einen benachbarten Eintrag, ändere dann die Werte, sodass die Struktur immer passt.

Nach dem Bearbeiten starte qb-core und die Autohaus-Ressource neu. Das Neustarten des Kern auf einem Live-Server trennt Spieler in einigen Setups, daher führe es zu einer ruhigen Zeit durch oder starte den ganzen Server neu.

QBox: qbx_core gemeinsame Fahrzeuge

QBox speichert Fahrzeuge in seinem eigenen Kern, qbx_core/shared/vehicles.lua. Die Idee ist gleich wie auf QBCore: ein Eintrag mit Modell, Name, Marke, Preis, Kategorie und Shop. QBox ändert sein Daten-Layout zwischen Versionen, daher öffne die Datei und kopiere einen Eintrag, der bereits auf deiner Version funktioniert, ändere ihn dann.

Starte qbx_core und dein Autohaus neu. Führe keinen separaten qb-core-Ordner daneben aus, siehe Konvertiere QBCore-Skripte zu QBox.

Autohaus-Skripte mit ihrer eigenen Konfiguration

Nicht jedes Autohaus verwendet die Framework-Liste. Einige lesen ihre eigene Konfigurationsdatei oder eine Datenbanktabelle, und die vehicles-Tabelle oder die gemeinsame Datei wird ignoriert. Überprüfe zunächst die Konfiguration des Skripts auf eine Fahrzeugliste. Wenn es eine hat, füge das Auto auch dort hinzu.

Name-, Preis- und Kategorie-Probleme

Das Auto zeigt keinen Namen. Das Feld name ist leer, oder das Autohaus verwendet den Anzeigenamen des Spiels. Ein Anzeigename im Spiel kommt von AddTextEntry mit dem gameName des Modells in vehicles.meta. Ohne dies kann der Shop NULL oder das Modell anzeigen. Stelle die Beschriftung in deinen Daten ein.

Ein Auto, das 0 kostet oder kostenlos ist. Der Preis fehlt oder ist keine Zahl. Entferne Anführungszeichen darum.

Die Kategorie wird nicht angezeigt. Bei ESX hat der Wert category keine Reihe in vehicle_categories. Bei QBCore fehlt die Kategorie-Beschriftung, oder der Shop filtert nach einer Kategorie, die er nicht kennt.

Falscher Spawn-Name. Mycar und mycar sind nicht gleich bei Daten-Lookups. Verwende den Namen genau wie definiert, in Kleinbuchstaben.

Gekauft, aber kein Auto. Der Kauf funktionierte und der Spawn nicht. Das Modell wird auf dem Client nicht gestreamt, oder das Kennzeichen und der Besitzer werden nicht gespeichert. Überprüfe die Konsole und die Datenbank, siehe die Garagen-Tabellen.

Handling und Leistung von Addon-Autos

Ein hinzugefügtes Auto mit schlechtem Handling oder einem schweren Modell schadet dem ganzen Server. Überprüfe das Handling vor dem Verkauf, bearbeite das Fahrzeug-Handling, und teste das Modell auf Textur-Speicher, siehe Oversized Assets.

Füge viele Autos auf einmal hinzu

Für ein Paket von Autos spart eine Schleife in SQL Zeit bei ESX. Schreibe die Reihen in einer Anweisung:

sql
INSERT INTO vehicles (name, model, price, category) VALUES
('Car A', 'cara', 60000, 'mycars'),
('Car B', 'carb', 75000, 'mycars'),
('Car C', 'carc', 90000, 'mycars');

Bei QBCore und QBox füge die Einträge nacheinander in die Lua-Datei ein, mit einem Komma nach jedem.

Checkliste

Symptom Behebung
Auto funktioniert mit /car, wird aber nicht verkauft Füge es zur vehicles-Tabelle oder shared/vehicles.lua hinzu
Auto fehlt in einer Kategorie bei ESX Der category muss einem name in vehicle_categories entsprechen
Kein Name oder Preis angezeigt Fülle name und price, mit dem Preis als Zahl
Nichts verkauft das Auto bei QBCore oder QBox Überprüfe, dass der Wert shop einem Autohaus entspricht
Kauf spawnt nichts Das Modell wird nicht gestreamt: behebe zuerst das Addon-Auto
Bearbeitete Daten haben keine Auswirkung Starte die Datenressource und das Autohaus neu
Lua-Datei-Fehler nach Bearbeitung Überprüfe Kommas und Klammern um deinen neuen Eintrag

Kurze Antworten

Warum ist mein Addon-Auto nicht im Autohaus?

Das Geschäft listet nur auf, was sich in seinen Daten befindet: die vehicles-Tabelle auf ESX oder shared/vehicles.lua auf QBCore und QBox. Das Auto zum Server-Stream hinzuzufügen ist ein separater Schritt, und beide sind erforderlich.

Welchen Modellnamen setze ich in die Tabelle?

Den Spawn-Namen des Fahrzeugs, den in /car, der im vehicles.meta des Fahrzeugs definiert ist. Er muss genau übereinstimmen, in Kleinbuchstaben.

Muss ich den Server nach dem Hinzufügen eines Autos neu starten?

Starte die Ressource neu, die die Daten enthält, und das Autohaus-Skript. Bei ESX liest der Shop normalerweise die Tabelle beim Start, daher reicht es, ihn neu zu starten.

Scripts ohne dieses Problem

Advanced BoostingFahrzeug-Boosting per Tablet: Aufträge von Klasse D bis S+, Crews und eine Live-Warteschlange.Script ansehen →Chameleon Paints82 schillernde Chamäleon-Lacke in einem Menü, per Klick aufgetragen.Script ansehen →Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.Script ansehen →

Weiterlesen