FiveM Fahrzeugschaden: Motor-Gesundheit, Karosserie-Gesundheit und Handling-Tweaks

Wie Fahrzeugschaden in FiveM funktioniert: die Motor-, Karosserie- und Benzintank-Gesundheitsbereiche, GetVehicleEngineHealth, Handling Schadensvervielfältiger und wie realistische Schadensscripts funktionieren.

Typische Symptome:

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

Schaden in GTA ist ein Handvoll Gesundheitswerte pro Fahrzeug und ein paar Handling-Zahlen, die steuern, wie schnell sie fallen. Dieser Artikel gibt die Bereiche, die Natives, die Handling-Werte und die Idee hinter realistischen Schadensscripts.

Die Gesundheitswerte

Ein Fahrzeug hat mehrere Gesundheitswerte, die du auf dem Client lesen und schreiben kannst:

Wert Bereich Lesen mit
Motor-Gesundheit -4000 bis 1000 GetVehicleEngineHealth
Karosserie-Gesundheit 0 bis 1000 GetVehicleBodyHealth
Benzintank-Gesundheit 0 bis 1000 GetVehiclePetrolTankHealth

Ein neues Auto ist auf allen drei bei 1000.0. Der Motor ist der ungewöhnliche, weil er unter Null geht:

  • Bei 1000, der Motor ist gesund.
  • Wenn der Wert fällt, qualmt das Auto und verliert Kraft.
  • Bei 0 und darunter, der Motor ist tot und das Auto kann Feuer fangen. Der Bereich geht hinunter bis -4000.
lua
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)

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

Der Benzintank ist wichtig für Brände. Wenn die Benzintank-Gesundheit fällt, kann er auslaufen, und ein auslaufender Tank kann Feuer fangen. Der Motor und der Tank sind getrennt, daher kann ein Motor bei 1000 immer noch brennen, wenn der Tank getroffen wird.

Die Werte setzen

Um ein Fahrzeug zu reparieren oder zu beschädigen, schreibe die Werte zurück:

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

Um ein Fahrzeug vollständig zu reparieren, einschließlich der sichtbaren Verformung und der Verschmutzung, gibt es separate Natives:

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

SetVehicleFixed setzt die Gesundheit zurück und repariert das Modell. SetVehicleDeformationFixed entfernt Beulen. Verwende beide für eine vollständige Reparatur.

Um den Schaden eines eigenen Autos zu speichern, speichere die Werte mit den anderen Eigenschaften, siehe Fahrzeug-Eigenschaften. Wenn du das nicht tust, kommt jedes Auto vollständig repariert aus der Garage.

Tipp: Ein Fahrzeug, das sofort abwürgt und nicht wieder startet, hat oft eine Motor-Gesundheit unter 0. Setze es zurück auf einen Wert wie 400.0, bringt es zurück ohne eine vollständige Reparatur, was viele Mechaniker-Scripts tun. Siehe auch den Mechanikerberuf.

Handling-Vervielfältiger

Wie schnell die Werte fallen, wird durch das Handling des Fahrzeugs entschieden. Drei davon sind die üblichen Knöpfe:

Handling-Wert Effekt
fCollisionDamageMult Wie viel eine Kollision Karosserie und Motor beschädigt
fDeformationDamageMult Wie viel eine Kollision das Modell verformt, die sichtbaren Beulen
fEngineDamageMult Wie viel Schaden der Motor erleidet

Ein Wert von 1.0 ist neutral, niedriger bedeutet weniger Schaden und höher bedeutet mehr. In einem handling.meta sehen sie so aus:

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

Kleine Änderungen gehen lange, also bewege in Zehntel. Für wo die Datei lebt und wie man die Änderung anwendet, siehe Bearbeite Fahrzeug-Handling. Die gleichen Werte können zur Laufzeit mit SetVehicleHandlingFloat geändert werden, was ein Fahrzeug beeinflusst:

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

Laufzeit-Änderungen gelten für dieses Fahrzeug, während es existiert. Wende sie erneut an, jedes Mal wenn es spawnt.

Realistische Schadensscripts

Schadensscripts ändern nicht das Triebwerk des Spiels, sie verwenden die Werte oben. Das Konzept ist einfach:

  1. Eine Schleife liest die Motor- und Karosserie-Gesundheit des Fahrzeugs, das der Spieler fährt.
  2. Wenn die Werte unter eingestellte Schwellenwerte fallen, wendet das Script Effekte an: weniger Kraft mit SetVehicleEnginePowerMultiplier, einen abwürgenden Motor, ein ziehendes Lenkrad, eine Warnung auf dem Bildschirm.
  3. Es hält den Motor davon ab, völlig zu sterben, zum Beispiel, indem es ihn auf einen kleinen positiven Wert hält, damit das Auto hinkt statt zu brennen.
  4. Ein Mechaniker oder ein Reparatur-Kit setzt die Werte zurück.

Die Schleife muss nicht jeden Frame laufen. Eine Überprüfung alle paar hundert Millisekunden reicht und ist billiger, siehe wie Wait funktioniert:

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)

Dies hält den Motor davon ab zu brennen und schaltet ihn statt dessen aus. Behandle es als Ausgangspunkt: Ein echtes Script addiert einen Weg, ihn neu zu starten, daher ist der Spieler nicht stecken.

Explosionen verhindern

Wenn du nur weniger Todesfälle durch Feuer möchtest, sind die einfachsten sicheren Optionen die oben: ein niedrigerer Schadensvervielfältiger und die Motor- und Benzintank-Gesundheit davon zu halten, auf Null zu fallen.

Es gibt auch Natives, die Teile des Feuer- und Explosionssystems für ein Fahrzeug deaktivieren, wie diejenigen, die den Motor verhindern zu verschlechtern. Verwende sie auf einem spezifischen Fahrzeug, wie ein Job-Fahrzeug, und lese die Dokumentation der Funktion, bevor du dich darauf verlässt. Wende sie nicht auf jedes Fahrzeug auf dem Server an:

  • Scripts wie eine Autobombe oder ein Raub hängen von Fahrzeugen ab, die explodieren können.
  • Spieler verwenden Schaden in Roleplay: eine Verfolgung, eine Crash-Szene, ein Police Stop.
  • Ein Fahrzeug, das nicht zerstört werden kann, ist ein Griefing-Tool und ein Weg, Konsequenzen zu vermeiden.

Entscheide pro Use Case und bevorzuge die Vervielfältiger.

Schaden nach Neustart oder Respawn

Wenn ein Auto repariert wird, jedes Mal wenn es spawnt, ist die Ursache eine dieser:

  • Die Garage speichert Motor- und Karosserie-Gesundheit nicht, daher startete jeder Spawn bei 1000. Speichere die Werte beim Speichern und wende sie beim Spawn an.
  • Ein Script ruft SetVehicleFixed bei jedem Spawn auf.
  • Das Auto ist eine frische Entität und seine Gesundheit startet immer voll. Nur deine gespeicherten Daten tragen Schaden über.

Checkliste

Symptom Behebung
Brauche die Motor-Gesundheit GetVehicleEngineHealth, Bereich -4000 bis 1000
Auto stirbt bei dem kleinsten Stoß Senke fCollisionDamageMult und fEngineDamageMult im Handling
Beulen zu sichtbar Senke fDeformationDamageMult
Auto brennt nach kleinem Treffer Halte die Benzintank-Gesundheit oben oder begrenze den Motor-Tropfen
Abgewürgtes Auto startet nicht neu Setze die Motor-Gesundheit über 0
Reparatur hinterlässt Beulen Addiere SetVehicleDeformationFixed nach SetVehicleFixed
Schaden verloren nach Speichern Speichere Motor- und Karosserie-Gesundheit mit den anderen Eigenschaften

Kurze Antworten

Was ist der Bereich der Fahrzeugmotor-Gesundheit?

Von -4000 bis 1000. Ein gesunder Motor ist bei 1000. Unter 0 ist der Motor tot und das Auto kann brennen.

Wie mache ich, dass Autos weniger Schaden erleiden?

Senke die Schadensvervielfältiger im Handling des Fahrzeugs, wie fCollisionDamageMult und fDeformationDamageMult, oder halte die Gesundheitswerte von einem Script oben.

Kann ich Fahrzeuge daran hindern zu explodieren?

Du kannst es reduzieren, indem du die Gesundheitswerte oben hältst oder das Handling änderst, aber sei vorsichtig: eine pauschale Einstellung entfernt einen Teil des Spiels, den andere Scripts, wie ein Raub oder eine Autobombe, brauchen können.

Scripts ohne dieses Problem

Advanced BoostingFahrzeug-Boosting per Tablet: Aufträge von Klasse D bis S+, Crews und eine Live-Warteschlange.Script ansehen →Car BombPlatziere, finde und entschärfe Autobomben — mit Zünder-Handy und C4-Minispiel.Script ansehen →Chameleon Paints82 schillernde Chamäleon-Lacke in einem Menü, per Klick aufgetragen.Script ansehen →

Weiterlesen