AI Core
Świat i narzędziaai-exitsleeping

ai-exitsleeping dla deweloperów

Eksporty serwera i klienta, zdarzenia hooków i kształt śpiącego ciała w ai-exitsleeping.

ai-exitsleeping ma jeden eksport serwera, trzy eksporty klienta i cztery lokalne zdarzenia hooków (edytowalne hooki oryginalnego skryptu). Żadne nie są typowane w @aicore-fivem/shared: w TypeScript wywołuj je przez callExport.

Eksporty serwera

AddCreateCheck

Dodaje sprawdzenie, które uruchamia się, gdy gracz się wylogowuje. Zwróć false, aby nie zostawiać śpiącego ciała (mieszkanie, strefa wydarzenia, więzienie). Używaj, gdy twój skrypt zna miejsca, w których ciało nie może zostać.

Strona: serwer · Czeka: nie

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

Parametry

Prop

Type

Zwraca

Nic. Sprawdzenie jest usuwane samo, gdy twój zasób się zatrzymuje.

Przykład

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

// Bez śpiących ciał na arenie wydarzeń (200 m wokół jej środka).
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,
);

Dla stałego miejsca Hidden area w panelu robi to samo bez kodu.

Eksporty klienta

PlayerLoaded

Budzi ciało lokalnego gracza i zaczyna pokazywać ciała w pobliżu. Wywołuj to ze skryptu spawnu po jego własnym ostatecznym spawnie i tylko wtedy, gdy Wake up on w panelu to PlayerLoaded export (spawn script).

Strona: klient · Czeka: nie

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

Zwraca

Nic. Drugie wywołanie przed następną zmianą postaci nic nie robi.

SetHidden

Ukrywa każde śpiące ciało na tym kliencie, dopóki trwa jakikolwiek powód. Używaj, gdy gracz jest w miejscu, w którym ciała wyglądałyby źle (wnętrze shella, przerywnik).

Strona: klient · Czeka: nie

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

Parametry

Prop

Type

Zwraca

Nic. Twoje powody są usuwane, gdy twój zasób się zatrzymuje.

Przykład

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

Ukrywa opcję noszenia na tym kliencie, dopóki trwa jakikolwiek powód (twoje własne zasady: minigra, więzienie).

Strona: klient · Czeka: nie

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

Zwraca

Nic. Te same zasady powodów co w SetHidden. Noszenie jest już zablokowane w pojeździe, podczas powalenia i podczas skucia.

Zdarzenia hooków

Lokalne zdarzenia (niewysyłane przez sieć), których możesz nasłuchiwać.

ai-exitsleeping:created

Utworzono śpiące ciało dla postaci, która się wylogowała. Strona: serwer.

Prop

Type

ai-exitsleeping:removed

Śpiące ciało zniknęło (obudziło się, wygasło, zostało przełączone). Strona: serwer. Argument: charId: number.

ai-exitsleeping:positionChanged

Zmieniła się pozycja ciała (noszone, przewożone, odłożone). Strona: serwer. Argumenty: charId: number, coords: { x, y, z, heading }.

ai-exitsleeping:client:pedSpawned

Na tym kliencie utworzono śpiącego peda. Strona: klient. Argumenty: ped: number (lokalny, niesieciowy ped), view: SleeperView.

// Serwer: loguj każde ciało, które się pojawia i znika.
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

Zdarzenia wewnętrzne

ai-exitsleeping:wake, area, client:area, look, startCarry, stopCarry, putInVehicle, takeOut działają między jego własnym klientem a serwerem; nie wywołuj ich.

Na tej stronie