Impound Heist Installation
This guide gets vs-impound-heist running from a clean download. Follow the steps in order. The most common failure is starting the heist before the Impound Job it depends on.
Keep the folder named vs-impound-heist. The two usable items call resource-scoped exports (vs-impound-heist.camera and vs-impound-heist.signalbox), and the Impound Job's Creator finds the heist by that exact name. Keep vs-impoundjob under its own name too, because the heist asks for it by name. Renaming either folder breaks the link between them.
Requirements
- A licensed FiveM server on a recent artifact.
- The WXMAPS Impound Job (
vs-impoundjob), installed and working, with at least one yard built in its Creator. The heist has no yards of its own. - A framework core: Qbox, QBCore or ESX. It is used to pay the crew and charge for the supplier's goods.
- The resources on the Dependencies page.
- A MySQL database reachable through oxmysql.
Step 1: Install the dependencies first
Install and confirm these are working before the heist. See Dependencies for what each one does.
ox_lib,oxmysql,ox_target,ox_inventoryvs-npc-dialogueandvs-minigames(free companion resources)vs-impoundjob(the Impound Job)
Step 2: Download and upload the heist
- Log in to the Cfx.re portal with the Cfx account you purchased with.
- Open Granted Assets and download
vs-impound-heist. It is granted with your Impound Job Script purchase, next tovs-impoundjob. - Extract the
.zipand upload the wholevs-impound-heistfolder into yourresources/directory. A sub-folder such asresources/[wxmaps]is fine. Do not rename it.
New to Cfx.re downloads? The General Installation Guide walks through the portal step by step.
Step 3: Order server.cfg correctly
Every dependency must start before the heist, and vs-impoundjob must start directly before it. The resource declares all seven dependencies in its manifest, so the server refuses to start it if any of them is missing.
# ── your framework core first ─────────────
ensure qbx_core # or qb-core / es_extended
# ── libraries ─────────────────────────────
ensure ox_lib
ensure oxmysql
# ── target + inventory ────────────────────
ensure ox_target
ensure ox_inventory
# ── free companion resources ──────────────
ensure vs-npc-dialogue
ensure vs-minigames
# ── optional: the WXMAPS impound map ──────
ensure wxmaps_commons
ensure wxmaps_lsimpound
# ── the Impound Job, then the heist ───────
ensure vs-impoundjob
ensure vs-impound-heist
Start your framework core before the heist. If the core starts later, the heist notices and prints Framework resolved late in the console, but a server that never starts a supported core gets a crew that delivers a car and is paid nothing.
Step 4: Database
There is nothing to import. The heist owns one table, vs_heist_reputation, and creates it automatically on first start with CREATE TABLE IF NOT EXISTS. It is the same table, with the same schema, that the Laundromat Heist uses, so if you already run that script the table is already there.
If you prefer to provision it yourself, this is the exact statement the script runs:
CREATE TABLE IF NOT EXISTS `vs_heist_reputation` (
`citizenid` VARCHAR(64) NOT NULL,
`clan` VARCHAR(64) NOT NULL,
`rep` INT NOT NULL DEFAULT 0,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`citizenid`, `clan`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Everything you set up in the Creator's HEIST panel is stored in the resource's own key-value store (KVP) on the server, not in MySQL. Yard cooldowns are kept in memory.
If the database is unavailable, the heist still runs. Nobody earns standing (everyone stays a Stranger), the console says so once, and the fixer's standing panel tells players their progress is not being remembered.
Step 5: Register the items
The heist needs two ox_inventory items: the signal box (signalbox) that opens the gates, and its own microcamera (microcamera_impound). Both are usable items wired to the heist's exports. Copy the block from the Items page into ox_inventory/data/items.lua, and add an image for each.
At boot the heist checks that every item in Config.Items exists in ox_inventory and prints a warning for each one that does not. Without the items, a contract can never get past preparation.
Step 6: Configure the essentials
Open config/config.lua (left editable via escrow_ignore). Most of what is in it can also be set in game from the Creator, which is the easier route for anything that is a position in the world. At minimum, sort out these:
- The buyers. The three drop-offs in
Config.Dropoffsare placeholders. Place your own in the Creator (HEIST, Drop-offs tab) or capture coordinates and write them in. - The supplier.
Config.Shop.coordsships empty, so nobody sells a signal box until you place him (HEIST, Supplier tab). Without him the crew has no way to get the box unless you sellsignalboxsomewhere else. - The fixer. He ships at a fixed spot in
Config.Fixer.coords. Move him in the Creator (HEIST, Contract tab) if you want him elsewhere. - Your police job names.
Config.PoliceAlert.jobs(who gets the silent alarm) andConfig.MinPolice.jobs(who counts towards the optional minimum). Both default topolice,sheriffandbcso.
The full annotated reference is on the Configuration page.
Step 7: First-time setup in the Creator
Open the Impound Job's Creator with /impoundcreator (it uses the Impound Job's own admin gate) and click the HEIST button at the top right. The button only appears while vs-impound-heist is running.
- Contract tab: place the fixer, or check where he stands.
- Supplier tab: place the supplier (and his van) and check his list.
- Drop-offs tab: replace the placeholder buyers with your own.
- Yard tab: pick each lot on the left and clear anything listed under "The fixer will not name this yard". Choose which safe is cracked and place a few post-its for the code.
Every yard also has a "This yard can be robbed" switch on its own Setup tab. It is on by default. The full walkthrough is on Setup in the Creator, and building the yards themselves is covered in the Impound Job's Creator guide.
Step 8: Go live
Before opening to players:
Config.Debug = false -- internal trace in the console; ships false
Also decide whether the fixer should have a map blip (Config.Fixer.blip.enabled, on as shipped, or "Map marker" in the Creator) and whether to require police on duty (Config.MinPolice.enabled, off as shipped).
Anti-cheat & model whitelist
The heist spawns peds, vehicles and props. If your anti-cheat blocks entity creation, whitelist these defaults (and any models you change them to):
| Type | Models |
|---|---|
| Peds | g_m_m_armboss_01 (fixer), s_m_y_dealer_01 (supplier), s_m_y_dockwork_01 (buyers), a_m_m_business_01 (fallback if a configured ped model will not load) |
| Vehicles | sultan, buffalo2, comet2, elegy2, schafter3 (the cars in the yard), speedo (the supplier's van) |
| Props | xs_prop_arena_stickynote_01a (the post-it), prop_npc_phone_02 (the camera phone), ba_prop_battle_chest_closed (the supplier's seat), prop_cs_walkie_talkie and prop_cs_cardbox_01 (shop previews) |
The cars in the yard are networked vehicles created by a crew member's client, and the buyer who drives the car away is a networked ped created by the client of the player who handed it over. A server running sv_entityLockdown strict, or an anti-cheat that blocks client-created networked entities, will never see the yard fill up. Allow script-created entities for this resource.
Verify it's running
- Start the server and watch the console for
[vs-impound-heist]lines. A missing Impound Job, a server with no robbable yard, a missing framework, or a missing item each print a named warning a few seconds after boot. See Troubleshooting for what each one means. - Join, go to the fixer and choose Talk about work. If he offers a car and a yard, the install is working. You can run the whole loop solo: the crew is "up to" four, not "exactly" four.
- If a test run gets stuck,
/impheistreset(console or admin) clears it. See Admin Commands.
Still stuck? See Troubleshooting & FAQ or open a ticket on Discord.