Sehr geehrtes Dev-Team,
hiermit möchte ich einen Vorschlag für eine neue Funktion im FiveM-Server von IDV einreichen. Die Idee besteht darin, ein Skript zu implementieren, das die Tachonadel eines Fahrzeugs bei einem schweren Unfall einfriert und die letzte Geschwindigkeit anzeigt, bis das Fahrzeug repariert wird.
Funktionsweise des Skripts:
- Erkennt Unfälle ab einer bestimmten Geschwindigkeit (z. B. 50 km/h).
- Friert die Geschwindigkeit auf dem Tacho ein, wenn ein Unfall erkannt wird.
- Zeigt die eingefrorene Geschwindigkeit auf dem Bildschirm an.
- Die Anzeige wird erst nach einer Fahrzeugreparatur zurückgesetzt.
Vorteile für den Server:
- Erhöhte Immersion für Spieler, insbesondere für Rettungsdienste und Polizei.
- Verbesserte Unfallauswertung und realistischere Nachverfolgung der Geschwindigkeit.
- Zusätzliche spielerische Tiefe für Mechaniker, da Fahrzeuge nach Unfällen repariert werden müssen.
Das Skript ist als eigenständiges, leicht anpassbares System konzipiert und könnte in bestehende Frameworks integriert werden. Falls gewünscht, kann ich einen Beispielcode bereitstellen oder Anpassungen vorschlagen.
z.B.
local speedFrozen = {}
Citizen.CreateThread(function()
while true do
Citizen.Wait(100)
local playerPed = PlayerPedId()
if IsPedInAnyVehicle(playerPed, false) then
local vehicle = GetVehiclePedIsIn(playerPed, false)
local speed = GetEntitySpeed(vehicle) * 3.6 -- Umrechnung in km/h
if not speedFrozen[vehicle] and HasEntityCollidedWithAnything(vehicle) then
if speed > 50 then -- Unfall ab 50 km/h als "schwer" definieren
speedFrozen[vehicle] = speed
end
end
end
end
end)
RegisterCommand("repair", function(source)
local playerPed = PlayerPedId()
if IsPedInAnyVehicle(playerPed, false) then
local vehicle = GetVehiclePedIsIn(playerPed, false)
SetVehicleFixed(vehicle)
SetVehicleDirtLevel(vehicle, 0.0)
speedFrozen[vehicle] = nil -- Reset Tacho
end
end, false)
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = PlayerPedId()
if IsPedInAnyVehicle(playerPed, false) then
local vehicle = GetVehiclePedIsIn(playerPed, false)
if speedFrozen[vehicle] then
DrawTextOnScreen("Unfallgeschwindigkeit: " .. math.floor(speedFrozen[vehicle]) .. " km/h", 0.9, 0.1)
end
end
end
end)
function DrawTextOnScreen(text, x, y)
SetTextFont(4)
SetTextScale(0.5, 0.5)
SetTextColour(255, 0, 0, 255)
SetTextOutline()
SetTextEntry("STRING")
AddTextComponentString(text)
DrawText(x, y)
end