ai-chat para desarrolladores
La API de chat a la que responde ai-chat (el recurso chat de FiveM), sus exports, eventos y la forma de los mensajes.
ai-chat responde a la API del recurso chat de FiveM, así que escribes el código de chat de la forma estándar de FiveM. Los exports responden bajo exports['ai-chat'] y exports.chat.
ChatMessage
La forma de mensaje que reciben todos los exports y eventos.
Prop
Type
Exports de servidor
addMessage
Envía una línea de chat a un jugador, a varios jugadores o a todos.
Lado: Servidor · Espera: no
addMessage(target: number | number[], message: ChatMessage): voidexports.chat:addMessage(source, { args = { 'Bank', 'Your salary arrived.' }, color = { 61, 247, 158 } })Parámetros
Prop
Type
Devuelve
Nada. Un mensaje sin una lista args válida se descarta.
Ejemplo
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
Ejecuta tu función para cada mensaje que envía un jugador, antes de entregarlo. El hook puede cambiar el mensaje, cambiar quién lo recibe o cancelarlo. Los hooks se quitan cuando tu recurso se detiene.
Lado: Servidor · Espera: no
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): voidHookRef
Prop
Type
Ejemplo
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
Añade un canal desde un script (los modos de chat de FiveM). Su callback decide quién recibe cada mensaje, como un hook de mensajes. El modo se quita cuando tu recurso se detiene.
Lado: Servidor · Espera: no
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): voidProp
Type
Exports de cliente
| Export | Qué hace |
|---|---|
addMessage(message: ChatMessage | string): void | Muestra una línea solo en el chat de este jugador. |
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): void | Añade una sugerencia de comando para este jugador. |
Eventos
chatMessage (server)
Se dispara en el servidor para cada mensaje que envía un jugador, antes de la entrega. Cancélalo (CancelEvent()) para descartar el mensaje.
Lado: Servidor (evento local)
| Argumento | Tipo | Qué es |
|---|---|---|
source | number | El id de servidor de quien envía. |
author | string | El autor mostrado (el nombre del personaje). |
text | string | El texto del mensaje. |
on("chatMessage", (source: number, author: string, text: string) => {
console.log(`[chat] ${author} (${source}): ${text}`);
});Eventos de cliente que escucha ai-chat
Envíalos desde el servidor (TriggerClientEvent) o desde un script de cliente (TriggerEvent).
| Evento | Argumentos | Qué hace |
|---|---|---|
chat:addMessage | message: ChatMessage | string | Muestra una línea. |
chatMessage | author: string, color: [r, g, b], text: string | Muestra una línea (estilo antiguo). |
chat:addSuggestion | name: string, help: string, params?: { name, help }[] | Añade una sugerencia. |
chat:addSuggestions | suggestions: { name, help, params? }[] | Añade varias sugerencias. |
chat:removeSuggestion | name: string | Quita una sugerencia. |
chat:addMode / chat:removeMode | mode / name | Añade o quita un modo de script en este cliente. |
chat:clear | ninguno | Vacía el chat de este jugador. |
chat:addTemplate se ignora: las plantillas (HTML) nunca se dibujan. Los mensajes que escriben los jugadores no se envían por _chat:messageEntered; escucha chatMessage en el servidor.