Das Benachrichtigungs-Ghetto
Benachrichtigungen auf den meisten FiveM-Servern sehen immer noch aus wie das Standard-ESX von 2019. Ein einfacher farbiger Balken oben, vielleicht ein Icon, eine Zeile Text. Die Spieler haben sich darauf trainiert, sie zu ignorieren. Das ist ein riesiger verschwendeter Kanal, um wichtige Informationen zu kommunizieren.
So sehen moderne Benachrichtigungen aus
Agency-Notify liefert Toast-Benachrichtigungen, die sich sauber stapeln, Rich Content unterstützen (Icons, Bilder, mehrzeiligen Text, Action-Buttons) und klare Schweregrade mit unterschiedlichen visuellen Behandlungen haben. Success, Warning, Error, Info — jeder hat seine eigene Animation, Farbe und Typografie-Gewichtung.
Gruppierung, die Spam verhindert
Wenn drei ähnliche Benachrichtigungen in kurzer Folge feuern würden, fasst Agency-Notify sie zu einer gruppierten Benachrichtigung zusammen. Keine drei identischen "Du hast 500 $ erhalten"-Toasts mehr, die den Bildschirm blockieren. Das ist ein Verhalten, das Spieler von jeder modernen App erwarten, und es existiert endlich auch in FiveM.
Entwicklerfreundliche API
Ein Funktionsaufruf, um eine Benachrichtigung aus jedem Script abzufeuern: exports['agency-notify']:Show({title, body, icon, level, duration, actions}). Gibt eine ID zurück, mit der du die Benachrichtigung später aktualisieren oder verwerfen kannst. Das ist alles. Keine Framework-Kopplung, keine magischen Globals.
Aus gutem Grund standalone
Agency-Notify ist ein framework-unabhängiger Baustein. Deine QBCore-Scripts, ESX-Scripts und dein standalone Custom Code rufen alle dieselbe API auf. So hältst du die visuelle Sprache deines Servers über Dutzende von Scripts verschiedener Autoren hinweg konsistent.
Installation & Einrichtung
Agency-Notify läuft in unter zehn Minuten. Lade die Ressource aus deiner Tebex-Bibliothek herunter, ziehe den agency-notify-Ordner in das Ressourcenverzeichnis deines Servers und füge ensure agency-notify zu deiner server.cfg hinzu. Die Ressource hat keine Datenbankabhängigkeit – alle Benachrichtigungszustände werden clientseitig im Speicher verwaltet.
Nach dem Start kann jedes Script auf deinem Server sofort die Exports-API aufrufen. Keine Konfiguration nach der Installation nötig, die Standardwerte funktionieren sofort.
Konfigurationsoptionen
Öffne config.lua, um visuelle und Verhaltensstandards anzupassen:
- Position — Oben rechts (Standard), oben links, unten rechts oder unten links.
- Maximale sichtbare Benachrichtigungen — Wie viele Benachrichtigungen gestapelt werden, bevor ältere entfernt werden. Standard: 5.
- Standarddauer — Millisekunden bis zur automatischen Entlassung. Einzelne Benachrichtigungen können dies überschreiben.
- Animationsstil — Einblenden von rechts (Standard), Fade oder Skalierung.
- Gruppierfenster — Zeitfenster in Millisekunden, in dem identische Benachrichtigungen zusammengefasst werden.
- Sound aktiviert — Schalte den dezenten Benachrichtigungsklang pro Schweregrad ein oder aus.
Framework-Kompatibilität
Agency-Notify ist 100% eigenständig. Es hat keine Framework-Importe, keine QBCore-Abhängigkeit, keine ESX-Abhängigkeit. Das bedeutet:
- Es funktioniert auf jedem FiveM-Server unabhängig vom Basis-Framework.
- Ein späterer Framework-Wechsel bricht deine Benachrichtigungsaufrufe nicht.
- Jedes Script von jedem Autor kann Benachrichtigungen über dieselbe API senden, ohne zu wissen, welches Framework du verwendest.
Warum das für das Roleplay wichtig ist
Benachrichtigungen sind der primäre Feedback-Kanal zwischen Server-Systemen und Spielern. Wenn ein Drogenhandel abgeschlossen wird, wenn eine rivalisierende Gang das Territorium betritt, wenn ein Admin alle über ein Event informieren muss – all das läuft über Benachrichtigungen. Wenn dieser Kanal veraltet oder ignoriert wird, schlägt wichtige Serverkommunikation lautlos fehl.
Spieler, die ihrem Benachrichtigungssystem vertrauen, achten darauf. Das Gruppierungssystem spricht gezielt das Spam-Problem an: Wenn dein Server während eines Überfalls drei schnelle Benachrichtigungen auslöst, sehen Spieler eine gruppierte Nachricht statt drei konkurrierender Toasts.
Häufig gestellte Fragen
Kann ich eine Benachrichtigung nach der Anzeige aktualisieren oder schließen?
Ja. Der Show()-Export gibt eine ID zurück. Übergib diese ID an exports['agency-notify']:Update(id, {body, level}), um den Inhalt zu ändern, oder an exports['agency-notify']:Dismiss(id), um sie früh zu entfernen.
Ersetzt das ox_lib-Benachrichtigungen?
Es kann. Agency-Notify deckt dieselben Anwendungsfälle mit einem anderen visuellen Stil ab. Wenn du den Glassmorphismus-Stil konsistent mit anderen Agency-Scripts willst, ist der Wechsel unkompliziert.
Gibt es eine Rate-Limitierung gegen Benachrichtigungs-Spam?
Das Gruppierungssystem behandelt Deduplizierung automatisch. Für hartes Rate-Limiting setze Config.RateLimit = true und Config.RateLimitWindow = 1000 in config.lua.
Voraussetzungen
- FiveM-Server (beliebiges Framework oder eigenständig)
- cfx.re-Konto mit gültigem Agency-Notify-Lizenzschlüssel
- Keine Datenbankabhängigkeit
Agency-Notify im Vergleich zu Alternativen
Das FiveM-Benachrichtigungs-Ökosystem hat mehrere Optionen: ox_lib-Benachrichtigungen, QBCores eingebaute Benachrichtigungen und verschiedene eigenständige Scripts. Hier macht jede Sinn:
ox_lib-Benachrichtigungen sind kompetent und gut gepflegt, aber visuell an die ox_lib-Bildsprache gebunden. Wenn dein Server bereits vollständig ox_lib nutzt, kann die visuelle Konsistenz das Upgrade überwiegen. Wenn du einen Agency-first Stack aufbaust, passt Agency-Notifys entsprechende Ästhetik besser.
QBCores QBNotify ist funktional aber minimal — kein Gruppieren, keine Update-API, keine Aktionsschaltflächen. Es funktioniert für einfache Anwendungsfälle und kostet nichts zusätzlich bei QBCore. Wenn du mehr als einfache Toasts brauchst, bist du darüber hinausgewachsen.
Agency-Notify richtet sich an Server, denen das Benachrichtigungserlebnis als Produktdetail wichtig ist, nicht als Nachgedanke. Wenn du jemals gedacht hast "unsere Benachrichtigungen sehen schlecht aus und Spieler ignorieren sie", ist das das Problem, das dieses Script zu lösen existiert.
Praktische Integration
Hier sind gängige Muster für die Integration von Agency-Notify in bestehende Scripts. Bei einem Crafting-System: Sende am Anfang einer Crafting-Aktion eine Info-Benachrichtigung, die den Fortschritt anzeigt. Aktualisiere sie mit der zurückgegebenen ID auf Erfolg oder Fehler, wenn die Aktion abgeschlossen ist. Bei Admin-Broadcast-Nachrichten: Verwende den Warnungs-Level für wichtige Server-Ankündigungen, die Spieler sofort bemerken müssen. Der rote Farbton und die Puls-Animation heben diese automatisch hervor. Bei Job-Benachrichtigungen: Verwende benutzerdefinierte Icons, um Benachrichtigungen ihrem Kontext zuzuordnen — Schraubenschlüssel-Icon für Fahrzeugstatus, Sirenen-Icon für Notfälle, Geldbeutel-Icon für Transaktionen. Spieler erkennen die Icons schneller als sie den Text lesen.
Technische Details zur Benachrichtigungsarchitektur
Agency-Notify verwendet ein reines NUI-Rendering ohne native GTA-Benachrichtigungen. Das bedeutet, dass alle Benachrichtigungen vollständig in HTML/CSS/JS gerendert werden, was unbegrenzte visuelle Anpassungsmöglichkeiten bietet, die mit dem nativen System nicht möglich wären. Die Kommunikation zwischen dem Lua-Client-Script und der NUI-Schicht wird entprellt, sodass schnelle Folge-Benachrichtigungen nicht zu Performance-Spitzen führen.
Jede Benachrichtigung wird als unabhängiges DOM-Element mit eigenem Animationszustand verwaltet. Das Gruppierungssystem reduziert DOM-Elemente, indem es identische Benachrichtigungen zusammenführt statt neue hinzuzufügen. Dieser Ansatz hält die Rendering-Kosten flat, unabhängig davon, wie viele Benachrichtigungen eine Ressource in kurzer Zeit auslöst.
Die Rückgabe-ID aus Show() ist eine UUID, die in der Lua-Schicht generiert wird und zwischen Client und NUI synchronisiert wird. Update()- und Dismiss()-Aufrufe verwenden direkte DOM-Targeting, was sie schneller als das Neurendern des gesamten Benachrichtigungs-Stacks macht. Für Server, die programmatische Steuerung aktiver Benachrichtigungen benötigen, ist diese Architektur entscheidend.
Notification-Design-Best-Practices
Nicht alle Benachrichtigungen sind gleich. Ein häufiger Fehler bei der Implementierung von Benachrichtigungs-Systemen ist, sie für alles zu verwenden und damit ihre Wirkung zu verwässern. Hier sind Leitlinien für effektives Notification-Design auf FiveM-Servern:
Reserviere den Error-Level (rot) für echte Fehler oder dringende Warnungen — verlorenes Geld, Charaktertod, illegale Aktivitäten. Wenn du Error für "du hast zu wenig Geld für diesen Kauf" verwendest, wird er von Spielern als harmlos eingestuft. Wenn du ihn nur für "dein Charakter wird verhaftet" verwendest, reagieren Spieler sofort.
Verwende Info-Benachrichtigungen (blau) für neutrale Informationen ohne Handlungsaufforderung — "Schicht begonnen", "Fahrzeug wurde gespawnt". Success (grün) für positive Ergebnisse — "Kauf erfolgreich", "Quest abgeschlossen". Warning (orange) für Situationen, die Aufmerksamkeit erfordern aber nicht dringend sind — "Low Hunger", "Werkzeug fast abgenutzt".
Das richtige Severity-Level-Mapping ist eine der wichtigsten Entscheidungen, die Serverbesitzer bei Agency-Notify treffen. Nimm dir Zeit, die Severity-Zuordnungen für alle Benachrichtigungen auf deinem Server durchzudenken — die resultierenden Spieler-Reaktionen werden besser vorhersagbar und sinnvoller sein.
