Wie man Items in QBCore hinzufügt: items.lua, Bilder, CreateUseableItem

Füge ein benutzerdefiniertes Item zu QBCore hinzu: der qb-core/shared/items.lua Eintrag und seine Felder, das Bild in qb-inventory, es geben, und es usable machen mit CreateUseableItem.

Du hast ein Item zu deinem QBCore Server hinzugefügt, und es existiert entweder nicht im Spiel, hat kein Icon, oder macht nichts, wenn es verwendet wird. Hier ist der vollständige Pfad: Der Item-Eintrag, das Bild, es geben, und es usable machen.

1. Der Item-Eintrag

Öffne qb-core/shared/items.lua. Items sind Einträge in der QBShared.Items Tabelle, mit Namen als Schlüssel. Füge deins hinzu, mit einem Komma nach dem vorherigen Eintrag:

lua
['burger'] = {
    ['name'] = 'burger',
    ['label'] = 'Burger',
    ['weight'] = 220,
    ['type'] = 'item',
    ['image'] = 'burger.png',
    ['unique'] = false,
    ['useable'] = true,
    ['shouldClose'] = true,
    ['description'] = 'A warm burger.',
},

Was jedes Feld macht:

Feld Bedeutung
name Item-Name; muss dem Schlüssel entsprechen, Kleinbuchstaben, keine Leerzeichen
label Name, der Spielern angezeigt wird
weight Gewicht eines Items
type item für normale Items, weapon für Waffen
image Dateiname des Icons, Erweiterung enthalten
unique true wenn jede Kopie sein eigenes Slot ist (kann Daten tragen)
useable true wenn Spieler es verwenden können
shouldClose true schließt das Inventory bei Verwendung
description Text unter dem Label

Kopiere ein benachbartes Item in der gleichen Datei, wenn du dir unsicher bist: Die Datei zeigt genau die Felder, die deine Version erwartet.

Achtung: Ein fehlendes Komma oder Klammer in items.lua hindert qb-core daran zu laden, und damit jeden Script, der davon abhängt. Wenn alles nach der Änderung kaputt geht, schaue zuerst auf deinen letzten Eintrag.

2. Das Bild

Lege eine .png mit dem Namen aus dem image Feld in den Images-Ordner des Inventory:

text
qb-inventory/html/images/burger.png

Der Ordner ist gleich, ob das Item Essen, ein Werkzeug oder ein Dokument ist. Mit einer anderen Inventory-Ressource, verwende stattdessen ihren eigenen Images-Ordner. Eine fehlende Datei zeigt ein leeres Icon, und der Name muss genau dem image Feld entsprechen, Erweiterung enthalten.

3. Starte neu und teste

items.lua wird von qb-core gelesen, wenn es startet. In der Server-Konsole:

text
restart qb-core

Das Neustarten von qb-core, während Spieler online sind, kann Scripts trennen oder unterbrechen, die davon abhängen. Auf einem Live-Server tue es also zu einer ruhigen Zeit, oder starte den ganzen Server neu. Dann gib dir selbst das Item mit dem Admin-Befehl:

text
/giveitem <player id> burger 1

Von einem Script, auf der Server-Seite:

lua
local QBCore = exports['qb-core']:GetCoreObject()

local Player = QBCore.Functions.GetPlayer(source)
if Player then
    Player.Functions.AddItem('burger', 1)
end

Wenn QBCore hier nil ist, lese attempt to index a nil value (global 'QBCore').

4. Mache es usable

Das Setzen von useable = true erlaubt nur die Verwendung. Du musst auch sagen, was passiert, auf dem Server:

lua
local QBCore = exports['qb-core']:GetCoreObject()

QBCore.Functions.CreateUseableItem('burger', function(source, item)
    local Player = QBCore.Functions.GetPlayer(source)
    if not Player then return end

    if Player.Functions.RemoveItem('burger', 1) then
        TriggerClientEvent('QBCore:Notify', source, 'You ate the burger', 'success')
        -- your effect here: heal, hunger, an animation event
    end
end)

Der Callback erhält die Spieler-ID und die Item-Daten. Entferne das Item selbst, wenn die Verwendung es verbrauchen sollte, wie oben.

Wenn ein Neustart deines Scripts macht, dass das Item zu arbeiten aufhört, denke daran, dass die Registrierung passiert, wenn das Script startet. Starte das Script neu, das CreateUseableItem enthält, nicht nur qb-inventory.

Items, die Daten tragen

Für Items, die Informationen tragen, wie eine Notiz mit Text oder ein Ticket mit einem Code, setze unique auf true. Jede Kopie kann dann ihre eigenen Daten in der info Tabelle halten, die du beim Hinzufügen des Items gibst:

lua
Player.Functions.AddItem('ticket', 1, false, { code = 'A12' })

Die häufigen Probleme

  • Item-Name stimmt nicht überein. Der Schlüssel, das name Feld, der Image-Name und der Name, den du an AddItem übergibst, müssen das gleiche Wort sein.
  • Item zu einer anderen Datei hinzugefügt. Einige Scripts bitten dich, ihre Items zu einer Kopie der Liste im Script hinzuzufügen. Überprüfe ihre Installationsnotizen, und füge Items in qb-core/shared/items.lua hinzu, es sei denn, du wirst anders aufgefordert.
  • Altes Inventory. Ältere qb-inventory Versionen behalten eine separate Kopie einiger Item-Daten in ihrem eigenen Ordner. Wenn ein Item ein falsches Label zeigt, überprüfe, dass nichts anderes es definiert.

In QBox

QBox verwendet ox_inventory anstelle von qb-inventory, und seine Items leben in ox_inventory/data/items.lua. Das Format ist anders, und so sind die Usable-Item-Aufrufe. Folge Hinzufügen von Items zu ox_inventory.

Items hinzufügen, ohne Dateien zu bearbeiten

Das Ändern von items.lua und das Neustarten des Cores für jedes neue Item ist der langsame Teil. Item Creator lässt dich stattdessen Items im Spiel erstellen.

Item Creator V2Erstelle nutzbare Items mit Animationen, Props, Effekten und mehr — ganz ohne Code.ab 18,15 €Script ansehen →

Checkliste

Symptom Behebung
Item nicht gefunden Füge es zu qb-core/shared/items.lua hinzu und restart qb-core
Alles bricht nach der Bearbeitung Syntax-Fehler in items.lua; überprüfe Kommas und Klammern
Leeres Icon Füge burger.png zu qb-inventory/html/images hinzu, matching das image Feld
Item macht nichts Setze useable = true und registriere QBCore.Functions.CreateUseableItem
Name stimmt nicht überein Verwende einen identischen Namen in Schlüssel, name, Image und Code
QBox Server Verwende stattdessen ox_inventory's data/items.lua

Kurze Antworten

Wo werden Items in QBCore definiert?

In qb-core/shared/items.lua. Jedes Item ist eine Tabelle in QBShared.Items, mit seinem Namen als Schlüssel, und das Icon ist eine .png mit dem gleichen Namen im Images-Ordner des Inventory.

Verwendet QBox qb-core/shared/items.lua?

Nein. QBox verwendet ox_inventory, wo Items in ox_inventory/data/items.lua leben. Siehe den ox_inventory Leitfaden, der in diesem Artikel verlinkt ist.

Warum ist mein Item nicht usable?

Entweder ist useable false im Item-Eintrag, oder kein Code hat es registriert. Setze useable = true und registriere es mit QBCore.Functions.CreateUseableItem auf dem Server.

Scripts ohne dieses Problem

Item Creator V2Erstelle nutzbare Items mit Animationen, Props, Effekten und mehr — ganz ohne Code.Script ansehen →Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.Script ansehen →

Weiterlesen