AI Core
Welt und Werkzeugeai-exitsleeping

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

Signatur
AddCreateCheck(id: string, check: (source: number, charId: number, coords: { x: number; y: number; z: number; heading: number }) => boolean): void
Lua
exports['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

Signatur
PlayerLoaded(): void
Lua
exports['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

Signatur
SetHidden(reason: string, hidden: boolean): void
Lua
exports['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

Signatur
SetCarryBlocked(reason: string, blocked: boolean): void
Lua
exports['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.

Auf dieser Seite