AI Core
Mundo y herramientasai-exitsleeping

ai-exitsleeping para desarrolladores

Los exports de servidor y de cliente, los eventos hook y la forma de los durmientes de ai-exitsleeping.

ai-exitsleeping tiene un export de servidor, tres exports de cliente y cuatro eventos hook locales (los hooks editables del script original). Ninguno está tipado en @aicore-fivem/shared: en TypeScript llámalos con callExport.

Exports de servidor

AddCreateCheck

Añade una comprobación que se ejecuta cuando un jugador cierra sesión. Devuelve false para no dejar cuerpo dormido (un apartamento, una zona de evento, una cárcel). Úsalo cuando tu script conozca lugares donde no debe quedarse un cuerpo.

Lado: Servidor · Espera: no

Firma
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)

Parámetros

Prop

Type

Devuelve

Nada. La comprobación se quita sola cuando tu recurso se detiene.

Ejemplo

import { callExport } from "@aicore-fivem/lib/server";

// Sin cuerpos dormidos dentro de la arena del evento (200 m alrededor de su centro).
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,
);

Para un lugar fijo, una Hidden area del panel hace lo mismo sin código.

Exports de cliente

PlayerLoaded

Despierta el cuerpo del jugador local y empieza a mostrar los cuerpos de alrededor. Llámalo desde un script de aparición después de su propia aparición final, y solo cuando el Wake up on del panel sea PlayerLoaded export (spawn script).

Lado: Cliente · Espera: no

Firma
PlayerLoaded(): void
Lua
exports['ai-exitsleeping']:PlayerLoaded()

Devuelve

Nada. Una segunda llamada antes del siguiente cambio de personaje no hace nada.

SetHidden

Oculta todos los cuerpos dormidos en este cliente mientras haya algún motivo activo. Úsalo mientras el jugador está en un lugar donde los cuerpos se verían mal (el interior de un shell, una cinemática).

Lado: Cliente · Espera: no

Firma
SetHidden(reason: string, hidden: boolean): void
Lua
exports['ai-exitsleeping']:SetHidden('myshell', true)

Parámetros

Prop

Type

Devuelve

Nada. Tus motivos se quitan cuando tu recurso se detiene.

Ejemplo

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

Oculta la opción de cargar en este cliente mientras haya algún motivo activo (tus propias reglas: un minijuego, una cárcel).

Lado: Cliente · Espera: no

Firma
SetCarryBlocked(reason: string, blocked: boolean): void
Lua
exports['ai-exitsleeping']:SetCarryBlocked('minigame', true)

Devuelve

Nada. Las mismas reglas de motivos que SetHidden. Cargar ya está bloqueado en un vehículo, abatido y esposado.

Eventos hook

Eventos locales (no se envían por la red) que puedes escuchar.

ai-exitsleeping:created

Se creó un cuerpo dormido para un personaje que cerró sesión. Lado: Servidor.

Prop

Type

ai-exitsleeping:removed

Un cuerpo dormido ha desaparecido (despertó, caducó, se desactivó). Lado: Servidor. Argumento: charId: number.

ai-exitsleeping:positionChanged

Ha cambiado la posición de un cuerpo (cargado, llevado en vehículo, dejado en el suelo). Lado: Servidor. Argumentos: charId: number, coords: { x, y, z, heading }.

ai-exitsleeping:client:pedSpawned

Se creó un ped dormido en este cliente. Lado: Cliente. Argumentos: ped: number (un ped local, no en red), view: SleeperView.

// Servidor: registra en el log cada cuerpo que aparece y desaparece.
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

Eventos internos

ai-exitsleeping:wake, area, client:area, look, startCarry, stopCarry, putInVehicle, takeOut son entre su propio cliente y su servidor; no los llames.

En esta página