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
new Zones()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
zones.add(id: string, options: ZoneOptions): voidzones: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
zones.remove(id: string): voidzones: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
zones.clear(): voidzones: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
zones.isInside(id: string): booleanlocal 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
zones.size: number // właściwość tylko do odczytuBrak odpowiednika w Lua.
Zwracana wartość
number: liczba stref w tej grupie.
Przykład
console.log(`${zones.size} zones loaded`);Punkty interakcji
Points - każde miejsce, z którego korzysta gracz (lady, sklepy, drzwi, NPC, bankomaty, bagażniki pojazdów), jako prompt albo opcja targetu, z pedami, blipami i punktami budowanymi z rekordów panelu.
Pedy, blipy i propy
LocalPed, Blips, createBlip, attachProp, PreviewVehicle i player.holdAnim - lokalni NPC, blipy na mapie, trzymane propy, pojazdy w salonie i trzymane animacje.