> ## Documentation Index
> Fetch the complete documentation index at: https://docs.projectx.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQs

> Frequently asked questions about the FM Ammunation Robbery resource

## General Questions

<AccordionGroup>
  <Accordion title="What frameworks are supported?">
    The script supports QBCore, Qbox, and ESX through the Project X Bridge. Set `Framework` to `'auto'` in the bridge config and it will detect your framework automatically.
  </Accordion>

  <Accordion title="Do I need the Project X Bridge?">
    Yes. The bridge is required for this script to function. It handles framework detection, inventory, dispatch, notifications, progressbars, XP, evidence, logs, and global cooldowns. See the [Bridge Installation](/resources/bridge/installation) page for setup instructions.

    When you purchase FM Ammunation Robbery, the `projectx-bridge` asset is automatically delivered to your CFX portal.
  </Accordion>

  <Accordion title="What dispatch systems are supported?">
    The bridge supports 25+ dispatch systems including PS Dispatch, CodeSign, LB Tablet, FD Dispatch, Wasabi MDT, Sonoran CAD, and many more. Set `Dispatch` to `'auto'` in the bridge config for automatic detection. See the [Bridge Overview](/resources/bridge/overview) for the full list.
  </Accordion>

  <Accordion title="What location types are included?">
    The script supports two location types:

    * **Shooting Ranges** — Large locations such as Pillbox Hill and Cypress Flats
    * **Gun Stores** — Smaller Ammunation locations across the map

    Enable or disable individual locations in `Config.ShootingRanges` and `Config.GunStores`.
  </Accordion>

  <Accordion title="What is the difference between loud and silent approaches?">
    The **loud approach** involves threatening the employee with an allowed weapon. Dispatch can trigger immediately when the loud approach begins.

    The **silent approach** focuses on hacking, lockpicking, and stealth interactions. Dispatch timing is controlled by `DispatchLocation`.
  </Accordion>

  <Accordion title="How do I change which minigames are used?">
    Open `opensource/client/client.lua` and find the `projectx-ammunationrobbery-fm:client:Minigames` callback. Each robbery step has its own `elseif` block where you can swap the minigame export for any resource you prefer. You can also return `true` inside any block to skip that minigame entirely.

    See the [Open Source](/resources/ammunation-robbery-fm/opensource) page for the full callback code and a table of the default minigame assignments.
  </Accordion>

  <Accordion title="How do I reset a location manually?">
    Use the `/projectxammunation` in-game command (requires admin permissions) to reset the nearest location, or call the `Reset(location)` server export from another resource:

    ```lua theme={null}
    exports['projectx-ammunationrobbery-fm']:Reset('PillboxHill')
    ```

    See the [Commands](/resources/ammunation-robbery-fm/commands) and [Exports](/resources/ammunation-robbery-fm/exports) pages for more details.
  </Accordion>
</AccordionGroup>

## Configuration Questions

<AccordionGroup>
  <Accordion title="How do I require a minimum number of police?">
    Set `MinimumPolice` to the number you want in `config/config.lua`, and make sure the correct jobs are listed in `PoliceJobs`.

    ```lua theme={null}
    MinimumPolice = 2,
    PoliceJobs = {"police", "fbi"},
    ```
  </Accordion>

  <Accordion title="How do I gate robberies behind an XP or level requirement?">
    Set `SkillSystem` to `true` and configure `MinimumLevel` in `config/config.lua`. You also need a compatible XP system integrated in the bridge config (`XPSystem`).

    Supported systems include `pickle_xp`, `sd-levels`, `cw-rep`, and `OT_skills`.
  </Accordion>

  <Accordion title="How do I set up bonus items at the end of a robbery?">
    Enable `Bonus.Status` and configure the `Bonus.Items` table in `config/config.lua`. Each item has a `Chance` percentage and an `Amount` range.

    ```lua theme={null}
    Bonus = {
        Status = true,
        BonusChance = 15,
        ItemCount = 1,
        Items = {
            {Name = "x_device", Chance = 30, Amount = {min = 1, max = 1}},
        }
    }
    ```
  </Accordion>

  <Accordion title="How do I use global vs per-location cooldowns?">
    Set `Cooldown.Global` to `true` to lock all Ammunation locations when one is robbed. Set it to `false` for individual per-location cooldowns. Adjust the duration with `Cooldown.Timer` (in minutes).
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The script won't start" icon="triangle-exclamation">
    Make sure you have all required dependencies started before the script in your `server.cfg` (`projectx-bridge`, `ox_lib`, minigames).
  </Accordion>

  <Accordion title="Minigames fail immediately" icon="triangle-exclamation">
    Verify all minigame resources (`boii_minigames`, `bl_ui`, `pure-minigames`, `SN-Hacking`) are started and placed outside the robbery script folder. The bridge's `MinigameCheck` will return `false` if a minigame resource is missing.
  </Accordion>
</AccordionGroup>
