Free FiveM minigame scripts: lockpick and safe cracking in one export call, plus rewards cheaters can't fake
Free FiveM minigame scripts from X3D: X3D Lockpick (WASD pin finding), X3D Safe Cracking (GTA-style dial with no dependencies, not even ESX) and X3D House Robbery, which uses both. One blocking export call, difficulty you set, other keys blocked while playing, and server-side code that stops players from simply reporting a win.
Minigames give city jobs a rhythm: picking a door, cracking a safe, robbing a house. Most minigame scripts share the same problems, though. They need several layers of callbacks, they don't block other keys while running, and worst of all they pay out whenever the player's PC says it passed, which a cheat menu can claim every second.
This post rounds up X3D's free minigames and how to wire them into your scripts safely.
Related scripts
X3D LockpickA lockpick minigame felt out with WASD, called with one export and usable from any script.Free
X3D Safe CrackingA dial-cracking minigame: turn with A and D, press E on the notch. One export, no dependencies.Free
X3D House RobberyPick the door, search the floor, crack the safe, with a cooldown per house and both minigames in the same zip.Free
Free minigames ready to use
| Script | How it plays | Call | Needs |
|---|---|---|---|
| X3D Lockpick | find the pin with WASD, close or far, ESC to give up | exports['x3d_lockpick']:miniGameLockPick(4) |
no framework |
| X3D Safe Cracking | turn the dial with A/D, the light comes on at the notch, press E | exports['x3d_safe']:createSafe(4) |
no dependencies at all, not even ESX |
| X3D House Robbery | pick the door, search the rooms, crack the safe, walk out | uses both minigames above (separate install) or ox_lib | ESX / standalone |
All three are free, in Thai and English.
X3D Lockpick: pick anything
local ok = exports['x3d_lockpick']:miniGameLockPick(4)
if ok then
-- open the door, start the car, open the locker
end
- Difficulty is the pin count. 3–6 is the useful range: a house door 3, a safe 5, a storeroom 6
- One blocking call hands you the result; no callbacks or events to chase
- Dying mid-attempt, or the resource stopping, closes the minigame and returns
false, so nobody gets stuck on screen
X3D Safe Cracking: a GTA-style safe
local ok = exports['x3d_safe']:createSafe(4)
if ok then
-- hand over what was inside
end
- Difficulty is the lock count: a house safe 3, a shop safe 4, a bank safe 6
- Uses the game's own dial texture and turning sounds (
MPSafeCracking,SAFE_CRACK), so not a byte of streamed content - No dependencies: works on ESX, QBCore or standalone
Blocking other keys while it runs
Both set a state bag any script can read:
if LocalPlayer.state.minigame then return end
Put that line in your inventory, menu or phone key handler and players can't open a second UI mid-pick, which is both a dupe route and an FPS drain. X3D Progress Bar uses the same state bag. If you'd rather drive a HUD yourself, listen to x3d_lockpick:active or x3d_safe:active.
Paying out without getting cheated
The minigame always runs on the player's PC, so its "passed" result can't be trusted on its own: a cheater can fire your reward event without playing at all. The rule is that the server opens the attempt and the server decides whether that attempt pays:
-- server
local attempts = {}
RegisterNetEvent('myrob:start', function(spotId)
local src = source
if not nearSpot(src, spotId) or onCooldown(spotId) then return end
attempts[src] = { spot = spotId, at = os.time() }
TriggerClientEvent('myrob:play', src, spotId)
end)
RegisterNetEvent('myrob:finish', function(ok)
local src = source
local a = attempts[src]
attempts[src] = nil
if not a or not ok then return end
if os.time() - a.at < MIN_SECONDS then return end
if not nearSpot(src, a.spot) then return end
startCooldown(a.spot)
giveLoot(src, a.spot)
end)
AddEventHandler('playerDropped', function()
attempts[source] = nil
end)
-- client
RegisterNetEvent('myrob:play', function()
local ok = exports['x3d_lockpick']:miniGameLockPick(4)
TriggerServerEvent('myrob:finish', ok)
end)
nearSpot, onCooldown, startCooldown, giveLoot and MIN_SECONDS are your own script's functions and value. What this closes:
- Sending
finish(true)alone does nothing: the server must have opened an attempt first, and each attempt pays once - Finishing faster than a real player could earns nothing
- The player must still be at the spot when finishing, not open an attempt and teleport away
- Loot and cooldowns live on the server; the client never picks them
The same rules apply to every script that moves money or items; the full version is in basic FiveM server security without an anticheat.
A finished example: X3D House Robbery
If you'd rather not build it, X3D House Robbery is a complete house robbery loop on top of both minigames: walk up to a house that hasn't been hit, press E, pick the door, search the rooms for randomised loot, crack the safe for the better haul, and walk out. A robbed house goes on cooldown and its label turns red. Floor and safe loot have separate tables, and everything is set in config.lua.
Install: since 1.2.0 the minigames are no longer inside the House Robbery zip. Download X3D Lockpick and X3D Safe Cracking separately (free), put them in resources/ and ensure them first. Without them it falls back to the ox_lib skill check (Config.Minigame = 'auto'):
ensure x3d_lockpick
ensure x3d_safe
ensure x3d_houserobbery
(The minigames are separate resources because FiveM allows one ui_page per resource and each minigame has its own screen.)
FAQ
Does it work with QBCore? — X3D Lockpick and X3D Safe Cracking are framework-free; call the export from any script. X3D House Robbery runs on ESX or standalone.
How do I change the difficulty? — Pass the number to the export: pins for the lockpick, locks for the safe.
Does a player get stuck if they die mid-game? — No. The minigame closes and returns false.
Is there a shop robbery? — Right now there is the house robbery (X3D House Robbery). To build a shop robbery yourself, combine the lockpick and safe with the server code above, or talk to the team about custom work through a Discord ticket.
The other free scripts are in free FiveM scripts.
Related scripts
X3D LockpickA lockpick minigame felt out with WASD, called with one export and usable from any script.Free
X3D Safe CrackingA dial-cracking minigame: turn with A and D, press E on the notch. One export, no dependencies.Free
X3D House RobberyPick the door, search the floor, crack the safe, with a cooldown per house and both minigames in the same zip.Free