Garages V2
Features
Garage zones, impounds, police tow, showroom, insurance, co-owner, and admin tools in Garages V2.
On this page11 sections
Garage UI
Garages V2 uses a modern React-based interface.
It is built around fast browsing, clear vehicle status, and quick actions.
Garage tabs
The garage UI includes:
- All
- Stored
- Outside
- Favorites
- History
Vehicle detail panel
When a vehicle is selected, the side panel shows:
- vehicle name and image
- custom label
- vehicle type badge
- garage location
- model hash
- last used timestamp
- body, engine, and fuel bars
- insurance state and expiry
- action buttons like Drive, Buy Insurance, and Transfer
Stats bar
The bottom bar shows:
- total vehicles
- stored vehicles
- outside vehicles
- impounded vehicles
Garages
Garages are zones where players store and retrieve vehicles.
Garage data is stored in locations/garages.json.
Zone types
Vehiclefor cars and bikesPlanesfor aircraftBoatfor water vehicles
Garage definition
{ "my_garage": { "coords": { "x": 0.0, "y": 0.0, "z": 0.0 }, "size": { "x": 10.0, "y": 10.0, "z": 5.0 }, "rotation": 0.0, "type": "all", "job": "", "ownerOnlyIdentifier": "", "blip": true, "blipConfig": { "enabled": true, "visibility": "all", "name": "My Garage", "id": 50, "scale": 0.7, "color": 3, "alpha": 255, "shortRange": false }, "spawn": [ { "x": 1.0, "y": 1.0, "z": 0.0, "w": 90.0 } ] }}Garage fields
| Field | Type | Description |
|---|---|---|
coords | object | Zone center |
size | object | PolyZone box size |
rotation | number | Zone rotation |
type | string | all, car, bike, boat, or plane |
job | string | Required job |
ownerOnlyIdentifier | string | Private garage owner |
blip | boolean | Show map blip |
blipConfig | object | Blip settings |
spawn | array | One or more vehicle spawn points |
How storage works
Players can store vehicles in two ways:
- Use a target interaction inside a garage zone.
- Press the configured key in no-target mode.
Garages V2 saves:
- vehicle properties
- door, window, and tire state
- fuel and health values
- last used timestamp
When a vehicle is pulled, the script uses the first free spawn point.
Blocked spawn points are skipped automatically.
Private and job garages
Set job to restrict a garage by job.
Set ownerOnlyIdentifier to create a private garage.
Private garages only show the blip and interaction to the assigned player.
Impounds
Impound lots release vehicles for a fee.
They support daily fees, job restrictions, insurance benefits, and capacity limits.
Impound definition
{ "my_impound": { "impoundKind": "civilian", "coords": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 0.0 }, "spawnCoords": { "x": 1.0, "y": 1.0, "z": 0.0, "w": 90.0 }, "blip": true, "blipConfig": {}, "requiredJob": "", "allowedJobs": [], "releaseFee": 500, "dailyFee": 100, "maxDays": 7, "maxVehicles": 50, "notifyOwner": true, "openToAll": false, "requireInsurance": false }}Impound fields
| Field | Type | Description |
|---|---|---|
impoundKind | string | civilian or police |
coords | object | NPC position |
spawnCoords | object | Vehicle spawn position |
releaseFee | number | Base release fee |
dailyFee | number | Extra fee per day |
maxDays | number | Maximum daily fee days |
maxVehicles | number | Max vehicles, 0 for unlimited |
requiredJob | string | Job required to manage |
allowedJobs | array | Extra allowed jobs |
openToAll | boolean | Public access |
notifyOwner | boolean | Notify owner on impound |
requireInsurance | boolean | Require active insurance |
Insurance benefits at impound
freeImpoundremoves the release feeimpoundDiscountreduces the feefreeRepairrestores vehicle health on release
Daily fees
Daily fee uses this formula:
dailyFee * min(daysHeld, maxDays)
daysHeld is calculated from impounded_at.
Police tow
Police can impound vehicles with hold timers and reason tracking.
Commands
| Command | Access | Description |
|---|---|---|
/impoundpolice | Police | Open the police tow UI |
/odholuj | Admin | Tow nearby vehicles to the default police impound |
Police tow UI
Officers can:
- enter or detect a vehicle plate
- choose a police impound
- set hold hours
- add a tow reason
The hold duration is capped by Config.PoliceTow.MaxHoldHours.
Hold timer
Players cannot retrieve a vehicle while the hold is active.
The impound UI shows the remaining time.
Server exports
exports.sc_garages:towVehicle(plate, impoundName, holdHours, actorSrc, reason)exports.sc_garages:setVehicleHold(plate, holdHours)exports.sc_garages:releaseVehicleHold(plate)exports.sc_garages:getVehicleHold(plate)Showrooms
Showrooms let players preview vehicles before driving out.
Each spawned vehicle can show a DUI overlay with key vehicle info.
Flow
- Player interacts with the showroom NPC.
- Player is moved to a private routing bucket.
- Vehicles spawn on display positions.
- DUI overlays render above vehicles.
- Player enters a vehicle.
- Player exits through the showroom exit zone.
- The vehicle spawns outside through the normal garage flow.
Showroom definition
{ "my_showroom": { "enter": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 0.0 }, "exit": { "coords": { "x": 0.0, "y": 0.0, "z": 0.0 }, "size": { "x": 5.0, "y": 5.0, "z": 3.0 }, "rotation": 0.0 }, "zones": [ { "coords": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 0.0 } } ] }}Restrictions
- Vehicles already outside cannot be driven out.
- Vehicles on police hold cannot be driven out.
- Players get notified when a vehicle is restricted.
Notification spam is limited by a short cooldown.
Insurance
Insurance uses configurable tiers with optional benefits.
Default tiers
| Tier | Price | Duration | Free Impound | Impound Discount | Free Repair | Delete Protection |
|---|---|---|---|---|---|---|
| Basic | $5,000 | 30 days | No | 25% | No | No |
| Standard | $12,000 | 60 days | No | 60% | Yes | No |
| Premium | $25,000 | 90 days | Yes | 100% | Yes | Yes |
Benefits
- Free repair on garage pull
- Discounted or free impound release
- Protection from admin deletion
Players can buy, cancel, and extend policies from the vehicle detail panel.
Policy extension
When Config.Insurance.ExtendFromActivePolicy is true, new purchases extend the active policy instead of resetting from today.
Plate change
Players can change their plate while sitting in a vehicle.
Flow
- Sit in the vehicle.
- Run the plate command.
- Enter a new plate.
- Pay the configured fee.
Validation
- Minimum and maximum length are configurable.
- Only
A-Zand0-9are allowed. - Blacklisted words are blocked.
- Existing plates cannot be reused.
Co-owner system
Vehicle owners can add a co-owner.
The co-owner can access the vehicle in garages.
Rules
- The nearest player within 5 meters is used.
- The owner and target must be different players.
- Co-owners can pull and store the vehicle.
- Only the owner can transfer, insure, or change the plate.
Favorites and last used
Players can mark vehicles as favorites in the UI.
Each vehicle also shows when it was last used.
Admin panel
The admin panel gives full in-game control over vehicles and locations.
Main sections
- Players
- Commands
- Create Garage
- Create Impound
- Create Showroom
- Manage
Permissions
Framework-specific admin permissions control access.
All actions can be logged to Discord.
Admin panel details
Admins can:
- browse players and inspect vehicles
- edit garage or plate data
- remove vehicles
- reveal vehicle location
- create garages, impounds, and showrooms in-game
- delete saved locations without editing files
Vehicle history
Garages V2 stores important vehicle actions in vehicle_history.
Tracked actions
| Action | Description |
|---|---|
pull_car | Vehicle pulled from garage |
hide_car | Vehicle stored in garage |
impound | Vehicle impounded |
impound_pickup | Vehicle released from impound |
transfer_out | Vehicle transferred away |
transfer_in | Vehicle received |
plate_change | Plate changed |
admin_add | Vehicle added by admin |
admin_remove | Vehicle removed by admin |
admin_edit | Vehicle edited by admin |
insurance_buy | Insurance purchased |
insurance_cancel | Insurance cancelled |
History UI
Players can search history entries by text.
They can also filter by vehicle and action type.