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:
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:
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ı:
centercoords'a dönüşür ve her ikisinde kutunun merkezidir, ancak yükseklik şimdisize'dan gelir. qb-targetminZvemaxZ'yi kullanır, bu nedenlecoords.z'yi bunların ortasına koyun ve aralıklarını yükseklik olarak kullanın.lengthvewidthsize'ınxvey'si olur. Kutu yanlış şekilde döndürülmüş sonuçlanırsa, bunları değiştirin veyarotationdeğiştirin vedebug = trueile kontrol edin.headingrotation'a dönüşür.jobgroups'a dönüşür vedistanceher seçeneğe taşınır.type = 'client'eventile bireventkalır.type = 'server'içinserverEvent'i veya bir olayın yerine bir işlevleonSelect'i kullanın.
Model hedefini dönüştürün
qb-target:
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:
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:
ensure ox_lib
ensure ox_target
# ensure qb-target <- remove or comment outMesafe ç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 →