ai-chat für Entwickler
Die Chat-API, die ai-chat beantwortet (die chat-Ressource von FiveM), seine Exports, Events und die Struktur der Nachrichten.
ai-chat beantwortet die API der chat-Ressource von FiveM, du schreibst Chat-Code also auf die übliche FiveM-Art. Exports antworten sowohl unter exports['ai-chat'] als auch unter exports.chat.
ChatMessage
Die Nachrichtenstruktur, die jeder Export und jedes Event nimmt.
Prop
Type
Server-Exports
addMessage
Sendet eine Chatzeile an einen Spieler, mehrere Spieler oder alle.
Seite: Server · Wartet: nein
addMessage(target: number | number[], message: ChatMessage): voidexports.chat:addMessage(source, { args = { 'Bank', 'Your salary arrived.' }, color = { 61, 247, 158 } })Parameter
Prop
Type
Rückgabewert
Nichts. Eine Nachricht ohne gültige args-Liste wird verworfen.
Beispiel
import { callExport } from "@aicore-fivem/lib/server";
function announce(text: string): void {
callExport("chat", "addMessage", -1, { args: ["City", text], color: [61, 247, 158], multiline: true });
}
announce("The bank closes in 10 minutes.");registerMessageHook
Führt deine Funktion für jede Nachricht aus, die ein Spieler sendet, bevor sie zugestellt wird. Der Hook kann die Nachricht ändern, ändern, wer sie bekommt, oder sie abbrechen. Hooks werden entfernt, wenn deine Ressource stoppt.
Seite: Server · Wartet: nein
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): voidHookRef
Prop
Type
Beispiel
import { callExport } from "@aicore-fivem/lib/server";
callExport("chat", "registerMessageHook", (source: number, message: { args: string[] }, ref: { cancel(): void }) => {
const text = message.args[message.args.length - 1] ?? "";
if (/discord\.gg\//i.test(text)) ref.cancel();
});registerMode
Fügt einen Kanal aus einem Skript hinzu (die Chatmodi von FiveM). Sein Callback entscheidet, wer jede Nachricht bekommt, wie ein Nachrichten-Hook. Der Modus wird entfernt, wenn deine Ressource stoppt.
Seite: Server · Wartet: nein
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): voidProp
Type
Client-Exports
| Export | Was er macht |
|---|---|
addMessage(message: ChatMessage | string): void | Zeigt eine Zeile nur im Chat dieses Spielers. |
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): void | Fügt für diesen Spieler einen Befehlsvorschlag hinzu. |
Events
chatMessage (Server)
Wird auf dem Server für jede Nachricht ausgelöst, die ein Spieler sendet, vor der Zustellung. Brich es ab (CancelEvent()), um die Nachricht zu verwerfen.
Seite: Server (lokales Event)
| Argument | Typ | Was es ist |
|---|---|---|
source | number | Die Server-ID des Absenders. |
author | string | Der angezeigte Autor (der Charaktername). |
text | string | Der Nachrichtentext. |
on("chatMessage", (source: number, author: string, text: string) => {
console.log(`[chat] ${author} (${source}): ${text}`);
});Client-Events, auf die ai-chat hört
Sende sie vom Server (TriggerClientEvent) oder aus einem Client-Skript (TriggerEvent).
| Event | Argumente | Was es macht |
|---|---|---|
chat:addMessage | message: ChatMessage | string | Zeigt eine Zeile. |
chatMessage | author: string, color: [r, g, b], text: string | Zeigt eine Zeile (alter Stil). |
chat:addSuggestion | name: string, help: string, params?: { name, help }[] | Fügt einen Vorschlag hinzu. |
chat:addSuggestions | suggestions: { name, help, params? }[] | Fügt mehrere Vorschläge hinzu. |
chat:removeSuggestion | name: string | Entfernt einen Vorschlag. |
chat:addMode / chat:removeMode | mode / name | Fügt auf diesem Client einen Skriptmodus hinzu oder entfernt ihn. |
chat:clear | keine | Leert den Chat dieses Spielers. |
chat:addTemplate wird ignoriert: Vorlagen (HTML) werden nie gezeichnet. Von Spielern getippte Nachrichten werden nicht über _chat:messageEntered gesendet; höre auf dem Server auf chatMessage.