FiveM vehicle keys: kendi arabanı süremiyor veya kilitleyemiyor musun? Düzelt
FiveM araç anahtar sistemleri nasıl çalışır: plaka listeleri, spawn veya satın alma sonra anahtar verme, SetVehicleDoorsLocked ile kilitleme ve neden kendi arabanıza erişimi kaybedersiniz.
Tipik belirtiler:
You get in your own car: "Vehicle is locked", the engine will not start,
or the key script says you do not have the keys.Dün çalışan ve şimdi sahibi için kilitli olan araç neredeyse her zaman bir anahtar listesi sorunu, oyun hatası değildir. Bu makale anahtar sistemlerinin nasıl çalıştığını, spawn veya satın alma sonra nasıl anahtar verileceğini ve kendi aracını süremediğinizde ne kontrol edeceğini açıklar.
Bir anahtar sistemi nasıl çalışır
Oyunun kendisinin hiçbir anahtarı yoktur. Her araçta sadece bir kilit durumu vardır. Bir anahtar resource'u geri kalanını üzerine ekler:
- Her oyuncunun hangi plakalara karşı anahtarı olduğunu depolar. Plaka arabanın kimliğidir, çünkü araç her spawn'landığında entity handle değişir.
- Araçyı native'lerle kilitler veya kilidini açar.
- Listedeki olmayan oyuncular için motoru veya kapıyı engeller.
Kilit native'i client tarafında:
-- 1 = unlocked, 2 = locked
SetVehicleDoorsLocked(vehicle, 2)
local status = GetVehicleDoorLockStatus(vehicle)
print(status)SetVehicleDoorsLocked durumu ayarlar ve GetVehicleDoorLockStatus geri okur. 1 ve 2 dışında, sadece oyuncu için kilitli olan gibi diğer durumlar da vardır. Basit kilitleme ve kilit açma için yalnızca bu ikisine ihtiyacınız vardır.
İpucu: araç kilitlemek, bir oyuncunun pencere kırmasını veya kilit açılmış NPC araçtan sürücüyü çıkarmasını engellemiyor. Kilit durumunun ötesindeki her şey anahtar script'e bağlıdır.
Listenin sahibi kim
Listenin nerede yaşadığı, yeniden başlatmadan sonra ne kırıldığını belirler:
- Yalnızca hafıza. Liste, bir oyuncu katıldığında, sahip oldukları araçlardan yeniden oluşturulur. Script yeniden başlarsa oynatırken ayrıştırırken, liste yeniden bağlanana kadar boş kalır.
- Veritabanı veya öğe tabanlı. Anahtarlar, plakayla envanter öğeleridir. Anahtar yeniden başlatmadan sonra hayatta kalır, ama değiştirilmiş plaka bunu kırar.
- Sahip kontrol. Script oyuncu identifier'ını
owned_vehiclessahibi ile karşılaştırır (ESX) veyaplayer_vehicles(QBCore ve QBox). Ayrı bir liste mevcut değildir.
Hata ayıklamadan önce resource'unuzun hangisini kullandığını bulun. Makale veritabanında sahip olunan araçları kaydetme çoğu anahtar script'in okuduğu tabloları kapsar.
Spawn veya satın alma sonra anahtar verme
Her kendi script'iniz bir oyuncu için bir araç oluşturduğunda, anahtar resource'u bunu bilmez. Bu sırayla söylemeniz gerekir:
- Aracı oluşturun.
- Plakayı
SetVehicleNumberPlateTextile ayarlayın. - Anahtar resource'unuzun export'unu veya olayını o plaka ile çağırın.
local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)
SetVehicleNumberPlateText(vehicle, plate)
-- the name of this call depends on your key resource: check its documentation
exports['your_key_resource']:GiveKeys(plate)your_key_resource ve GiveKeys yer tutucularıdır. Gerçek adı kullandığınız resource'un belgelerindedir. Bir olay ise, aynı kural geçerli: entity handle değil, plakayı geçirin.
Satın alma için plaka yeni satırla veritabanında depolanmalı ve anahtarlar aynı anda verilmelidir, aksi takdirde alıcı artık hiçbir şey eşleştirilmeyen bir araçla satıcıdan ayrılır. Plaka işleme için araçları spawn'lama bkz.
Kilit açma ve başlatma
Bunlar anahtar script'in özellikleri, oyunun değil. Olağan mantık:
- Anahtar listesinde olmayan bir oyuncu kilitli bir araçı açmaya çalışır. Script bir beceri kontrolü veya ilerleme çubuğu çalıştırır.
- Başarıda
SetVehicleDoorsLocked(vehicle, 1)ile kilidini açar. Başlatma için aynı zamanda motoru bu session için başlatılmasına izin verir, tipik olarak geçici bir listedeki plakayı hatırlayarak. - Başarısızlıkta polisi uyarabilir veya aracı kırar.
Kendinizi oluşturursanız, sonuç kararını server'da tutun. Tek başına herhangi bir araç kilidini açmasına izin verilip verilmediğine karar veren bir client, mod menüsü ile kötüye kullanılabilir.
Kendi arabanı süremiyor
Bu nedenleri sırayla işleyin:
Anahtar listesi kayboldu. Bir script yeniden başlatması, kilitlenme veya anahtar resource'unun refresh; restart öğesi bellek tabanlı bir listeyi boşaltır. Yeniden bağlanın veya script'in kendi yenilemesini tetikleyin.
Plaka değişti. Bir plaka üç yerde depolanır: oyundaki araç, anahtar listesi veya anahtar öğesi ve veritabanı satırı. Bir script bunlardan birini değiştirirse (bir plaka değiştirici, sahte plaka öğesi, bir tuning script'i) diğerleri eşleşmekten çıkar. Ekranda plakayı tablonuzdaki planla karşılaştırın:
SELECT owner, plate FROM owned_vehicles WHERE plate LIKE '%MIC%';Plakalarda da boşluk farklılıkları vardır. MIC 001 ve MIC001 çoğu script'te iki farklı plakaların bulunduğundan dolayı, her yerde aynı formatta kırpın ve karşılaştırın.
Yanlış sahip. Satırın eski bir identifier'ı veya citizenid'i var, bu nedenle sahip kontrolü başarısız olur. Bu, garajdan eksik araç ile aynı nedene sahiptir.
Araç başka bir script tarafından spawn'landı. Anahtar çağrısı olmadan oluşturulan her şey herkese kilitlidir. Spawn'landığı yere anahtar çağrısını ekleyin.
İki anahtar resource'u. İki anahtar script'i çalıştırmak, her ikisi de araç kilitleniyor, durumlar arasında çevirmeye yapar. Bir tane tutun.
Oyun içinde hızlı test edin
Kilit durumundan şüphe duyduğunuzda, client'tan okuyun:
RegisterCommand('lockstate', function()
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
if vehicle == 0 then return end
print('lock status', GetVehicleDoorLockStatus(vehicle), GetVehicleNumberPlateText(vehicle))
end, false)Durumu ve plakayı yazdırır. Durum 1 ve yine de sürmeyi süremezseniz, anahtar script'i motoru değil kilidini bloke ediyor.
Kontrol listesi
| Belirti | Fix |
|---|---|
| Yeniden başlatmadan sonra kilitli kaldı | Anahtar listesi hafızadadır: yeniden bağlanın veya script'in sahip olunan araçlardan yeniden inşa etmesine izin verin |
| Spawn'lanan araç size kilitli | SetVehicleNumberPlateText sonra anahtar resource'unuzun export'unu veya olayını plaka ile çağırın |
| Araç satın alındı ama anahtar yok | Satın alma zamanında anahtar verin ve aynı plakayı veritabanında saklayın |
| Plaka değişimi sonra anahtarlar çalışmayı durdurdu | Plakayı oyunda, anahtar listesinde ve veritabanında birlikte güncelleyin |
| Plaka doğru görünüyor ama eşleşmez | Boşlukları ve harf büyüklüğünü kontrol edin, her yerde bir format kullanın |
Kapı durumu 1 ama motor kapalı kalıyor |
Anahtar script'i motoru engeller: kilit değil listesini kontrol edin |
| Araç kilitli ve kilitli açık arasında çevriliyor | İki anahtar script'i çalışıyor: bir tane çıkarın |
Kısa yanıtlar
Yeniden başlatmadan sonra neden kendi arabanı süremiyor?
Çoğu anahtar script'i anahtar listesini hafızada tutar. Yeniden başlatma veya script yeniden başlatmadan sonra liste boş olur, bu nedenle araç kilitli olur veya motor başlamayı reddeder. Script yüklendikten sonra sahip olunan araçlardan listeyi yeniden oluşturması gerekir.
Kendi script'imle spawn'ladığım araçlara anahtar nasıl veririm?
Plakayı ayarladıktan sonra anahtar resource'unuzun export'unu veya olayını plaka ile çağırın. Her anahtar script'i bu çağrıyı farklı olarak adlandırır, bu nedenle başka bir sunucudan bir çağrıyı kopyalamak yerine belgelerini okuyun.
Plakayı değiştirmek anahtarlarımı bozar mı?
Evet, anahtarları plakaya göre eşleştiren herhangi bir sistemde. Plaka oyunda değişirse ancak anahtar listesinde ve veritabanında değilse, araç artık anahtarla eşleşmez. Her üçünü birlikte değiştirin.
Bu sorunu yaşatmayan scriptler
Advanced BoostingTabletten araç boosting: D’den S+ sınıfına kontratlar, ekipler ve canlı sıra.Scripti gör →
Car BombAraç bombası yerleştirin, tespit edin ve etkisiz hale getirin — detonatör telefon ve C4 mini oyunuyla.Scripti gör →
Chameleon PaintsTek tıkla uygulanan bir menüde 82 renk değiştiren bukalemun boya.Scripti gör →