Skip to content

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:

utils/chat.lua
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:

client
-- 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.

client
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öschen

BUPA 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.

server
-- Einen Spieler benachrichtigen (Server -> Client): source, gefolgt von Notify-Argumenten
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)
client
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:

client
TriggerEvent("bupa:changeLanguage", "fr")

Siehe Lokalisierung für Details.