API y configuración
exports['fr_progressbar']:Start(opts) → id
Inicia una nueva barra de progreso. Si ya hay una activa, la cancela automáticamente antes de iniciar la nueva.
Opciones
| Opción | Tipo | Requerido | Descripción |
|---|---|---|---|
label | string | ✅ | Texto mostrado en la barra |
duration | number | ✅ | Duración en milisegundos |
icon | string | — | Nombre de icono o <svg> raw |
color | string | — | 'blue' | 'red' | 'green' | 'yellow' (default: 'blue') |
canCancel | boolean | — | El jugador puede pulsar la tecla de cancelación (default: true) |
cancelOnMove | boolean | — | Cancela si el jugador se mueve (default: false) |
cancelOnDeath | boolean | — | Cancela al morir (default: Config.CancelOnDeath) |
onComplete | function | — | Callback al completarse naturalmente |
onCancel | function | — | Callback al cancelarse por cualquier motivo |
Devuelve el id de la barra (string) o nil si duration es <= 0.
local id = exports['fr_progressbar']:Start({
label = 'Buscando en el cuerpo...',
duration = 6000,
icon = 'search',
color = 'blue',
canCancel = true,
cancelOnMove = true,
onComplete = function() print('Completo') end,
onCancel = function() print('Cancelado') end,
})
exports['fr_progressbar']:Stop(id?)
Para una barra activa programáticamente. Dispara onCancel si la barra existe.
exports['fr_progressbar']:Stop() -- para cualquier barra activa
exports['fr_progressbar']:Stop(id) -- para una barra específica por id
exports['fr_progressbar']:IsActive() → boolean
Devuelve true si hay una barra activa en ese momento.
if exports['fr_progressbar']:IsActive() then
-- no inicies otra todavía
end
Ejemplos de uso
Curación (verde, cancela al moverse)
exports['fr_progressbar']:Start({
label = 'Aplicando vendaje...',
duration = 4000,
icon = 'medical',
color = 'green',
cancelOnMove = true,
onComplete = function()
-- aplicar curación
end,
})
Acción criminal (rojo, cancelable)
exports['fr_progressbar']:Start({
label = 'Hackeando terminal...',
duration = 12000,
icon = 'lock',
color = 'red',
canCancel = true,
onComplete = function()
-- recompensa
end,
onCancel = function()
-- abortar
end,
})
Desde otro recurso (cross-resource callbacks)
-- Los callbacks pasados a través de exports se convierten en funcrefs de FiveM.
-- fr_progressbar maneja esto automáticamente con el patrón isCallable().
exports['fr_progressbar']:Start({
label = 'Trabajando...',
duration = 5000,
onComplete = function() TriggerServerEvent('myresource:done') end,
})
Configuración (config.lua)
| Clave | Por defecto | Descripción |
|---|---|---|
Config.Locale | 'es' | Idioma de la UI: 'en' o 'es' |
Config.CancelKey | 194 | Código de control FiveM para la tecla de cancelación (Backspace) |
Config.CancelKeyLabel | 'Backspace' | Etiqueta legible mostrada en la barra |
Config.MoveThreshold | 1.5 | Metros que el jugador debe moverse para activar cancelOnMove |
Config.CancelOnDeath | true | Valor por defecto global; las llamadas individuales pueden sobreescribirlo |