> For the complete documentation index, see [llms.txt](https://nyx-store.gitbook.io/nyx-store-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nyx-store.gitbook.io/nyx-store-docs/resources/nyx-atm-robbery/installation/config.md).

# Config

This is the default configuration file for NYX ATM Robberies

```lua
QBCore = exports['qb-core']:GetCoreObject()

config = {}

config.debug = false

config.prefix = 'nyx2_atmrobbery'

config.skimmers = {
    models = { -- models that the player can skim cc info from
        -1364697528,
        506770882,
        -870868698,
        2930269768,
        3168729781,
        -1126237515,
    },
    successChance = 100, -- % chance the skim of each transaction will be successful
    transactionMin = 1000, -- The min amount $ that the transaction will be
    transactionMax = 5000, --  The max amount $ that the transaction will be
    ttl = (30 * 60), -- Time to live (30 minutes) (in seconds)
    radius = 100.0, -- The radius in which the skimmer will be active for
    item = 'atm_cc_skimmer', -- the item required to skim an ATM
    skillCheckDifficulties = { -- ox lib skill difficulties
        {
            areaSize = 50,
            speedMultiplier = 1
        }, -- easy
        -- {
        --     areaSize = 40,
        --     speedMultiplier = 1.5
        -- }, -- medium
        -- {
        --     areaSize = 25,
        --     speedMultiplier = 1.75
        -- } -- hard
    },
    skillCheckMin = 2, -- The min amount of skill checks that will be done
    skillCheckMax = 5, -- The max amount of skill checks that will be done
    policeChance = 10, -- % chance the police will be alerted
    failedPoliceChance = 100, -- % chance the police will be alerted if player fails the skillchecks
    takeItem = false, -- take the item if the player fails the skill checks
    dispatch = function(success, x, y, z) -- insert your own dispatch function here
        local alert = false

        if success then
            alert = math.random(1, 100) <= config.skimmers.policeChance
        else
            alert = math.random(1, 100) <= config.skimmers.failedPoliceChance
        end

        if alert then
            exports['nyx2_dispatch']:SuspiciousActivity()
        end
    end,
    progressBar = {
        duration = math.random(10000, 15000),
        label = 'Placing CC Skimmer',
        useWhileDead = false,
        canCancel = true,
        disable = {
            car = true,
            move = true,
        },
        anim = {
            dict = 'mini@repair',
            clip = 'fixing_a_ped',
        },
        prop = {
            model = GetHashKey('hei_prop_heist_card_hack_02'),
            pos = vec3(0.15, 0.0, 0.0),
            rot = vec3(0.0, 90.0, 0.0),
        }
    }
}

config.drilling = {
    models = { -- models that the player can skim cc info from
        -1364697528,
        506770882,
        -870868698,
        2930269768,
        3168729781,
        -1126237515,
    },
    item = 'atm_drill', -- the item required to skim an ATM
    ttl = (30 * 60), -- Time to live (30 minutes) (in seconds) (cooldown)
    rewardMin = 5000, -- The min amount of cash
    rewardMax = 10000, -- The max amount of cash
    randomItemChance = 100, -- % chance the player will get a random item
    randomItem = 'security_card_02', -- the item the player will be given
    randomItemLabel = 'Security Card', -- the name of the item the player will be given
    randomItemAmount = 1, -- the amount of the item the player will be given
    startPoliceChance = 10, -- % chance the police will be alerted when the player starts drilling
    failedPoliceChance = 100, -- % chance the police will be alerted if the player fails the drilling
    successPoliceChance = 30, -- % chance the police will be alerted if the player succeeds the drilling
    takeItem = true, -- take the item if the player fails the drilling
    dispatch = function(stage, x, y, z) -- insert your own dispatch function here
        local alert = false

        if stage == 'start' then
            alert = math.random(1, 100) <= config.drilling.startPoliceChance
        elseif stage == 'success' then
            alert = math.random(1, 100) <= config.drilling.successPoliceChance
        else
            alert = math.random(1, 100) <= config.drilling.failedPoliceChance
        end

        if alert then
            exports['nyx2_dispatch']:ATMRobbery(false)
        end
    end,
}

config.towing = {
    item = 'atm_rope',
    models = {
        -1364697528,
        -1126237515
    },
    bones = {
        'attach_female', --  uncomment this to make only vehicles with a tow hitch able to tow
        -- 'neon_b', -- uncomment this to make all vehicles able to tow without a hitch
    },
    ropeType = 2, -- Which rope you want to use
    ropeDistance = 10.0, -- initial rope distance (lower increases texture tearing)
    minRequiredPulls = 1, -- the minimum amount of pulls required to break the ATM out of the wall
    maxRequiredPulls = 2, -- the maximum amount of pulls required to break the ATM out of the wall

    payoutType = 'cash',
    minPayout = 5000, -- the minimum amount of money the player will receive
    maxPayout = 10000, -- the maximum amount of money the player will receive

    attachingPoliceChance = 10, -- % chance the police will be alerted when the player starts attaching the ATM
    crackingPoliceChance = 30, -- % chance the police will be alerted when the player starts cracking the ATM

    dispatch = function(stage)
        local alert = false

        if stage == 'attaching' then
            alert = math.random(1, 100) <= config.towing.attachingPoliceChance
        else
            alert = math.random(1, 100) <= config.towing.crackingPoliceChance
        end

        if alert then
            exports['nyx2_dispatch']:ATMRobbery(false)
        end
    end
}

config.lang = {
    ['errors'] = {
        ['unknown_error'] = 'Try again later',
        ['no_vehicle'] = 'No vehicle found',
        ['wrong_vehicle'] = 'Unable to determine selected vehicle',
    },
    ['tampering'] = {
        ['check_icon'] = 'fas fa-piggy-bank',
        ['check'] = 'Check for tampering',
        ['tampered'] = 'This ATM has been tampered with',
        ['not_tampered'] = 'This ATM has not been tampered with',
    },
    ['skimming'] = {
        ['already_tampered'] = 'This ATM has already been tampered with',
        ['failed'] = 'Failed to attach CC Skimmer!',
        ['success'] = 'CC Skimmer attached successfully, stay in the area to stay connected',
        ['cancelled'] = 'Cancelled',
        ['left_radius'] = 'You left the radius of the CC Skimmer, deactivating',
        ['connecting'] = 'Somebody is using an ATM with your CC skimmer, connecting...',
        ['skim_failed'] = 'Failed to skim transaction #%s',
        ['skim_success'] = 'Successfully skimmed $%s from transaction #%s',
    },
    ['drilling'] = {
        ['already_tampered'] = 'This ATM has already been tampered with',
        ['target_drill_icon'] = 'fas fa-tools',
        ['target_drill'] = 'Drill ATM',
        ['already_drilling'] = 'You are already drilling an ATM',
        ['success'] = 'Successfully drilled the ATM and received $%s',
        ['item_found'] = 'You found a %s',
    },
    ['towing'] = {
        ['target_icon'] = 'fas fa-tools',
        ['target_attach'] = 'Attach Rope',
        ['target_detach'] = 'Detach Rope',
        ['target_crack'] = 'Crack ATM',
        ['police_icon'] = 'fas fa-piggy-bank',
        ['police_secure'] = 'Secure ATM',
        ['vehicle_first'] = 'You need to attach this to a vehicle\'s hitch first!',
        ['too_far'] = 'The ATM is too far away from the vehicle',
        ['success'] = 'You successfully cracked the ATM!',
        ['failure'] = 'You failed to crack the ATM!',
        ['rope_first'] = 'You need to attach a rope first!',
        ['atm_attached'] = 'You cannot detach whilst an ATM is still attached!',
        ['detached'] = 'Rope detached',
        ['cracked_success'] = 'Successfully cracked the ATM and received $%s',
        ['police_secured'] = 'The ATM has been secured',
    }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nyx-store.gitbook.io/nyx-store-docs/resources/nyx-atm-robbery/installation/config.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
