FiveM garajı: owned_vehicles ve player_vehicles, eksik arabalar düzeltildi
Araçlar garajda kayıp mı? ESX owned_vehicles ve QBCore player_vehicles tabloları nasıl çalışır, depolanan ve durum sütunları ve arabalar söylediği SQL'i düzeltmek için.
Tipik belirtiler:
You bought a car, and the garage says "No vehicles". Or the car was parked at the street, the server restarted, and it is gone.Neredeyse her garaj betiği aynı şeyi okur: sahip olunan araç başına bir satırı içeren tablo. Araba kayıp olduğunda, satır yanlış, betik değil. Bu makale iki standart tabloyu, depolanan ve durum sütunlarının ne anlama geldiğini ve olağan durumları düzeltme SQL'i açıklar.
İki tablo
ESX owned_vehicles kullanır. QBCore ve QBox player_vehicles kullanır. Adlar sunucular arasında aynıdır, tam sütunlar sürümünüze ve garaj betiğinize bağlıdır, bu nedenle önce sizin bakın:
DESCRIBE owned_vehicles;
DESCRIBE player_vehicles;ESX: owned_vehicles
ESX Legacy'deki ana sütunlar:
| Sütun | İçerik |
|---|---|
owner |
Oyuncunun ESX tanımlayıcısı |
plate |
Plaka, araba başına benzersiz |
vehicle |
Araç özellikleri ile JSON metni |
type |
car, boat, aircraft... |
stored |
Garajda 1, dünyada dışarıda 0 |
job |
İş araçları için ayarlanmıştır, aksi takdirde boş |
Garaj betikleri kendi sütunlarını ekler, örneğin garaj adı veya bir pound durumu için.
QBCore ve QBox: player_vehicles
| Sütun | İçerik |
|---|---|
citizenid |
Arabayı sahip eden karakter |
license |
Oyuncunun lisans tanımlayıcısı |
vehicle |
Model adı |
hash |
Model hash'i |
mods |
Araç özellikleri ile JSON metni |
plate |
Plaka |
garage |
Arabanın ait olduğu garaj kimliği |
state |
0 dışarıda, 1 garajlı, 2 gözaltına alındı |
fuel, engine, body |
Son kaydedilen değerler |
QBox aynı tabloya aynı fikirlerle sahiptir. Finans verileri gibi diğer sütunlar farklılık gösterir.
JSON olarak özellikler
ESX üzerindeki vehicle sütunu ve QBCore üzerindeki mods sütunu arabanın görünüş ve ayarını JSON olarak tutar: renkler, modlar, tekerlek, plaka, ekstralar, neon vb. Garaj bunu arabayı çıkardığınızda okur ve tekrar depoladığınızda yazar.
-- when storing, on the client
local props = lib.getVehicleProperties(vehicle)
TriggerServerEvent('my_garage:store', plate, json.encode(props))JSON geçerli olmalı. Betik bozuk dize yazarsa, araba geri yüklenemez ve hisse senedi veya hiç spawn olmaz. Araç özellikleri makalesinde bunları nasıl oluşturduğunuzu ve uyguladığınızı gösterir.
Garajda eksik araçlar
Bunları sırada çalıştırın.
1. Satır var ama başka birine ait
Garaj listesi sahibine göre filtreler. Sahip değeri sunucunun karakteriniz için kullandığı değerse, satır görünmez:
SELECT owner, plate, stored FROM owned_vehicles WHERE plate = 'MIC 001';SELECT citizenid, license, plate, state FROM player_vehicles WHERE plate = 'MIC 001';Sahibi gerçek karakteriniz ile karşılaştırın:
- ESX: bu karakter için
users.identifierkimliği. Çok karakterli betik ile bir önek taşıyabilirchar1:gibi ve çok karakterli kurmadan önce satın alınan araç eski değeri olmadan eski değeri var. - QBCore ve QBox:
playerstablosundakicitizenid.
Framework değişikliğinden sonra, başka bir sunucudan alma veya manuel ekle, bu en yaygın nedeni. Satırı doğru değere işaret ederek düzeltin:
UPDATE owned_vehicles SET owner = 'char1:abcdef...' WHERE plate = 'MIC 001';
UPDATE player_vehicles SET citizenid = 'ABC12345' WHERE plate = 'MIC 001';Tablolarınızdaki gerçek değerlerle değiştirin.
2. Durum dışarıda sıkışmış
Çıkardığınız ve hiç geri gelmemiş araba, örneğin çökmesinden veya yeniden başlamadan sonra dışarıda işaretlenir. Garaj sadece depolanmış araçları listeler.
ESX, depolanan bayrağı geri ayarlayın:
UPDATE owned_vehicles SET `stored` = 1 WHERE `stored` = 0;QBCore ve QBox, durumu garajlı olarak ayarlayın:
UPDATE player_vehicles SET state = 1 WHERE state = 0;Dikkat: canlı sunucuda bu ayrıca şu anda sürükleri oyuncuların arabalarını depolar. Başlangıçta çalıştırın veya bir plakada veya sahibinde
WHEREile sınırlayın.
Birçok sunucu kaynak başladığında otomatik olarak bu gibi temizlik çalıştırır, yeniden başlatmadan sonra hiçbir araç hala dışarıda olmadığından. Sizinkisi yapmazsa, kendiniz yapabilirsiniz:
-- server side, runs when the garage resource starts
AddEventHandler('onResourceStart', function(resource)
if resource ~= GetCurrentResourceName() then return end
MySQL.update('UPDATE player_vehicles SET state = 1 WHERE state = 0')
end)ESX sorgusunda stored çevresindeki arka tıkları not edin: stored MySQL'de ayrılmış bir sözcük ve olmadan başarısız olur. Bazı betikler bu araçları garaj yerine bir impound durumuna gönderer, bu nedenle garajınızın beklediğini kontrol edin.
3. Garaj kimliği eşleşmiyor
QBCore üzerinde garage sütunu arabanın hangi garajda yaşadığını söyler. Yapılandırmanızda adlandırılan bir garaj satırda değilse veya yeniden adlandırılmış garaj hiçbir şey göstermez. Kullanımdaki değerleri listeleyin:
SELECT garage, COUNT(*) FROM player_vehicles GROUP BY garage;Araçları yapılandırmanızda var olan bir garajda ayarlayın.
4. Araba türü eşleşmiyor
Garaj betikleri araçları, tekneleri ve uçakları type sütununa veya araç sınıfına göre ayırır. car olarak kaydedilen tekne hiçbir zaman tekne garajında gösterilmez.
Plakalar
Plaka dünyayı, veritabanını ve anahtarları bağlantı kurar. Bu kuralları tutun:
- Plaka satır başına benzersiz. Kopya yanlış arabayı yükler.
- Plaka oyunda en fazla 8 karakterdir, sütun ESX'de daha uzun olabilir.
- Alanlar sayılır.
MIC 001veMIC001iki plakadır, bu nedenle bir format kullanın.
Anahtarlar için araç anahtarlarına bakın.
SQL tarafından oyuncuya araba ekleyin
Satır ekleyerek araç verebilirsiniz. Sütun listesini kendi DESCRIBE öğesinden alın, eksik gerekli sütun eklemeyi başarısız kılar:
INSERT INTO owned_vehicles (owner, plate, vehicle, type, `stored`)
VALUES ('identifier-here', 'MIC 001', '{"model":-1130810103,"plate":"MIC 001"}', 'car', 1);JSON içindeki model ad değil model hash'i. Framework'ünüz veya garajınız genellikle bunu düzgün yapan bir komut veya işleve sahip, mevcut olduğunda daha güvenli yoldur.
Kontrol Listesi
| Belirtisi | Düzeltme |
|---|---|
| Garaj araç yok diyor | owner veya citizenid karakterinize eşleştiğini kontrol edin |
| Araba çökmeden veya yeniden başlamadan sonra sıkışmış | UPDATE depolanan bayrağı veya durumu garajlı, idealde başlangıçta geri ayarlayın |
| Satın alınan araba gösterilmez | Satırın var olduğunu, sahibini ve garajı veya türü kontrol edin |
stored sorgusu sözdizimi hatası verir |
stored çevresine backtick koyun |
| Araba modlar olmadan yüklenir | vehicle veya mods JSON'ı geçerli ve boş olmadığını kontrol edin |
| Yanlış araba yüklenir | Çoğaltılmış plakalar arayın |
| Tekne veya uçak kayıp | type sütunu garajla eşleştiğini kontrol edin |
Kısa yanıtlar
Arabam garajda neden değil?
Ya satır karakterinize bağlı değildir (yanlış sahip veya citizenid) ya da araba dışarıda işaretlenir. Sahip sütununu ve veritabanındaki depolanmış veya durum sütununu kontrol edin.
player_vehicles'deki durum ne anlama geliyor?
QBCore ve QBox üzerinde, state bir sayıdır: 0 arabayı dünyada dışarıda, 1 garajda saklandığı ve 2 gözaltına alındığı anlamına gelir. 0'da sıkışmış bir araba garaj listesinde gösterilmez.
Her arabayı garajın geri nasıl koyarım?
Dışarıda olan satırlar için depolanan bayrağı veya durumu garajlı değere ayarlayan bir UPDATE çalıştırın. Sunucu başlangıcında çalıştırmak en iyisidir, yeniden başlatmadan sonra gerçekten dışarıda hiçbir araba olmadığından.
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 →
Chameleon PaintsTek tıkla uygulanan bir menüde 82 renk değiştiren bukalemun boya.Scripti gör →
Car BombAraç bombası yerleştirin, tespit edin ve etkisiz hale getirin — detonatör telefon ve C4 mini oyunuyla.Scripti gör →