qb-target vs ox_target: AddBoxZone'ı dönüştürün ve hedefleri gösterilmiyorsa düzeltin

FiveM'de qb-target'tan ox_target'a taşıma: AddBoxZone ve AddTargetModel çağrılarını nasıl dönüştüreceğiniz, uyumluluk katmanının ne yaptığı ve hedeflerin neden gösterilmediği.

qb-target'tan ox_target'a taşındınız veya bir yazılım kullanırken bir de yazılan betiği indirdiniz ve etkileşim bölgeleri gitmiş veya iki katına çıkmış. İşte ikisi nasıl farklı, çağrıları nasıl dönüştürüp bir hedefin neden görülmediğini bulma.

Bir tabloda fark

Her iki kaynak da aynı işi yapar: bir anahtar hedef gözünü açar ve oyuncu bir varlık veya bölgede bir seçenek seçer. Nasıl tanımlanacağında farklılık gösterirler.

Fikir qb-target ox_target
Kutu bölgesi AddBoxZone(name, center, length, width, options, targetOptions) addBoxZone({ coords, size, rotation, options })
Model AddTargetModel(models, options) addModel(models, options)
Ne yapılacak type, event, action onSelect, event, serverEvent
İş sınırı job groups
Öğe sınırı item items
Ekstra kontrol canInteract canInteract

ox_target bölgeler için tek bir tablo alır ve seçenekler düz bir liste olup, options ve distance'ı birlikte tutan sarmalayıcı yoktur.

Kutu bölgesini dönüştürün

Tipik bir qb-target bölgesi:

lua
exports['qb-target']:AddBoxZone('pd_armory', vector3(452.2, -980.0, 30.7), 1.5, 1.0, {
    name = 'pd_armory',
    heading = 90.0,
    debugPoly = false,
    minZ = 29.7,
    maxZ = 31.7,
}, {
    options = {
        {
            type = 'client',
            event = 'my_script:openArmory',
            icon = 'fas fa-gun',
            label = 'Open armory',
            job = 'police',
        },
    },
    distance = 2.0,
})

ox_target'da aynı bölge:

lua
exports.ox_target:addBoxZone({
    coords = vec3(452.2, -980.0, 30.7),
    size = vec3(1.0, 1.5, 2.0),
    rotation = 90.0,
    debug = false,
    options = {
        {
            name = 'pd_armory',
            event = 'my_script:openArmory',
            icon = 'fa-solid fa-gun',
            label = 'Open armory',
            groups = 'police',
            distance = 2.0,
        },
    },
})

Ne taşındı:

  • center coords'a dönüşür ve her ikisinde kutunun merkezidir, ancak yükseklik şimdi size'dan gelir. qb-target minZ ve maxZ'yi kullanır, bu nedenle coords.z'yi bunların ortasına koyun ve aralıklarını yükseklik olarak kullanın.
  • length ve width size'ın x ve y'si olur. Kutu yanlış şekilde döndürülmüş sonuçlanırsa, bunları değiştirin veya rotation değiştirin ve debug = true ile kontrol edin.
  • heading rotation'a dönüşür.
  • job groups'a dönüşür ve distance her seçeneğe taşınır.
  • type = 'client' event ile bir event kalır. type = 'server' için serverEvent'i veya bir olayın yerine bir işlevle onSelect'i kullanın.

Model hedefini dönüştürün

qb-target:

lua
exports['qb-target']:AddTargetModel({ `prop_atm_01`, `prop_atm_02` }, {
    options = {
        {
            type = 'client',
            event = 'my_script:openAtm',
            icon = 'fas fa-credit-card',
            label = 'Use ATM',
        },
    },
    distance = 1.5,
})

ox_target:

lua
exports.ox_target:addModel({ `prop_atm_01`, `prop_atm_02` }, {
    {
        name = 'my_script_atm',
        event = 'my_script:openAtm',
        icon = 'fa-solid fa-credit-card',
        label = 'Use ATM',
        distance = 1.5,
    },
})

Seçenekler şimdi kendileri ikinci argümandır, bir seçenek tabloları listesi. Dışa aktarımların ve alanların tam listesi ox_target: addBoxZone, addModel and addLocalEntity bölümündedir.

Eski betiki çalışır durumda tutun

ox_target birçok qb-target dışa aktarımı için uyumluluk sağlar. Hala exports['qb-target']:AddBoxZone(...) çağıran bir betik, yaygın dışa aktarımları kullandığı sürece yalnızca ox_target çalışırken çalışmaya devam edebilir.

Her şey için buna güvenmeyin. Daha az yaygın dışa aktarımlar ve olağandışı seçenek alanları aynı davranmayabilir. Her betiği test edin ve biri kötü davranırsa, çağrılarını yukarıda gösterildiği gibi yerel ox_target dışa aktarımlarına dönüştürün. Yerel çağrılar da okunması ve hata ayıklaması daha kolaydır.

Dikkat: ox_target'ın yanında qb-target başlatmayın. Yalnızca bir hedef kaynağı tutun ve diğerini server.cfg'den kaldırın.

Hedefler neden gösterilmez

Neredeyse her "hedefim görünmez" durumu bu listeye girer.

Her iki kaynak da çalışıyor. İki hedef kaynağı aynı anahtarı işlemiyor. server.cfg'nizi ve kaynaklar listenizi kontrol edin ve yalnızca birini saklayın:

cfg
ensure ox_lib
ensure ox_target
# ensure qb-target   <- remove or comment out

Mesafe çok küçük. Seçenek yalnızca distance içinde gösterilir. Test ederken distance = 3.0'ı deneyin. qb-target ile distance options'ın yanında oturmaktadır, her seçeneğin içinde değil.

İş kontrolü başarısız. job (qb-target) veya groups (ox_target) ile bir seçenek, o işte olmayanların için hiçbir hata olmadan gizlenir. Doğru işle test edin veya bir an için alanı kaldırın. ox_target'da tablodaki bir derece ({ police = 2 }) oyuncunun en az o dereceyi gerekli kıldığı anlamına gelir.

Bir canInteract hiçbir şey döndürmiyor. İşlevin nil döndüren bir kod yolu varsa, seçenek gizlenir. Her yolda true veya false döndürdüğünden emin olun.

Bölge yanlış yerde. ox_target'da debug = true açın (veya qb-target'da debugPoly = true) ve şekile bakın. Yerde merkezlenen bir kutu yarı yer altındadır.

Betik hedeften önce çalışır. Hedef kaynağını betiğinizden önce server.cfg'de başlatın ve manifestine dependency 'ox_target' ekleyin.

Kontrol listesi

Belirtisi Çözüm
Seçenekler iki katına veya eksik qb-target ve ox_target'tan yalnızca birini çalıştırın
job dönüştürdükten sonra göz ardı edildi groups'a yeniden adlandırın
Bölge yanlış döndürülmüş veya ölçeklendi heading rotation olur; debug = true ile size'ı kontrol edin
Seçenek hiçbir zaman gösterilmiyor distance artırın, işi ve canInteract'ı test edin
Eski betik çalışmayı durdurdu Çağrılarını yerel ox_target dışa aktarımlarına dönüştürün
Hiçbir şey gösterilmiyor Betiklerinizden önce ox_target ve ox_lib başlatın

Kısa yanıtlar

qb-target ve ox_target'ı birlikte çalıştırabilirim?

Hayır. Birini seçin. Her iki kaynak da aynı hedef anahtarını ve aynı işi ister ve her ikisini çalıştırmak iki katına çıkar veya seçenekleri kaybeder.

Eski qb-target betiklerim ox_target ile çalışır mı?

Çoğu zaman evet. ox_target birçok qb-target dışa aktarımı için uyumluluk sağlar, bu nedenle bunları çağıran betikler çalışmaya devam edebilir. Her betiği test edin ve kötü davranışı gösteren olanları yukarıda gösterildiği gibi yerel ox_target dışa aktarımlarına dönüştürün.

qb-target'ın job alanını ne değiştirir?

ox_target groups kullanır. groups = 'police' ayarlayın veya { police = 0 } gibi bir tabloyu da bir derece gerekli kılmak için kullanı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 →Quest CreatorGörevler ve NPC diyalogları için oyun içinde düğüm düğüm kurulan görsel editör.Scripti gör →Advanced BoostingTabletten araç boosting: D’den S+ sınıfına kontratlar, ekipler ve canlı sıra.Scripti gör →

Okumaya devam edin