-- ===================================================================== -- Aether Core — Hilfsfunktionen (Client und Server) -- Global als `Aether` verfuegbar. -- ===================================================================== Aether = Aether or {} -- --------------------------------------------------------------------- -- Konsolenausgaben mit einheitlichem Praefix -- --------------------------------------------------------------------- --- Gibt eine Debug-Meldung aus (nur wenn Config.Debug aktiv ist) --- @param nachricht string Auszugebender Text function Aether.Debug(nachricht) if not Config.Debug then return end print(('^5[Aether]^7 %s'):format(nachricht)) end --- Gibt eine Informationsmeldung aus --- @param nachricht string Auszugebender Text function Aether.Info(nachricht) print(('^2[Aether]^7 %s'):format(nachricht)) end --- Gibt eine Fehlermeldung aus --- @param nachricht string Auszugebender Text function Aether.Fehler(nachricht) print(('^1[Aether FEHLER]^7 %s'):format(nachricht)) end -- --------------------------------------------------------------------- -- Allgemeine Helfer -- --------------------------------------------------------------------- --- Begrenzt einen Wert auf einen Bereich --- @param wert number Eingabewert --- @param minimum number Untere Grenze --- @param maximum number Obere Grenze --- @return number function Aether.Begrenze(wert, minimum, maximum) if wert < minimum then return minimum end if wert > maximum then return maximum end return wert end --- Rundet eine Zahl auf eine bestimmte Anzahl Nachkommastellen --- @param wert number Eingabewert --- @param stellen number|nil Nachkommastellen (Standard 0) --- @return number function Aether.Runde(wert, stellen) local faktor = 10 ^ (stellen or 0) return math.floor(wert * faktor + 0.5) / faktor end --- Erzeugt eine zufaellige Zeichenkette nach einem Muster --- A = Grossbuchstabe, 1 = Ziffer, alles andere bleibt stehen --- @param muster string z. B. 'AA-1111' --- @return string function Aether.ZufallsText(muster) local buchstaben = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' return (muster:gsub('.', function(zeichen) if zeichen == 'A' then local pos = math.random(#buchstaben) return buchstaben:sub(pos, pos) elseif zeichen == '1' then return tostring(math.random(0, 9)) end return zeichen end)) end --- Erzeugt eine IBAN-artige Kontonummer fuer das Bank-Modul --- @return string function Aether.ErzeugeIban() return Aether.ZufallsText('DE11 1111 1111 11') end --- Formatiert einen Betrag als Euro-Text --- @param betrag number Betrag --- @return string function Aether.Euro(betrag) local text = tostring(math.floor(betrag or 0)) -- Tausenderpunkte von hinten einfuegen local formatiert = text:reverse():gsub('(%d%d%d)', '%1.'):reverse() formatiert = formatiert:gsub('^%.', '') return formatiert .. ' €' end --- Prueft, ob eine Rechtegruppe mindestens die geforderte Stufe hat --- @param gruppe string Gruppe des Spielers --- @param benoetigt string Geforderte Gruppe --- @return boolean function Aether.HatRecht(gruppe, benoetigt) local eigene = Config.AdminGruppen[gruppe or 'user'] or 0 local noetig = Config.AdminGruppen[benoetigt or 'user'] or 0 return eigene >= noetig end