> ## 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 V2 Store 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 V2 Store 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 store types and locations are included?">
    The script supports three store types with tier-based loot:

    * **24/7 Supermarkets** — 10 locations (FM V2 map)
    * **Gas Stations** — 5 locations
    * **Liquor Stores** — 5 locations

    Enable or disable individual locations in `Config.Stores247`, `Config.GasStations`, and `Config.LiquorStores`.
  </Accordion>

  <Accordion title="What is the difference between loud and silent approaches?">
    The **loud approach** involves threatening the clerk with an allowed weapon. Dispatch can trigger immediately, and shutter lockdown starts on a timer controlled by `Timers.Loud`.

    The **silent approach** bypasses the clerk and focuses on hacking, lockpicking, and stealth interactions. Shutter lockdown starts after successfully hacking the keypad, controlled by `Timers.Silent`.
  </Accordion>

  <Accordion title="How do I change which minigames are used?">
    Open `opensource/client/client.lua` and find the `projectx-storerobbery-fmv2: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/store-robbery-fmv2/opensource) page for the full callback code and a table of the default minigame assignments.
  </Accordion>

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

    ```lua theme={null}
    exports['projectx-storerobbery-fmv2']:Reset('Strawberry')
    ```

    See the [Commands](/resources/store-robbery-fmv2/commands) and [Exports](/resources/store-robbery-fmv2/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-store cooldowns?">
    Set `Cooldown.Global` to `true` to lock all stores when one is robbed. Set it to `false` for individual per-store cooldowns. Adjust the duration with `Cooldown.Timer` (in minutes).
  </Accordion>

  <Accordion title="How do I add a custom store location?">
    Copy an existing entry in `Config.Stores`, rename the key, and update the coordinates and interaction zones. Enable it in the matching store type table (`Config.Stores247`, `Config.GasStations`, or `Config.LiquorStores`).
  </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 (`bl_ui`, `pure-minigames`, `SN-Hacking`, `pd-safe`) are started and placed outside the robbery script folder. The bridge's `MinigameCheck` will return `false` if a minigame resource is missing.
  </Accordion>

  <Accordion title="Shutters or interior effects are causing issues" icon="triangle-exclamation">
    Set `DisableShutters` to `true` on the affected store entry in `Config.Stores`. This disables shutter and red interior effects for that location.
  </Accordion>
</AccordionGroup>
