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.
['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.luaiç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:
ox_inventory/web/images/burger.pngAd öğ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:
restart ox_inventorySonra kendinize öğeyi verin. Doğru izne sahip adminler oyun içi veya konsoldan /additem komutunu kullanabilir:
additem <player id> burger 1Komut 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:
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 oyuncu kimliği, öğe adı, sayı ve isteğe bağlı meta veriler alır. Kaldırma ve kontrol aynı şekilde çalışır:
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:
if exports.ox_inventory:CanCarryItem(source, 'burger', 1) then
exports.ox_inventory:AddItem(source, 'burger', 1)
end5. Öğ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:
['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:
-- 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.
