X3D Safe Cracking

Description

A safe cracking minigame — turn the dial with A and D, the light comes on at the notch, press E to lock it in. Clear every lock and it opens.

No dependencies at all, not even ESX.


Features

  • [+] Safe cracking minigame: turn the dial with A and D
  • [+] The light comes on at the notch, press E to lock it in; clear every lock to open
  • [+] One export call that blocks and hands back the result
  • [+] Set difficulty with the lock count: house 3, shop 4, bank 6
  • [+] No dependencies at all, not even ESX
  • [+] Uses GTA's own dial texture and turning sounds, nothing extra to stream
  • [+] Blocks other keys while it runs, through a state bag or an event
  • [+] Dying mid-attempt or the resource stopping closes it, nobody gets stuck

Using it

-- true when it opens, false on a miss or a cancel
-- pass a table of dial numbers (0-99), one per lock; the table length is the lock count
local ok = exports['x3d_safe']:createSafe({ 12, 47, 83, 25 })   -- 4 locks

if ok then
    -- hand over what was inside
end

One line, blocking, no callbacks to chase. Pressing E off the notch, or ESC, is a miss.


Difficulty is the lock count

More locks (more numbers in the table) means finding the notch more times. A house safe 3, a shop safe 4, a bank safe 6.


Uses what the game already ships

The dial texture and the turning sounds are GTA's own (MPSafeCracking, SAFE_CRACK). Not a byte of streamed content.


Blocking other keys while it runs

if LocalPlayer.state.minigame then return end
AddEventHandler('x3d_safe:active', function(active) ... end)

It will not strand anyone

Dying mid-attempt, or the resource stopping, closes the minigame and returns false.

Version history

  • 1.1.3 — Released 13/10/2026 00:18
  • 1.1.1 — Released 12/10/2026 10:29
  • 1.0.0 — Released 24/09/2026 10:53
Same category

Related scripts

View all products
Read more

Posts that cover this script