Pour les developpeurs

ox_target, qtarget, qb-target

Appelez-les comme vous l'avez toujours fait. HZ-TextUi repond a 24 exports ox_target :

addBoxZone, addSphereZone, addPolyZone, removeZone, zoneExists, addGlobalPed, addGlobalVehicle, addGlobalObject, addGlobalPlayer, addGlobalOption et leurs remove*, addModel / removeModel, addLocalEntity / removeLocalEntity, addEntity / removeEntity, getTargetOptions, isActive, disableTargeting.

Les noms PascalCase de qtarget et qb-target sont servis aussi : AddBoxZone, AddCircleZone, AddPolyZone, AddEntityZone, AddTargetModel, AddTargetEntity, AddTargetBone, AddGlobalPed / Vehicle / Object / Player, et leurs Remove*. Les filtres job, gang et item sont repris.

Les champs d'option suivent ox_target et qb-target : label, icon, distance, onSelect, canInteract, groups, items, menuName, openMenu.

Les prompts HZ

Huit exports pilotent le TextUI 3D directement, avec un pin visible a la proximite plutot que sur Alt :

exports['hz_textui']:create3DTextUI('my-id', {
    coords = vector3(-1461.18, -31.48, 54.63),
    displayDist = 6.0,     -- distance a laquelle le pin apparait
    interactDist = 2.0,    -- distance a laquelle le libelle s'ouvre
    enableKeyClick = true,
    keyNum = 38, key = 'E',
    text = 'My interaction',
    theme = 'green',       -- 'green' ou 'red'
    job = 'all',
    canInteract = function() return true end,
    triggerData = { triggerName = 'my:event', isServer = false, args = {} },
})

exports['hz_textui']:update3DTextUI('my-id', 'New text', 'red')
exports['hz_textui']:delete3DTextUI('my-id')

Les autres : create3DTextUIOnEntity, create3DTextUIOnPlayers, delete3DTextUIOnPlayers, openTextUi pour un menu 3D defilant, et closeTextUi.

Une chose a savoir sur canInteract

Les options sont stockees par reference dans l'etat Lua de HZ-TextUi. Si votre ressource redemarre sans retirer ce qu'elle avait enregistre, son canInteract pointe vers un etat qui n'existe plus et echoue a chaque verification.

HZ-TextUi retire l'option apres trois echecs et affiche laquelle et depuis quelle ressource, plutot que de remplir votre console.

Retirez ce que vous avez enregistre quand votre ressource s'arrete, ou re-enregistrez-le au demarrage.