FiveM повреждение транспортного средства: здоровье двигателя, здоровье корпуса и настройка обработки
Как работает повреждение транспортного средства в FiveM: диапазоны здоровья двигателя, корпуса и топливного бака, GetVehicleEngineHealth, множители повреждения обработки и как работают реалистичные скрипты повреждения.
Типичные симптомы:
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.
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
print('engine', GetVehicleEngineHealth(vehicle))
print('body', GetVehicleBodyHealth(vehicle))
print('tank', GetVehiclePetrolTankHealth(vehicle))Топливный бак имеет значение для огня. Когда здоровье бака падает, он может протечь, и протекающий бак может загореться. Двигатель и бак отдельны, поэтому двигатель на 1000 может все еще гореть, если бак попан.
Установка значений
Чтобы отремонтировать или повредить транспортное средство, напишите значения обратно:
SetVehicleEngineHealth(vehicle, 1000.0)
SetVehicleBodyHealth(vehicle, 1000.0)
SetVehiclePetrolTankHealth(vehicle, 1000.0)Чтобы полностью исправить транспортное средство, включая видимую деформацию и грязь, есть отдельные встроенные функции:
SetVehicleFixed(vehicle)
SetVehicleDeformationFixed(vehicle)
SetVehicleDirtLevel(vehicle, 0.0)SetVehicleFixed сбрасывает здоровье и ремонтирует модель. SetVehicleDeformationFixed удаляет вмятины. Используйте оба для полного ремонта.
Чтобы сохранить повреждение принадлежащего автомобиля, сохраните значения с другими свойствами, смотрите vehicle properties. Если вы этого не делаете, каждый автомобиль выходит из гаража полностью отремонтированным.
Совет: транспортное средство, которое глохнет сразу и не запустится снова, часто имеет здоровье двигателя ниже 0. Установка его обратно на значение, такое как
400.0, возвращает его без полного ремонта, что делают многие скрипты механиков. Смотрите также mechanic job.
Множители обработки
Как быстро падают значения, решает обработка транспортного средства. Три из них - обычные ручки:
| Значение обработки | Эффект |
|---|---|
fCollisionDamageMult |
Сколько столкновение повреждает корпус и двигатель |
fDeformationDamageMult |
Сколько столкновение деформирует модель, видимые вмятины |
fEngineDamageMult |
Сколько повреждения получает двигатель |
Значение 1.0 нейтрально, ниже означает меньше повреждений и выше означает больше. В handling.meta они выглядят так:
<fCollisionDamageMult value="0.700000" />
<fDeformationDamageMult value="0.700000" />
<fEngineDamageMult value="1.500000" />Небольшие изменения имеют большое значение, поэтому двигайтесь на десятые. Для того, где живет файл и как применить изменение, смотрите editing vehicle handling. Те же значения можно изменять во время выполнения с SetVehicleHandlingFloat, что влияет на одно транспортное средство:
SetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fCollisionDamageMult', 0.7)Изменения во время выполнения применяются к этому транспортному средству, пока оно существует. Переприменяйте их каждый раз, когда оно спавнится.
Реалистичные скрипты повреждения
Скрипты повреждения не изменяют движок игры, они используют значения выше. Концепция проста:
- Цикл читает здоровье двигателя и корпуса транспортного средства, на котором едит игрок.
- Когда значения падают ниже установленных пороговых значений, скрипт применяет эффекты: меньше мощности с
SetVehicleEnginePowerMultiplier, глохший двигатель, вытягивающий рулевое управление, предупреждение на экране. - Он держит двигатель от полной смерти, например, держа его на небольшом положительном значении, поэтому автомобиль хромает вместо того, чтобы гореть.
- Механик или набор для ремонта устанавливает значения обратно.
Цикл не должен работать каждый кадр. Проверка каждые несколько сотен миллисекунд достаточно и дешевле, смотрите how Wait works:
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 краски-хамелеона с переливом цвета в одном меню — наносятся в один клик.Смотреть скрипт →