# UK Active Station (QB/ESX)

Welcome to the official documentation for the UK Active Station **Resource**.

&#x20;***LGMods ActiveStation*** is the ultimate police station management system that transforms your law enforcement facility into a fully interactive and immersive environment. Designed specifically for the LGMods UK Police Station (Sinner Street), this comprehensive script brings every aspect of police station operations to life with realistic features and seamless roleplay integration.

### Installation

Follow these steps to install the resource on your server:

1. **Download & Extract**: Download the resource folder and extract it into your server's `resources` directory. Ensure the folder is named `LGMods_ActiveStation`.
2. **Configuration**: Open `config.lua` and configure your settings (Framework, etc.).
3. **Server Config**: Add the following to your `server.cfg`:

   ```lua
   ensure LGMods_ActiveStation
   ```

{% hint style="info" %}
**ℹ️ Note**\
These instructions assume you have a working FiveM server that you can already connect to.\
For help setting up a FiveM server, see: [FiveM Server Setup Guide](https://docs.fivem.net/docs/server-manual/setting-up-a-server/)
{% endhint %}

### General & Framework Settings

#### Framework Configuration

**Config.Framework**\
Set your server framework.

**Options:**

* `'qbcore'`
* `'esx'`
* `'auto'` (recommended – automatically detects your framework)

```
Config.Framework = 'auto' -- 'qbcore', 'esx', or 'auto'
```

***

#### Target System

**Config.TargetSystem**\
Choose which targeting system your server uses.

**Options:**

* `'ox_target'`
* `'qb-target'`

```
Config.TargetSystem = 'ox_target' -- 'ox_target' or 'qb-target'
```

***

#### Law Enforcement Job Access

**Config.LawEnforcementJobs**\
Define which jobs are allowed to access the system.\
Set a job name to `true` to grant permission.

```
Config.LawEnforcementJobs = {
    ['police'] = true
}
```

***

#### LGMods MDT Integration

**Config.useLGModsMDT**\
Enable this only if you have the LGMods MDT resource installed.

```
Config.useLGModsMDT = false
```

***

#### Station Configuration

**Config.StationName**\
The name of the station used in alerts, logs, or UI display.

```
Config.StationName = "Sinner Street Station"
```

***

#### Alarm Test Duration

**Config.AlarmTestDuration**\
Duration (in seconds) for alarm test functionality.

```
Config.AlarmTestDuration = 10
```

### Alarm Configuration

#### Sinner Street Station Alarm

```
-- Alarm config for Sinner Street Station
Config.AlarmSound = {
    enabled = true,          # Enable or disable the alarm sound
    volume = 100,            # Alarm volume level (0–100)
    file = "sounds/alarm.mp3", # Path to the alarm sound file
    distance = 100.0         # Maximum distance (in game units) the alarm can be heard
}
```

***

### Inventory Configuration

```
Config.Inventory = {
    System = "ox_inventory", # Inventory system: qb-inventory, ox_inventory, esx
    WeightUnit = "g",        # Weight measurement unit (recommended: g)
    UseSerialNumbers = true, # Enable or disable serial number generation
    SerialFormat = "UKPS-%d%d%d%d%d", # Format used for generated serial numbers
    Debug = false            # Enable debug logging for troubleshooting
}
```

***

### Sandy Station Fire Alarm Configuration

#### Fire Alarm Sound

```
-- Alarm config for Sandy Station
Config.FireAlarmSound = {
    enabled = true,            # Enable or disable fire alarm sound
    volume = 80,               # Alarm volume level (0–100)
    file = "sounds/fire_alarm.MP3", # Path to the fire alarm sound file
    distance = 150.0           # Maximum audible distance
}
```

***

#### Fire Alarm Lights

```
Config.FireAlarmLights = {
    enabled = true,          # Enable or disable red flashing lights
    flashOnDuration = 800,   # Duration (ms) the light stays ON
    flashOffDuration = 400,  # Duration (ms) the light stays OFF
    lightColor = {255, 0, 0}, # RGB light color (default red)
    lightRange = 3.0,        # Radius of the light effect
    lightIntensity = 100.0   # Brightness level (0–255)
}
```

### Armory Configuration

```
Config.ArmoryLocation = vector3(488.44, -997.49, 30.69) # Location of the armory interaction point
Config.ArmoryPin = "4321"                               # PIN code required to access the armory
Config.ArmoryRange = 1.5                                 # Interaction distance from the armory location
```

***

### Equipment Checkout Items

```
Config.BodycamItem = "phone"          # Item received when checking out a bodycam
Config.TaserItem = "WEAPON_STUNGUN"   # Item received when checking out a taser
```

***

### Debug Mode

```
Config.Debug = true # Enable console debug messages for troubleshooting
```

***

### Mugshot System Configuration

```
Config.MugshotSystem = {
    DiscordWebhook = {
        enabled = true,             # Enable or disable Discord webhook integration
        url = "discord_webhook_here", # Replace with your Discord webhook URL
        embedColor = 3447003,       # Embed sidebar color (decimal format, 3447003 = blue)
    }
}
```

### Clothing Station Configuration

```
Config.ClothingStations = {
    {
        id = "sinner_street_station", -- Unique identifier for this clothing station
        location = vector3(456.0962, -988.3626, 30.6898), -- World location of the clothing station
        heading = 5.0585, -- Player heading when opening the clothing menu
        range = 2.0, -- Interaction distance required to access the station
        menuTitle = "Sinner Street Station - Clothing", -- Title displayed in the clothing menu

        outfits = {
            {
                name = "Police Uniform", -- Outfit display name
                description = "Standard police officer uniform", -- Outfit description shown in menu
                components = {
                    ["torso"] = { drawableId = 11, textureId = 0, paletteId = 0 }, -- Jacket / upper body
                    ["undershirt"] = { drawableId = 15, textureId = 0, paletteId = 0 }, -- Undershirt
                    ["legs"] = { drawableId = 4, textureId = 0, paletteId = 0 }, -- Trousers
                    ["shoes"] = { drawableId = 10, textureId = 0, paletteId = 0 }, -- Footwear
                    ["accessory"] = { drawableId = 0, textureId = 0, paletteId = 0 }, -- Accessories (radio, etc.)
                    ["kevlar"] = { drawableId = 0, textureId = 0, paletteId = 0 } -- Body armour
                }
            },

            {
                name = "Detective Outfit", -- Outfit display name
                description = "Plain clothes detective outfit", -- Outfit description
                components = {
                    ["torso"] = { drawableId = 4, textureId = 0, paletteId = 0 },
                    ["undershirt"] = { drawableId = 4, textureId = 0, paletteId = 0 },
                    ["legs"] = { drawableId = 0, textureId = 0, paletteId = 0 },
                    ["shoes"] = { drawableId = 1, textureId = 0, paletteId = 0 },
                    ["accessory"] = { drawableId = 0, textureId = 0, paletteId = 0 },
                    ["kevlar"] = { drawableId = 0, textureId = 0, paletteId = 0 }
                }
            },

            {
                name = "Tactical Gear", -- Outfit display name
                description = "Full tactical response equipment", -- Outfit description
                components = {
                    ["torso"] = { drawableId = 18, textureId = 0, paletteId = 0 },
                    ["undershirt"] = { drawableId = 26, textureId = 0, paletteId = 0 },
                    ["legs"] = { drawableId = 32, textureId = 0, paletteId = 0 },
                    ["shoes"] = { drawableId = 25, textureId = 0, paletteId = 0 },
                    ["accessory"] = { drawableId = 0, textureId = 0, paletteId = 0 },
                    ["kevlar"] = { drawableId = 12, textureId = 0, paletteId = 0 }
                }
            }
        }
    }
}
```

***

#### Active Clothing Station

```
Config.ClothingStation = Config.ClothingStations[1] -- Sets the primary/active clothing station (leave as i
```

### Custody Toilet Configuration

#### Flushable Items

```
-- Custody toilets
Config.FlushableItems = {
    'phone',              # Item that can be flushed down the toilet
    'lockpick',           # Standard lockpick item
    'advancedlockpick',   # Advanced lockpick item
    # Add small items such as drugs or contraband to keep it realistic
}
```

***

### Cell Toilet Locations

```
Config.CellToilets = {
    {
        cellNumber = 1, # Cell identifier number
        flushButton = vector3(470.77, -995.01, 24.99), # Location of the flush interaction button
        toilet = vector3(470.87, -994.8, 24.0), # Physical toilet stash location
        stashId = "cell_1_toilet" # Unique stash ID for this toilet
    },
    {
        cellNumber = 2,
        flushButton = vector3(475.06, -995.01, 24.98),
        toilet = vector3(475.07, -994.8, 24.05),
        stashId = "cell_2_toilet"
    },
    {
        cellNumber = 3,
        flushButton = vector3(479.36, -995.01, 24.99),
        toilet = vector3(479.36, -994.75, 24.0),
        stashId = "cell_3_toilet"
    },
    {
        cellNumber = 4,
        flushButton = vector3(482.5, -1004.99, 24.99),
        toilet = vector3(482.46, -1005.21, 24.01),
        stashId = "cell_4_toilet"
    },
    {
        cellNumber = 5,
        flushButton = vector3(478.22, -1005.0, 24.98),
        toilet = vector3(478.13, -1005.22, 24.0),
        stashId = "cell_5_toilet"
    },
    {
        cellNumber = 6,
        flushButton = vector3(473.91, -1004.99, 24.98),
        toilet = vector3(473.85, -1005.22, 24.0),
        stashId = "cell_6_toilet"
    }
}
```

***

### Toilet Stash Settings

```
Config.ToiletStash = {
    maxWeight = 50000, # Maximum stash weight (50kg in grams)
    maxSlots = 3       # Maximum number of item slots available
}
```

***

### Toilet Flush Sound

```
Config.ToiletFlushSound = {
    enabled = true, # Enable or disable flush sound effect
    range = 10.0,   # Distance (in meters) players can hear the flush
    volume = 0.5    # Sound volume (0.0 - 1.0)
}
```

### Support

For help with installation, configuration, bugs, or feature requests: Join the **LGMods Discord** server and open a support ticket.

Made with ♥ by LGMods
