Jak dodać przedmioty do ox_inventory: items.lua, obrazy i użyteczne przedmioty
Dodaj niestandardowy przedmiot do ox_inventory: wpis data/items.lua, obraz w web/images, danie go za pomocą AddItem, i uczynienie go użytecznym za pomocą exportu klienta.
Chcesz nowy przedmiot na twoim serwerze: burger, wytrych, baterię telefonu. Z ox_inventory, który serwery ESX i QBox używają, przedmiot to jedna tabela Lua w jednym pliku. Ten artykuł obejmuje wpis, obraz, danie przedmiotu graczowi, i uczynienie go użytecznym.
1. Wpis przedmiotu
Otwórz ox_inventory/data/items.lua. Wewnątrz zwróconej tabeli, dodaj wpis. Klucz to nazwa przedmiotu: małe litery, bez spacji.
['burger'] = {
label = 'Burger',
weight = 220,
stack = true,
close = true,
description = 'A warm burger.',
},Co robią pola:
| Pole | Znaczenie |
|---|---|
label |
Nazwa pokazana graczom |
weight |
Waga jednego przedmiotu, w gramach |
stack |
true jeśli kilka może dzielić slot, false jeśli każda bierze swój slot |
close |
true zamyka inwentarz gdy przedmiot jest używany |
description |
Tekst pod etykietą |
Sprawdź inne przedmioty w tym samym pliku dla dokładnych pól których twoja wersja ox_inventory wspiera, i skopiuj ich styl. Plik to najlepsza referencja dla twojej instalacji.
Ostrzeżenie: błąd składni Lua w
items.luazatrzymuje ox_inventory od uruchamiania. Sprawdź brakujący przecinek między wpisami i brakujący nawias zamykający.
2. Obraz
ox_inventory szuka .png o nazwie po przedmiocie:
ox_inventory/web/images/burger.pngNazwa musi dokładnie pasować do nazwy przedmiotu, a brakujący obraz pokazuje tylko pustą ikonę. Kwadratowy obraz około 100 na 100 pikseli lub większy, z przezroczystym tłem, wygląda najlepiej.
3. Przeładuj i daj sobie
Uruchom ponownie inwentarz aby przeczytał plik:
restart ox_inventoryPotem daj sobie przedmiot. Admini z właściwym uprawnieniem mogą użyć komendy /additem w grze lub konsoli:
additem <player id> burger 1Jeśli komenda jest odrzucona, brakuje ci uprawnień admina, patrz ACE uprawnienia dla adminów.
4. Daj przedmiot ze skryptu
Po stronie serwera, użyj exportu:
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 bierze id gracza, nazwę przedmiotu, liczbę i opcjonalne metadane. Usunięcie i sprawdzenie pracują tak samo:
exports.ox_inventory:RemoveItem(source, 'burger', 1)
local count = exports.ox_inventory:Search(source, 'count', 'burger')Jeśli gracz nie może nosić przedmiotu z powodu wagi lub slotów, AddItem zwraca false. Możesz sprawdzić najpierw:
if exports.ox_inventory:CanCarryItem(source, 'burger', 1) then
exports.ox_inventory:AddItem(source, 'burger', 1)
end5. Uczyń przedmiot użytecznym
Przedmiot może uruchomić kod gdy gracz go używa. ox_inventory wspiera to w definicji przedmiotu, z blokiem client który wskazuje na export jednego z twoich zasobów:
['burger'] = {
label = 'Burger',
weight = 220,
stack = true,
close = true,
description = 'A warm burger.',
client = {
export = 'my_script.burger',
},
},Wartość to resourceName.exportName. W my_script, zarejestruj export na kliencie:
-- 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 usuwa jeden przedmiot i uruchamia twoją funkcję tylko jeśli użycie przeszło. To standardowy sposób aby pozwolić ox_inventory obsługiwać animację, czas postępu i konsumpcję, gdy przedmiot ma je ustawione.
Ten sam blok może nosić wbudowane efekty zamiast exportu. Spójrz na jedzenie i przedmioty picia już w items.lua dla dostępnych opcji, na przykład status, anim i prop, i ponownie użyj tego kształtu dla twojego własnego przedmiotu jedzenia.
ESX i QBCore styl użyteczne przedmioty
Skrypty napisane dla framework'u rejestrują użyteczne przedmioty z ESX.RegisterUsableItem('burger', ...) lub QBCore.Functions.CreateUseableItem('burger', ...). ox_inventory pracuje z tymi wywołaniami gdy biegnie z framework'iem, więc te skrypty nie potrzebują zmian, tak długo jak przedmiot istnieje w items.lua.
Tworzenie przedmiotów bez edytowania plików
Jeśli tworzysz przedmioty często, edytowanie plików i restarty stają się powolne. Item Creator pozwala ci tworzyć przedmioty w grze, więc nie dotykasz items.lua dla każdego.
Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.od 18,15 €Zobacz skrypt →
Na QBCore i QBox
ox_inventory to inwentarz QBox, więc wszystko powyżej dotyczy jak jest. Na QBCore, domyślnym inwentarzem jest qb-inventory zamiast, z przedmiotami w qb-core/shared/items.lua, objętymi w dodawanie przedmiotów na QBCore.
Checklist
| Objaw | Naprawić |
|---|---|
| Przedmiot nie istnieje | Dodaj go do data/items.lua, potem restart ox_inventory |
| ox_inventory nie uruchomia się | Błąd składni w items.lua; sprawdź przecinki i nawiasy |
| Pusta ikona | Umieść <item name>.png w web/images |
AddItem zwraca false |
Nieznana nazwa przedmiotu, inwentarz pełny, lub zbyt ciężki |
| Przedmiot nic nie robi gdy użyty | Dodaj blok client z export, i zarejestruj ten export |
| Skrypt użytecznego przedmiotu ignorowany | Nazwa przedmiotu w skrypcie musi pasować do klucza w items.lua |
Szybkie odpowiedzi
Gdzie dodaję przedmioty w ox_inventory?
W ox_inventory/data/items.lua. Każdy przedmiot to tabela kluczona po jego nazwie, i ta sama nazwa to plik obrazu w web/images.
Dlaczego mój nowy przedmiot nie pokazuje ikony?
Obraz brakuje lub ma inną nazwę. Umieść <item name>.png w ox_inventory/web/images, z dokładną nazwą przedmiotu i małymi literami rozszerzenia.
Czy muszę uruchomić serwer ponownie po dodaniu przedmiotu?
Nie. Uruchom ponownie ox_inventory i nowy przedmiot jest załadowany. Jeśli skrypt go potrzebuje, uruchom ponownie też ten skrypt.
