ox_inventory'ye öğeler nasıl eklenir: items.lua, görüntüler ve kullanılabilir öğeler

ox_inventory'ye özel bir öğe ekleme: data/items.lua girdisi, web/images'taki görüntü, AddItem ile verme ve istemci ihracatı ile kullanılabilir hale getirme.

Sunucunuzda yeni bir öğe istiyorsunuz: bir hamburger, bir kilit açıcı, bir telefon pili. ESX ve QBox sunucularının kullandığı ox_inventory ile, bir öğe bir dosyadaki bir Lua tablosudur. Bu makale girdişi, görüntüyü, öğeyi oyuncuya vermeyi ve kullanılabilir hale getirmeyi kapsar.

1. Öğe Girdisi

ox_inventory/data/items.lua'yı açın. Döndürülen tablo içinde bir giriş ekleyin. Anahtar öğe adı: küçük harf, boşluk yok.

lua
['burger'] = {
    label = 'Burger',
    weight = 220,
    stack = true,
    close = true,
    description = 'A warm burger.',
},

Alanların yapması gerekenleri:

Alan Anlam
label Oyunculara gösterilen adı
weight Bir öğenin ağırlığı, gramda
stack Birkaçı bir slotu paylaşabilirse true, her biri kendi slotunu alırsa false
close Öğe kullanıldığında envanteri kapatırsa true
description Etiketin altında metin

Ox_inventory sürümünüzün desteklediği tam alanları kontrol etmek için dosyadaki diğer öğelere bakın ve stilini kopyalayın. Dosya kurulumunuz için en iyi referanstır.

Dikkat: items.lua içindeki Lua söz dizimi hatası ox_inventory'nin başlamasını durdurur. Girişler arasında eksik virgül ve eksik kapanış parantezini kontrol edin.

2. Görüntü

ox_inventory öğeden sonra adlandırılan .png dosyasını arar:

text
ox_inventory/web/images/burger.png

Ad öğe adıyla tam olarak eşleşmelidir ve eksik görüntü yalnızca boş bir simge gösterir. Yaklaşık 100'e 100 piksel veya daha büyük olan kare görüntü, şeffaf arka planı olan en iyi görünür.

3. Yeniden Yükleme ve Kendinize Verme

Dosyayı okuması için envanteri yeniden başlatın:

text
restart ox_inventory

Sonra kendinize öğeyi verin. Doğru izne sahip adminler oyun içi veya konsoldan /additem komutunu kullanabilir:

text
additem <player id> burger 1

Komut reddedilirse, yönetici izinleri eksiktir, adminler için ACE izinleri bölümüne bakın.

4. Bir Betikten Öğe Verme

Sunucu tarafında ihracatı kullanın:

lua
local success = exports.ox_inventory:AddItem(source, 'burger', 1)
if not success then
    print('Could not add the item: inventory full or unknown item')
end

AddItem oyuncu kimliği, öğe adı, sayı ve isteğe bağlı meta veriler alır. Kaldırma ve kontrol aynı şekilde çalışır:

lua
exports.ox_inventory:RemoveItem(source, 'burger', 1)

local count = exports.ox_inventory:Search(source, 'count', 'burger')

Oyuncu ağırlık veya slotlar nedeniyle öğeyi taşıyamaz, AddItem yanlış döndürür. Önce kontrol edebilirsiniz:

lua
if exports.ox_inventory:CanCarryItem(source, 'burger', 1) then
    exports.ox_inventory:AddItem(source, 'burger', 1)
end

5. Öğeyi Kullanılabilir Hale Getirme

Bir öğe, bir oyuncu bunu kullandığında kod çalıştırabilir. ox_inventory bunu öğe tanımının kendisinde destekler, kaynaklarınızdan birinin ihracatını işaret eden bir client bloğu ile:

lua
['burger'] = {
    label = 'Burger',
    weight = 220,
    stack = true,
    close = true,
    description = 'A warm burger.',
    client = {
        export = 'my_script.burger',
    },
},

Değer resourceName.exportName'dir. my_script içinde, istemcide ihracatı kaydedin:

lua
-- 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, bir öğeyi kaldırır ve işlevinizi yalnızca kullanım geçtiyse çalıştırır. Öğenin animasyonu, ilerleme zamanı ve tüketim ayarladığında ox_inventory'nin bunu işlemesine izin vermenin standart yoludur.

Aynı blok, ihracat yerine yerleşik efektleri taşıyabilir. Zaten items.lua içindeki yemek ve içecek öğelerine mevcut seçenekler için bakın, örneğin status, anim ve prop, ve kendi yemek öğeleriniz için bu şekli yeniden kullanın.

ESX ve QBCore tarzı kullanılabilir öğeler

Çerçeve için yazılmış betikler ESX.RegisterUsableItem('burger', ...) veya QBCore.Functions.CreateUseableItem('burger', ...) ile kullanılabilir öğeleri kaydeder. ox_inventory çerçevede çalıştığında bu çağrılarla çalışır, bu nedenle öğe items.lua içinde varsa bu betikler değişmesi gerekmez.

Dosyaları Düzenlemeden Öğeler Oluşturma

Sık sık öğeler oluşturursanız, dosyaları düzenlemek ve yeniden başlatmak yavaş olur. Öğe Yaratıcı oyun içinde öğe oluşturmanıza izin verir, bu nedenle her biri için items.lua'ya dokunmuyorsunuz.

Item Creator V2Animasyonlar, proplar, efektler ve daha fazlasıyla kullanılabilir eşyalar oluşturun — kod yazmadan.başlangıç €18,15Scripti gör →

QBCore ve QBox'ta

ox_inventory, QBox'ın envanteri, bu nedenle yukarıdakilerin tümü olduğu gibi uygulanır. QBCore'da, varsayılan envanter bunun yerine qb-inventory, qb-core/shared/items.lua içinde öğelerdir, QBCore'da öğeleri ekleme bölümünde ele alınmıştır.

Kontrol Listesi

Belirti Çözüm
Öğe mevcut değil data/items.lua'ye ekleyin, sonra restart ox_inventory
ox_inventory başlamaz items.lua içindeki söz dizimi hatası; virgülleri ve parantezleri kontrol edin
Boş simge <item name>.png'yi web/images'a koyun
AddItem yanlış döndürür Bilinmeyen öğe adı, envanter dolu veya çok ağır
Öğe kullanıldığında hiçbir şey yapmaz export ile bir client bloğu ekleyin ve bu ihracatı kaydedin
Kullanılabilir öğe betiği yoksayılıyor Betiğin öğe adı items.lua içindeki anahtarla eşleşmelidir

Kısa yanıtlar

ox_inventory'de öğeleri nereye eklerim?

ox_inventory/data/items.lua içinde. Her öğe adıyla anahtarlanmış bir tablodur ve aynı ad web/images içinde görüntü dosyasıdır.

Yeni öğem neden simge göstermiyor?

Görüntü eksik veya farklı şekilde adlandırılmış. <item name>.png'yi ox_inventory/web/images'a koyun, tam öğe adı ve küçük harf uzantısı ile.

Öğe ekledikten sonra sunucuyu yeniden başlatmak zorunda mıyım?

Hayır. ox_inventory yeniden başlatın ve yeni öğe yüklenir. Bir betik buna ihtiyaç duyarsa, bu betiği de yeniden başlatın.

Bu sorunu yaşatmayan scriptler

Item Creator V2Animasyonlar, proplar, efektler ve daha fazlasıyla kullanılabilir eşyalar oluşturun — kod yazmadan.Scripti gör →Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →

Okumaya devam edin