AI Core
Podstawyai-target

ai-target dla deweloperów

API klienta ox_target, na które odpowiada ai-target, kształt opcji, co dostaje handler opcji i eksport HandleInteract.

Do własnych miejsc, NPC i opcji modeli używaj punktów interakcji AI Core: Points z biblioteki w TypeScript lub aiLib.Points w Lua (zobacz dokumentację biblioteki). Punkt pojawia się jako podpowiedź albo znacznik targetu, zależnie od wyboru właściciela, w każdym działającym skrypcie targetu, a w obu przypadkach uruchamia się to samo onPressed. Wywołuj poniższe API tylko wtedy, gdy przenosisz skrypt napisany dla ox_target.

Eksporty

Każdy eksport działa po stronie klienta, odpowiada zarówno pod exports['ai-target'], jak i exports.ox_target (ai-target robi provide dla ox_target) i nie czeka. Opcje należą do zasobu, który je dodał, i są usuwane, gdy ten się zatrzymuje.

TargetOption

Kształt opcji, który przyjmuje każdy eksport add*, jedna opcja lub lista. Opcja bez label jest pomijana.

Prop

Type

TargetResponse

Co dostają onSelect, export, event i serverEvent.

Prop

Type

addBoxZone

Dodaje strefę w kształcie prostopadłościanu z opcjami. addSphereZone i addPolyZone działają tak samo z innymi kształtami.

Strona: klient · Czeka: nie

Sygnatura
addBoxZone(data: { coords: Vec3; size?: Vec3; rotation?: number; name?: string; options: TargetOption | TargetOption[] }): number
addSphereZone(data: { coords: Vec3; radius?: number; name?: string; options: TargetOption | TargetOption[] }): number
addPolyZone(data: { points: Vec3[]; thickness?: number; name?: string; options: TargetOption | TargetOption[] }): number
Lua
local id = exports.ox_target:addBoxZone({ coords = vec3(x, y, z), size = vec3(2, 2, 2), rotation = 0, options = { ... } })

Parametry

Prop

Type

Zwraca

number: ID strefy. 0, gdy brakuje współrzędnych lub są nieprawidłowe (logowane jest ostrzeżenie).

Przykład

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

const zone = callExport("ox_target", "addBoxZone", {
  coords: { x: 441.8, y: -982.0, z: 30.7 },
  size: { x: 1.5, y: 1.5, z: 2 },
  rotation: 0,
  options: [
    {
      name: "duty",
      label: "Go on duty",
      icon: "clipboard-check",
      groups: "police",
      onSelect: () => emitNet("myscript:toggleDuty"),
    },
  ],
}) as number;

on("onResourceStop", (name: string) => {
  if (name === GetCurrentResourceName()) callExport("ox_target", "removeZone", zone);
});

Strefy zasobu są usuwane, gdy ten zasób się zatrzymuje, więc powyższy handler zatrzymania jest opcjonalny. Usuń strefę sam, gdy miejsce znika, a twój zasób nadal działa.

removeZone

Usuwa strefę. Strona: klient · Czeka: nie.

Sygnatura
removeZone(id: number | string): void

id to numer zwrócony przez add*Zone albo name strefy.

zoneExists

Strona: klient · Czeka: nie

Sygnatura
zoneExists(id: number | string): boolean

Zwraca true, dopóki istnieje strefa o tym numerze lub nazwie.

addModel

Umieszcza opcje na każdej encji tych modeli (drzwi danego modelu, bankomaty, kontenery na śmieci).

Strona: klient · Czeka: nie

Sygnatura
addModel(models: string | number | Array<string | number>, options: TargetOption | TargetOption[]): void
removeModel(models: string | number | Array<string | number>, names?: string | string[]): void
Lua
exports.ox_target:addModel({ 'prop_atm_01', 'prop_atm_02' }, { { name = 'atm', label = 'Use ATM', icon = 'credit-card', onSelect = openAtm } })

Parametry

Prop

Type

Zwraca

Nic.

addEntity and addLocalEntity

addEntity umieszcza opcje na encjach sieciowych według ID sieciowego (pojazdy lub pedy utworzone przez serwer). addLocalEntity umieszcza je na encjach według uchwytu (ped lub prop utworzony przez twojego klienta). Każdy ma odpowiednik remove*, który przyjmuje te same ID i opcjonalne nazwy opcji.

Strona: klient · Czeka: nie

Sygnatura
addEntity(netIds: number | number[], options: TargetOption | TargetOption[]): void
removeEntity(netIds: number | number[], names?: string | string[]): void
addLocalEntity(entities: number | number[], options: TargetOption | TargetOption[]): void
removeLocalEntity(entities: number | number[], names?: string | string[]): void

Opcje globalne według rodzaju

Opcje na każdym pedzie, pojeździe, obiekcie lub graczu.

Strona: klient · Czeka: nie

Sygnatura
addGlobalPed(options: TargetOption | TargetOption[]): void
addGlobalVehicle(options: TargetOption | TargetOption[]): void
addGlobalObject(options: TargetOption | TargetOption[]): void
addGlobalPlayer(options: TargetOption | TargetOption[]): void
removeGlobalPed(names?: string | string[]): void   // oraz removeGlobalVehicle, removeGlobalObject, removeGlobalPlayer
Lua
exports.ox_target:addGlobalVehicle({
    { name = 'myscript_wash', label = 'Wash vehicle', icon = 'soap', distance = 2.0,
      canInteract = function(entity) return GetVehicleDirtLevel(entity) > 5.0 end,
      onSelect = function(data) TriggerServerEvent('myscript:wash', VehToNet(data.entity)) end },
})

addGlobalOption (opcja na niczym) nie jest dostępne. Loguje ostrzeżenie i nic nie robi. Takie akcje umieszczaj zamiast tego w menu radialnym (radial z biblioteki).

disableTargeting

Wyłącza znaczniki (true) lub włącza je z powrotem (false) dla tego gracza. Strona: klient · Czeka: nie.

Sygnatura
disableTargeting(state: boolean): void

isActive

Strona: klient · Czeka: nie

Sygnatura
isActive(): boolean

Zwraca true, dopóki co najmniej jeden znacznik jest blisko gracza.

HandleInteract

Własny eksport ai-target (nie z ox_target). Klawisz interakcji AI Core najpierw pyta właśnie jego: uruchamia opcję, na której jest fokus.

Strona: klient · Czeka: nie

Sygnatura
HandleInteract(): boolean

Zwraca true, gdy użyto opcji z fokusem (lub otwarto jej menu), false, gdy nic nie ma fokusu, więc klawisz przechodzi dalej do podpowiedzi. Typowany w AiTargetClientExports. Nie musisz go wywoływać.

Zdarzenia

Brak dla innych skryptów.

Na tej stronie