- 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>
49 lines
1.7 KiB
Lua
49 lines
1.7 KiB
Lua
-- =====================================================================
|
|
-- aether-admin / Modul: Einstellungen
|
|
--
|
|
-- Server-Grundeinstellungen, persistiert in aether_admin_settings.
|
|
-- Slots sind eine reine Anzeige (kommen aus der Serverkonfiguration).
|
|
-- =====================================================================
|
|
|
|
Admin = Admin or {}
|
|
|
|
local SCHALTER = { 'pvp', 'whitelist', 'voice', 'economy' }
|
|
|
|
Admin.Kern.Registriere('settings', 'laden', function(handelnder, daten)
|
|
local schalter = {}
|
|
for _, k in ipairs(SCHALTER) do schalter[k] = Admin.DB.EinstellungAn(k, true) end
|
|
|
|
return {
|
|
servername = GetConvar('sv_hostname', 'Aether RP'),
|
|
slots = GetConvarInt('sv_maxclients', 48),
|
|
neustartStunden = Admin.DB.EinstellungZahl('neustart_stunden', 4),
|
|
schalter = schalter,
|
|
rechte = Admin.Kern.RechteAbbild(handelnder.quelle),
|
|
}
|
|
end)
|
|
|
|
Admin.Kern.Registriere('settings', 'speichern', function(handelnder, daten)
|
|
if daten.servername then
|
|
local name = tostring(daten.servername):sub(1, 96)
|
|
Admin.DB.SetzeEinstellung('servername', name)
|
|
-- sv_hostname zur Laufzeit setzen (greift für die Serverliste)
|
|
ExecuteCommand('sets sv_hostname "' .. name:gsub('"', '') .. '"')
|
|
end
|
|
|
|
if daten.neustartStunden ~= nil then
|
|
Admin.DB.SetzeEinstellung('neustart_stunden',
|
|
math.max(0, math.floor(tonumber(daten.neustartStunden) or 0)))
|
|
end
|
|
|
|
if type(daten.schalter) == 'table' then
|
|
for _, k in ipairs(SCHALTER) do
|
|
if daten.schalter[k] ~= nil then
|
|
Admin.DB.SetzeEinstellung(k, daten.schalter[k] and '1' or '0')
|
|
end
|
|
end
|
|
end
|
|
|
|
Admin.Log.Schreibe(handelnder, 'Einstellungen gespeichert')
|
|
return { ok = true }
|
|
end)
|