AI Core
Основноеai-chat

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): void
Lua
exports.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): void

HookRef

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 }): void

Prop

Type

Клиентские экспорты

ЭкспортЧто делает
addMessage(message: ChatMessage | string): voidПоказывает строку только в чате этого игрока.
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): voidДобавляет подсказку команды для этого игрока.

События

chatMessage (server)

Срабатывает на сервере для каждого сообщения, которое отправляет игрок, до доставки. Отмените его (CancelEvent()), чтобы отбросить сообщение.

Сторона: сервер (локальное событие)

АргументТипЧто это
sourcenumberСерверный id отправителя.
authorstringПоказываемый автор (имя персонажа).
textstringТекст сообщения.
on("chatMessage", (source: number, author: string, text: string) => {
  console.log(`[chat] ${author} (${source}): ${text}`);
});

Клиентские события, которые слушает ai-chat

Отправляйте их с сервера (TriggerClientEvent) или из клиентского скрипта (TriggerEvent).

СобытиеАргументыЧто делает
chat:addMessagemessage: ChatMessage | stringПоказывает строку.
chatMessageauthor: string, color: [r, g, b], text: stringПоказывает строку (старый стиль).
chat:addSuggestionname: string, help: string, params?: { name, help }[]Добавляет одну подсказку.
chat:addSuggestionssuggestions: { name, help, params? }[]Добавляет несколько подсказок.
chat:removeSuggestionname: stringУдаляет подсказку.
chat:addMode / chat:removeModemode / nameДобавляет или удаляет режим скрипта на этом клиенте.
chat:clearнетОчищает чат этого игрока.

chat:addTemplate игнорируется: шаблоны (HTML) никогда не отрисовываются. Сообщения, которые вводят игроки, не отправляются через _chat:messageEntered; слушайте chatMessage на сервере.

На этой странице