Uszkodzenie pojazdu FiveM: engine health, body health i tweaki handlingu
Jak działa uszkodzenie pojazdu w FiveM: zakresy health silnika, nadwozia i zbiornika paliwa, GetVehicleEngineHealth, mnożniki odszkodowania handlingu i jak działają realistyczne skrypty uszkodzeń.
Typowe objawy:
Cars lose their engine after a small bump, explode when someone lightly hits a wall, or never take damage at all.Uszkodzenie w GTA to garstka wartości health na pojazd i kilka liczb handlingu, które skalują, jak szybko spadają. Ten artykuł daje zakresy, native'i, wartości handlingu i ideę stojącą za realistycznymi skryptami uszkodzeń.
Wartości zdrowotne
Pojazd ma kilka wartości zdrowotnych, które można czytać i pisać na kliencie:
| Wartość | Zakres | Czytaj z |
|---|---|---|
| Engine health | -4000 do 1000 | GetVehicleEngineHealth |
| Body health | 0 do 1000 | GetVehicleBodyHealth |
| Petrol tank health | 0 do 1000 | GetVehiclePetrolTankHealth |
Nowy samochód jest w 1000.0 na wszystkich trzech. Silnik jest niezwykły, ponieważ spada poniżej zera:
- Na
1000, silnik jest zdrowy. - Gdy wartość spada, samochód dyszy i traci moc.
- Na
0i poniżej silnik jest martwy i samochód może się zapalić. Zakres spada do-4000.
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
print('engine', GetVehicleEngineHealth(vehicle))
print('body', GetVehicleBodyHealth(vehicle))
print('tank', GetVehiclePetrolTankHealth(vehicle))Zbiornik paliwa ma znaczenie dla pożarów. Gdy health zbiornika spada, może wyciekać i wyciekający zbiornik może się zapalić. Silnik i zbiornik są odrębne, więc silnik w 1000 może się zapalić, jeśli zbiornik zostanie trafiony.
Ustawianie wartości
Aby naprawić lub uszkodzić pojazd, napisz wartości z powrotem:
SetVehicleEngineHealth(vehicle, 1000.0)
SetVehicleBodyHealth(vehicle, 1000.0)
SetVehiclePetrolTankHealth(vehicle, 1000.0)Aby w pełni naprawić pojazd, w tym widoczne odkształcenie i brud, istnieją oddzielne native'i:
SetVehicleFixed(vehicle)
SetVehicleDeformationFixed(vehicle)
SetVehicleDirtLevel(vehicle, 0.0)SetVehicleFixed resetuje health i naprawia model. SetVehicleDeformationFixed usuwa wgniecenia. Używaj obu do pełnej naprawy.
Aby zapisać uszkodzenie posiadanego samochodu, przechowuj wartości z innymi właściwościami, zobacz właściwości pojazdu. Jeśli tego nie zrobisz, każdy samochód wychodzi z garażu w pełni naprawiony.
Wskazówka: pojazd, który się zatrzymuje od razu i nie uruchomi się ponownie, to często engine health poniżej 0. Ustawienie go z powrotem na wartość, taką jak
400.0, przywraca go bez pełnej naprawy, co robią wiele skryptów mechanika. Zobacz również mechanik praca.
Mnożniki handlingu
Jak szybko wartości spadają, jest decydowane przez handling pojazdu. Trzy z nich to zwykłe pokrętła:
| Wartość handlingu | Efekt |
|---|---|
fCollisionDamageMult |
Ile uszkodzenia powoduje zderzenie zarówno nadwozia jak i silnika |
fDeformationDamageMult |
Ile uszkodzenia powoduje odkształcenie modelu, widoczne wgniecenia |
fEngineDamageMult |
Ile uszkodzenia przyjmuje silnik |
Wartość 1.0 jest neutralna, niższa oznacza mniej uszkodzeń i wyższa oznacza więcej. W handling.meta wyglądają tak:
<fCollisionDamageMult value="0.700000" />
<fDeformationDamageMult value="0.700000" />
<fEngineDamageMult value="1.500000" />Małe zmiany idą daleko, więc poruszaj się o dziesiątki. Aby dowiedzieć się, gdzie plik mieszka i jak zastosować zmianę, zobacz edycja handlingu pojazdu. Te same wartości można zmienić w runtime za pomocą SetVehicleHandlingFloat, co wpływa na jeden pojazd:
SetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fCollisionDamageMult', 0.7)Zmiany w runtime dotyczą tego pojazdu, podczas gdy istnieje. Ponownie zastosuj je za każdym razem, gdy się pojawia.
Realistyczne skrypty uszkodzeń
Skrypty uszkodzeń nie zmieniają silnika gry, używają wartości powyżej. Koncepcja jest prosta:
- Pętla czyta engine i body health pojazdu, którym podróżuje gracz.
- Gdy wartości spadają poniżej ustalonych progów, skrypt stosuje efekty: mniej mocy z
SetVehicleEnginePowerMultiplier, zatrzymujący się silnik, ciągnące się kierownictwo, ostrzeżenie na ekranie. - Uniemożliwia całkowite zgaśnięcie silnika, na przykład utrzymując go na małej wartości dodatniej, więc samochód kuli się zamiast się palić.
- Mechanik lub zestaw napraw ustawia wartości z powrotem w górę.
Pętla nie musi działać każdą ramkę. Sprawdzenie co kilkaset milisekund wystarczy i jest tańsze, zobacz jak działa Wait:
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)To uniemożliwia spaleniu się silnika i wyłącza go zamiast. Traktuj to jako punkt wyjścia: prawdziwy skrypt dodaje sposób, aby go zrestartować, więc gracz nie jest zablokowany.
Zapobieganie eksplozjom
Jeśli chcesz mniej śmierci przez ogień, najprostsze bezpieczne opcje to wymienione powyżej: niższy mnożnik odszkodowania i utrzymywanie engine i petrol tank health od spadania do zera.
Istnieją również native'i, które wyłączają części systemu ognia i eksplozji dla jednego pojazdu, takie jak te, które zatrzymują degradację silnika. Używaj ich na konkretnym pojazdu, takim jak pojazd pracy, i przeczytaj dokumentację native'a, zanim się na nich polegasz. Nie stosuj ich do każdego pojazdu na serwerze:
- Skrypty, takie jak bomba samochodowa lub heist, zależą od pojazdów, które mogą eksplodować.
- Gracze używają uszkodzeń w roleplay: pościg, miejsce wypadku, zatrzymanie policji.
- Pojazd, który nie może być zniszczony, to narzędzie griefingu i sposób na unikanie konsekwencji.
Decyduj na danym przypadku i preferuj mnożniki.
Uszkodzenie po restarcie lub respawnie
Jeśli samochód jest naprawiany za każdym razem, gdy pojawia się, przyczynę jest jedno z:
- Garaż nie zapisuje engine i body health, więc każdy spawn zaczyna się na 1000. Zapisz wartości na sklepie i zastosuj je na spawn.
- Skrypt wywołuje
SetVehicleFixedna każdym spawn. - Samochód to świeża jednostka i jej health zawsze zaczyna się w pełni. Tylko Twoje zapisane dane przenoszą uszkodzenia.
Lista kontrolna
| Objaw | Rozwiązanie |
|---|---|
| Potrzebuję engine health | GetVehicleEngineHealth, zakres -4000 do 1000 |
| Samochód umiera przy najlitościwszym uderzeniu | Obniż fCollisionDamageMult i fEngineDamageMult w handlingu |
| Wgniecenia zbyt widoczne | Obniż fDeformationDamageMult |
| Samochód się pali po małym uderzeniu | Trzymaj petrol tank health w górze lub limituj engine drop |
| Zatrzymany samochód nie uruchomi się | Ustaw engine health powyżej 0 |
| Naprawa pozostawia wgniecenia | Dodaj SetVehicleDeformationFixed po SetVehicleFixed |
| Uszkodzenie zgubione po przechowywaniu | Zapisz engine i body health z innymi właściwościami |
Szybkie odpowiedzi
Jaki jest zakres engine health pojazdu?
Od -4000 do 1000. Zdrowy silnik jest na 1000. Poniżej 0 silnik jest martwy i samochód może się zapalić.
Jak sprać, aby samochody nie brały mniej uszkodzeń?
Obniż mnożniki odszkodowań w handlingu pojazdu, takie jak fCollisionDamageMult i fDeformationDamageMult, lub trzymaj wartości health w pełni z skryptu.
Czy mogę powstrzymać pojazdy przed eksplozją?
Możesz to zmniejszyć, utrzymując wartości health w górze lub zmieniając handling, ale bądź ostrożny: ustawienie całościowe usuwa część gry, którą inne skrypty, takie jak heist lub bomba samochodowa, mogą potrzebować.
Skrypty bez tego problemu
Advanced BoostingBoosting pojazdów z tabletu: kontrakty od klasy D do S+, ekipy i kolejka na żywo.Zobacz skrypt →
Car BombPodkładaj, wykrywaj i rozbrajaj bomby w autach — z telefonem-detonatorem i minigrą C4.Zobacz skrypt →
Chameleon Paints82 lakiery kameleon zmieniające kolor, w jednym menu — klik i gotowe.Zobacz skrypt →