AI Core
Essentielsai-chat

ai-chat pour les développeurs

L’API de chat à laquelle répond ai-chat (la ressource chat de FiveM), ses exports, ses events et la forme d’un message.

ai-chat répond à l’API de la ressource chat de FiveM, donc vous écrivez votre code de chat de la façon standard de FiveM. Les exports répondent sous exports['ai-chat'] comme sous exports.chat.

ChatMessage

La forme de message que prennent chaque export et chaque event.

Prop

Type

Exports serveur

addMessage

Envoie une ligne de chat à un joueur, à plusieurs joueurs ou à tout le monde.

Côté : serveur · Attend : non

Signature
addMessage(target: number | number[], message: ChatMessage): void
Lua
exports.chat:addMessage(source, { args = { 'Bank', 'Your salary arrived.' }, color = { 61, 247, 158 } })

Paramètres

Prop

Type

Retour

Rien. Un message sans liste args valide est ignoré.

Exemple

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

Exécute votre fonction pour chaque message qu’envoie un joueur, avant sa livraison. Le hook peut modifier le message, changer qui le reçoit, ou l’annuler. Les hooks sont retirés quand votre ressource s’arrête.

Côté : serveur · Attend : non

Signature
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): void

HookRef

Prop

Type

Exemple

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

Ajoute un canal depuis un script (les modes de chat de FiveM). Son callback décide qui reçoit chaque message, comme un hook de message. Le mode est retiré quand votre ressource s’arrête.

Côté : serveur · Attend : non

Signature
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): void

Prop

Type

Exports client

ExportCe qu’il fait
addMessage(message: ChatMessage | string): voidAffiche une ligne uniquement dans le chat de ce joueur.
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): voidAjoute une suggestion de commande pour ce joueur.

Events

chatMessage (serveur)

Se déclenche sur le serveur pour chaque message qu’envoie un joueur, avant sa livraison. Annulez-le (CancelEvent()) pour abandonner le message.

Côté : serveur (event local)

ArgumentTypeCe que c’est
sourcenumberL’id serveur de l’expéditeur.
authorstringL’auteur affiché (le nom du personnage).
textstringLe texte du message.
on("chatMessage", (source: number, author: string, text: string) => {
  console.log(`[chat] ${author} (${source}): ${text}`);
});

Events client qu’écoute ai-chat

Envoyez-les depuis le serveur (TriggerClientEvent) ou depuis un script client (TriggerEvent).

EventArgumentsCe qu’il fait
chat:addMessagemessage: ChatMessage | stringAffiche une ligne.
chatMessageauthor: string, color: [r, g, b], text: stringAffiche une ligne (ancien style).
chat:addSuggestionname: string, help: string, params?: { name, help }[]Ajoute une suggestion.
chat:addSuggestionssuggestions: { name, help, params? }[]Ajoute plusieurs suggestions.
chat:removeSuggestionname: stringRetire une suggestion.
chat:addMode / chat:removeModemode / nameAjoute ou retire un mode de script sur ce client.
chat:clearaucunVide le chat de ce joueur.

chat:addTemplate est ignoré : les modèles (HTML) ne sont jamais rendus. Les messages tapés par les joueurs ne passent pas par _chat:messageEntered ; écoutez chatMessage sur le serveur.

Sur cette page