Skip to main content

opensource/client/client.lua

Each robbery step triggers the projectx-laundromatrobbery-k4mb1:client:Minigames callback with the step name. All default minigames use bl_ui.
lib.callback.register('projectx-laundromatrobbery-k4mb1:client:Minigames', function(Step)
    local p = promise.new()
    if Step == "PlantEMP" then
        if not MinigameCheck("bl_ui") then p:resolve(false) return Citizen.Await(p) end
        local success = exports["bl_ui"]:WaveMatch(1, {duration = 30000})
        p:resolve(success)
    elseif Step == "Keypad" then
        if not MinigameCheck("bl_ui") then p:resolve(false) return Citizen.Await(p) end
        local success = exports["bl_ui"]:DigitDazzle(1, {length = 4, duration = 20000})
        p:resolve(success)
    end
    return Citizen.Await(p)
end)
You can return true unconditionally inside any step block to skip that minigame entirely.
The default minigames per step are:
StepMinigame ResourceFunction
PlantEMPbl_uiWaveMatch
Clothingbl_uiKeyCircle
Keybl_uiCircleShake
WashingMachinebl_uiKeySpam
Buttonbl_uiCircleProgress
Keypadbl_uiDigitDazzle

opensource/server/server.lua

Hooks

Step names are listed in Config.LaundromatSteps inside config/config.lua.
Called whenever a player fails a robbery step.
Return false to block a player from starting the robbery.
Called whenever the heist resets.