A fluent API for creating and managing UI prompts in RedM with method chaining support.
Overview
The PromptBuilder provides a simple, chainable interface for creating interactive UI prompts. It automatically handles prompt registration, cleanup, and provides various configuration options through a fluent API pattern.
Basic Usage
local promptId =PromptBuilder:new() :setText("Press to interact") :setControl(`INPUT_CONTEXT`) :setVisible(true) :setEnabled(true) :build()
API Reference
PromptBuilder:new()
Creates a new prompt instance with default settings.
Returns:PromptBuilderChain - A chainable prompt builder instance
Default Settings:
Text: "Sem nome {promptId}"
Enabled: true
Visible: true
Mode: Standard
Methods
setControl
Sets the control input(s) for the prompt.
Parameters:
controlHashLike - Primary control hash or input
secondControlHashLike (optional) - Secondary control hash
Returns:PromptBuilderChain - For method chaining
setText
Sets the display text for the prompt.
Parameters:
text (string|number) - Text to display or text hash
Returns:PromptBuilderChain - For method chaining
setVisible
Controls prompt visibility.
Parameters:
visible (boolean) - Whether the prompt should be visible
PromptBuilder:new()
:setText("Press E to open door")
:setText(GetHashKey("PROMPT_OPEN_DOOR")) -- Using hash
PromptBuilder:new()
:setMode('Hold', 2000) -- Hold for 2 seconds
:setMode('AutoFill', 1500) -- Auto-fill after 1.5 seconds
PromptBuilder:new()
:setPoint({x = 100.0, y = 200.0, z = 30.0})
local shopPrompt = PromptBuilder:new()
:setText("Hold to browse shop")
:setControl(`INPUT_CONTEXT`)
:setMode('Hold', 1500)
:setPoint({x = -308.3, y = 805.7, z = 118.9})
:setRadius(2.0)
:setVisible(true)
:setEnabled(true)
:build()
-- Later in your game loop
if PromptHasHoldModeCompleted(shopPrompt) then
-- Open shop menu
TriggerEvent('shop:open')
end
local groupHash = GetHashKey("SHOP_PROMPTS")
local buyPrompt = PromptBuilder:new()
:setText("Buy Item")
:setControl(`INPUT_CONTEXT`)
:setGroup(groupHash)
:build()
local sellPrompt = PromptBuilder:new()
:setText("Sell Item")
:setControl(`INPUT_ATTACK`)
:setGroup(groupHash)
:build()
-- Display group
PromptSetActiveGroupThisFrame(groupHash, CreateVarString(10, 'LITERAL_STRING', "Shop Actions"))