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
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[] }): numberlocal 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.
removeZone(id: number | string): voidid to numer zwrócony przez add*Zone albo name strefy.
zoneExists
Strona: klient · Czeka: nie
zoneExists(id: number | string): booleanZwraca 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
addModel(models: string | number | Array<string | number>, options: TargetOption | TargetOption[]): void
removeModel(models: string | number | Array<string | number>, names?: string | string[]): voidexports.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
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[]): voidOpcje globalne według rodzaju
Opcje na każdym pedzie, pojeździe, obiekcie lub graczu.
Strona: klient · Czeka: nie
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, removeGlobalPlayerexports.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.
disableTargeting(state: boolean): voidisActive
Strona: klient · Czeka: nie
isActive(): booleanZwraca 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
HandleInteract(): booleanZwraca 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.