Come aggiungere articoli su QBCore: items.lua, immagini, CreateUseableItem

Aggiungi un articolo personalizzato a QBCore: l'entry qb-core/shared/items.lua e i suoi campi, l'immagine in qb-inventory, darlo, e renderlo usabile con CreateUseableItem.

Hai aggiunto un articolo al tuo server QBCore, e non esiste nel gioco, non ha un'icona, o non fa nulla quando viene usato. Ecco il percorso completo: l'entry dell'articolo, l'immagine, darlo, e renderlo usabile.

1. L'entry dell'articolo

Apri qb-core/shared/items.lua. Gli articoli sono entry nella tabella QBShared.Items, con chiave del nome. Aggiungi il tuo, con una virgola dopo l'entry precedente:

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

Quello che fa ogni campo:

Campo Significato
name Nome dell'articolo; deve corrispondere alla chiave, minuscolo, senza spazi
label Nome mostrato ai giocatori
weight Peso di un articolo
type item per articoli normali, weapon per armi
image Nome del file dell'icona, estensione inclusa
unique true se ogni copia è il suo slot (può portare dati)
useable true se i giocatori possono usarlo
shouldClose true chiude l'inventario all'uso
description Testo sotto l'etichetta

Copia un articolo vicino nello stesso file quando non sei sicuro: il file mostra esattamente i campi che la tua versione si aspetta.

Attenzione: una virgola o una parentesi mancante in items.lua ferma qb-core dal caricamento, e con esso ogni script che dipende da esso. Se tutto si rompe dopo la modifica, guarda il tuo ultimo entry per primo.

2. L'immagine

Metti un .png con il nome dal campo image nella cartella di immagini dell'inventario:

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

La cartella è la stessa se l'articolo è cibo, uno strumento o un documento. Con una risorsa di inventario diversa, usa la sua cartella di immagini invece. Un file mancante mostra un'icona vuota, e il nome deve corrispondere al campo image esattamente, estensione inclusa.

3. Riavvia e testa

items.lua è letto da qb-core quando si avvia. Nella console del server:

text
restart qb-core

Riavviare qb-core mentre i giocatori sono online può disconnettere o rompere gli script che dipendono da esso, quindi su un server live fallo a un'ora tranquilla, o riavvia il server intero. Poi dai a te stesso l'articolo con il comando admin:

text
/giveitem <player id> burger 1

Da uno script, dal lato server:

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

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

Se QBCore è nil qui, leggi tentativo di indicizzare un valore nil (globale 'QBCore').

4. Rendilo usabile

Impostare useable = true consente solo l'uso. Devi anche dire cosa succede, sul 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)

Il callback ottiene l'id del giocatore e i dati dell'articolo. Rimuovi l'articolo tu stesso se l'uso dovrebbe consumarlo, come sopra.

Se un riavvio del tuo script fa smettere di funzionare l'articolo, ricorda che la registrazione accade quando lo script si avvia. Riavvia lo script che contiene CreateUseableItem, non solo qb-inventory.

Articoli che portano dati

Per gli articoli che portano informazioni, come una nota con testo o un biglietto con un codice, imposta unique su true. Ogni copia può quindi contenere i suoi propri dati nella tabella info, che dai quando aggiungi l'articolo:

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

I problemi comuni

  • Mancata corrispondenza del nome dell'articolo. La chiave, il campo name, il nome dell'immagine e il nome che passi a AddItem devono essere la stessa parola.
  • Articolo aggiunto a un file diverso. Alcuni script ti chiedono di aggiungere i loro articoli a una copia della lista dentro lo script. Controlla le sue note di installazione, e aggiungi gli articoli in qb-core/shared/items.lua, a meno che non ti sia detto diversamente.
  • Vecchio inventario. Le versioni più vecchie di qb-inventory mantengono una copia separata di alcuni dati dell'articolo nella loro cartella. Se un articolo mostra un'etichetta sbagliata, controlla che nient'altro lo definisca.

Su QBox

QBox usa ox_inventory invece di qb-inventory, e i suoi articoli vivono in ox_inventory/data/items.lua. Il formato è diverso, e così sono le chiamate di usable-item. Segui aggiungere articoli a ox_inventory.

Aggiungi articoli senza modificare file

Cambiare items.lua e riavviare il core per ogni nuovo articolo è la parte lenta. Item Creator ti permette di creare articoli nel gioco invece.

Item Creator V2Crea oggetti utilizzabili con animazioni, props, effetti e altro — senza scrivere codice.da 18,15 €Vedi lo script →

Checklist

Sintomo Soluzione
Articolo non trovato Aggiungilo a qb-core/shared/items.lua e restart qb-core
Tutto si rompe dopo la modifica Errore di sintassi in items.lua; controlla le virgole e le parentesi
Icona vuota Aggiungi burger.png a qb-inventory/html/images, corrispondendo al campo image
L'articolo non fa nulla Imposta useable = true e registra QBCore.Functions.CreateUseableItem
Il nome non corrisponde Usa un nome identico nella chiave, name, immagine e codice
Server QBox Usa invece il data/items.lua di ox_inventory

Risposte rapide

Dove sono definiti gli articoli in QBCore?

In qb-core/shared/items.lua. Ogni articolo è una tabella dentro QBShared.Items, con chiave del suo nome, e l'icona è un .png dello stesso nome nella cartella di immagini dell'inventario.

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

No. QBox usa ox_inventory, dove gli articoli vivono in ox_inventory/data/items.lua. Vedi la guida ox_inventory collegata in questo articolo.

Perché il mio articolo non è usabile?

Sia useable è false nell'entry dell'articolo, o nessun codice l'ha registrato. Imposta useable = true e registralo con QBCore.Functions.CreateUseableItem sul server.

Script senza questo problema

Item Creator V2Crea oggetti utilizzabili con animazioni, props, effetti e altro — senza scrivere codice.Vedi script →Shop CreatorCrea un negozio in meno di un minuto — proprietari, dipendenti, casseforti e rapine inclusi.Vedi script →

Continua a leggere