ox_inventory gizli yer: RegisterStash, openInventory ve iş gizli yerleri

ox_inventory'de gizli yerler nasıl oluşturulur: sunucuda kaydetme, istemci veya ox_target'dan açma, oyuncu başına kişisel yapma veya işe kilitleme.

Şeyler depolamak için bir yer gerekli: bir polis kanıt kilidi, kişisel bir gardırop, bir evde bir kasa. ox_inventory ile bu bir gizli yer: kendi yuvaları ve ağırlık sınırı olan adlandırılmış envanter, veritabanında depolanır. Bu makale gizli yeri sunucuda kaydı, istemci'den açma, kişisel yapma, işe kısıtlama ve ox_target bölgesine ekleme konuları vardır.

Gizli Yeri Sunucuda Kaydetme

Gizli yer, birisi açmadan önce sunucuda bulunmalıdır. Kaynağınız başladığında bir kez kaydedin:

lua
-- server.lua
exports.ox_inventory:RegisterStash('police_evidence', 'Evidence locker', 100, 500000, false)

Argümanlar, sırasıyla:

Argüman Anlam
id Benzersiz dize. Gizli yeri açmak ve veritabanında anahtarı olarak kullanılır
label Gizli yerin üstünde gösterilen adı
slots Yuva sayısı
maxWeight Ağırlık sınırı, gramda (500000 500 kg'dır)
owner Paylaşılan gizli yer için false, oyuncu başına biri için true veya sabit tanımlayıcı
groups İsteğe bağlı açmak için izin verilen işlerin tablosu
coords İsteğe bağlı oyuncunun yakın olması gereken konum

Yalnızca ilk dördü gereklidir. İçerik ox_inventory tarafından kaydedilir, bu nedenle betiğinizin ve sunucunun yeniden başlatılmasından sağ kalırlar.

Dikkat: Kimlik gizli yerin kimliğidir. Daha sonra 'police_evidence''i başka bir dizeye değiştirirseniz, eski içerik veritabanında eski kimliğin altında kalır ve yeni gizli yer boş başlar.

İstemci'den Açma

İstemci'de, gizli yeri ihracat ve aynı kimlikle açın:

lua
-- client.lua
exports.ox_inventory:openInventory('stash', 'police_evidence')

Sunucu, istek geldiğinde groups ve coords'u kontrol eder, bu nedenle istemci bunları atlayamaz. Gizli yer kimliği hiçbir zaman kayıt edilmemişse, hiçbir şey açılmaz.

Ayrıca bir oyuncu için gizli yeri sunucu'dan açabilirsiniz, örneğin zaten doğruladığınız bir komuttan veya olaydan:

lua
exports.ox_inventory:forceOpenInventory(source, 'stash', 'police_evidence')

Kişisel Gizli Yerler: owner = true

Her oyuncunun kendi içeriğe sahip olduğu gardırop veya kilitli dolap için, owner = true kullanın:

lua
exports.ox_inventory:RegisterStash('personal_locker', 'Personal locker', 50, 100000, true)

Gizli yer kimliği herkes için aynıdır, ancak ox_inventory oyuncu tanımlayıcısını buna ekler, bu nedenle her oyuncu ayrı envanteri alır. ESX'de bu karakter lisansı veya tanımlayıcısıdır, QBox ve QBCore'da vatandaş kimliğidir.

Ayrıca yalnızca sahibi ve karar verdiğiniz kişilerin görmesi için yararlı olan sabit bir sahip geçirebilirsiniz:

lua
local identifier = 'char1:abc123'
exports.ox_inventory:RegisterStash('house_' .. identifier, 'House storage', 80, 200000, identifier)

owner bir dize olduğunda, o gizli yeri açan herkes o sahibine eklenmiş olur, bu nedenle erişim kontrolü bunu açmadan önce kendi sunucu kodunuzda gerçekleşmelidir.

İş Gizli Yerleri: gruplar

groups iş adlarının bir tablosu, her biri minimum sıralama ile:

lua
exports.ox_inventory:RegisterStash(
    'police_armory',
    'Police armory',
    80,
    300000,
    false,
    { police = 0, sheriff = 2 }
)

police işi 0 veya daha yüksek sıralama ile bir oyuncu onu açabilir ve sheriff yalnızca sıralama 2'den. Hepsi sunucu tarafından reddedilir. Bu ESX işleriyle, QBCore işleriyle ve QBox işleriyle çalışır, çünkü ox_inventory onları çerçeveden okur.

Oyuncunun gizli yerde durmasını da gerekli kılmak için, coords'ı son argüman olarak geçin:

lua
exports.ox_inventory:RegisterStash(
    'police_armory', 'Police armory', 80, 300000, false,
    { police = 0 }, vec3(452.1, -980.2, 30.7)
)

ox_target ile Açma

Gizli yer genellikle dünyada bir yerden açılır. ox_target ile, ihracatı çağıran bir bölge ekleyin:

lua
exports.ox_target:addSphereZone({
    coords = vec3(452.1, -980.2, 30.7),
    radius = 1.0,
    options = {
        {
            name = 'open_police_armory',
            icon = 'fa-solid fa-box-archive',
            label = 'Open armory',
            groups = { police = 0 },
            onSelect = function()
                exports.ox_inventory:openInventory('stash', 'police_armory')
            end,
        },
    },
})

Buradaki groups yalnızca seçeneği gizler, bu bir kolaylıktır. Gerçek kontrol RegisterStash üzerinde olandır. Bölgeler genel olarak, ox_target bölgesi ekleme bölümüne bakın.

Dosyada Tanımlanan Gizli Yerler

Kod yazmak istemiyorsanız, ox_inventory gizli yerleri data/stashes.lua'dan okur. Her giriş bir ad, etiket, yuvalar, ağırlık, isteğe bağlı owner, groups ve bir konum vardır. Sürümünüzdeki örnek girdilere bakın, birini kopyalayın ve ox_inventory yeniden başlatın. Gizli yer başka bir kaynak tarafından oluşturulduğunda kod kaydını kullanın, örneğin bir konut betiği.

İpucu: Gizli yerin çalışıp çalışmadığını kontrol etmek için, açın, içine bir öğe koyun, kaynağınızı yeniden başlatın ve yeniden açın. Öğe hala varsa, kimlik eşleşir ve içerik kaydedilir.

Kontrol Listesi

Belirti Çözüm
Gizli yer açılmaz Önce sunucuda tam aynı kimlikle kaydedin
Onu yeniden adlandırdıktan sonra gizli yer boş Kimlik değişti; eski içerik eski kimliğin altındadır
Herkes aynı kişisel gizli yeri paylaşıyor owner = true ile kaydedin
İş olmayan bir oyuncu açıyor RegisterStash içinde groups = { jobname = grade } ekleyin
Herhangi bir yerden açılır Son argüman olarak coords geçin
Öğe eklemenize ihtiyaç ox_inventory'ye öğe ekleme bölümüne bakın

Kısa yanıtlar

ox_inventory'de gizli yer ile oyuncu envanteri arasındaki fark nedir?

Gizli yer, kendi yuvalaması ve ağırlık sınırı olan ayrı bir depolama, bir dize kimliği ile tanımlanır. Siz verdiğiniz owner ve groups'e bağlı olarak dünyaya, işe veya tek oyuncuya aittir.

Her oyuncu için özel bir gizli yer nasıl yaparım?

owner true olarak ayarlayarak kaydedin. ox_inventory, oyuncu başına gizli yerin ayrı bir kopyasını tutarak, iki oyuncu aynı gizli yer kimliğini açarsa farklı içerik görürler.

Neden gizli yerim boş açılır veya hiç açılmaz?

Gizli yer sunucuda kayıt edilmedi, kaydetme çağrısı ile açma çağrısı arasında kimlik farklı veya oyuncu gerekli işe sahip değil veya coords'dan çok uzak.

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