FiveM vehicle fuel: spawn'da yakıtı ayarla ve 0'da takılı arabalar düzelt
FiveM'de yakıt nasıl çalışır: GetVehicleFuelLevel ve SetVehicleFuelLevel, state bags'deki yakıt, araba spawn'larken yakıtı ayarlama ve neden araçlar boş bir tankla başlıyor.
Tipik belirtiler:
A freshly spawned car has the fuel gauge at 0 and the engine cuts out after a few metres.FiveM'de yakıt bir sistem değildir. Oyunun bir native'i var, ancak neredeyse her sunucu kendi değerini tutan bir yakıt resource'u çalıştırır. Bu makale native'leri, yakıt resource'larının seviyeyi nerede depoladığını ve araç spawn'larken yakıtı doğru şekilde ayarlamayı açıklar.
İki native
Oyun her araçta bir yakıt seviyesi depolar. Client'ta oku ve yaz:
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local fuel = GetVehicleFuelLevel(vehicle)
print('fuel', fuel)
SetVehicleFuelLevel(vehicle, 100.0)GetVehicleFuelLevel bir float döndürür ve SetVehicleFuelLevel bir float alır. Değer, araçların handling'deki benzin tank hacmini takip eder, bu nedenle script'ler normalde onu yüzde olarak ele alır ve 0 ile 100 arasında tutarlar.
Kendi başına, native yakıt tüketmez. Oyun bunu yalnızca belirli durumlarda drains'tir, bu nedenle yakıt resource'u araçların hız ve RPM'ye göre yakıt kullanmasını sağlayan şeydir.
Yakıt resource'ları seviyeyi nerede tutarlar
Bu çoğu problemi neden olan kısmıdır. Yakıt resource'u her araçın seviyesini hatırlamalıdır ve bu yerlerin birini seçer:
- Entite üzerinde bir state bag. Bazı resource'lar seviyeyi araç durumunda tutarlar, örneğin
Entity(vehicle).state.fuel. Bu nasıl ox_fuel çalışır ve birkaç diğer modern resource aynı şeyi yapar. State bags değerlerin server ve client'lar arasında nasıl senkronize olduğunu görmek için state bags bkz. - Bir decorator. Eski resource'lar seviyeyi araçta
DecorSetFloatile depolarlar. - Yalnızca native. En basit script'ler
GetVehicleFuelLevelokurlar veSetVehicleFuelLevelyazarlar ve başka hiçbir şey değil. - Veritabanı. Birçok resource'lar da oturum'lar arasında kalıcı olması için sahip olunan araçların seviyesini kaydederler, araç tablosunun
fuelsütununda.
Resource'unuzun okuduğu yer tarafından desteklenmeyen bir native çağrı görünür bir etkisi yoktur. SetVehicleFuelLevel(vehicle, 100.0) çağırırsanız ve ölçer 0'da kalırsa, resource'unuz başka bir kaynağı okur.
İpucu: yakıt resource'unuzun dosyalarını açın ve
state.fuel,DecorveGetVehicleFuelLevelarayın. Hangisini okuyor ise yazmak zorunda olduğunuz budur.
Araç spawn'larken yakıtı ayarla
Yakıt resource'unuz ne kullansa, sıra aynıdır. Aracı oluşturun, var olmasını bekleyin, sonra yakıtı ayarlayın:
local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)
SetVehicleNumberPlateText(vehicle, plate)
-- 1. the native, for the game's own value
SetVehicleFuelLevel(vehicle, 100.0)
-- 2. the state bag, if your fuel resource reads one
Entity(vehicle).state:set('fuel', 100.0, true)Resource'unuzun okuduğu satırı kullanın. Hiçbir şey okumayan bir state bag anahtarını yazma zararsızdır ama boştur.
Bazı resource'lar ayrıca, nerede depolandığını bilmeniz gerekmeyecek şekilde seviyeyi ayarlamak için bir export sağlarlar. Sizinkiyse, bunu tercih edin ve tam adı belgelerinden alın:
-- placeholder: the export name depends on your fuel resource
exports['your_fuel_resource']:SetFuel(vehicle, 100.0)CreateVehicleServerSetter ile server'da inşa edilmiş bir araç için, değeri server tarafını state bag'i aracılığıyla ayarlayın. Native SetVehicleFuelLevel client'ta çalışır, bu nedenle server tarafından oluşturulan araçlar için net id'yi sahibine verip orada ayarlarsınız, araçları spawn'lama'da açıklandığı gibi.
Sahip olunan araçlar boş çıkıyor
Garajınızdaki araçlar her zaman aynı düşük değerle başlarsa, garaj boş olan kaydedilen bir değeri geri yükler. Genellikle son bilinen seviyeyi bir sütun içinde tutan araç tablosunu kontrol edin:
SELECT plate, fuel FROM player_vehicles WHERE plate = 'MIC 001';Yaygın nedenler:
fuelsütunu0veyaNULLçünkü araç değer kaydedilmediği sırada depolanmış.- Garaj script'i spawn'larken asla sütunu okumaz.
- Yakıt resource'u kendi değerini garajın okuduğu başka yerde kaydeder.
Zaten takılı araçları onarmak için sütunu tam bir tankla ayarlayın:
UPDATE player_vehicles SET fuel = 100 WHERE fuel IS NULL OR fuel <= 0;ESX sunucuları genellikle owned_vehicles içinde fuel sütununa sahip değildir, çünkü yakıt diğer özelliklerle birlikte vehicle JSON sütununun içinde kaydedilir. Araç özellikleri bu JSON'in nasıl inşa edildiğini görün.
0 yakıtında takılı araçlar
Olağan nedenleri işleyin:
Yakıt resource'u çalışmıyor veya geç başladı. Garajdan sonra başlarsa, ilk spawn'lanan araçların değeri yok. Araçları spawn'layan script'lerden önce başlatın.
İki resource dövüş. Bir yakıt resource'u ve SetVehicleFuelLevel çağıran bir script her frame'de birbirlerini üzerine yazarlar ve ölçer atlar. Bir kaynak tutun.
Seviye entite var olmadan önce ayarlandı. Ağlı bir spawn'da çağrı DoesEntityExist true olduktan sonra olması gerekir, veya hiçbir şeye uygulanır.
Model çok küçük bir tanka sahip. Benzin tank hacmi handling'den gelir. Çok düşük fPetrolTankVolume olan özel araç hızlı boşalır. Araç handling dosyasını kontrol edin, araç handling'i düzenleme bakın.
Elektrikli araçlar. Onları hariç tutmayan bir yakıt resource'u var olmayan bir tankı boşaltır. Çoğu resource'un atlayacak elektrikli modellerin bir listesi vardır.
İstasyon olmadan refuel
Test veya iş aracı için, küçük bir döngü oyuncu onu sürüyorken tankı dolu tutarlar:
CreateThread(function()
while true do
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
if vehicle ~= 0 and GetVehicleFuelLevel(vehicle) < 20.0 then
SetVehicleFuelLevel(vehicle, 100.0)
end
Wait(2000)
end
end)İki saniyelik Wait kasıtlıdır: yakıt her frame'de kontrol edilmesine gerek yoktur, Wait nasıl çalışır bakın.
Kontrol listesi
| Belirti | Fix |
|---|---|
| Spawn'lanan araç 0 yakıta sahip | Spawn sonra yakıtı ayarlayın, yakıt resource'unuz okuduğu yerde |
SetVehicleFuelLevel hiçbir şey değiştirmiyor |
Resource state bag'i veya decorator'ı okur: bunun yerine yaz veya export'u kullan |
| Garaj araçları boş çıkıyor | fuel sütununu veya kaydedilen özellikleri kontrol edin ve garajın onları geri yüklemesi gerektiğini kontrol edin |
| Yakıt yukarı ve aşağı atlar | İki script seviyeyi ayarlar: birini tutun |
| Server'dan oluşturulan araç yakıt yok | State bag'i server'da ayarlayın veya net id'yi sahibine gönderin |
| Özel araçta boş tank | Handling'deki fPetrolTankVolume kontrol edin |
| Elektrikli araç yakıt kaybediyor | Modeli yakıt resource'unuzun elektrik listesine ekleyin |
Kısa yanıtlar
Neden spawn'ladığım araç yakıt yok?
Yakıt resource'u genellikle seviyeyi kendi yerinde tutar, örneğin bir state bag'de ve yeni araçta henüz orada hiçbir değer yoktur. Spawn sonra yakıtı yakıt resource'u aracılığıyla ayarlayın.
SetVehicleFuelLevel bir tankı doldurmak için yeterli mi?
Yalnızca oyunun kendi değeri için. Yakıt resource'u yakıtı bir state bag'den veya kendi tablosundan okursa, native'i yoksayar, bu nedenle resource'un okuduğu yere değeri ayarlayın.
Yakıt tüketimini sınırsız yapabilir miyim?
Evet. Seviyeyi bir zamanlayıcıda maksimumda tutun veya varsa yakıt resource'unuzun config'inde tüketimi kapatın.
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 →