ai-exitsleeping pour les développeurs
Les exports serveur et client, les events de hook et la forme d’un dormeur dans ai-exitsleeping.
ai-exitsleeping a un export serveur, trois exports client et quatre events de hook locaux (les hooks modifiables du script d’origine). Aucun n’est typé dans @aicore-fivem/shared : en TypeScript, appelez-les avec callExport.
Exports serveur
AddCreateCheck
Ajoute une vérification qui s’exécute quand un joueur se déconnecte. Renvoyez false pour ne laisser aucun corps endormi (un appartement, une zone d’événement, une prison). Utilisez-la quand votre script connaît des endroits où un corps ne doit pas rester.
Côté : serveur · Attend : non
AddCreateCheck(id: string, check: (source: number, charId: number, coords: { x: number; y: number; z: number; heading: number }) => boolean): voidexports['ai-exitsleeping']:AddCreateCheck(id, function(source, charId, coords) return true end)Paramètres
Prop
Type
Retour
Rien. La vérification est retirée d’elle-même quand votre ressource s’arrête.
Exemple
import { callExport } from "@aicore-fivem/lib/server";
// Pas de corps endormis dans l’arène d’événement (200 m autour de son centre).
const ARENA = { x: -324.0, y: -1968.0, z: 21.6 };
callExport("ai-exitsleeping", "AddCreateCheck", "arena",
(_source: number, _charId: number, c: { x: number; y: number; z: number }) =>
Math.hypot(c.x - ARENA.x, c.y - ARENA.y) > 200,
);Pour un endroit fixe, une Hidden area dans le panneau fait la même chose sans code.
Exports client
PlayerLoaded
Réveille le corps du joueur local et commence à afficher les corps alentour. Appelez-le depuis un script d’apparition après sa propre apparition finale, et uniquement quand le Wake up on du panneau vaut PlayerLoaded export (spawn script).
Côté : client · Attend : non
PlayerLoaded(): voidexports['ai-exitsleeping']:PlayerLoaded()Retour
Rien. Un second appel avant le prochain changement de personnage ne fait rien.
SetHidden
Masque chaque corps endormi sur ce client tant qu’au moins une raison est active. Utilisez-le pendant que le joueur est dans un endroit où les corps auraient l’air déplacés (un intérieur shell, une cinématique).
Côté : client · Attend : non
SetHidden(reason: string, hidden: boolean): voidexports['ai-exitsleeping']:SetHidden('myshell', true)Paramètres
Prop
Type
Retour
Rien. Vos raisons sont retirées quand votre ressource s’arrête.
Exemple
import { callExport } from "@aicore-fivem/lib/client";
export function enterShell(): void {
callExport("ai-exitsleeping", "SetHidden", "shell", true);
}
export function leaveShell(): void {
callExport("ai-exitsleeping", "SetHidden", "shell", false);
}SetCarryBlocked
Masque l’option de port sur ce client tant qu’au moins une raison est active (vos propres règles : un mini-jeu, une prison).
Côté : client · Attend : non
SetCarryBlocked(reason: string, blocked: boolean): voidexports['ai-exitsleeping']:SetCarryBlocked('minigame', true)Retour
Rien. Mêmes règles de raisons que SetHidden. Le port est déjà bloqué dans un véhicule, à terre et menotté.
Events de hook
Des events locaux (non envoyés sur le réseau) que vous pouvez écouter.
ai-exitsleeping:created
Un corps endormi a été créé pour un personnage qui s’est déconnecté. Côté : serveur.
Prop
Type
ai-exitsleeping:removed
Un corps endormi a disparu (réveillé, expiré, désactivé). Côté : serveur. Argument : charId: number.
ai-exitsleeping:positionChanged
La position d’un corps a changé (porté, transporté en véhicule, posé). Côté : serveur. Arguments : charId: number, coords: { x, y, z, heading }.
ai-exitsleeping:client:pedSpawned
Un ped endormi a été créé sur ce client. Côté : client. Arguments : ped: number (un ped local, non réseau), view: SleeperView.
// Serveur : journaliser chaque corps qui apparaît et disparaît.
on("ai-exitsleeping:created", (charId: number, view: { x: number; y: number; z: number }) => {
console.log(`character ${charId} fell asleep at ${view.x}, ${view.y}, ${view.z}`);
});
on("ai-exitsleeping:removed", (charId: number) => {
console.log(`character ${charId} woke up`);
});SleeperView
Prop
Type
Events internes
ai-exitsleeping:wake, area, client:area, look, startCarry, stopCarry, putInVehicle, takeOut circulent entre son propre client et son serveur ; ne les appelez pas.