Edytuj handling.meta w FiveM: prędkość, przyczepność, hamulce i HANDLING_FILE
Edytuj handling.meta samochodu na FiveM: pola kluczowe (fInitialDriveForce, fBrakeForce, fTractionCurveMax, fMass), HANDLING_FILE, dopasowanie handlingName, testowanie i runtime.
Chcesz, aby samochód przyspieszał szybciej, miał lepszą przyczepność lub hamował mocniej, a wartości są w handling.meta. Ten poradnik pokazuje, co robią pola kluczowe, jak plik jest ładowany, jak jest powiązany z pojazdem i jak testować zmiany bez zgadywania.
Jak handling jest powiązany z samochodem
Samochód ma wpis handling, a samochód wskazuje na niego po nazwie:
<!-- vehicles.meta -->
<Item>
<modelName>mycar</modelName>
<handlingId>MYCAR</handlingId>
...
</Item><!-- handling.meta -->
<Item type="CHandlingData">
<handlingName>MYCAR</handlingName>
...
</Item>handlingName w handling.meta musi być taki sam jak handlingId w vehicles.meta. Jeśli się różnią, gra nie znajduje wpisu i samochód używa domyślnego. Jeśli dwie paczki używają tego samego handlingName, jedna z nich wygrywa i inny samochód ma źle handling, więc trzymaj nazwy unikalne.
Załaduj plik
Zasób musi zadeklarować plik w fxmanifest.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'Bez linii HANDLING_FILE, plik nie jest używany i twoje edycje nic nie robią. Pełny zestaw plików dla samochodu addon jest w how to add addon cars.
Pola kluczowe
Plik handling ma wiele wartości. Oto te, które będziesz zmieniać najczęściej:
<fMass value="1500.000000" />
<fInitialDriveForce value="0.320000" />
<fInitialDriveMaxFlatVel value="160.000000" />
<fBrakeForce value="0.800000" />
<fTractionCurveMax value="2.400000" />fMass: waga samochodu w kilogramach. Ciężki samochód jest trudniejszy do przesunięcia i zatrzymania, i wygrywa kolizje z lżejszymi samochodami.fInitialDriveForce: przyspieszenie. Wyższa wartość daje mocniejszy push z linii. Samochody w grze podstawowej zwykle siedzą dobrze poniżej 1.0, więc zmiana kilku setnych jest już widoczna.fInitialDriveMaxFlatVel: maksymalna prędkość, którą silnik może osiągnąć na płaskim terenie, w jednostce bliskiej km/h. Prędkość pokazana w grze nie pasuje dokładnie, ponieważ opór i przełożenie też grają rolę.fBrakeForce: siła hamowania. Podnieś to dla krótszych odległości hamowania; zbyt wysoko sprawia, że samochód się blokuje lub odwraca nos w dół.fTractionCurveMax: przyczepność opon w zakręcie. Wyższa oznacza większą przyczepność, aż samochód czuje się przyklejony do drogi.
Inne, które możesz spotkać, to fInitialDragCoeff (opór powietrza), fTractionCurveMin (przyczepność, gdy samochód się ślizga), fSteeringLock i fSuspensionForce. Zmieniaj jedną rzecz na raz, aby wiedzieć co spowodowało wynik.
Wskazówka: skopiuj oryginalny plik, zanim zaczniesz, i zmieniaj wartości małymi kroczkami, około 10 do 20 procent. Kilka dużych zmian naraz powoduje, że samochód jest trudny do zrozumienia i trudny do cofnięcia.
Testuj zmiany
Handling jest czytany, gdy pojazd jest tworzony, więc:
- Zrestartuj zasób (
restart mycar), lub cały serwer, jeśli restart zasobu nie wydaje się zastosować. - Usuń samochód i spawniaj nowego. Już spawniany samochód zachowuje stare wartości.
- Jeżdź tą samą trasą testową każdy raz: prosta droga dla maksymalnej prędkości i przyspieszenia, długi zakręt dla przyczepności, nagłe zatrzymanie dla hamulców.
- Zmień jedną wartość, testuj, napisz co się zmieniło.
Jeśli samochód wciąż zachowuje się jak przedtem, pracuj przez przyczyny: linia data_file, dopasowanie handlingName i czy inny zasób też definiuje tę samą nazwę handling.
Zmień handling w runtime
Dla wartości, która zależy od sytuacji, takie jak nitro boost, samochód pracy lub uszkodzony silnik, możesz zmienić handling pojazdu ze skryptu klienta:
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)
endSetVehicleHandlingFloat zmienia wartość dla tego jednego pojazdu, dopóki istnieje. Nie dotyka pliku, innych samochodów tego samego modelu, lub następnego samochodu, który spawniasz. To prawidłowe narzędzie dla efektów tymczasowych, i złe dla tuningu trwałego: włóż te do handling.meta, aby każdy samochód modelu je miał.
Ostrzeżenie: nie uruchamiaj zmiany w pętli każdą klatkę. Ustaw ją raz, gdy sytuacja się rozpoczyna, i ustaw oryginalną wartość z powrotem, gdy się kończy.
Zastępowanie samochodu gry podstawowej
Wpis handling z nazwą samochodu gry podstawowej, w zasobie, zmienia ten samochód dla każdego gracza i każdego spawnu, włącznie z ruchem. To może być to, czego chcesz dla paczki 'realistic handling', ale testuj, ponieważ wszystkie samochody tego modelu zmieniają się naraz.
Częste problemy
- Brak zmiany w ogóle. Sprawdzić linię
HANDLING_FILE,handlingNameihandlingId, i spawniaj nowy samochód. - Zasób się nie uruchamia. Ścieżka w
filesjest zła, lub XML ma błąd, takie jak brakujący tag zamykający. Zobacz couldn't start resource. - Samochód się przewraca lub kręci.
fInitialDriveForcelubfTractionCurveMaxjest zbyt wysoki dla masy. Wróć o krok. - Inny samochód się zmienił. Dwa pliki używają tego samego
handlingName. Przemianuj swoje i dopasowanehandlingId.
Lista kontrolna
| Symptom | Naprawa |
|---|---|
| Edycje nie mają efektu | Dodaj data_file 'HANDLING_FILE' i spawniaj samochód ponownie |
| Samochód używa domyślnego handling | Uczyń handlingName równy handlingId w vehicles.meta |
| Potrzebne więcej przyspieszenia | Podnieś fInitialDriveForce małymi kroczkami |
| Potrzebna wyższa maksymalna prędkość | Podnieś fInitialDriveMaxFlatVel |
| Zbyt mała przyczepność | Podnieś fTractionCurveMax; zbyt wiele wygląda na nienaturalne |
| Efekt tymczasowy | SetVehicleHandlingFloat na kliencie, raz, i przywróć to później |
Szybkie odpowiedzi
Dlaczego moja zmiana handling.meta nic nie robi?
Zwykle plik nie jest załadowany z data_file 'HANDLING_FILE', lub handlingName nie pasuje do handlingId w vehicles.meta. Też spawniaj samochód ponownie: pojazd, który już istnieje, zachowuje swoje stare wartości.
Jak sprawić, aby samochód był szybszy?
Podnieś fInitialDriveMaxFlatVel dla maksymalnej prędkości i fInitialDriveForce dla przyspieszenia, małymi kroczkami. Duże skoki powodują, że samochód jest nie do prowadzenia lub nierealistyczny.
Czy mogę zmienić handling w skrypcie, podczas gdy serwer działa?
Tak, z SetVehicleHandlingFloat na kliencie. Zmienia jeden pojazd tylko i zostaje utracony, gdy pojazd jest usunięty, więc nie zastępuje pliku.
Skrypty bez tego problemu
Advanced BoostingBoosting pojazdów z tabletu: kontrakty od klasy D do S+, ekipy i kolejka na żywo.Zobacz skrypt →
Chameleon Paints82 lakiery kameleon zmieniające kolor, w jednym menu — klik i gotowe.Zobacz skrypt →
Car BombPodkładaj, wykrywaj i rozbrajaj bomby w autach — z telefonem-detonatorem i minigrą C4.Zobacz skrypt →