ox_inventory dükkanları: data/shops.lua, RegisterShop ve simgeler

ox_inventory'de dükkan oluşturma: data/shops.lua girdisi, fiyatlar ve para birimi, konumlar ve hedefler, iş kilitli dükkanlar, başka kaynaktan RegisterShop ve simgeler.

ox_inventory'deki bir dükkan fiyatlı öğelerin bir listesidir ve oyuncuların onu açabileceği bir veya daha fazla yerdir. Bir dosyayı düzenleyebilir veya dükkanı kendi kaynağınızdan kaydedebilirsiniz. Bu makale ikisini de kapsar, artı fiyatlar, para birimleri, iş kısıtlamaları, ox_target ve simgeler.

data/shops.lua içinde Dükkan Girdisi

ox_inventory/data/shops.lua'yı açın. Her dükkan dükkan türüne göre anahtarlanmış bir tablodur:

lua
return {
    General = {
        name = 'Shop',
        inventory = {
            { name = 'burger', price = 10 },
            { name = 'water', price = 5, count = 50 },
            { name = 'lockpick', price = 150 },
        },
        locations = {
            vec3(25.7, -1347.3, 29.5),
        },
    },
}

Anahtar (General) dükkan türüdür. Alanlar:

Alan Anlam
name Dükkânın üstünde gösterilen başlık
inventory Satılık öğeler
locations Oyuncuların dükkanı açabileceği koordinatlar
targets Aynı fikir, ancak ox_target kutuları (aşağıya bakın)
groups Dükkanı kullanmasına izin verilen işler
blip Harita simgesi ayarları

Dosyalı kopyanızdaki varsayılan girdileri kontrol edin: sürümünüzün desteklediği tam alanları gösterir ve başlamanın en iyi yolu birini kopyalamak ve değiştirmektir.

Dikkat: inventory içindeki her öğe adı data/items.lua içinde bulunmalıdır. Eksik bir öğe listeleyen bir dükkan açılmayabilir veya hata yazdırabilir. ox_inventory'ye öğe ekleme bölümüne bakın.

Öğeler, Fiyatlar ve Para Birimi

inventory'nin her satırı küçük bir tablodur:

lua
inventory = {
    { name = 'water', price = 5 },
    { name = 'sandwich', price = 12, count = 20 },
    { name = 'lockpick', price = 150, currency = 'black_money' },
    { name = 'WEAPON_PISTOL', price = 2500, license = 'weapon' },
},
  • price bir birimin maliyetidir.
  • count stoktur. Olmadan öğe sınırsız ve bununla stok oyuncuların alışveriş yaptığında azalır.
  • currency bunu ödeyecek öğedir. Varsayılan olarak para ve black_money yaygın bir alternattir.
  • license oyuncunun satın almasına izin vermeden önce bir lisans öğesini sorar.
  • grade dükkan groups kullandığında, bir öğeyi minimum iş sıralaması kısıtlar.

Açılış: Konumlar ve Hedefler

locations ile, ox_inventory bu koordinatlarda bir etkileşim gösterir. targets ile, bunun yerine ox_target kutuları oluşturur, bu bir sayaç veya pencere için daha iyidir:

lua
targets = {
    {
        loc = vec3(25.7, -1347.3, 29.5),
        length = 0.7,
        width = 0.5,
        heading = 0.0,
        minZ = 29.0,
        maxZ = 31.0,
        distance = 1.5,
    },
},

Dükkan buna bağlı olduğundan, bunun çalışması için ox_target çalışmış olmalıdır. Sadece ikisinden birini istiyorsanız, diğer tabloyu kaldırın.

İş Kilitli Dükkanlar ve Simgeler

groups kullanarak iş sınırlaması yapan bir dükkan, iş adları ve minimum dereceler kullanarak:

lua
Police = {
    name = 'Police armory',
    groups = { police = 0 },
    inventory = {
        { name = 'WEAPON_STUNGUN', price = 0 },
        { name = 'ammo-9', price = 0, count = 200 },
    },
    locations = { vec3(480.2, -996.5, 30.7) },
},

Harita simgesi için, dükkan için bir blip tablosu ekleyin:

lua
blip = { id = 59, colour = 69, scale = 0.8 },

id sprite numarası ve colour renk numarasıdır. Sayılar GTA simgesi listelerinden gelir ve aynı fikir FiveM'de simge oluşturmada açıklanır. Dosya değişikliklerini uygulamak için ox_inventory yeniden başlatın.

Başka Kaynaktan Dükkan Kaydetme

Bir dükkan kendi betiğiniz tarafından oluşturulduğunda, örneğin bir işletme veya iş kaynağı, data/shops.lua düzenlemeyin. Sunucu'da kaydedin:

lua
-- server.lua of your resource
exports.ox_inventory:RegisterShop('Bakery', {
    name = 'Bakery',
    inventory = {
        { name = 'bread', price = 4 },
        { name = 'croissant', price = 6, count = 30 },
    },
    locations = {
        vec3(-1285.7, -1127.1, 6.8),
    },
})

RegisterShop(type, data) tür dizesi ve dosyadaki aynı tabloyu alır. Kaynak başladığında kaydedin. Eğer ox_inventory yeniden başlarsa, kaynağınız dükkanı yeniden kaydetmek zorundadır, bu nedenle ox_inventory için onServerResourceStart kaydı yapın:

lua
AddEventHandler('onServerResourceStart', function(resource)
    if resource == 'ox_inventory' then
        registerMyShops()
    end
end)

İstemci'den Dükkan Açma

Dükkan'da bir konum veya hedef istemiyorsanız veya kendi arayüzünüzden açmak istiyorsanız, istemci ihracatını kullanın:

lua
exports.ox_inventory:openInventory('shop', { type = 'General', id = 1 })

type dükkan anahtarı. id locations (veya targets) listesindeki konumun konumudur, 1'den başlayarak. Bir dükkan bir konuma sahipse, id = 1 kullanın. Kod tarafından kaydedilen konumu olmayan bir dükkan yalnızca türü ile açılır, bu nedenle id gerekli ise sürümünüzü test edin.

İpucu: Sunucu dükkanı açtığında yine de kontrol eder, bu nedenle bir istemci bu iş için iş dükkân satın alamaz.

Kodu Düzenlemeden Dükkanlar Yapma

Birçok dükkan kurar, Lua düzenleme tekrarlayıcı olur. Dükkan Yaratıcı oyun içinde dükkan oluşturmanızı sağlar.

Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.başlangıç €24,20Scripti gör →

Kontrol Listesi

Belirti Çözüm
Dükkan görünmez data/shops.lua düzenledikten sonra ox_inventory yeniden başlatın
Dükkan boş açılır veya hatalar inventory içindeki bir öğe data/items.lua'da eksik
Dükkânla etkileşim kuramaz locations veya targets'i ve ox_target'ın çalıştığını kontrol edin
Yanlış para birimi Öğe girdisinde currency ayarlayın
İş dükkanı herkese açık groups = { job = grade } ekleyin
Kayıtlı dükkan yeniden başladıktan sonra kayboldu ox_inventory başladığında RegisterShop yeniden çağırın

Kısa yanıtlar

ox_inventory'de bir dükkan nereye eklerim?

ox_inventory/data/shops.lua içinde, bir ad, bir inventory listesi ve bir veya daha fazla locations veya targets olan yeni bir giriş olarak. Sonra ox_inventory yeniden başlatın.

Bir dükkan nakit yerine kara para alabilir mi?

Evet. Öğe girdisinde currency = 'black_money' ayarlayın ve dükkan varsayılan para yerine bu öğeyi ücretlendirir.

Kendi betiğimden bir dükkan nasıl oluşturabilirim?

Sunucu'da exports.ox_inventory:RegisterShop(type, data) çağırın, ardından istemci'den exports.ox_inventory:openInventory('shop', { type = type }) ile açın.

Bu sorunu yaşatmayan scriptler

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

Okumaya devam edin