ai-target pour les développeurs
L’API client d’ox_target à laquelle répond ai-target, la forme d’une option, ce que reçoit le gestionnaire d’une option, et l’export HandleInteract.
Pour vos propres lieux, PNJ et options de modèles, utilisez les points d’interaction d’AI Core : Points de la lib en TypeScript ou aiLib.Points en Lua (voir la référence de la lib). Un point s’affiche comme une invite ou comme un marqueur de ciblage, selon le choix du propriétaire, sur le script de ciblage qui tourne, quel qu’il soit, et le même onPressed s’exécute dans les deux cas. N’appelez l’API ci-dessous que pour porter un script écrit pour ox_target.
Exports
Chaque export est côté client, répond sous exports['ai-target'] comme sous exports.ox_target (ai-target fait un provide d’ox_target), et n’attend pas. Les options appartiennent à la ressource qui les a ajoutées et sont retirées quand elle s’arrête.
TargetOption
La forme d’option que prend chaque export add*, une option ou une liste. Une option sans label est ignorée.
Prop
Type
TargetResponse
Ce que reçoivent onSelect, export, event et serverEvent.
Prop
Type
addBoxZone
Ajoute une zone en forme de boîte avec des options. addSphereZone et addPolyZone fonctionnent de la même façon avec d’autres formes.
Côté : client · Attend : non
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 = { ... } })Paramètres
Prop
Type
Retour
number : l’id de la zone. 0 quand les coordonnées sont absentes ou invalides (un avertissement est journalisé).
Exemple
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);
});Les zones d’une ressource sont retirées quand cette ressource s’arrête, donc le gestionnaire d’arrêt ci-dessus est facultatif. Retirez vous-même une zone quand le lieu disparaît alors que votre ressource continue de tourner.
removeZone
Retire une zone. Côté : client · Attend : non.
removeZone(id: number | string): voidid est le numéro qu’a renvoyé add*Zone, ou le name de la zone.
zoneExists
Côté : client · Attend : non.
zoneExists(id: number | string): booleanRenvoie true tant que la zone avec ce numéro ou ce nom existe.
addModel
Place des options sur chaque entité de ces modèles (portes d’un modèle, distributeurs, bennes).
Côté : client · Attend : non
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 } })Paramètres
Prop
Type
Retour
Rien.
addEntity et addLocalEntity
addEntity place des options sur des entités en réseau par network id (véhicules ou peds créés par le serveur). addLocalEntity les place sur des entités par handle (un ped ou un prop créé par votre client). Chacun a un jumeau remove* qui prend les mêmes id et des noms d’options facultatifs.
Côté : client · Attend : non
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[]): voidOptions globales par type
Des options sur chaque ped, véhicule, objet ou joueur.
Côté : client · Attend : non
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 // et 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 (une option rattachée à rien) n’est pas proposé. Il journalise un avertissement et ne fait rien. Placez plutôt ces actions dans le menu radial (radial de la lib).
disableTargeting
Désactive les marqueurs (true) ou les réactive (false) pour ce joueur. Côté : client · Attend : non.
disableTargeting(state: boolean): voidisActive
Côté : client · Attend : non.
isActive(): booleanRenvoie true tant qu’au moins un marqueur est proche du joueur.
HandleInteract
L’export propre à ai-target (pas celui d’ox_target). La touche d’interaction d’AI Core l’interroge en premier : il exécute l’option qui a le focus.
Côté : client · Attend : non
HandleInteract(): booleanRenvoie true quand une option ayant le focus a été utilisée (ou que son menu s’est ouvert), false quand rien n’a le focus, et la touche passe alors aux invites. Typé dans AiTargetClientExports. Vous n’avez pas besoin de l’appeler.
Events
Aucun pour les autres scripts.
ai-target
L’œil de ciblage. Des marqueurs sur ce avec quoi un joueur peut interagir ; la touche d’interaction en choisit un. Répond à l’API d’ox_target.
ai-scoreboard
Maintenez Origine (Home) pour voir combien de joueurs sont en ligne, combien de policiers, de médecins et d’autres sont en service, et qui joue.