FiveM araç hasarı: motor sağlığı, gövde sağlığı ve işleme ince ayarlar

FiveM'de araç hasarı nasıl çalışır: motor, gövde ve petrol deposu sağlığı aralıkları, GetVehicleEngineHealth, işleme hasar çarpanları ve gerçekçi hasar betikleri nasıl çalışır.

Tipik semptomlar:

text
Cars lose their engine after a small bump, explode when someone lightly hits a wall, or never take damage at all.

GTA'daki hasar, araç başına bir avuç sağlık değeri ve ne kadar hızlı düştüğünü ölçekleyen birkaç işleme numarasıdır. Bu makale aralıkları, yerel öğeleri, işleme değerlerini ve gerçekçi hasar betiklerinin arkasındaki fikri verir.

Sağlık değerleri

Bir aracının, istemcide okuyabilir ve yazabileceğiniz çeşitli sağlık değerleri vardır:

Değer Aralık Oku
Motor sağlığı -4000 ile 1000 GetVehicleEngineHealth
Gövde sağlığı 0 ile 1000 GetVehicleBodyHealth
Petrol deposu sağlığı 0 ile 1000 GetVehiclePetrolTankHealth

Yeni araba üçünde de 1000.0'dedir. Motor olağandışıdır çünkü sıfırın altına gider:

  • 1000'de motor sağlıklıdır.
  • Değer düştükçe araba duman çıkarır ve güç kaybeder.
  • 0 ve altında motor ölü ve araba yangın tutuşabilir. Aralık -4000'e kadar gider.
lua
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)

print('engine', GetVehicleEngineHealth(vehicle))
print('body', GetVehicleBodyHealth(vehicle))
print('tank', GetVehiclePetrolTankHealth(vehicle))

Petrol deposu yangınlar için önemlidir. Depo sağlığı düştüğünde sızabilir ve sızan depo tutuşabilir. Motor ve depo ayrıdır, bu nedenle 1000'de bir motor depo vurulursa yine de yanabilir.

Değerleri ayarlama

Bir aracı onarmak veya hasarlandırmak için değerleri geri yazın:

lua
SetVehicleEngineHealth(vehicle, 1000.0)
SetVehicleBodyHealth(vehicle, 1000.0)
SetVehiclePetrolTankHealth(vehicle, 1000.0)

Görünür deformasyon ve kir dahil olmak üzere bir aracı tamamen onarmak için ayrı yerel öğeler vardır:

lua
SetVehicleFixed(vehicle)
SetVehicleDeformationFixed(vehicle)
SetVehicleDirtLevel(vehicle, 0.0)

SetVehicleFixed sağlık sıfırlama ve modeli onarır. SetVehicleDeformationFixed çentikleri kaldırır. Tam onarım için ikisini birden kullanın.

Sahibi olan arabanın hasarını kaydetmek için değerleri diğer özelliklerle saklayın, araç özellikleri bölümüne bakın. Bunu yapmazsanız, her araba garajdan tam olarak onarılmış olarak çıkar.

İpucu: hemen hareketsiz kalan ve tekrar başlamayan araç, genellikle 0'ın altında bir motor sağlığıdır. Bunu 400.0 gibi bir değere ayarlamak, tam bir onarım olmadan onu geri getirir, çoğu elektrikçi betiğinin yaptığı budur. Ayrıca elektrikçi işi bölümüne bakın.

İşleme çarpanları

Değerlerin ne kadar hızlı düştüğü aracın işlemesi tarafından karar verilir. Üçü olağan düğümlerdir:

İşleme değeri Etki
fCollisionDamageMult Bir çarpışmanın gövdeye ve motora ne kadar zarar verdiği
fDeformationDamageMult Bir çarpışmanın modeli, görünür çentiği ne kadar deform ettiği
fEngineDamageMult Motorun ne kadar hasar aldığı

1.0 değeri nötr, düşük daha az hasar ve yüksek daha fazla hasar anlamına gelir. handling.meta'da şöyle görünürler:

xml
<fCollisionDamageMult value="0.700000" />
<fDeformationDamageMult value="0.700000" />
<fEngineDamageMult value="1.500000" />

Küçük değişiklikler uzun bir yol alır, bu nedenle onda biri tarafından hareket ettirin. Dosyanın nerede yaşadığı ve değişikliğin nasıl uygulanacağı için araç işlemesini düzenleme bölümüne bakın. Aynı değerler SetVehicleHandlingFloat ile çalışma zamanında değiştirilebilir, bu da bir aracı etkiler:

lua
SetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fCollisionDamageMult', 0.7)

Çalışma zamanı değişiklikleri var olsa da bu araca uygulanır. Her çıktığında yeniden uygulayın.

Gerçekçi hasar betikleri

Hasar betikleri oyunun motorunu değiştirmez, yukarıdaki değerleri kullanırlar. Konsept basittir:

  1. Bir döngü oyuncunun sürdüğü aracın motor ve gövde sağlığını okur.
  2. Değerler belirlenen eşiklerin altına düştüğünde, betik efektleri uygular: SetVehicleEnginePowerMultiplier ile daha az güç, hareketsiz kalan motor, çekme direksiyonu, ekranda uyarı.
  3. Motoru tamamen ölmesini engeller, örneğin küçük pozitif bir değerde tutarak, böylece araba yanmak yerine aksak yürür.
  4. Bir elektrikçi veya onarım kiti değerleri yeniden yükseltir.

Döngünün her kare çalışması gerekmez. Birkaç yüz milisaniyede bir kontrol yeterli ve daha ucuz, Wait nasıl çalışır bölümüne bakın:

lua
CreateThread(function()
    while true do
        local ped = PlayerPedId()
        local vehicle = GetVehiclePedIsIn(ped, false)

        if vehicle ~= 0 and GetPedInVehicleSeat(vehicle, -1) == ped then
            if GetVehicleEngineHealth(vehicle) < 200.0 then
                SetVehicleEngineHealth(vehicle, 200.0)
                SetVehicleEngineOn(vehicle, false, true, true)
            end
            Wait(500)
        else
            Wait(1500)
        end
    end
end)

Bu motoru yanmaktan engeller ve bunun yerine kapatır. Bunu başlangıç noktası olarak ele alın: gerçek betik yeniden başlatmanın bir yolunu ekler, böylece oyuncu takılı kalmaz.

Patlamaları önleme

Yalnızca yangından daha az ölüm istiyorsanız, en basit güvenli seçenekler yukarıda olanlar: daha düşük hasar çarpanı ve motor ve depo sağlığının sıfıra düşmesini engelleme.

Ayrıca bir araçta yangın ve patlama sisteminin parçalarını devre dışı bırakan yerel öğeler vardır, örneğin motoru bozulmaktan durdurur. Bunları belirli bir araçta, mesela iş aracında kullanın ve onlara güvenmeden önce yerel öğenin belgelerine okuyun. Sunucudaki her araca uygulamayın:

  • Araba bombası veya heist gibi betikler patlayabilen araçlara bağlıdır.
  • Oyuncular rollü oyunda hasarı kullanırlar: bir kovalama, bir kaza sahne, bir polis durdurma.
  • Yok edilemeyen araç, taciz aracıdır ve sonuçlardan kaçınmanın bir yoludur.

Kullanım başına karar verin ve çarpanları tercih edin.

Yeniden başlatma veya yeniden ortaya çıkıştan sonra hasar

Bir araba her çıktığında onarılırsa, neden bunlardan biridir:

  • Garaj motor ve gövde sağlığını kaydetmez, bu nedenle her çıktı 1000'de başlar. Saklama sırasında değerleri kaydedin ve çıkışta uygulayın.
  • Betik her çıktıda SetVehicleFixed çağırır.
  • Araba taze bir varlıktır ve sağlığı her zaman tam olarak başlar. Yalnızca kaydedilen veriler hasarı taşır.

Kontrol listesi

Belirti Çözüm
Motor sağlığına ihtiyaç GetVehicleEngineHealth, aralık -4000 ile 1000
Araba hafif çarpışmada ölür İşlemede fCollisionDamageMult ve fEngineDamageMult düşürün
Çentiğiler çok görünür fDeformationDamageMult düşürün
Araba küçük bir çarpışmadan sonra yanıyor Petrol deposu sağlığını yüksek tutun veya motor düşüşünü sınırlayın
Hareketsiz kalan araba başlamayacak Motor sağlığını 0'ın üzerine ayarlayın
Onarım çentiğiler bırakır SetVehicleFixed'den sonra SetVehicleDeformationFixed ekleyin
Saklama sonrasında hasar kaybı Motor ve gövde sağlığını diğer özelliklerle kaydedin

Kısa yanıtlar

Araç motor sağlığının aralığı nedir?

-4000'den 1000'e. Sağlıklı bir motor 1000'de. 0'ın altında motor ölü ve araba yanabilir.

Arabaların daha az hasar almasını nasıl sağlarım?

fCollisionDamageMult ve fDeformationDamageMult gibi aracın işlemesindeki hasar çarpanlarını düşürün veya sağlık değerlerini bir betikten yüksek tutun.

Araçların patlamasını durdurabilir miyim?

Sağlık değerlerini yüksek tutarak veya işlemeyi değiştirerek bunu azaltabilirsiniz, ancak dikkatli olun: genel bir ayar, bir heist veya otomobil bombası gibi diğer betiklerin ihtiyaç duyabileceği oyunun bir kısmını kaldırır.

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 →

Okumaya devam edin