Skip to main content
Bridge.SkillCheck runs a short timing minigame and blocks until the player passes or fails. Use it to gate an action behind a quick test of timing — lockpicking, hacking, hotwiring. It returns a single boolean. Three styles are available:
  • circle — a pointer sweeps a ring; press the key while it’s in the highlighted zone.
  • bar — a marker ping-pongs across a bar; press the key inside the zone.
  • keys — type a random key sequence before the timer runs out.

Availability

Client only. Yields until the round(s) finish.
local passed = Bridge.SkillCheck.Run(opts)   -- boolean

Signature

Bridge.SkillCheck.Run(opts)
type
string
default:"circle"
circle, bar, or keys.
rounds
number
default:"1"
How many consecutive zones the player must hit (circle / bar). Every round must pass.
zone
number
default:"0.16"
The hit-zone size as a fraction of the track, 0..1 (circle / bar). Smaller is harder.
speed
number
Milliseconds per sweep cycle for circle / bar (default 1200), or the total time limit for keys (default 3000). Also accepted as speedMs.
key
string
default:"Space"
The key glyph to press inside the zone (circle / bar). Space and Enter also always work.
length
number
default:"5"
The number of keys in the sequence for the keys type.

Returns

passed
boolean
true if the player cleared every round, false if they missed a zone, pressed a wrong key, or ran out of time.

Examples

CreateThread(function()
    local passed = Bridge.SkillCheck.Run({ rounds = 3, zone = 0.2, speed = 1200, key = 'e' })
    if passed then pickLock() else failLock() end
end)
Bridge.SkillCheck.Run yields until the minigame ends. Call it inside a CreateThread, command, or event callback.
The pointer, zone, and progress tint to the player’s theme accent (turning green on a hit, red on a miss). Set atlas:ui "ox" (or atlas:ui:skillcheck "ox") to render the same call through ox_lib’s skill check instead.