Skip to content

tw.prompt

Side: Client

Native RedM prompt system with groups, pages, hold-to-complete, and automatic cleanup.

Functions

tw.prompt.create(group, str, key, holdTime?, page?)

Creates a prompt in a group.

ParameterTypeDefaultDescription
groupstringGroup name. Use "interaction" for ungrouped prompts
strstringLabel text
keystring or tableInput key(s) (e.g., 'INPUT_INTERACT_OPTION1')
holdTimeinteger?0Hold duration in ms (0 = instant press)
pageinteger?0Page number within the group

Returns: integer (prompt ID)


tw.prompt.displayGroup(group, title)

Displays a prompt group for the current frame. Must be called every frame in a thread.

ParameterTypeDescription
groupstringGroup name
titlestringTitle displayed above the prompts

tw.prompt.isCompleted(group, key, fireMultipleTimes?, page?)

Checks if a prompt was activated.

ParameterTypeDefaultDescription
groupstringGroup name
keystringInput key
fireMultipleTimesboolean?falseIf true, fires continuously while held
pageinteger?active pagePage number

Returns: boolean


tw.prompt.isActive(group, key, page?)

Checks if a prompt is currently being held by the player.

Returns: boolean


tw.prompt.isEnabled(group, key, page?)

Checks if a prompt is enabled.

Returns: boolean


tw.prompt.setEnabled(group, key, value, page?)

Enable or disable a prompt.

ParameterTypeDescription
groupstringGroup name
keystringInput key
valuebooleantrue to enable, false to disable
pageinteger?Page number

tw.prompt.setVisible(group, key, value, page?)

Show or hide a prompt.

ParameterTypeDescription
groupstringGroup name
keystringInput key
valuebooleantrue to show, false to hide
pageinteger?Page number

tw.prompt.isVisible(group, key, page?)

Checks if a prompt is visible.

Returns: boolean


tw.prompt.editKeyLabel(group, key, label, page?)

Change the displayed label text of a prompt.

ParameterTypeDescription
groupstringGroup name
keystringInput key
labelstringNew label text
pageinteger?Page number

tw.prompt.getKeyLabel(group, key, page?)

Get the current label text of a prompt.

Returns: string or false


tw.prompt.waitRelease(key)

Blocking wait until the specified key is released. Yields the current thread.

ParameterTypeDescription
keystringInput key to wait for

tw.prompt.delete(group, key, page?)

Delete a single prompt from a group.


tw.prompt.deleteGroup(group)

Delete an entire prompt group and all its prompts.


tw.prompt.deleteAllGroups()

Delete all prompt groups.


tw.prompt.isGroupExist(group)

Check if a prompt group exists.

Returns: boolean


tw.prompt.isExist(group, key, page?)

Check if a specific prompt exists.

Returns: boolean


tw.prompt.getProgress(group, key, page?)

Get the hold progress of a prompt.

Returns: number (0.0 to 1.0)


tw.prompt.isPressed(key)

Raw key press check without prompt context.

Returns: boolean


tw.prompt.get(group, key, page?)

Get the native prompt ID.

Returns: integer or false


tw.prompt.getGroup(group)

Get the native group ID.

Returns: integer or false


tw.prompt.getPage(group)

Get the currently active page number of a group.

Returns: integer

Examples

Basic interaction with hold

lua
local group = "my_interaction"

tw.prompt.create(group, "Search", 'INPUT_INTERACT_OPTION1', 3000) -- hold 3s
tw.prompt.create(group, "Look Inside", 'INPUT_INTERACT_OPTION2', 0) -- instant press

CreateThread(function()
    while true do
        Wait(0)
        tw.prompt.displayGroup(group, "Trashbin")

        if tw.prompt.isCompleted(group, 'INPUT_INTERACT_OPTION1') then
            -- Search action completed after holding 3 seconds
        end
        if tw.prompt.isCompleted(group, 'INPUT_INTERACT_OPTION2') then
            -- Look inside action (instant)
        end
    end
end)

Conditional prompt visibility

lua
local group = "shop_menu"

tw.prompt.create(group, "Buy", 'INPUT_INTERACT_OPTION1')
tw.prompt.create(group, "Sell", 'INPUT_INTERACT_OPTION2')

-- Disable selling if player has no items
tw.prompt.setEnabled(group, 'INPUT_INTERACT_OPTION2', false)

-- Later, re-enable it
tw.prompt.setEnabled(group, 'INPUT_INTERACT_OPTION2', true)

Cleanup

lua
-- Delete a single prompt
tw.prompt.delete(group, 'INPUT_INTERACT_OPTION1')

-- Delete the entire group
tw.prompt.deleteGroup(group)

Notes

  • displayGroup must be called every frame (inside a while true loop with Wait(0)) for prompts to appear.
  • All prompts are automatically cleaned up when the resource stops.
  • Common input keys: 'INPUT_INTERACT_OPTION1', 'INPUT_INTERACT_OPTION2', 'INPUT_FRONTEND_ACCEPT', 'INPUT_FRONTEND_CANCEL'.

Premium RedM Scripts — Multi-Framework