- 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>
66 lines
2.5 KiB
Lua
66 lines
2.5 KiB
Lua
-- =====================================================================
|
|
-- aether-admin / Modul: Wirtschaft
|
|
--
|
|
-- Geldmenge, Staatskasse und Steuer. Die Geldmenge wird live aus allen
|
|
-- Charakteren summiert — keine Schätzung.
|
|
-- =====================================================================
|
|
|
|
Admin = Admin or {}
|
|
|
|
Admin.Kern.Registriere('wirtschaft', 'laden', function(handelnder, daten)
|
|
local summe = MySQL.query.await([[
|
|
SELECT COALESCE(SUM(cash), 0) AS bargeld,
|
|
COALESCE(SUM(bank), 0) AS konto,
|
|
COUNT(*) AS anzahl
|
|
FROM aether_characters WHERE deleted = 0
|
|
]])[1] or { bargeld = 0, konto = 0, anzahl = 0 }
|
|
|
|
local umlauf = tonumber(summe.bargeld) + tonumber(summe.konto)
|
|
local online = #(GetPlayers() or {})
|
|
|
|
return {
|
|
umlauf = umlauf,
|
|
staatskasse = Admin.DB.EinstellungZahl('staatskasse', 0),
|
|
steuer = Admin.DB.EinstellungZahl('steuersatz', 8),
|
|
charaktere = tonumber(summe.anzahl),
|
|
online = online,
|
|
rechte = Admin.Kern.RechteAbbild(handelnder.quelle),
|
|
}
|
|
end)
|
|
|
|
Admin.Kern.Registriere('wirtschaft', 'geldAlle', function(handelnder, daten)
|
|
local betrag = math.floor(tonumber(daten.betrag) or 0)
|
|
if betrag == 0 then return nil, 'Bitte einen Betrag angeben.' end
|
|
|
|
local anzahl = 0
|
|
for _, sid in ipairs(GetPlayers() or {}) do
|
|
local s = tonumber(sid)
|
|
if exports['aether-core']:HoleSpielerInfo(s) then
|
|
if betrag > 0 then
|
|
exports['aether-core']:FuegeGeldHinzu(s, 'bank', betrag, 'Admin-Auszahlung')
|
|
else
|
|
exports['aether-core']:EntferneGeld(s, 'bank', -betrag, 'Admin-Abzug')
|
|
end
|
|
anzahl = anzahl + 1
|
|
end
|
|
end
|
|
|
|
Admin.Log.Schreibe(handelnder, 'Geld an alle', anzahl .. ' Spieler',
|
|
(betrag > 0 and '+' or '') .. betrag)
|
|
return { ok = true, anzahl = anzahl }
|
|
end)
|
|
|
|
Admin.Kern.Registriere('wirtschaft', 'kasse', function(handelnder, daten)
|
|
local wert = math.floor(tonumber(daten.wert) or 0)
|
|
Admin.DB.SetzeEinstellung('staatskasse', wert)
|
|
Admin.Log.Schreibe(handelnder, 'Staatskasse gesetzt', nil, tostring(wert))
|
|
return { ok = true }
|
|
end)
|
|
|
|
Admin.Kern.Registriere('wirtschaft', 'steuer', function(handelnder, daten)
|
|
local wert = math.max(0, math.min(100, math.floor(tonumber(daten.wert) or 0)))
|
|
Admin.DB.SetzeEinstellung('steuersatz', wert)
|
|
Admin.Log.Schreibe(handelnder, 'Steuersatz gesetzt', nil, wert .. '%')
|
|
return { ok = true }
|
|
end)
|