ai-chat для разработчиков
API чата, на который отвечает ai-chat (ресурс chat из FiveM), его экспорты, события и формат сообщения.
ai-chat отвечает на API ресурса chat из FiveM, поэтому код для чата вы пишете стандартным для FiveM способом. Экспорты отвечают и под exports['ai-chat'], и под exports.chat.
ChatMessage
Формат сообщения, который принимает каждый экспорт и событие.
Prop
Type
Серверные экспорты
addMessage
Отправляет строку чата одному игроку, нескольким игрокам или всем.
Сторона: сервер · Ожидание: нет
addMessage(target: number | number[], message: ChatMessage): voidexports.chat:addMessage(source, { args = { 'Bank', 'Your salary arrived.' }, color = { 61, 247, 158 } })Параметры
Prop
Type
Возвращает
Ничего. Сообщение без корректного списка args отбрасывается.
Пример
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
Запускает вашу функцию для каждого сообщения, которое отправляет игрок, до его доставки. Хук может изменить сообщение, изменить получателей или отменить его. Хуки удаляются, когда ваш ресурс останавливается.
Сторона: сервер · Ожидание: нет
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): voidHookRef
Prop
Type
Пример
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
Добавляет канал из скрипта (режимы чата FiveM). Его колбэк решает, кто получает каждое сообщение, как хук сообщений. Режим удаляется, когда ваш ресурс останавливается.
Сторона: сервер · Ожидание: нет
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): voidProp
Type
Клиентские экспорты
| Экспорт | Что делает |
|---|---|
addMessage(message: ChatMessage | string): void | Показывает строку только в чате этого игрока. |
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): void | Добавляет подсказку команды для этого игрока. |
События
chatMessage (server)
Срабатывает на сервере для каждого сообщения, которое отправляет игрок, до доставки. Отмените его (CancelEvent()), чтобы отбросить сообщение.
Сторона: сервер (локальное событие)
| Аргумент | Тип | Что это |
|---|---|---|
source | number | Серверный id отправителя. |
author | string | Показываемый автор (имя персонажа). |
text | string | Текст сообщения. |
on("chatMessage", (source: number, author: string, text: string) => {
console.log(`[chat] ${author} (${source}): ${text}`);
});Клиентские события, которые слушает ai-chat
Отправляйте их с сервера (TriggerClientEvent) или из клиентского скрипта (TriggerEvent).
| Событие | Аргументы | Что делает |
|---|---|---|
chat:addMessage | message: ChatMessage | string | Показывает строку. |
chatMessage | author: string, color: [r, g, b], text: string | Показывает строку (старый стиль). |
chat:addSuggestion | name: string, help: string, params?: { name, help }[] | Добавляет одну подсказку. |
chat:addSuggestions | suggestions: { name, help, params? }[] | Добавляет несколько подсказок. |
chat:removeSuggestion | name: string | Удаляет подсказку. |
chat:addMode / chat:removeMode | mode / name | Добавляет или удаляет режим скрипта на этом клиенте. |
chat:clear | нет | Очищает чат этого игрока. |
chat:addTemplate игнорируется: шаблоны (HTML) никогда не отрисовываются. Сообщения, которые вводят игроки, не отправляются через _chat:messageEntered; слушайте chatMessage на сервере.