ai-chat para desenvolvedores
A API de chat que o ai-chat responde (o recurso de chat do FiveM), seus exports, eventos e o formato de mensagem.
O ai-chat responde à API do recurso chat do FiveM, então você escreve código de chat do jeito padrão do FiveM. Os exports respondem tanto em exports['ai-chat'] quanto em exports.chat.
ChatMessage
O formato de mensagem que todo export e evento recebe.
Prop
Type
Exports do servidor
addMessage
Envia uma linha de chat para um jogador, vários jogadores ou todos.
Lado: Servidor · Espera: não
addMessage(target: number | number[], message: ChatMessage): voidexports.chat:addMessage(source, { args = { 'Bank', 'Your salary arrived.' }, color = { 61, 247, 158 } })Parâmetros
Prop
Type
Retorno
Nada. Uma mensagem sem uma lista args válida é descartada.
Exemplo
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
Roda sua função para toda mensagem que um jogador envia, antes de ela ser entregue. O hook pode mudar a mensagem, mudar quem a recebe, ou cancelá-la. Os hooks são removidos quando seu recurso para.
Lado: Servidor · Espera: não
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): voidHookRef
Prop
Type
Exemplo
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
Adiciona um canal a partir de um script (os modos de chat do FiveM). O callback dele decide quem recebe cada mensagem, como um hook de mensagem. O modo é removido quando seu recurso para.
Lado: Servidor · Espera: não
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): voidProp
Type
Exports do cliente
| Export | O que faz |
|---|---|
addMessage(message: ChatMessage | string): void | Mostra uma linha só no chat deste jogador. |
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): void | Adiciona uma sugestão de comando para este jogador. |
Eventos
chatMessage (server)
Disparado no servidor para toda mensagem que um jogador envia, antes da entrega. Cancele-o (CancelEvent()) para descartar a mensagem.
Lado: Servidor (evento local)
| Argumento | Tipo | O que é |
|---|---|---|
source | number | O id do servidor de quem envia. |
author | string | O autor mostrado (o nome do personagem). |
text | string | O texto da mensagem. |
on("chatMessage", (source: number, author: string, text: string) => {
console.log(`[chat] ${author} (${source}): ${text}`);
});Eventos de cliente que o ai-chat escuta
Envie-os a partir do servidor (TriggerClientEvent) ou de um script de cliente (TriggerEvent).
| Evento | Argumentos | O que faz |
|---|---|---|
chat:addMessage | message: ChatMessage | string | Mostra uma linha. |
chatMessage | author: string, color: [r, g, b], text: string | Mostra uma linha (estilo antigo). |
chat:addSuggestion | name: string, help: string, params?: { name, help }[] | Adiciona uma sugestão. |
chat:addSuggestions | suggestions: { name, help, params? }[] | Adiciona várias sugestões. |
chat:removeSuggestion | name: string | Remove uma sugestão. |
chat:addMode / chat:removeMode | mode / name | Adiciona ou remove um modo de script neste cliente. |
chat:clear | nenhum | Esvazia o chat deste jogador. |
chat:addTemplate é ignorado: templates (HTML) nunca são desenhados. Mensagens digitadas por jogadores não são enviadas por _chat:messageEntered; escute chatMessage no servidor.