AI Core
Dokumentacja APILib: klient

Strefy

Zones - obszary z callbackami wejścia i wyjścia (kula, walec, wielokąt), sprawdzane we własnym odstępie, nigdy co klatkę.

Strefa to obszar, który uruchamia kod, gdy gracz do niego wchodzi albo go opuszcza: wjazd do dzielnicy, obszar z ograniczeniem prędkości, marker rysowany tylko w pobliżu. Gdy gracz ma w tym miejscu coś zrobić (nacisnąć klawisz, wybrać opcję targetu), użyj zamiast tego punktu: to strefa z już podłączonym promptem, targetem, pedem i blipem.

W TypeScript każdą strefę sprawdza jeden mechanizm ai-lib za wszystkie zasoby (strefy leżą w siatce 64 m, więc milion stref kosztuje tyle samo co kilka). Twój zasób sprawdza własne strefy tylko wtedy, gdy ai-lib nie działa. W Lua każdy zasób uruchamia jedno zadanie harmonogramu dla swoich stref.

new Zones

Tworzy grupę stref. Zrób jedną grupę na funkcję na górze pliku.

Strona: Klient · Czeka: nie

Sygnatura
new Zones()
Lua
local zones = aiLib.Zones.new()

Zwracana wartość

Grupa Zones z metodami poniżej.

Przykład

import { Zones } from "@aicore-fivem/lib/client";

const zones = new Zones();

zones.add

Dodaje strefę albo zastępuje strefę o tym samym id. Gdy gracz był wewnątrz zastępowanej strefy, najpierw działa jej onExit.

Strona: Klient · Czeka: nie

Sygnatura
zones.add(id: string, options: ZoneOptions): void
Lua
zones:add(id, options)

Parametry

Prop

Type

ZoneOptions

Prop

Type

ZoneShape

ZoneShape to jeden z trzech obiektów, wybierany przez type:

Prop

Type

W Lua center może być vector3, a punkty tabelami { x = ..., y = ... }.

Zwracana wartość

void.

Przykład

import { createLocale, notify, Zones } from "@aicore-fivem/lib/client";

const Locale = createLocale<typeof import("../../locales/en.json")>();
const zones = new Zones();

zones.add("safezone", {
  shape: { type: "cylinder", center: { x: 298.6, y: -584.5, z: 43.3 }, radius: 60, height: 30 },
  onEnter: () => notify(Locale("SAFEZONE_IN"), "info"),
  onExit: () => notify(Locale("SAFEZONE_OUT"), "info"),
});

zones.add("yard", {
  shape: {
    type: "poly",
    points: [
      { x: 1700.1, y: 2560.4 },
      { x: 1780.6, y: 2560.4 },
      { x: 1780.6, y: 2620.2 },
      { x: 1700.1, y: 2620.2 },
    ],
    minZ: 40,
    maxZ: 60,
  },
  interval: 1000,
  onEnter: () => SetPedMoveRateOverride(PlayerPedId(), 0.8),
});

Strefa narysowana w twoim panelu administratora widżetem zone daje narożniki; zamień je w wielokąt przez polyFromCorners(corners, height) z @aicore-fivem/lib/shared. Serwer może sprawdzać te same kształty przez zoneContains(shape, x, y, z).

zones.remove

Usuwa jedną strefę. Gdy gracz był w środku, działa onExit. Nieznane id nic nie robi.

Strona: Klient · Czeka: nie

Sygnatura
zones.remove(id: string): void
Lua
zones:remove(id)

Parametry

Prop

Type

Zwracana wartość

void.

Przykład

zones.remove("safezone");

zones.clear

Usuwa każdą strefę grupy; onExit działa dla tych, w których jest gracz.

Strona: Klient · Czeka: nie

Sygnatura
zones.clear(): void
Lua
zones:clear()

Zwracana wartość

void.

Przykład

onServerEvent("myscript:eventOver", () => zones.clear());

zones.isInside

Czy gracz jest w strefie, według jej ostatniego sprawdzenia.

Strona: Klient · Czeka: nie

Sygnatura
zones.isInside(id: string): boolean
Lua
local inside = zones:isInside(id)

Parametry

Prop

Type

Zwracana wartość

boolean: true, dopóki jest w środku; false na zewnątrz albo dla nieznanego id. Odzwierciedla ostatnie sprawdzenie, więc może być stare do interval ms.

Przykład

if (zones.isInside("safezone")) return notify(Locale("NO_WEAPONS_HERE"), "error");

zones.size

Ile stref ma grupa.

Strona: Klient · Czeka: nie

Sygnatura
zones.size: number // właściwość tylko do odczytu

Brak odpowiednika w Lua.

Zwracana wartość

number: liczba stref w tej grupie.

Przykład

console.log(`${zones.size} zones loaded`);

Na tej stronie