Отредактируйте handling.meta в FiveM: скорость, сцепление, тормоза и HANDLING_FILE

Отредактируйте handling.meta автомобиля на FiveM: ключевые поля (fInitialDriveForce, fBrakeForce, fTractionCurveMax, fMass), HANDLING_FILE, совпадение handlingName, тестирование и runtime.

Вы хотите, чтобы машина ускорялась быстрее, лучше держала или тормозила сильнее, и значения находятся в handling.meta. Это руководство показывает, что делают ключевые поля, как файл загружается, как он привязан к транспортному средству и как протестировать ваши изменения без угадывания.

Как обработка привязана к машине

Машина имеет запись обработки, и машина указывает на неё по имени:

xml
<!-- vehicles.meta -->
<Item>
  <modelName>mycar</modelName>
  <handlingId>MYCAR</handlingId>
  ...
</Item>
xml
<!-- handling.meta -->
<Item type="CHandlingData">
  <handlingName>MYCAR</handlingName>
  ...
</Item>

handlingName в handling.meta должно быть таким же как handlingId в vehicles.meta. Если они отличаются, игра не находит запись и машина использует значение по умолчанию. Если два пака используют одно и то же handlingName, один из них побеждает и другая машина обрабатывает неправильно, поэтому держите имена уникальными.

Загрузите файл

Ресурс должен объявить файл в fxmanifest.lua:

lua
fx_version 'cerulean'
game 'gta5'

files {
    'data/handling.meta',
    'data/vehicles.meta',
}

data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'

Без строки HANDLING_FILE, файл не используется и ваши редактирования ничего не делают. Полный набор файлов для дополнительного автомобиля находится в как добавить дополнительные автомобили.

Ключевые поля

Файл обработки имеет много значений. Вот те, которые вы будете менять чаще:

xml
<fMass value="1500.000000" />
<fInitialDriveForce value="0.320000" />
<fInitialDriveMaxFlatVel value="160.000000" />
<fBrakeForce value="0.800000" />
<fTractionCurveMax value="2.400000" />
  • fMass: вес машины в килограммах. Тяжёлая машина сложнее толкать и остановить, и она выигрывает столкновения с более лёгкими машинами.
  • fInitialDriveForce: ускорение. Более высокое значение даёт более сильный толчок с линии. Машины в базовой игре обычно находятся хорошо под 1.0, поэтому изменение нескольких сотых уже видимо.
  • fInitialDriveMaxFlatVel: максимальная скорость, которую двигатель может достичь на плоском земле, в единице близко к км/ч. Скорость, показанная в игре, не совпадает ровно, так как сопротивление и коробка передач также играют роль.
  • fBrakeForce: сила торможения. Поднимите это для более коротких расстояний торможения; слишком высокая делает машину блокирующей или опускает нос вниз.
  • fTractionCurveMax: сцепление шин в повороте. Выше означает больше сцепления, пока машина не почувствует себя приклеенной к дороге.

Другие, которые вы можете встретить — это fInitialDragCoeff (воздушное сопротивление), fTractionCurveMin (сцепление при проскальзывании машины), fSteeringLock и fSuspensionForce. Меняйте одно за раз, чтобы вы знали, что вызвало результат.

Совет: скопируйте исходный файл перед тем как начать, и меняйте значения на маленьких шагах, примерно на 10-20 процентов. Несколько больших изменений сразу делают машину трудно понимаемой и трудно отменяемой.

Протестируйте ваши изменения

Обработка читается при создании транспортного средства, поэтому:

  1. Перезагрузите ресурс (restart mycar), или весь сервер, если перезагрузка ресурса не применяется.
  2. Удалите машину и спавните новую. Уже спавненная машина сохраняет свои старые значения.
  3. Ездите по одному и тому же тестовому маршруту каждый раз: прямая дорога для максимальной скорости и ускорения, длинный поворот для сцепления, внезапная остановка для тормозов.
  4. Меняйте одно значение, тестируйте, записывайте, что меняется.

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

Меняйте обработку во время выполнения

Для значения, которое зависит от ситуации, такое как nitro boost, машина работы или повреждённый двигатель, вы можете изменить обработку машины из клиентского скрипта:

lua
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)

if vehicle ~= 0 then
    local mass = GetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fMass')
    SetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fMass', mass + 200.0)
    SetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fInitialDriveForce', 0.35)
end

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

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

Замена машины базовой игры

Запись обработки с именем машины базовой игры, в ресурсе, меняет эту машину для каждого игрока и каждого спавна, включая трафик. Это может быть то, что вы хотите для пака «реалистичной обработки», но протестируйте это, так как все машины той же модели меняются одновременно.

Распространённые проблемы

  • Никаких изменений вообще. Проверьте строку HANDLING_FILE, handlingName и handlingId, и спавните новую машину.
  • Ресурс не запускается. Путь в files неправильный, или XML имеет ошибку, такую как отсутствующий закрывающий тег. См. не мог запустить ресурс.
  • Машина опрокидывается или крутится. fInitialDriveForce или fTractionCurveMax слишком высокие для массы. Вернитесь на шаг.
  • Другая машина изменилась. Два файла используют одно и то же handlingName. Переименуйте ваше и совпадающий handlingId.

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

Проблема Решение
Редактирования не имеют эффекта Добавьте data_file 'HANDLING_FILE' и переспавните машину
Машина использует обработку по умолчанию Сделайте handlingName равным handlingId в vehicles.meta
Требуется больше ускорения Поднимите fInitialDriveForce в маленьких шагах
Требуется более высокая максимальная скорость Поднимите fInitialDriveMaxFlatVel
Слишком мало сцепления Поднимите fTractionCurveMax; слишком много выглядит неестественно
Временный эффект SetVehicleHandlingFloat на клиенте, один раз, и восстановите это позже

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

Почему моё изменение handling.meta ничего не делает?

Обычно файл не загружен с data_file 'HANDLING_FILE', или handlingName не совпадает с handlingId в vehicles.meta. Также переспавните машину: транспортное средство, которое уже существует, сохраняет свои старые значения.

Как мне сделать машину быстрее?

Поднимите fInitialDriveMaxFlatVel для максимальной скорости и fInitialDriveForce для ускорения, в маленьких шагах. Большие прыжки делают машину невозможной для вождения или нереалистичной.

Могу ли я изменить обработку в скрипте пока сервер работает?

Да, с SetVehicleHandlingFloat на клиенте. Это меняет один автомобиль только и теряется при удалении транспортного средства, поэтому это не заменяет файл.

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

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

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