☎️Client API (Exports)

HandleTextUI (id, data) -> duiHandler?

  • Purpose : Create or update a visible Text UI (sets LocalPlayer.state.TextUiBusy).

  • Data : Visible (bool), Message (string), Bind (string, default Shared.DefaultBind), UseOnlyBind (bool).

CloseTextUI(id)

  • Purpose : Hide a Text UI without removing its DUI instance.

  • Example : exports['Var-Interact']:CloseTextUI('shop_1')

RemoveTextUIs() / RemoveTextUI(id)

  • Purpose : Force cleanup (all or one) in case you need to reset state.

  • Example : exports['Var-Interact']:RemoveTextUIs()

Draw3DSprite({duiHandler, coords, maxDistance})

  • Purpose : Render the DUI as a 3D sprite with smart scaling/fading.

  • Example : exports['Var-Interact']:Draw3DSprite({duiHandler=dui,coords=vec3(x,y,z),maxDistance=8.0})

IsDuiVisible() -> boolean

  • Purpose : Check if any Text UI is currently shown (guard against overlaps).

  • Example : if exports['Var-Interact']:IsDuiVisible() then return end

HandleHoldTextUI(id, data) -> duiHandler?

  • Purpose : Start a hold‑to‑interact UI with progress and callback on completion.

  • Data :

    • UI : Visible, Message, Bind, UseOnlyBind, Icon?, Intent?

    • Hold : BindToHold (control id, default 38=E), TimeToHold (seconds), DistanceHold (meters), Coords (vector3)

    • Logic : canInteract(id, distance) (return true/false), onCallback(id) (on completion)

  • Example :

exports["Var-Interact"]:HandleHoldTextUI(
    "doorA",
    {
        Visible = true,
        Message = "Hold E to open",
        Bind = "E",
        Icon = "DoorOpen",
        Intent = "success",
        BindToHold = 38,
        TimeToHold = 2.0,
        DistanceHold = 2.0,
        Coords = GetEntityCoords(PlayerPedId()),
        canInteract = function(_, d)
            return d <= 2.0
        end,
        onCallback = function()
            TriggerEvent("my:door:open", "doorA")
            exports["Var-Interact"]:RemoveHoldTextUI("doorA")
        end
    }
)

RemoveHoldTextUIs() / RemoveHoldTextUI(id) / CloseHoldTextUI(id)

  • Purpose : Remove all/one hold interactions or just close current hold UI state.

Examples :

exports['Var-Interact']:RemoveHoldTextUIs() exports['Var-Interact']:CloseHoldTextUI('doorA')

Notes

  • Simple Text UI sends Visible, Message, Bind, UseOnlyBind and sets progress = 100 by default.

  • Hold UI additionally supports Icon, Intent, and live Progress managed internally.

  • Visibility is centralized via LocalPlayer.state.TextUiBusy.

Last updated