ai-target für Entwickler
Die Client-API von ox_target, die ai-target beantwortet, die Struktur der Optionen, was der Handler einer Option bekommt, und der Export HandleInteract.
Für deine eigenen Orte, NPCs und Modelloptionen nutze die Interaktionspunkte von AI Core: Points der Lib in TypeScript oder aiLib.Points in Lua (siehe die Lib-Referenz). Ein Punkt erscheint als Prompt oder als Target-Marker, je nachdem, was der Betreiber gewählt hat, auf dem gerade laufenden Target-Skript, und in beiden Fällen läuft dasselbe onPressed. Rufe die API unten nur auf, wenn du ein für ox_target geschriebenes Skript portierst.
Exports
Jeder Export läuft clientseitig, antwortet sowohl unter exports['ai-target'] als auch unter exports.ox_target (ai-target providet ox_target) und wartet nicht. Optionen gehören der Ressource, die sie hinzugefügt hat, und werden entfernt, wenn sie stoppt.
TargetOption
Die Optionsstruktur, die jeder add*-Export nimmt, eine Option oder eine Liste. Eine Option ohne label wird weggelassen.
Prop
Type
TargetResponse
Was onSelect, export, event und serverEvent bekommen.
Prop
Type
addBoxZone
Fügt eine quaderförmige Zone mit Optionen hinzu. addSphereZone und addPolyZone funktionieren genauso mit anderen Formen.
Seite: Client · Wartet: nein
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 = { ... } })Parameter
Prop
Type
Rückgabewert
number: die Zonen-ID. 0, wenn die Koordinaten fehlen oder ungültig sind (eine Warnung wird geloggt).
Beispiel
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);
});Zonen einer Ressource werden entfernt, wenn diese Ressource stoppt, der Stop-Handler oben ist also optional. Entferne eine Zone selbst, wenn der Ort wegfällt, während deine Ressource weiterläuft.
removeZone
Entfernt eine Zone. Seite: Client · Wartet: nein.
removeZone(id: number | string): voidid ist die Nummer, die add*Zone zurückgegeben hat, oder der name der Zone.
zoneExists
Seite: Client · Wartet: nein.
zoneExists(id: number | string): booleanGibt true zurück, solange die Zone mit dieser Nummer oder diesem Namen existiert.
addModel
Setzt Optionen auf jede Entity dieser Modelle (Türen eines Modells, Geldautomaten, Müllcontainer).
Seite: Client · Wartet: nein
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 } })Parameter
Prop
Type
Rückgabewert
Nichts.
addEntity and addLocalEntity
addEntity setzt Optionen auf vernetzte Entities per Network-ID (Fahrzeuge oder Peds, die der Server erstellt hat). addLocalEntity setzt sie auf Entities per Handle (ein Ped oder Prop, das dein Client erstellt hat). Jeder hat ein remove*-Gegenstück, das dieselben IDs und optional Optionsnamen nimmt.
Seite: Client · Wartet: nein
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[]): voidGlobale Optionen nach Art
Optionen auf jedem Ped, Fahrzeug, Objekt oder Spieler.
Seite: Client · Wartet: nein
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 // und 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 (eine Option auf nichts) wird nicht angeboten. Es loggt eine Warnung und tut nichts. Lege solche Aktionen stattdessen ins Radialmenü (radial der Lib).
disableTargeting
Schaltet die Marker für diesen Spieler aus (true) oder wieder ein (false). Seite: Client · Wartet: nein.
disableTargeting(state: boolean): voidisActive
Seite: Client · Wartet: nein.
isActive(): booleanGibt true zurück, solange mindestens ein Marker in der Nähe des Spielers ist.
HandleInteract
Der eigene Export von ai-target (nicht der von ox_target). Die Interaktionstaste von AI Core fragt ihn zuerst: Er führt die Option im Fokus aus.
Seite: Client · Wartet: nein
HandleInteract(): booleanGibt true zurück, wenn eine Option im Fokus benutzt (oder ihr Menü geöffnet) wurde, false, wenn nichts im Fokus ist, sodass die Taste an die Hinweise weitergeht. Typisiert in AiTargetClientExports. Du musst ihn nicht aufrufen.
Events
Keine für andere Skripte.