AI Core
Grundlagenai-chat

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

Signatur
addMessage(target: number | number[], message: ChatMessage): void
Lua
exports.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

Signatur
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): void

HookRef

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

Signatur
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): void

Prop

Type

Client-Exports

ExportWas er macht
addMessage(message: ChatMessage | string): voidZeigt eine Zeile nur im Chat dieses Spielers.
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): voidFü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)

ArgumentTypWas es ist
sourcenumberDie Server-ID des Absenders.
authorstringDer angezeigte Autor (der Charaktername).
textstringDer 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).

EventArgumenteWas es macht
chat:addMessagemessage: ChatMessage | stringZeigt eine Zeile.
chatMessageauthor: string, color: [r, g, b], text: stringZeigt eine Zeile (alter Stil).
chat:addSuggestionname: string, help: string, params?: { name, help }[]Fügt einen Vorschlag hinzu.
chat:addSuggestionssuggestions: { name, help, params? }[]Fügt mehrere Vorschläge hinzu.
chat:removeSuggestionname: stringEntfernt einen Vorschlag.
chat:addMode / chat:removeModemode / nameFügt auf diesem Client einen Skriptmodus hinzu oder entfernt ihn.
chat:clearkeineLeert 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.

Auf dieser Seite