ox_inventory silahlar ve mühimmat: data/weapons.lua ve silahlar kayboluyor

ox_inventory ile yeniden bağlandıktan sonra silahlar kayboluyor mu? Silahlar öğe olarak nasıl çalışır: data/weapons.lua, mühimmat öğeleri, dayanıklılık, WEAPON_PISTOL için AddItem ve eklentiler.

Bir oyuncuya yönetici menüsü veya iş betiği ile tabanca verirsiniz. Bağlantıları keser, geri gelirler ve tabanca gitmişdir. ox_inventory ile silahlar ayrı yükleme değil: öğelerdir ve öğe olmayan herhangi bir şey kaldırılır. Bu makale silahlar ve mühimmatın nasıl çalıştığını, bunları doğru şekilde nasıl vereceğini ve dayanıklılık ve eklentileri nereden ayarlayacağını açıklar.

Silahlar Öğelerdir

ox_inventory'de silahın öğe adı hash adıdır, örneğin WEAPON_PISTOL. ox_inventory/data/weapons.lua içinde tanımlanır, items.lua içinde değil. Dosya üç grup döndürür:

lua
return {
    Weapons = {
        ['WEAPON_PISTOL'] = {
            label = 'Pistol',
            weight = 1130,
            durability = 0.1,
        },
        -- ...
    },
    Components = {
        -- attachments
    },
    Ammo = {
        -- ammo definitions
    },
}

Dosyayı yüklemenizde açın: her varsayılan silahın hazır bir girdisi vardır ve bu sürümünüzün tam alanları için referanstır. Weapons içinde eksik bir silah basitçe geçerli bir öğe değildir.

Silahlar Neden Yeniden Bağlantıda Kayboluyor

Eski ESX ve QBCore betikleri GiveWeaponToPed gibi yerleşik veya ESX'in xPlayer.addWeapon ile silah verirler. Bu silahı bu oturum için ped'in eline koyar, ancak öğe değildir ve hiçbir şey kaydetmez. ox_inventory ayrıca envanterinde olmayan silahları kaldırır, bu nedenle yeniden bağlanmada veya daha erken kayboluyor.

Çözüm sunucu'dan silah vermektir:

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

Yerleşik, addWeapon veya Player.Functions.AddItem('weapon_pistol', ...) ile silah veren her komut dosyası çağrısını büyük harf silah adı ile AddItem çağrısı ile değiştirin. Yalnızca yerleşik gibi çalışan betik, örneğin elde silah oluşturan dükkan, ox_inventory kullanan sunucuda çalışmadan önce bu değişikliğe ihtiyaç duyar.

İpucu: Silah adları öğe listelerinde büyük/küçük harfe duyarlı ve WEAPON_PISTOL ox_inventory'nin kullandığı formdur. weapon_pistol gönderen eski betik bu nedenle başarısız olabilir.

Mühimmat Öğeleri

Mühimmat da bir öğedir. Mühimmat türü bir silahın girdisinde ammoname tarafından adlandırılır, örneğin 9 mm için ammo-9:

lua
exports.ox_inventory:AddItem(source, 'ammo-9', 60)

Bir oyuncu kabul eden silah ile mühimmat öğesini kullandığında, ox_inventory bunu silahında yükler ve silah mühimmat sayısını meta verilerinde tutar. Mühimmat yüklenmediğinde envanterinde öğe olarak görünür.

Öğe adlarını sürümünüzde data/items.lua ve data/weapons.lua içinde kontrol edin. Model ammo-<type>'dir, örneğin ammo-9, ammo-rifle, ammo-shotgun ve var olmayan bir öğe eklenemez.

Dayanıklılık ve Bozulma

Silahlar ateş edildiğinde aşınır. Silah girdisindeki durability değeri ne kadar hızlı: daha yüksek sayı daha hızlı bozulma anlamına gelir. Sıfır dayanıklılığa sahip silah onarılana kadar çalışmaz.

lua
['WEAPON_PISTOL'] = {
    label = 'Pistol',
    weight = 1130,
    durability = 0.05,
},

Silahı daha uzun süre tutması için sayıyı düşürün. Onarım bir oyun seçimidir: birçok sunucu bir onarım öğesi, bir el sanatı tarifsesi veya bir teknisyen kullanır ve SetMetadata ile dayanıklılığı geri ayarlayabilirsiniz (ox_inventory'de öğe meta verileri bölümüne bakın).

Eklentiler (Bileşenler)

Flaş ışığı, susturucu veya şarjör gibi eklentiler Components grubunda listelenen öğelerdir ve items.lua içinde kendi girdileri vardır. Oyuncu, silah donanımlandırılırken bir tane kullanarak takır. Bileşen silah öğesinde depolanır, bu nedenle yeniden bağlantıdan sağ kalır.

Eklenti hiçbir şey yapmaz ise, şu üç şeyi kontrol edin:

  • bileşen öğesi data/items.lua içinde var
  • bu silah için data/weapons.lua içinde listelenir
  • bileşen kullanıldığında silah donanımlanır

Ayrıca sunucu'dan silah meta verileri aracılığıyla bir bileşen ekleyebilirsiniz, örneğin önceden oluşturulmuş bir silah sattığınızda, ancak normal tabanca ile test edin, meta veri biçimi sürümünüze bağlıdır.

Dükkanlarında Silah Satma

Silahlar herhangi bir öğe gibi dükkan içinde görünür, aynı adla:

lua
{ name = 'WEAPON_PISTOL', price = 2500, license = 'weapon' },

Kalan dükkan biçimi için ox_inventory dükkanları bölümüne bakın. Bir dükkan betiği hala yerleşik silah veriyorsa, yukarıda gösterilen değişikliğe ihtiyaç duyar.

Silahları Dokunun Diğer Betikler

Yönetici menüleri, polis betikleri, yükleme betikleri ve çete sistemleri genellikle yerleşik kullanırlar. Kaynakları bu çağrılar için arayın ve değiştirin:

lua
GiveWeaponToPed(...)
GiveDelayedWeaponToPed(...)
xPlayer.addWeapon(...)

Kaynaklar klasörünü addWeapon ve GiveWeaponToPed için arayın, ardından her sonucu exports.ox_inventory:AddItem'e geçin. Hepsi için bunu bir kez yaparsanız, silahlar kayboluyor.

Kontrol Listesi

Belirti Çözüm
Silah yeniden bağlantıda kayboluyor Öğe değildi; exports.ox_inventory:AddItem ile verin
AddItem yanlış döndürür Bilinmeyen ad, envanter dolu veya çok ağır
Silah çalışmıyor Ad büyük harf olmalı, örneğin WEAPON_PISTOL ve data/weapons.lua içinde var
Kullanıldıktan sonra mühimmat yok Silahın ammoname ve mühimmat öğe adını kontrol edin
Silah çok hızlı kırılıyor data/weapons.lua içinde durability düşürün
Eklenti hiçbir şey yapmaz Bileşen öğesi ve silah girdisi eşleşmelidir, silah donanımlanır

Kısa yanıtlar

ox_inventory ile yeniden bağlandığımda silahlarım neden kayboluyor?

Silah yerleşik olarak değil öğe olarak ped'e verildi. ox_inventory yalnızca envanterinizde öğe olan silahları tutar, bu nedenle başka bir şekilde verilen herhangi bir şey kaybolur.

ox_inventory ile bir oyuncuya silah nasıl veririm?

Sunucu'da exports.ox_inventory:AddItem(source, 'WEAPON_PISTOL', 1) kullanın. Silah adı öğe adıdır, büyük harflerde.

Bir silahın ağırlığını veya dayanıklılığını nerede değiştiririm?

ox_inventory/data/weapons.lua içinde. Her silahın etiket, ağırlık ve dayanıklılığı olan bir girdisi vardır ve mühimmat ve bileşenler aynı dosyada tanımlanır.

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