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

# Gameplay guides

> Add stores, tune reward tiers, require police, and configure Discord logging.

## Add a store

Append a unique entry to `Config.Stores` in `config/config.lua`.

```lua config/config.lua theme={null}
{
    id = 'unique_store_id',
    label = 'Store Name',
    profile = 'standard',
    coords = vector3(0.0, 0.0, 0.0),
    clerk = { model = 'mp_m_shopkeep_01', coords = vector4(0.0, 0.0, 0.0, 0.0) },
    registers = { vector3(0.0, 0.0, 0.0) },
    shelves = { vector3(0.0, 0.0, 0.0) },
    safe = {
        coords = vector3(0.0, 0.0, 0.0),
        heading = 0.0,
        methods = { 'keypad', 'drill' },
        prop = true
    },
    tier = 1
}
```

<Steps>
  <Step title="Choose a unique ID">Use a stable lowercase identifier such as `ltd_mirror_park`. Admin commands and integrations use this ID.</Step>
  <Step title="Capture coordinates">Set the store center, clerk, register, shelf, and safe coordinates. Include the clerk and safe heading.</Step>
  <Step title="Select safe methods">Use `keypad`, `drill`, or both with the bundled `fa_minigames` preset. Legacy single `safe.method` configurations remain supported.</Step>
  <Step title="Select a reward tier">Match `tier` with an index available in `Rewards.Register`, `Rewards.Shelf`, and `Rewards.Safe`.</Step>
  <Step title="Restart and test">Restart the resource, check validator output, and test every target from the expected interaction distance.</Step>
</Steps>

## Require police

```lua config/config.lua theme={null}
Config.PoliceJobs = { 'police', 'sheriff' }
Config.MinimumPolice = 2
```

Set `MinimumPolice` inside a profile or store when locations need different rules.

## Tune rewards

Create matching tiers across all three reward tables.

```lua config/rewards.lua theme={null}
Rewards.Safe[3] = {
    { type = 'money', account = 'dirty', min = 6000, max = 14000, chance = 100 },
    { type = 'item', name = 'goldbar', min = 1, max = 2, chance = 8 }
}
```

<Warning>
  Confirm that every item exists and that the configured inventory can carry it. A full inventory leaves the target and its rolled rewards available for the same short-lived attempt token.
</Warning>

## Configure Discord logs

<Steps>
  <Step title="Create a webhook">In Discord, open **Server Settings** → **Integrations** → **Webhooks** and copy the webhook URL.</Step>

  <Step title="Set the server-only values">
    Edit `config/server_config.lua`.

    ```lua config/server_config.lua theme={null}
    ServerConfig.Logs = 'discord'
    ServerConfig.DiscordWebhook = 'https://discord.com/api/webhooks/...'
    ```
  </Step>

  <Step title="Restart and test">Restart `fa_shoprobbery` and complete a test robbery. Confirm that the configured channel receives the expected events.</Step>
</Steps>

Never share `config/server_config.lua` publicly while it contains a webhook or API key.
