FiveM повреждение транспортного средства: здоровье двигателя, здоровье корпуса и настройка обработки

Как работает повреждение транспортного средства в FiveM: диапазоны здоровья двигателя, корпуса и топливного бака, GetVehicleEngineHealth, множители повреждения обработки и как работают реалистичные скрипты повреждения.

Типичные симптомы:

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

Повреждение в GTA - это несколько значений здоровья на транспортное средство и несколько чисел обработки, которые масштабируют, насколько быстро они падают. Эта статья дает диапазоны, встроенные функции, значения обработки и идею, стоящую за реалистичными скриптами повреждения.

Значения здоровья

Транспортное средство имеет несколько значений здоровья, которые вы можете читать и писать на клиенте:

Значение Диапазон Читайте с
Здоровье двигателя -4000 до 1000 GetVehicleEngineHealth
Здоровье корпуса 0 до 1000 GetVehicleBodyHealth
Здоровье топливного бака 0 до 1000 GetVehiclePetrolTankHealth

Новый автомобиль имеет 1000.0 по всем трем. Двигатель - необычный, потому что он опускается ниже нуля:

  • В 1000 двигатель здоров.
  • По мере падения значения, автомобиль дымит и теряет мощность.
  • На 0 и ниже двигатель мертв и автомобиль может загореться. Диапазон опускается до -4000.
lua
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)

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

Топливный бак имеет значение для огня. Когда здоровье бака падает, он может протечь, и протекающий бак может загореться. Двигатель и бак отдельны, поэтому двигатель на 1000 может все еще гореть, если бак попан.

Установка значений

Чтобы отремонтировать или повредить транспортное средство, напишите значения обратно:

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

Чтобы полностью исправить транспортное средство, включая видимую деформацию и грязь, есть отдельные встроенные функции:

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

SetVehicleFixed сбрасывает здоровье и ремонтирует модель. SetVehicleDeformationFixed удаляет вмятины. Используйте оба для полного ремонта.

Чтобы сохранить повреждение принадлежащего автомобиля, сохраните значения с другими свойствами, смотрите vehicle properties. Если вы этого не делаете, каждый автомобиль выходит из гаража полностью отремонтированным.

Совет: транспортное средство, которое глохнет сразу и не запустится снова, часто имеет здоровье двигателя ниже 0. Установка его обратно на значение, такое как 400.0, возвращает его без полного ремонта, что делают многие скрипты механиков. Смотрите также mechanic job.

Множители обработки

Как быстро падают значения, решает обработка транспортного средства. Три из них - обычные ручки:

Значение обработки Эффект
fCollisionDamageMult Сколько столкновение повреждает корпус и двигатель
fDeformationDamageMult Сколько столкновение деформирует модель, видимые вмятины
fEngineDamageMult Сколько повреждения получает двигатель

Значение 1.0 нейтрально, ниже означает меньше повреждений и выше означает больше. В handling.meta они выглядят так:

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

Небольшие изменения имеют большое значение, поэтому двигайтесь на десятые. Для того, где живет файл и как применить изменение, смотрите editing vehicle handling. Те же значения можно изменять во время выполнения с SetVehicleHandlingFloat, что влияет на одно транспортное средство:

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

Изменения во время выполнения применяются к этому транспортному средству, пока оно существует. Переприменяйте их каждый раз, когда оно спавнится.

Реалистичные скрипты повреждения

Скрипты повреждения не изменяют движок игры, они используют значения выше. Концепция проста:

  1. Цикл читает здоровье двигателя и корпуса транспортного средства, на котором едит игрок.
  2. Когда значения падают ниже установленных пороговых значений, скрипт применяет эффекты: меньше мощности с SetVehicleEnginePowerMultiplier, глохший двигатель, вытягивающий рулевое управление, предупреждение на экране.
  3. Он держит двигатель от полной смерти, например, держа его на небольшом положительном значении, поэтому автомобиль хромает вместо того, чтобы гореть.
  4. Механик или набор для ремонта устанавливает значения обратно.

Цикл не должен работать каждый кадр. Проверка каждые несколько сотен миллисекунд достаточно и дешевле, смотрите how Wait works:

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)

Это держит двигатель от горения и вместо этого выключает его. Рассматривайте это как отправную точку: реальный скрипт добавляет способ его перезагрузки, так что игрок не застрял.

Предотвращение взрывов

Если вы только хотите меньше смертей от огня, самые простые безопасные варианты - это те, которые выше: более низкий множитель повреждения и удержание здоровья двигателя и бака от падения до нуля.

Есть также встроенные функции, которые отключают части системы пожара и взрывов для одного транспортного средства, такие как те, которые останавливают деградацию двигателя. Используйте их на конкретном транспортном средстве, как транспортное средство работы, и прочитайте документацию встроенной функции перед тем как полагаться на них. Не применяйте их ко всем транспортным средствам на сервере:

  • Скрипты, такие как автомобильная бомба или ограбление, зависят от транспортных средств, которые могут взрваться.
  • Игроки используют повреждения в рольевых играх: преследование, сцена краха, полицейская остановка.
  • Транспортное средство, которое не может быть уничтожено, - это инструмент грифинга и способ избежать последствий.

Решите по каждому случаю использования и предпочитайте множители.

Повреждение после перезагрузки или повторного спавна

Если автомобиль отремонтирован каждый раз, когда он спавнится, причина - один из этих:

  • Гараж не сохраняет здоровье двигателя и корпуса, поэтому каждый спавн начинается на 1000. Сохраните значения при сохранении и примените их при спавне.
  • Скрипт вызывает SetVehicleFixed при каждом спавне.
  • Автомобиль - это свежий объект, и его здоровье всегда начинается полным. Только ваши сохраненные данные переносят повреждение.

Контрольный список

Симптом Решение
Нужно здоровье двигателя GetVehicleEngineHealth, диапазон -4000 до 1000
Машина умирает при малейшем ударе Понизьте fCollisionDamageMult и fEngineDamageMult в обработке
Вмятины слишком видны Понизьте fDeformationDamageMult
Машина горит после небольшого удара Держите здоровье топливного бака, или ограничьте падение двигателя
Глохший автомобиль не запустится Установите здоровье двигателя выше 0
Ремонт оставляет вмятины Добавьте SetVehicleDeformationFixed после SetVehicleFixed
Повреждение потеряно после сохранения Сохраняйте здоровье двигателя и корпуса с другими свойствами

Короткие ответы

Каков диапазон здоровья двигателя транспортного средства?

От -4000 до 1000. Здоровый двигатель находится на 1000. Ниже 0 двигатель мертв, и автомобиль может загореться.

Как мне сделать так, чтобы автомобили получали меньше повреждений?

Снизьте множители повреждения в обработке транспортного средства, такие как fCollisionDamageMult и fDeformationDamageMult, или держите значения здоровья на максимуме из скрипта.

Могу ли я предотвратить взрыв транспортных средств?

Вы можете уменьшить это, сохраняя значения здоровья или изменяя обработку, но будьте осторожны: общая настройка удаляет часть игры, которая могут понадобиться другим скриптам, таким как ограбление или автомобильная бомба.

Скрипты без этой проблемы

Advanced BoostingУгон машин на заказ через планшет: контракты от класса D до S+, команды и живая очередь.Смотреть скрипт →Car BombЗакладывайте, находите и обезвреживайте бомбы в машинах — с телефоном-детонатором и мини-игрой C4.Смотреть скрипт →Chameleon Paints82 краски-хамелеона с переливом цвета в одном меню — наносятся в один клик.Смотреть скрипт →

Читайте также

FiveMLuaScriptingТопливо автомобиля FiveM: установить топливо при спауне и исправить автомобили, застрявшие на 0Как работает топливо в FiveM: GetVehicleFuelLevel и SetVehicleFuelLevel, топливо в state bags, установка топлива при спауне автомобиля и почему автомобили начинают с пустым баком.1 октября 2026 г. · 4 мин чтенияЧитать →FiveMServerLuaFiveM транспортные средства исчезают или деспавнятся: почему это происходит и исправлениеСозданные машины исчезают через несколько секунд или когда вы уходите? Кулирование сущностей OneSync, режим сирот, владельцы уходят, скрипты очистки и как сохранить транспортное средство персистентным.1 октября 2026 г. · 4 мин чтенияЧитать →FiveMESXQBCoreКлючи автомобиля FiveM: не можешь водить свой автомобиль или заблокировать его? Исправь этоКак работают системы ключей автомобилей в FiveM: списки номерных знаков, выдача ключей после спауна или покупки, блокировка с помощью SetVehicleDoorsLocked и почему вы теряете доступ к своему автомобилю.1 октября 2026 г. · 4 мин чтенияЧитать →