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.
| Parameter | Type | Default | Description |
|---|---|---|---|
group | string | — | Group name. Use "interaction" for ungrouped prompts |
str | string | — | Label text |
key | string or table | — | Input key(s) (e.g., 'INPUT_INTERACT_OPTION1') |
holdTime | integer? | 0 | Hold duration in ms (0 = instant press) |
page | integer? | 0 | Page 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.
| Parameter | Type | Description |
|---|---|---|
group | string | Group name |
title | string | Title displayed above the prompts |
tw.prompt.isCompleted(group, key, fireMultipleTimes?, page?)
Checks if a prompt was activated.
| Parameter | Type | Default | Description |
|---|---|---|---|
group | string | — | Group name |
key | string | — | Input key |
fireMultipleTimes | boolean? | false | If true, fires continuously while held |
page | integer? | active page | Page 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.
| Parameter | Type | Description |
|---|---|---|
group | string | Group name |
key | string | Input key |
value | boolean | true to enable, false to disable |
page | integer? | Page number |
tw.prompt.setVisible(group, key, value, page?)
Show or hide a prompt.
| Parameter | Type | Description |
|---|---|---|
group | string | Group name |
key | string | Input key |
value | boolean | true to show, false to hide |
page | integer? | 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.
| Parameter | Type | Description |
|---|---|---|
group | string | Group name |
key | string | Input key |
label | string | New label text |
page | integer? | 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.
| Parameter | Type | Description |
|---|---|---|
key | string | Input 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
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
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
-- Delete a single prompt
tw.prompt.delete(group, 'INPUT_INTERACT_OPTION1')
-- Delete the entire group
tw.prompt.deleteGroup(group)Notes
displayGroupmust be called every frame (inside awhile trueloop withWait(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'.

