Wie man Gegenstände zu ox_inventory hinzufügt: items.lua, Bilder und nutzbare Gegenstände
Füge einen benutzerdefinierten Gegenstand zu ox_inventory hinzu: der data/items.lua Eintrag, das Bild in web/images, geben mit AddItem und nutzbar mit einem Client-Export.
Du möchtest einen neuen Gegenstand auf deinem Server: einen Burger, ein Lockpick, einen Telefon-Akku. Mit ox_inventory, das ESX und QBox Server verwenden, ist ein Gegenstand eine Lua-Tabelle in einer Datei. Dieser Artikel behandelt den Eintrag, das Bild, den Gegenstand einem Spieler zu geben und ihn nutzbar zu machen.
1. Der Gegenstand-Eintrag
Öffne ox_inventory/data/items.lua. In der zurückgegebenen Tabelle füge einen Eintrag hinzu. Der Schlüssel ist der Gegenstandsname: Kleinbuchstaben, keine Leerzeichen.
['burger'] = {
label = 'Burger',
weight = 220,
stack = true,
close = true,
description = 'A warm burger.',
},Was die Felder tun:
| Feld | Bedeutung |
|---|---|
label |
Name, der Spielern angezeigt wird |
weight |
Gewicht eines Gegenstandes, in Grammen |
stack |
true, wenn mehrere einen Slot teilen können, false, wenn jeder seinen eigenen Slot nimmt |
close |
true schließt das Inventar, wenn der Gegenstand verwendet wird |
description |
Text unter dem Label |
Prüfe die anderen Gegenstände in der gleichen Datei für die genauen Felder, die deine Version von ox_inventory unterstützt, und kopiere ihren Stil. Die Datei ist die beste Referenz für deine Installation.
Achtung: Ein Lua-Syntaxfehler in
items.luastoppt ox_inventory vom Starten. Prüfe auf ein fehlendes Komma zwischen Einträgen und eine fehlende schließende Klammer.
2. Das Bild
ox_inventory sucht nach einer .png, die nach dem Gegenstand benannt ist:
ox_inventory/web/images/burger.pngDer Name muss genau mit dem Gegenstandsnamen übereinstimmen, und ein fehlendes Bild zeigt nur ein leeres Symbol. Ein quadratisches Bild von etwa 100 mal 100 Pixeln oder größer, mit transparentem Hintergrund, sieht am besten aus.
3. Neulade und geben es dir selbst
Starte das Inventar neu, damit es die Datei liest:
restart ox_inventoryDann geben dir den Gegenstand. Admins mit der richtigen Berechtigung können den /additem-Befehl im Spiel oder in der Konsole verwenden:
additem <player id> burger 1Wenn der Befehl abgelehnt wird, fehlen dir Admin-Berechtigungen, siehe ACE permissions for admins.
4. Geben den Gegenstand von einem Skript
Auf der Server-Seite verwende den Export:
local success = exports.ox_inventory:AddItem(source, 'burger', 1)
if not success then
print('Could not add the item: inventory full or unknown item')
endAddItem nimmt die Spieler-ID, den Gegenstandsnamen, die Anzahl und optionale Metadaten. Das Entfernen und Prüfen funktionieren auf die gleiche Weise:
exports.ox_inventory:RemoveItem(source, 'burger', 1)
local count = exports.ox_inventory:Search(source, 'count', 'burger')Wenn der Spieler den Gegenstand nicht tragen kann, weil Gewicht oder Slots, gibt AddItem falsch zurück. Du kannst zuerst prüfen:
if exports.ox_inventory:CanCarryItem(source, 'burger', 1) then
exports.ox_inventory:AddItem(source, 'burger', 1)
end5. Machen den Gegenstand nutzbar
Ein Gegenstand kann Code ausführen, wenn ein Spieler ihn verwendet. ox_inventory unterstützt dies in der Gegenstand-Definition selbst, mit einem client-Block, der auf einen Export einer deiner Ressourcen zeigt:
['burger'] = {
label = 'Burger',
weight = 220,
stack = true,
close = true,
description = 'A warm burger.',
client = {
export = 'my_script.burger',
},
},Der Wert ist resourceName.exportName. In my_script registriere den Export auf dem Client:
-- my_script/client.lua
exports('burger', function(data, slot)
exports.ox_inventory:useItem(data, function(used)
if used then
print('Burger eaten')
end
end)
end)useItem entfernt einen Gegenstand und führt deine Funktion nur aus, wenn die Verwendung durchging. Es ist die Standard-Art, ox_inventory die Animation, Fortschrittszeit und Verbrauch handhaben zu lassen, wenn der Gegenstand sie gesetzt hat.
Der gleiche Block kann eingebaute Effekte anstatt eines Exports tragen. Schaue auf die Lebensmittel- und Getränke-Gegenstände bereits in items.lua für die verfügbaren Optionen, beispielsweise status, anim und prop, und wiederverwendung diese Form für deinen eigenen Lebensmittel-Gegenstand.
ESX und QBCore-Stil nutzbare Gegenstände
Skripte, die für das Framework geschrieben sind, registrieren nutzbare Gegenstände mit ESX.RegisterUsableItem('burger', ...) oder QBCore.Functions.CreateUseableItem('burger', ...). ox_inventory funktioniert mit diesen Aufrufen, wenn es mit dem Framework läuft, also diese Skripte brauchen nicht geändert werden, solange der Gegenstand in items.lua existiert.
Gegenstände erstellen ohne Dateien zu bearbeiten
Wenn du oft Gegenstände erstellst, wird das Bearbeiten von Dateien und Neustarten langsam. Item Creator lässt dich Gegenstände im Spiel erstellen, also berührst du items.lua nicht für jeden.
Item Creator V2Erstelle nutzbare Items mit Animationen, Props, Effekten und mehr — ganz ohne Code.ab 18,15 €Script ansehen →
Auf QBCore und QBox
ox_inventory ist das Inventar von QBox, also alles oben gilt wie es ist. Bei QBCore ist das Standard-Inventar stattdessen qb-inventory, mit Gegenständen in qb-core/shared/items.lua, behandelt in adding items on QBCore.
Checkliste
| Symptom | Behebung |
|---|---|
| Gegenstand existiert nicht | Füge ihn zu data/items.lua hinzu, dann restart ox_inventory |
| ox_inventory wird nicht gestartet | Syntaxfehler in items.lua; prüfe Kommas und Klammern |
| Leeres Symbol | Lege <item name>.png in web/images |
AddItem gibt falsch zurück |
Unbekannter Gegenstandsname, Inventar voll oder zu schwer |
| Gegenstand tut nichts, wenn verwendet | Füge einen client-Block mit einem export hinzu und registriere diesen Export |
| Nutzbares-Gegenstand-Skript ignoriert | Der Gegenstandsname im Skript muss mit dem Schlüssel in items.lua übereinstimmen |
Kurze Antworten
Wo füge ich Gegenstände in ox_inventory hinzu?
In ox_inventory/data/items.lua. Jeder Gegenstand ist eine Tabelle mit seinem Namen als Schlüssel, und der gleiche Name ist die Bilddatei in web/images.
Warum zeigt mein neuer Gegenstand kein Symbol?
Das Bild fehlt oder hat einen anderen Namen. Lege <item name>.png in ox_inventory/web/images, mit dem genauen Gegenstandsnamen und einer Kleinbuchstaben-Erweiterung.
Muss ich den Server neu starten, nachdem ich einen Gegenstand hinzugefügt habe?
Nein. Starte ox_inventory neu und der neue Gegenstand wird geladen. Wenn ein Skript ihn braucht, starte auch dieses Skript neu.
