Copy # Dependencies
ensure ox_lib #Required for elevator system to work
# Other resources (inventory, etc.) depending on your config
# Elevator System
ensure ss_elevator
Copy ss_elevator/
├── config.lua # Core settings
├── data/
│ ├── registry.lua # Building registry
│ └── buildings/ # Building configs
│ ├── building1.lua # Building config 1
│ └── building2.lua # Building config 2
├── modules/
│ ├── main/
│ │ ├── client.lua # Client-side main module
│ │ └── server.lua # Server-side main module
│ └── ...
├── providers/
│ ├── core/
│ │ ├── provider/ # Core provider module
│ | │ ├── client.lua # Client-side provider module
│ | │ └── server.lua # Server-side provider module
| | ├── qb-core/ # QBCore provider module
| | | ├── client.lua # Client-side provider module
| | | └── server.lua # Server-side provider module
| | └── qbx_core/ # QBX Core provider module
| | ├── client.lua # Client-side provider module
| | └── server.lua # Server-side provider module
│ └── ...
├── client.lua # Client-side main script
├── server.lua # Server-side main script
├── types.lua # Type definitions
└── fxmanifest.lua # Resource manifest
Copy return {
-- Development Settings
debug = false, -- Enable debug mode for advanced logging
-- Core Settings
maxDistance = 5.0, -- Maximum interaction distance in meters (anti-exploit)
waitTime = 100, -- Default transit time between floors (milliseconds)
-- Visual & Audio Settings
useEffects = true, -- Enable screen fade transitions
useSounds = true, -- Enable elevator sound effects globally
-- Framework Providers
providers = {
-- Inventory System (Choose one)
inventory = 'ox_inventory', -- Supported: 'ox_inventory', 'qb-inventory'
-- Core Framework (Choose one)
core = 'qbx_core', -- Supported: 'qbx_core', 'qb-core'
-- Target System (Choose one)
interaction = 'ox_target', -- Supported: 'ox_target', 'qb-target'
-- Notification System (Choose one)
notify = 'ox_lib', -- Supported: 'ox_lib', 'qb-core'
}
}
Copy return {
id = 'downtown_office', -- Unique identifier
name = 'Downtown Office', -- Display name
description = 'Corporate HQ', -- Building description
elevators = { -- List of elevators
{
id = 'main_elevator', -- Unique elevator ID
name = 'Main Elevator', -- Display name
description = 'Public', -- Elevator description
sound = true, -- Play sounds (optional)
waitTime = 200, -- Override default wait time (optional)
floors = { -- List of floors
-- Example: Public floor
{
id = 'reception',
name = 'Reception',
description = 'Public Area',
teleportCoords = vector4(100.0, 200.0, 35.0, 90.0),
target = {
coords = vector3(100.0, 200.0, 36.5),
size = vector3(0.5, 0.5, 0.5)
}
},
-- Example: Private floor
{
id = 'lobby', -- Unique floor ID
name = 'Lobby', -- Display name
description = 'Ground Floor', -- Floor description
-- Where players teleport to (x, y, z, heading)
teleportCoords = vector4(100.0, 200.0, 30.0, 90.0),
-- Interaction zone
target = {
coords = vector3(100.0, 200.0, 31.5), -- Location
size = vector3(0.5, 0.5, 0.5), -- Zone size
rotation = 90.0, -- Zone rotation
distance = 2.0, -- Interaction range
icon = 'fas fa-elevator', -- Custom icon
label = 'Call Elevator' -- Custom label
},
-- Access Control (all optional)
restricted = true, -- Hide if no access
requiredJobs = { -- Required jobs
['police'] = 0, -- Job name = min grade
['office'] = 2
},
requiredItems = { -- Required items
{
name = 'office_guest_keycard', -- Item name
count = 1, -- Required amount
remove = false -- Remove on use
}
}
}
}
}
}
}
Copy return {
['downtown_office'] = require 'data.buildings.office',
['city_hall'] = require 'data.buildings.cityhall',
-- Add more buildings here
}