Jak dodać przedmioty na QBCore: items.lua, obrazy, CreateUseableItem

Dodaj niestandardowy przedmiot do QBCore: wpis qb-core/shared/items.lua i jego pola, obraz w qb-inventory, danie to i uczynienie go użytecznym za pomocą CreateUseableItem.

Dodałeś przedmiot do serwera QBCore, i albo on nie istnieje w grze, nie ma ikony, albo nic się nie dzieje gdy jest używany. Oto pełna ścieżka: wpis elementu, obraz, danie to i uczynienie go użytecznym.

1. Wpis elementu

Otwórz qb-core/shared/items.lua. Elementy to wpisy w tabeli QBShared.Items, kluczem po nazwie. Dodaj swoje, z przecinkiem po poprzednim wpisie:

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

Co robi każde pole:

Pole Znaczenie
name Nazwa elementu; musi pasować do klucza, małe litery, bez spacji
label Nazwa pokazana graczom
weight Waga jednego przedmiotu
type item dla normalnych przedmiotów, weapon dla broni
image Nazwa pliku ikony, rozszerzenie wliczane
unique true jeśli każda kopia jest własnym slottem (może mieć dane)
useable true jeśli gracze mogą go użyć
shouldClose true zamyka inventorz przy użyciu
description Tekst pod etykietą

Skopiuj sąsiadujący element w tym samym pliku, gdy jesteś niepewny: plik pokazuje dokładnie pola, które twoja wersja oczekuje.

Ostrzeżenie: jeden brakujący przecinek lub nawias w items.lua zatrzymuje ładowanie qb-core, a razem z nim każdy skrypt, który od niego zależy. Jeśli wszystko się psuje po edycji, najpierw spójrz na ostatni wpis.

2. Obraz

Umieść .png z nazwą z pola image w folderze obrazów inventorium:

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

Folder jest taki sam niezależnie od tego, czy element jest jedzeniem, narzędziem czy dokumentem. W przypadku innego zasobu inventorium użyj zamiast tego własnego folderu obrazów. Brakujący plik pokazuje pustą ikonę, a nazwa musi dokładnie pasować do pola image, rozszerzenie wliczane.

3. Uruchom ponownie i testuj

items.lua jest czytana przez qb-core, gdy się uruchamia. W konsoli serwera:

text
restart qb-core

Uruchomienie ponownie qb-core, podczas gdy gracze są online, może rozłączyć lub złamać skrypty, które od niego zależą, więc na żywym serwerze zrób to o cichym czasie, lub uruchom ponownie cały serwer. Następnie daj sobie przedmiot za pomocą komendy admina:

text
/giveitem <player id> burger 1

Ze skryptu, po stronie serwera:

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

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

Jeśli QBCore to nil tutaj, przeczytaj attempt to index a nil value (global 'QBCore').

4. Uczyń go użytecznym

Ustawienie useable = true pozwala tylko na użycie. Musisz również powiedzieć, co się dzieje, na serwerze:

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)

Callback otrzymuje id gracza i dane elementu. Usuń element sam, jeśli użycie powinno go zużyć, jak powyżej.

Jeśli restart skryptu powoduje, że przedmiot przestaje działać, pamiętaj, że rejestracja odbywa się po uruchomieniu skryptu. Uruchom ponownie skrypt, który zawiera CreateUseableItem, a nie tylko qb-inventory.

Przedmioty, które noszą dane

W przypadku przedmiotów, które noszą informacje, takich jak notatka z tekstem lub bilet z kodem, ustaw unique na true. Każda kopia może wtedy przechowywać własne dane w tabeli info, którą dajesz podczas dodawania elementu:

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

Typowe problemy

  • Niezgodność nazwy elementu. Klucz, pole name, nazwa obrazu i nazwa, którą przekazujesz do AddItem, muszą być tym samym słowem.
  • Element dodany do innego pliku. Niektóre skrypty proszą, abyś dodał ich elementy do kopii listy wewnątrz skryptu. Sprawdź jego notatki instalacyjne i dodaj elementy w qb-core/shared/items.lua, chyba że powiedziano inaczej.
  • Stary inventorz. Starsze wersje qb-inventory przechowują oddzielną kopię niektórych danych elementu we własnym folderze. Jeśli element pokazuje złą etykietę, sprawdź, czy nic innego go nie definiuje.

W QBox

QBox używa ox_inventory zamiast qb-inventory, a jego przedmioty żyją w ox_inventory/data/items.lua. Format jest inny, a tak są wezwania przedmiotów użytecznych. Postępuj zgodnie z dodawaniem przedmiotów do ox_inventory.

Dodaj przedmioty bez edytowania plików

Zmiana items.lua i restart core dla każdego nowego elementu jest powolną częścią. Item Creator pozwala ci zamiast tego tworzyć elementy w grze.

Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.od 18,15 €Zobacz skrypt →

Lista kontrolna

Symptom Naprawa
Element nie znaleziony Dodaj go do qb-core/shared/items.lua i restart qb-core
Wszystko psuje się po edycji Błąd składni w items.lua; sprawdź przecinki i nawiasy
Pusta ikona Dodaj burger.png do qb-inventory/html/images, pasując do pola image
Element nic nie robi Ustaw useable = true i zarejestruj QBCore.Functions.CreateUseableItem
Nazwa nie pasuje Użyj jednej identycznej nazwy w kluczu, name, obrazie i kodzie
Serwer QBox Zamiast tego użyj ox_inventory data/items.lua

Szybkie odpowiedzi

Gdzie są elementy zdefiniowane w QBCore?

W qb-core/shared/items.lua. Każdy element to tabela w QBShared.Items, kluczem jest jego nazwa, a ikona to .png o tej samej nazwie w folderze obrazów inventorium.

Czy QBox używa qb-core/shared/items.lua?

Nie. QBox używa ox_inventory, gdzie przedmioty żyją w ox_inventory/data/items.lua. Patrz przewodnik ox_inventory połączony w tym artykule.

Dlaczego mój przedmiot nie jest użyteczny?

Albo useable jest false w wpisie elementu, albo żaden kod go nie zarejestrował. Ustaw useable = true i zarejestruj go za pomocą QBCore.Functions.CreateUseableItem na serwerze.

Skrypty bez tego problemu

Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.Zobacz skrypt →Shop CreatorZbuduj sklep w niecałą minutę — właściciele, pracownicy, sejfy i napady w zestawie.Zobacz skrypt →

Czytaj dalej