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
addMessage(target: number | number[], message: ChatMessage): voidexports.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
registerMessageHook(hook: (source: number, message: ChatMessage, ref: HookRef) => void): voidHookRef
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
registerMode(data: { name: string; displayName?: string; color?: string; cb?: (source: number, message: ChatMessage, ref: HookRef) => void }): voidProp
Type
Exports client
| Export | Ce qu’il fait |
|---|---|
addMessage(message: ChatMessage | string): void | Affiche une ligne uniquement dans le chat de ce joueur. |
addSuggestion(name: string, help: string, params?: { name: string, help: string }[]): void | Ajoute 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)
| Argument | Type | Ce que c’est |
|---|---|---|
source | number | L’id serveur de l’expéditeur. |
author | string | L’auteur affiché (le nom du personnage). |
text | string | Le 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).
| Event | Arguments | Ce qu’il fait |
|---|---|---|
chat:addMessage | message: ChatMessage | string | Affiche une ligne. |
chatMessage | author: string, color: [r, g, b], text: string | Affiche une ligne (ancien style). |
chat:addSuggestion | name: string, help: string, params?: { name, help }[] | Ajoute une suggestion. |
chat:addSuggestions | suggestions: { name, help, params? }[] | Ajoute plusieurs suggestions. |
chat:removeSuggestion | name: string | Retire une suggestion. |
chat:addMode / chat:removeMode | mode / name | Ajoute ou retire un mode de script sur ce client. |
chat:clear | aucun | Vide 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.