Developer API
Developer API
Weil BUPA Chat provide 'chat' nutzt, implementiert es die Standard FiveM Chat-API. Jede Resource, die bereits chat:addMessage, chat:addSuggestion usw. verwendet, funktioniert unverändert weiter. BUPA Chat stellt jede dieser Funktionen sowohl als Netzwerk-Event (chat:<name>) als auch als Export (in kleingeschriebener und Grossgeschriebener Form) zur Verfügung.
Die API-Oberfläche ist in utils/chat.lua registriert:
registerEvent("addMessage", chatUtility.addMessage)
registerEvent("addSuggestion", chatUtility.addSuggestion)
registerEvent("addSuggestions", chatUtility.addSuggestions)
registerEvent("removeSuggestion", chatUtility.removeSuggestion)
registerEvent("removeSuggestions", chatUtility.removeSuggestions)
registerEvent("clear", chatUtility.clearMessages)registerEvent verknüpft das Event chat:<name> sowie exports(name) und exports(Name), sodass alle drei unten aufgeführten Aufrufstile äquivalent sind.
Hinzufügen einer Chat-Nachricht
Clientseitig kannst du eine Nachricht direkt in den Chat senden:
-- Standard-Event (funktioniert von jeder Resource aus)
TriggerEvent("chat:addMessage", {
color = { 255, 0, 0 },
multiline = true,
args = { "Dispatch", "Ein Raubüberfall ist in der Innenstadt im Gange." },
})
-- Export-Form
exports.chat:addMessage({ args = { "System", "Server startet in Kürze neu." } })Nachrichtenstruktur:
| Feld | Typ | Beschreibung |
|---|---|---|
args |
table | Nachrichtenteile. Mit config.defaultAddTag wird bei mehr als einem Argument und fehlenden tags das erste Argument zu einem Tag und der Rest zum Haupttext |
color |
RGB | Farbe der Nachricht bzw. des ersten Tags { r, g, b } |
tags |
table[] | Explizite Tags { tag, bgColor, textColor } |
multiline |
boolean | Erlaubt den Zeilenumbruch der Nachricht über mehrere Zeilen |
Das klassische chatMessage Client-Event wird ebenfalls unterstützt (name, color, message), sodass ältere TriggerClientEvent('chatMessage', ...) Ausgaben weiterhin angezeigt werden.
Vorschläge
Vorschläge steuern das Autovervollständigungspanel für Befehle. Sie können einzeln oder gesammelt hinzugefügt und auf dieselbe Weise wieder entfernt werden.
TriggerEvent("chat:addSuggestion", "/revive", "Einen nahegelegenen Spieler wiederbeleben", {
{ name = "id", help = "Server-ID des Ziels" },
})
TriggerEvent("chat:addSuggestions", {
{ name = "/heal", help = "Dich selbst heilen" },
{ name = "/car", help = "Ein Fahrzeug spawnen", params = {
{ name = "model", help = "Fahrzeugmodell", optional = true },
} },
})
TriggerEvent("chat:removeSuggestion", "/car")
exports.chat:clear() -- Alle Nachrichten löschenBUPA Chat füllt Vorschläge automatisch für jeden registrierten Befehl aus, für den der Spieler über ACE-Berechtigungen verfügt (command.<name>), sowohl beim Laden als auch beim Starten/Stoppen einer Resource. Du benötigst chat:addSuggestion(s) nur für Befehle, die einen benutzerdefinierten Hilfetext oder Parameter erfordern.
Benachrichtigungen
BUPA Chat stellt ein Benachrichtigungs-Event namens <resource>:notify bereit — d. h. bupa-chat:notify —, welches auf lib.notify von ox_lib basiert. Es funktioniert sowohl vom Client als auch vom Server aus.
-- Einen Spieler benachrichtigen (Server -> Client): source, gefolgt von Notify-Argumenten
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)Der Handler lautet Notify(text, notifyType, duration, ...). text wird durch den t() Lokalisierungs-Wrapper geleitet, sodass du einen Locale-Schlüssel (mit Formatierungsargumenten) oder Klartext übergeben kannst. notifyType standardmäßig auf inform und duration auf 4000 ms.
Lokalisierungs-Hilfsfunktionen
Die folgenden globalen Variablen sind innerhalb der Resource (und für Dateien, die in deren Kontext geladen werden) verfügbar:
| Symbol | Beschreibung |
|---|---|
t(key, ...) |
Schlanker Wrapper für ox_lib locale(). Formatiert mit %s/%d-Argumenten und gibt den Schlüssel selbst zurück, wenn die Übersetzung fehlt |
GetLang() |
Gibt das aktuelle flache Lokalisierungswörterbuch zurück |
Notify(text, type, duration, ...) |
Löst die bupa-chat:notify Benachrichtigung aus |
Sprachwechsel zur Laufzeit — bupa:changeLanguage
Löse dieses Client-Event aus, um die Chat-Sprache eines Spielers live und ohne Neustart zu ändern. Es lädt die Lokalisierung neu und überträgt sie an die React-Benutzeroberfläche:
TriggerEvent("bupa:changeLanguage", "fr")Siehe Lokalisierung für Details.