aether-framework/resources/[aether]/aether-hud/client/fahrzeug.lua
Jerrit Fritzsche e4b82dd685 Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank
- aether-medical: Stationen/Belegung, Intensivstation, Blutbank, Fuhrpark,
  Nachrichten/Aushänge, Berichte und Textbausteine (server + NUI)
- aether-admin: vollständiges Server-Admin-Panel als echtes FiveM-Resource,
  an aether-core gekoppelt (Rechte über aether_users.admin_group), mit
  WebRTC-Live-Kameras (Bildschirmfreigabe) und separatem Media-Server (SFU)
- Prototypen admin/ vervollständigt
- SQL-Schema aether_admin.sql
- Docker-Compose mit MariaDB und idempotenter Auto-Migration (schema_migrations)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 18:55:32 +02:00

78 lines
2.5 KiB
Lua

-- =====================================================================
-- Aether HUD — Fahrzeugdaten und Sicherheitsgurt
-- Liefert Tempo, Gang, Tank und Motorzustand fuer die Tachoanzeige.
-- Der Gurt ist eine reine Skriptmechanik (GTA kennt ihn nicht).
-- =====================================================================
Fahrzeug = {}
-- Ist der Gurt gerade angelegt?
local gurtAngelegt = false
-- Merkt sich, ob der Spieler im letzten Durchlauf im Fahrzeug sass
local warImFahrzeug = false
-- Taste zum Anlegen/Loesen des Gurts (B)
local TASTE_GURT = 29
--- Liefert den aktuellen Gurtzustand
--- @return boolean
function Fahrzeug.HatGurt()
return gurtAngelegt
end
--- Sammelt alle Anzeigewerte des Fahrzeugs, in dem der Spieler sitzt
--- @return table|nil Werte oder nil, wenn der Spieler nicht faehrt
function Fahrzeug.HoleDaten()
local ped = PlayerPedId()
if not IsPedInAnyVehicle(ped, false) then return nil end
local fahrzeug = GetVehiclePedIsIn(ped, false)
if not fahrzeug or fahrzeug == 0 then return nil end
-- Geschwindigkeit von m/s in km/h umrechnen
local tempo = GetEntitySpeed(fahrzeug) * 3.6
return {
imFahrzeug = true,
tempo = math.floor(tempo + 0.5),
tank = math.floor(GetVehicleFuelLevel(fahrzeug) + 0.5),
motor = GetIsVehicleEngineRunning(fahrzeug),
gurt = gurtAngelegt,
}
end
-- ---------------------------------------------------------------------
-- Gurt-Steuerung
-- ---------------------------------------------------------------------
CreateThread(function()
while true do
local ped = PlayerPedId()
local imFahrzeug = IsPedInAnyVehicle(ped, false)
if imFahrzeug then
Wait(0)
-- Gurt per Taste umschalten (nur als Fahrer oder Beifahrer sinnvoll)
if IsControlJustReleased(0, TASTE_GURT) then
gurtAngelegt = not gurtAngelegt
PlaySoundFrontend(-1, 'SELECT', 'HUD_FRONTEND_DEFAULT_SOUNDSET', true)
end
-- Mit Gurt: Herausschleudern bei Unfaellen verhindern
local fahrzeug = GetVehiclePedIsIn(ped, false)
if fahrzeug ~= 0 then
SetPedConfigFlag(ped, 32, not gurtAngelegt) -- 32 = kann durch Scheibe fliegen
end
warImFahrzeug = true
else
-- Beim Aussteigen den Gurt automatisch loesen
if warImFahrzeug then
gurtAngelegt = false
warImFahrzeug = false
end
Wait(500)
end
end
end)