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 #
- Log in to your CFX Portal:
https://portal.cfx.re/login - Open your Granted Assets page:
https://portal.cfx.re/assets/granted-assets - Download the correct package (one of these will apply to you):
- Unzip the downloaded file.
- Upload the main resource folder to your server’s
resourcesfolder (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
- ✅ Correct:
- Add the resource to your
server.cfg:ensure fisu-policestation-v1If you are using a custom resources folder like[X], make sure it is started too:ensure [X]Replacefisu-policestation-v1with your actual folder name, and replaceXwith your custom folder name. - 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/menuConfirmKey: confirms elevator usageCancelKey: 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-gamefloorPos: interaction + teleport position (vec3(x, y, z))heading: direction the player faces after teleportrange: interaction distancetargetFloor: 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→leftOpenHeadingrightStartHeading→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
closeDistanceis higher thanopenDistance
Need Help? #
If you have any questions or need help installing or configuring Police Station – Mirror Park, contact our support team.