ai-exitsleeping für Entwickler
Server- und Client-Exports, Hook-Events und die Struktur der schlafenden Körper von ai-exitsleeping.
ai-exitsleeping hat einen Server-Export, drei Client-Exports und vier lokale Hook-Events (die bearbeitbaren Hooks des Originalskripts). Keiner ist in @aicore-fivem/shared typisiert: In TypeScript rufst du sie mit callExport auf.
Server-Exports
AddCreateCheck
Fügt eine Prüfung hinzu, die läuft, wenn ein Spieler sich ausloggt. Gib false zurück, um keinen schlafenden Körper zu hinterlassen (eine Wohnung, eine Event-Zone, ein Gefängnis). Nutze sie, wenn dein Skript Orte kennt, an denen kein Körper bleiben darf.
Seite: Server · Wartet: nein
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)Parameter
Prop
Type
Rückgabewert
Nichts. Die Prüfung wird von selbst entfernt, wenn deine Ressource stoppt.
Beispiel
import { callExport } from "@aicore-fivem/lib/server";
// Keine schlafenden Körper in der Event-Arena (200 m um ihre Mitte).
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,
);Für einen festen Ort erledigt ein Hidden area im Panel dasselbe ohne Code.
Client-Exports
PlayerLoaded
Weckt den Körper des lokalen Spielers und beginnt, die Körper in der Umgebung anzuzeigen. Rufe es aus einem Spawn-Skript nach dessen eigenem endgültigen Spawn auf, und nur, wenn Wake up on im Panel auf PlayerLoaded export (spawn script) steht.
Seite: Client · Wartet: nein
PlayerLoaded(): voidexports['ai-exitsleeping']:PlayerLoaded()Rückgabewert
Nichts. Ein zweiter Aufruf vor dem nächsten Charakterwechsel tut nichts.
SetHidden
Versteckt jeden schlafenden Körper auf diesem Client, solange irgendein Grund besteht. Nutze es, solange der Spieler an einem Ort ist, an dem Körper falsch aussehen würden (ein Shell-Innenraum, eine Zwischensequenz).
Seite: Client · Wartet: nein
SetHidden(reason: string, hidden: boolean): voidexports['ai-exitsleeping']:SetHidden('myshell', true)Parameter
Prop
Type
Rückgabewert
Nichts. Deine Gründe werden entfernt, wenn deine Ressource stoppt.
Beispiel
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
Blendet die Trageoption auf diesem Client aus, solange irgendein Grund besteht (deine eigenen Regeln: ein Minispiel, ein Gefängnis).
Seite: Client · Wartet: nein
SetCarryBlocked(reason: string, blocked: boolean): voidexports['ai-exitsleeping']:SetCarryBlocked('minigame', true)Rückgabewert
Nichts. Dieselben Regeln für Gründe wie bei SetHidden. Tragen ist im Fahrzeug, am Boden und gefesselt bereits gesperrt.
Hook-Events
Lokale Events (nicht über das Netzwerk gesendet), auf die du hören kannst.
ai-exitsleeping:created
Für einen Charakter, der sich ausgeloggt hat, wurde ein schlafender Körper erstellt. Seite: Server.
Prop
Type
ai-exitsleeping:removed
Ein schlafender Körper ist weg (aufgewacht, abgelaufen, ausgeschaltet). Seite: Server. Argument: charId: number.
ai-exitsleeping:positionChanged
Die Position eines Körpers hat sich geändert (getragen, gefahren, abgelegt). Seite: Server. Argumente: charId: number, coords: { x, y, z, heading }.
ai-exitsleeping:client:pedSpawned
Auf diesem Client wurde ein schlafender Ped erstellt. Seite: Client. Argumente: ped: number (ein lokaler, nicht vernetzter Ped), view: SleeperView.
// Server: jeden Körper loggen, der erscheint und verschwindet.
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
Interne Events
ai-exitsleeping:wake, area, client:area, look, startCarry, stopCarry, putInVehicle, takeOut laufen zwischen seinem eigenen Client und Server; rufe sie nicht auf.