ProgressBar
License: LGPL-3.0 (GNU Lesser General Public License v3.0)
This resource is based on ox_lib which is licensed under LGPL-3.0.
⚠️ This redesign is a paid product. Only verified purchasers are eligible for support and updates. Unverified users will not receive any assistance under any circumstances.
Overview
3 progressbar designs available via the ox:progressbar convar. Each design has both a bar variant and a circle variant.
# config.cfg
set ox:progressbar 0
Designs
| Value | Name | Bar | Circle |
|---|---|---|---|
0 |
Linear Bar + Circle Ring | Standard linear bar | Smooth circle ring |
1 |
Diagonal Loading | Diagonal striped bar | Diagonal striped ring |
2 |
Dot Progress | Animated dot bar | Animated dot ring |
Design 0 — Linear Bar + Circle Ring


Design 1 — Diagonal Loading


Design 2 — Dot Progress


Usage
lib.progressBar(data)
Displays a linear progress bar.
lib.progressBar({
duration = 5000,
label = 'Processing...',
useWhileDead = false,
canCancel = true,
disable = {
car = true,
move = true,
combat = true,
},
anim = {
dict = 'anim@amb@nightclub@mini@drinking@drinking_shots@ped_a@normal',
clip = 'bottle_drink_drink_shots_bottle_a',
},
})
lib.progressCircle(data)
Displays a circular progress indicator.
lib.progressCircle({
duration = 3000,
label = 'Repairing...',
canCancel = true,
disable = {
move = true,
},
})
Parameters
| Field | Type | Default | Description |
|---|---|---|---|
duration |
number |
— | Duration in milliseconds (required) |
label |
string? |
nil |
Display text |
position |
'middle' | 'bottom' |
'middle' |
Screen position |
useWhileDead |
boolean? |
false |
Allow while dead |
allowRagdoll |
boolean? |
false |
Allow while ragdolled |
allowCuffed |
boolean? |
false |
Allow while handcuffed |
allowFalling |
boolean? |
false |
Allow while falling |
allowSwimming |
boolean? |
false |
Allow while swimming |
canCancel |
boolean? |
false |
Allow cancel with Backspace |
disable
| Field | Type | Description |
|---|---|---|
move |
boolean? |
Disable player movement |
sprint |
boolean? |
Disable sprinting |
car |
boolean? |
Disable vehicle entry |
combat |
boolean? |
Disable combat actions |
mouse |
boolean? |
Disable mouse look |
anim
| Field | Type | Description |
|---|---|---|
dict |
string? |
Animation dictionary |
clip |
string |
Animation clip name |
flag |
number? |
Animation flag |
blendIn |
number? |
Blend in speed |
blendOut |
number? |
Blend out speed |
scenario |
string? |
Scenario name (alternative to dict/clip) |
prop
| Field | Type | Description |
|---|---|---|
model |
string | number |
Prop model name/hash |
bone |
number? |
Bone index to attach to |
pos |
vector3 |
Position offset |
rot |
vector3 |
Rotation offset |
Return Value
| Type | Description |
|---|---|
boolean |
true if completed, false if cancelled |
Utility Functions
lib.progressActive()
Returns whether a progress bar/circle is currently active.
local isActive = lib.progressActive() -- boolean
lib.cancelProgress()
Cancels the active progress if canCancel was set to true.
lib.cancelProgress()
Examples
Fishing with cancel
if lib.progressCircle({
duration = 8000,
label = 'Fishing...',
canCancel = true,
disable = { move = true, combat = true },
}) then
-- Caught a fish
else
-- Cancelled
end
Vehicle Repair
if lib.progressBar({
duration = 10000,
label = 'Repairing Vehicle...',
canCancel = false,
disable = { move = true, car = true, combat = true },
anim = {
dict = 'mini@repair',
clip = 'fixing_a_player',
},
}) then
-- Repair complete
end
Last updated: 2026-02-18