MSK Garage & Impound
An advanced, server-authoritative garage & impound system for ESX Legacy, built on top of msk_core. Park cars, boats and aircraft, recover lost vehicles from the impound, share job vehicles across a society — all with a modern, fully offline React UI.
The UI was rebuilt in React + Vite + TypeScript (no more jQuery / external CDNs — everything is bundled and works offline) and the backend was moved to a strict server-authority model: every park-in / park-out is validated server-side, custom garages are registered server-side, and the impound fee is always charged on the server (and refunded on failure).
Features
✨ Highlights
- Unlimited garages & impounds — define as many locations as you want, each with its own ped, blip, 3D text, marker and park-out spot(s).
- Cars, boats & aircraft — separate vehicle categories (
car,truck,boat,helicopter,aircraft, …) so the right vehicles show up at the right place. - Job & society garages — restrict access by job and minimum grade; job vehicles can be owned per-player or shared across the whole society.
- Impound system — recover lost vehicles (after a crash, death or server restart) for a configurable fee, with an in-UI track waypoint to locate the car.
- Condition persistence — engine, body & tank health, dirt level and the visual body deformation (dents) are saved on park-in and restored on park-out — for garages and impounds. (Dents require the optional VehicleDeformation resource.)
- Vehicle keys support — key holders can park in and out too. Works with
msk_vehiclekeys,VehicleKeyChainandvehicles_keysout of the box. - Favourites & custom names — players can mark vehicles as favourites and rename them.
🎨 Modern UI (rebuilt in v4.0.0)
- Brand-new interface built with React + Vite + TypeScript in the clean MSK dark/green design.
- 100% offline — all fonts and icons are bundled. No jQuery, no Google Fonts, no FontAwesome CDN, zero external requests at runtime.
- Live search, fuel bars, vehicle-class icons and a fast, responsive layout.
🔒 Security-first backend
- Server authority on everything — every park-in / park-out is validated server-side. The client can never inject a garage definition, plate, or fee.
- Anti-dupe protection — per-plate spawn locks plus a spawn claim/rollback flow keep the world and database consistent, even on connection hiccups.
- Safe custom garages — third-party scripts register custom garages/impounds server-side, so park-out coordinates and fees can't be forged.
- Guaranteed refunds — if an impound park-out fails for any reason after charging, the fee is automatically refunded.
- XSS-proof UI — React escapes all rendered text; the v3 nickname exploit is structurally impossible.
⚙️ Configuration & integrations
- Park-out anywhere or only at the specific garage the vehicle was stored in.
- Bring your own fuel system (default: state-bag based, e.g.
ox_fuel). - Built-in TextUI or plug in your own (e.g.
okokTextUI), or useox_target. - Optional AdvancedParking support (persistent vehicles) with impound deletion handled through AdvancedParking so removed cars never respawn.
- Custom license plates, configurable blips, and full EN/DE locales.
- Developer-friendly client & server exports and park-in / park-out events for easy integration.
📋 Requirements
| Resource | |
|---|---|
| Required | ESX Legacy · msk_core · oxmysql |
| Optional | AdvancedParking · VehicleDeformation · MSK VehicleKeys · VehicleKeyChain · Jaksam Vehicle Keys |
You can add your own vehicle-key adapter in server/keys/, but support is only
provided for the scripts listed above. See
Integrations → Vehicle Keys.
Next steps
- Installation — drag & drop,
server.cfg, database - Configuration — the three config files explained
- Integrations — AdvancedParking, deformation, keys, fuel, target
- Database — the
owned_vehiclestable & auto-migration - Events & Exports — for developers