---
title: "Product Guide: Police Station – Mirror Park"
description: "This knowledge base article explains how to install **Police Station – Mirror Park** on your FiveM server and how to configure the **gate lock system**, **elevators**, and **gate animations** via `config.lua`. --- ## Installation Instructions 1. Log in to your…"
url: "https://fivemsupply.com/kb-doc/product-manuals/product-guide-police-station/"
updated: "2026-05-18"
category: "Product | Manuals"
---

# Product Guide: Police Station – Mirror Park

This knowledge base article explains how to install **Police Station – Mirror Park** on your FiveM server and how to configure the **gate lock system**, **elevators**, and **gate animations** via `config.lua`.

---

## Installation Instructions

1. Log in to your **CFX Portal**:
   [https://portal.cfx.re/login](https://portal.cfx.re/login)
2. Open your **Granted Assets** page:
   [https://portal.cfx.re/assets/granted-assets](https://portal.cfx.re/assets/granted-assets)
3. Download the correct package (one of these will apply to you):
   - **[Police Station – Mirror Park [LSPD]](https://fivemsupply.com/product/police-station-mirror-park-lspd/)**
   - **[Politie Bureau - Mirror Park [NL]](https://fivemsupply.com/product/police-station-mirror-park-nl/)**
   - **[Politie Bureau - Mirror Park [BE]](https://fivemsupply.com/product/police-station-mirror-park-be/)**
   - **[Polizei Station - Mirror Park [DE]](https://fivemsupply.com/product/police-station-mirror-park-de/)**
   - **[Secția de poliție - Mirror Park [RO]](https://fivemsupply.com/product/sectia-de-politie-mirror-park-ro/)**
   - **[Police Nationale - Mirror Park [FR]](https://fivemsupply.com/product/police-nationale-mirror-park/)**
4. Unzip the downloaded file.
5. Upload the **main resource folder** to your server’s `resources` folder (or a custom folder like `[X]`).
   **Important:** Avoid a double folder structure.
   - ✅ Correct:
     `fisu-policestation-v1/stream`
   - ❌ Incorrect:
     `fisu-policestation-v1/fisu-policestation-v1/stream`
6. Add the resource to your `server.cfg`:`ensure fisu-policestation-v1`If you are using a custom resources folder like `[X]`, make sure it is started too:`ensure [X]`Replace `fisu-policestation-v1` with your actual folder name, and replace `X` with your custom folder name.
7. Perform a **full server restart**.
   - **Note:** For encrypted products and resources, a **full restart is always required** (restarting the resource only is not enough).

---

# Gate Lock System (`config.lua`) Configuration

In `config.lua`, you can configure how the gate script behaves. This includes enabling the gate system, enabling locks, selecting your framework/server base, and choosing which jobs are allowed to use the locks.

---

## General Settings

---

### Enable/Disable Gate Locks

```
Config.EnableGateLocks = true
```

| Value | Meaning |
| --- | --- |
| `true` | Gates can be locked and unlocked. |
| `false` | No lock system; gates only open/close automatically. |

---

### Debug Mode

```
Config.Debug = false
```

| Value | Meaning |
| --- | --- |
| `true` | Shows debug logs in client F8 and/or server console (useful for testing). |
| `false` | Debug logs disabled (recommended for live servers). |

---

## Framework / Server Base

```
Config.Serverbase = 'ESX'
```

Supported options:

| Value | Meaning |
| --- | --- |
| `'ESX'` | ESX servers |
| `'QB'` | QBCore servers |
| `'OX'` | OX-based servers |
| `'STANDALONE'` | No framework |

**Important:** Use the exact capitalization shown above.

---

## Job Permissions (Who Can Use Locks)

```
Config.Job = 'police'
```

### Allow a Single Job

```
Config.Job = 'police'
```

Only players with the `police` job can lock/unlock gates.

### Allow Multiple Jobs

```
Config.Job = { 'police', 'ambulance' }
```

Players with `police` or `ambulance` can use locks.

### Allow Everyone

```
Config.Job = 'everyone'
```

Everyone can use the lock system.

If you use `Config.Serverbase = 'STANDALONE'`, `everyone` is recommended because there is no job framework.

Example for standalone:

```
Config.Serverbase = 'STANDALONE'
Config.Job = 'everyone'
```

---

## Default Lock State

```
Config.LockState = 'open'
```

| Value | Meaning |
| --- | --- |
| `'open'` | Gates start unlocked. |
| `'closed'` | Gates start locked. |

Example:

```
Config.LockState = 'closed'
```

---

---

## Common Gate Issues

### Lock UI Does Not Appear

Check:

```
Config.EnableGateLocks = true
```

And make sure each gate has:

```
lockDistance = 10.0
```

---

### I Can’t Use the Lock

Your job may not have permission. Test quickly by setting:

```
Config.Job = 'everyone'
```

---

### Gate Doesn’t Open/Close Automatically

Check:

```
Config.EnableGates = true
```

---

# Elevator System (`config.lua`) Configuration

The elevator system allows players to teleport between floors with fade effects and confirmation prompts.

---

## Enable/Disable Elevators

```
Config.EnableElevators = true
```

| Value | Meaning |
| --- | --- |
| `true` | Elevators are active and usable. |
| `false` | Elevators are disabled. |

---

## Elevator Keybinds

```
Config.OpenMenuKey = 'E'
Config.ConfirmKey = 'E'
Config.CancelKey = 'BACKSPACE'
```

- `OpenMenuKey`: opens the elevator prompt/menu
- `ConfirmKey`: confirms elevator usage
- `CancelKey`: cancels the action

---

## Fade & Teleport Timings

```
Config.FadeOutDuration = 1500
Config.TeleportDelay = 500
Config.FadeInDuration = 1200
```

All values are in milliseconds.

---

## Elevator Text

```
Config.ElevatorText = {
    OpenPrompt = 'Press ~INPUT_CONTEXT~ to use the elevator (%s)',
    ConfirmPrompt = 'Are you sure you want to use the elevator with %s people?~n~~g~[%s] Yes~s~  ~r~[%s] No'
}
```

**Keep the `%s` placeholders**, otherwise the script cannot inject the correct values.

---

## Adding Elevators

All elevators go inside:

```
Config.Elevators = {
    -- elevators here
}
```

Example:

```
Config.Elevators = {
    ["main_elevator"] = {
        name = "Police Station Mirror Park",
        floors = {
            [1] = {
                label = "Ground Floor",
                floorPos = vec3(1050.1788, -299.0067, 67.6302),
                heading = 90.0,
                range = 2.5,
                targetFloor = 2
            },

            [2] = {
                label = "First Floor",
                floorPos = vec3(1049.9556, -299.5488, 72.2421),
                heading = 90.0,
                range = 2.5,
                targetFloor = 1
            }
        }
    }
}
```

---

## Floor Settings Explained

- `label`: text shown in-game
- `floorPos`: interaction + teleport position (`vec3(x, y, z)`)
- `heading`: direction the player faces after teleport
- `range`: interaction distance
- `targetFloor`: which floor you go to from this floor

Note: This script uses **one target per floor** (no multi-destination selection menu).

---

## How “Number of People” Works

When someone triggers the elevator, the server checks how many players are within the `range` of the elevator point. After confirmation, all players in range are teleported together.

---

## Common Elevator Issues

### No Elevator Prompt

Check:

```
Config.EnableElevators = true
```

Also verify your distance:

```
range = 2.5
```

During testing you can temporarily increase:

```
range = 4.0
```

### Teleport Goes to the Wrong Location

Verify the `floorPos` of the destination floor.

### Player Faces the Wrong Direction

Adjust:

```
heading = 90.0
```

---

# Gate Animations (`config.lua`) Configuration

The gate system animates gates by rotating them from a closed heading to an open heading.

---

## Core Settings

```
Config.EnableGates = true
```

Recommended baseline values:

```
openDistance = 12.0
closeDistance = 14.0
animDuration = 4500
```

---

## How the Animation Works

The script does not move gates physically. It animates the **rotation (heading)** from:

- `leftStartHeading` → `leftOpenHeading`
- `rightStartHeading` → `rightOpenHeading`

Both sides animate together.

---

## Lock System + Animations Together

If locks are enabled, the gate will not auto-open when locked.

```
Config.EnableGates = true
Config.EnableGateLocks = true
```

---

## Common Animation Issues

- Gate opens wrong direction → adjust `leftOpenHeading` / `rightOpenHeading`
- Gate closes incorrectly → adjust `leftStartHeading` / `rightStartHeading`
- Gate flickers open/close → make sure `closeDistance` is higher than `openDistance`

---

## Need Help?

If you have any questions or need help installing or configuring **Police Station – Mirror Park**, contact our [support team](http://discord.gg/fivemsupply).
