- 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>
78 lines
2.5 KiB
Lua
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)
|