aether-framework/resources/[aether]/aether-garage/shared/garagen.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

94 lines
3.8 KiB
Lua

-- =====================================================================
-- Aether Garage — Garagen, Standorte und Einstellungen
-- =====================================================================
Garage = Garage or {}
Garage.INTERAKTION_WEITE = 3.0 -- Reichweite zum Oeffnen (Meter)
Garage.EINPARK_WEITE = 12.0 -- Wie nah das Fahrzeug an der Garage sein muss
Garage.AUSLOESE_GEBUEHR = 500 -- Kosten fuer beschlagnahmte Fahrzeuge
-- Bekommt ein neuer Charakter ein Startfahrzeug?
Garage.STARTFAHRZEUG = { modell = 'blista', garage = 'legion' }
-- ---------------------------------------------------------------------
-- Garagen
-- typ 'oeffentlich' = fuer alle zugaenglich
-- typ 'haus' = nur mit Zugang (spaeter ueber aether-immobilien)
-- position = Ort der Bedienung, spawn = wo das Fahrzeug erscheint
-- ---------------------------------------------------------------------
Garage.Garagen = {
legion = {
name = 'Legion Square', typ = 'oeffentlich',
position = vector3(215.9, -810.0, 30.7),
spawn = vector4(228.6, -800.5, 30.6, 158.0),
},
sandy = {
name = 'Sandy Shores', typ = 'oeffentlich',
position = vector3(1735.4, 3710.6, 34.1),
spawn = vector4(1729.6, 3716.3, 34.1, 20.0),
},
delperro = {
name = 'Del Perro', typ = 'oeffentlich',
position = vector3(-1160.0, -736.5, 20.4),
spawn = vector4(-1170.5, -737.7, 19.9, 108.0),
},
paleto = {
name = 'Paleto Bay', typ = 'oeffentlich',
position = vector3(105.9, 6613.9, 32.0),
spawn = vector4(112.6, 6608.9, 31.8, 45.0),
},
-- Haus-Garagen: sichtbar nur mit Zugang
villa = {
name = 'Villa Vinewood Hills', typ = 'haus',
position = vector3(-174.3, 502.1, 137.4),
spawn = vector4(-165.9, 496.3, 137.1, 190.0),
},
}
-- ---------------------------------------------------------------------
-- Fahrzeugklassen fuer die Anzeige
-- Ordnet dem GTA-Klassenindex einen Namen und einen Vorschautyp zu.
-- ---------------------------------------------------------------------
Garage.Klassen = {
[0] = { name = 'Kleinwagen', typ = 'compact' },
[1] = { name = 'Limousine', typ = 'sedan' },
[2] = { name = 'SUV', typ = 'suv' },
[3] = { name = 'Coupé', typ = 'sedan' },
[4] = { name = 'Muscle', typ = 'muscle' },
[5] = { name = 'Sportwagen', typ = 'sport' },
[6] = { name = 'Sportwagen', typ = 'sport' },
[7] = { name = 'Supersport', typ = 'sport' },
[8] = { name = 'Motorrad', typ = 'bike' },
[9] = { name = 'Geländewagen', typ = 'suv' },
[12]= { name = 'Transporter', typ = 'pickup' },
[13]= { name = 'Fahrrad', typ = 'bike' },
[14]= { name = 'Boot', typ = 'sedan' },
[15]= { name = 'Helikopter', typ = 'sedan' },
[16]= { name = 'Flugzeug', typ = 'sedan' },
[17]= { name = 'Service', typ = 'pickup' },
[18]= { name = 'Einsatz', typ = 'suv' },
[19]= { name = 'Militär', typ = 'suv' },
[20]= { name = 'LKW', typ = 'pickup' },
}
--- Liefert Klassenname und Vorschautyp zu einem GTA-Klassenindex
--- @param index number Klassenindex
--- @return string Name, string Vorschautyp
function Garage.Klasse(index)
local eintrag = Garage.Klassen[index or -1] or { name = 'Fahrzeug', typ = 'sedan' }
return eintrag.name, eintrag.typ
end
--- Erzeugt ein Kennzeichen im San-Andreas-Format (8 Zeichen)
--- @return string
function Garage.ErzeugeKennzeichen()
local buchstaben = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local kennzeichen = ('%02d'):format(math.random(0, 99))
for _ = 1, 3 do
local pos = math.random(#buchstaben)
kennzeichen = kennzeichen .. buchstaben:sub(pos, pos)
end
return kennzeichen .. ('%03d'):format(math.random(0, 999))
end