ai-chat dla deweloperów
API czatu, na które odpowiada ai-chat (zasób chat z FiveM), jego eksporty, zdarzenia i kształt wiadomości.
ai-chat odpowiada na API zasobu chat z FiveM, więc kod czatu piszesz standardowo, jak w FiveM. Eksporty odpowiadają zarówno pod exports['ai-chat'], jak i exports.chat.
ChatMessage
Kształt wiadomości, który przyjmuje każdy eksport i zdarzenie.
Prop
Type
Eksporty serwera
addMessage
Wysyła linię czatu do jednego gracza, kilku graczy lub wszystkich.
Strona: serwer · Czeka: nie
addMessage(target: number | number[], message: ChatMessage): voidexports.chat:addMessage(source, { args = { 'Bank', 'Your salary arrived.' }, color = { 61, 247, 158 } })Parametry
Prop
Type
Zwraca
Nic. Wiadomość bez prawidłowej listy args jest odrzucana.
Przykład
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
Uruchamia twoją funkcję dla każdej wiadomości wysłanej przez gracza, zanim zostanie dostarczona. Hook może zmienić wiadomość, zmienić odbiorców albo ją anulować. Hooki są usuwane, gdy twój zasób się zatrzymuje.
Strona: serwer · Czeka: nie
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): voidHookRef
Prop
Type
Przykład
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
Dodaje kanał ze skryptu (tryby czatu FiveM). Jego callback decyduje, kto dostaje każdą wiadomość, jak hook wiadomości. Tryb jest usuwany, gdy twój zasób się zatrzymuje.
Strona: serwer · Czeka: nie
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): voidProp
Type
Eksporty klienta
| Eksport | Co robi |
|---|---|
addMessage(message: ChatMessage | string): void | Pokazuje linię tylko na czacie tego gracza. |
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): void | Dodaje podpowiedź komendy dla tego gracza. |
Zdarzenia
chatMessage (server)
Wywoływane na serwerze dla każdej wiadomości wysłanej przez gracza, przed dostarczeniem. Anuluj je (CancelEvent()), aby odrzucić wiadomość.
Strona: serwer (zdarzenie lokalne)
| Argument | Typ | Co to jest |
|---|---|---|
source | number | ID nadawcy na serwerze. |
author | string | Pokazywany autor (imię postaci). |
text | string | Tekst wiadomości. |
on("chatMessage", (source: number, author: string, text: string) => {
console.log(`[chat] ${author} (${source}): ${text}`);
});Zdarzenia klienta, których nasłuchuje ai-chat
Wysyłaj je z serwera (TriggerClientEvent) lub ze skryptu klienta (TriggerEvent).
| Zdarzenie | Argumenty | Co robi |
|---|---|---|
chat:addMessage | message: ChatMessage | string | Pokazuje linię. |
chatMessage | author: string, color: [r, g, b], text: string | Pokazuje linię (stary styl). |
chat:addSuggestion | name: string, help: string, params?: { name, help }[] | Dodaje jedną podpowiedź. |
chat:addSuggestions | suggestions: { name, help, params? }[] | Dodaje kilka podpowiedzi. |
chat:removeSuggestion | name: string | Usuwa podpowiedź. |
chat:addMode / chat:removeMode | mode / name | Dodaje lub usuwa tryb skryptu na tym kliencie. |
chat:clear | brak | Czyści czat tego gracza. |
chat:addTemplate jest ignorowane: szablony (HTML) nigdy nie są rysowane. Wiadomości wpisywane przez graczy nie są wysyłane przez _chat:messageEntered; nasłuchuj chatMessage na serwerze.