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:
['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.luaferma 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:
qb-inventory/html/images/burger.pngLa 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:
restart qb-coreRiavviare 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:
/giveitem <player id> burger 1Da uno script, dal lato server:
local QBCore = exports['qb-core']:GetCoreObject()
local Player = QBCore.Functions.GetPlayer(source)
if Player then
Player.Functions.AddItem('burger', 1)
endSe 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:
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:
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 aAddItemdevono 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.
