OVERVIEW
Molo AutoPark V2 is a fully-featured automatic parking system for FiveM. Players can place multi-floor parking structures anywhere on the map using a precision placement system. Vehicles are physically lifted by an animated hydraulic lift, moved to the correct floor and column, and stored in an SQL database.
The system is fully public: any player can use any garage. Vehicles are tied to each player's identity, so only the owner can retrieve their own car. Framework integration ensures that parked vehicles are correctly marked as stored in your existing garage system.
On server restart, all garages and vehicles are automatically restored from the database — structures respawn, vehicles appear in their slots, and everything is exactly as it was.
Physical Lift
Animated 4-step hydraulic path: rise, slide, push. Real lift sounds via Web Audio.
SQL Persistence
Full oxmysql integration. Two tables, auto-created. Survives restarts.
Cyberpunk NUI
Dark terminal with scanlines, glow effects, custom cursor, and animated slots.
FEATURES
▲ Parking System
💾 Database & Sync
🌐 Framework & Language
REQUIREMENTS
| Dependency | Status | Details |
|---|---|---|
| FiveM Server | REQUIRED | Latest recommended build |
| oxmysql | REQUIRED | Must start before molo-autopark |
| MySQL / MariaDB | REQUIRED | XAMPP, dedicated, or any MySQL server |
| ox_target | OPTIONAL | Enables 3D interact points on garage terminal |
| ESX or QBCore | OPTIONAL | Auto-detected. Works standalone without any framework |
INSTALLATION
molo-autopark folder into your server's resources directory.autopark.sql via phpMyAdmin.ensure molo-autopark
[AUTOPARK] Database tables ready.
[AUTOPARK] Loaded 0 garages from database.
/applace in-game to place your first garage.CONFIGURATION
All settings are in config.lua:
| Setting | Default | Description |
|---|---|---|
Config.Framework | 'auto' | Framework mode: 'auto', 'esx', 'qb', or 'standalone' |
Config.Language | 'en' | Language: 'en', 'fr', or 'es' |
Config.MaxGaragesPerPlayer | 3 | Maximum garages a player can place |
Config.Debug | true | Enable debug prints. Set false in production |
PAYMENT SYSTEM
Molo AutoPark V2 includes a fully integrated in-game payment system. Charge players for parking, retrieving, and placing garages using your framework's economy. All prices are configurable in config.lua.
💰 Configuration
| Setting | Default | Description |
|---|---|---|
Config.Payment.Enabled | true | Enable or disable the entire payment system. When false, all actions are free |
Config.Payment.ParkPrice | 100 | Amount charged to park a vehicle in a slot |
Config.Payment.RetrievePrice | 50 | Amount charged to retrieve a vehicle from the garage |
Config.Payment.PlacePrice | 5000 | Amount charged to place a new garage structure (/applace) |
Config.Payment.MovePrice | 1000 | Amount charged to move an existing garage (/apmove) |
Config.Payment.Account | 'bank' | Payment source: 'bank', 'cash', or 'money' (framework-dependent) |
📝 Example config.lua
Config.Payment = {
Enabled = true, -- false = all free
ParkPrice = 100, -- $ to park
RetrievePrice = 50, -- $ to retrieve
PlacePrice = 5000, -- $ to place a garage
MovePrice = 1000, -- $ to move a garage
Account = 'bank', -- 'bank' or 'cash'
}
🌐 Framework Integration
Payments are automatically handled by the detected framework. The system uses the correct money functions for each framework:
| Framework | Debit Function | Balance Check | Accounts |
|---|---|---|---|
| ESX | xPlayer.removeMoney() | xPlayer.getMoney() | money, bank |
| QBCore | Player.Functions.RemoveMoney() | Player.Functions.GetMoney() | cash, bank |
| Standalone | Payment disabled — no economy system available | ||
⚡ How It Works
Config.Payment.Enabled = false to disable all charges instantlyRetrievePrice = 0 means players pay to park but retrieve for free.COMMANDS & USAGE
| Command | Description |
|---|---|
/applace | Open variant selection, then enter placement mode to position a new garage |
/apmove [id] | Move an existing garage (keeps all stored vehicles) |
/apdelete [id] | Delete a garage. Vehicles are released back to their owners |
/apstatus | DEBUG Show garage count, vehicles, and framework in console |
Parking a Vehicle
Retrieving a Vehicle
The terminal is a full-screen cyberpunk interface with a custom crosshair cursor, animated scanlines, and procedural hydraulic sounds.
Interface Elements
| Element | Description |
|---|---|
| Header | AUTOPARK title, lift status, CLEAR button (owner only), close button |
| Vehicle Bar | Vehicle on lift (name + plate) or "No vehicle on lift" |
| Floor Tabs | Switch floors. Shows occupied/total count per floor |
| Parking Map | Visual grid of all slots on the selected floor |
| Activity Log | Recent park/retrieve events with timestamps |
Slot Colors
CLEAR Button
Only visible to the garage owner. Removes ALL vehicles from the garage and releases them back to their owners' framework garages (stored = 0). The structure remains in place.
SQL DATABASE
Two tables, created automatically on startup:
autopark_garages
| Column | Type | Description |
|---|---|---|
id | INT AUTO_INCREMENT | Unique garage ID |
owner | VARCHAR(128) | Player identifier (ESX/QB/license) |
x, y, z | FLOAT | World coordinates |
heading | FLOAT | Rotation angle |
variant | VARCHAR(32) | 'large' (14 slots) or 'small' (5 slots) |
autopark_vehicles
| Column | Type | Description |
|---|---|---|
id | INT AUTO_INCREMENT | Unique vehicle entry ID |
garage_id | INT (FK) | References autopark_garages.id — CASCADE on delete |
owner | VARCHAR(128) | Player who parked the vehicle |
plate | VARCHAR(32) | Vehicle plate (for owned_vehicles sync) |
model | VARCHAR(64) | Vehicle model hash |
props | LONGTEXT | Full vehicle properties as JSON |
floor, col | INT | Slot position in the garage |
owned_vehicles Sync
| Action | ESX (owned_vehicles) | QBCore (player_vehicles) |
|---|---|---|
| Park | SET stored = 1 | SET state = 1, garage = 'autopark' |
| Retrieve | SET stored = 0 | SET state = 0 |
| Clear / Delete | SET stored = 0 (all vehicles) | SET state = 0 (all vehicles) |
FRAMEWORK COMPATIBILITY
Auto-detected at startup. No configuration needed.
| Framework | Identifier | Vehicle Props | Sync Table |
|---|---|---|---|
| ESX | xPlayer.identifier | ESX.Game functions | owned_vehicles |
| QBCore | citizenid | QBCore.Functions | player_vehicles |
| Standalone | license:xxxx | Built-in (GTA natives) | None |
To force a framework, set Config.Framework = 'esx' or 'qb' in config.lua.
MULTI-LANGUAGE
Config.Language = 'en' -- English (default)
Config.Language = 'fr' -- French
Config.Language = 'es' -- Spanish
40+ text keys translated: notifications, NUI terminal, placement UI, variant selection, floor names, activity log. Adding a new language: copy the English block in Config.Locales and translate each key.
TROUBLESHOOTING
| Problem | Solution |
|---|---|
| "CARNOTFOUND" in terminal | Fixed in V2.1 — model hash string/number bug resolved |
| Vehicles disappear on restart | Ensure oxmysql starts before molo-autopark in server.cfg |
| NUI crashes when opening | Fixed in V2.1 — all handlers have try/catch protection |
| "Modele invalide" in console | Fixed in V2.1 — SQL model hash now properly converted |
| Vehicle stuck on lift | Use /apstatus to check, then /apdelete [id] to reset |
| CLEAR button not visible | Only the garage owner can see the CLEAR button |
| Framework not detected | Check es_extended / qb-core starts before this resource |
| Tables not created | Check oxmysql connection string and ensure MySQL is running |
SUPPORT
Discord
Join 10,000+ members for help, updates, and feature requests.
Tebex Store
molo-modding.tebex.io — Silver & Gold subscription tiers.
Updates
All updates included with your subscription. Changelog in Discord.