Hotwiring
All information you would need regarding hotwiring and the wiring minigame.
Hotwiring starts a vehicle's engine without a key. The thief reaches under the dash, finds the right wires from the ignition circuit diagram, strips them and touches the starter wire until the engine catches.
A successful hotwire starts the engine. It does not give the player a key.
#Table of Contents
- Requirements
- Starting a Hotwire
- The Wiring Minigame
- Mistakes & Failing
- Hotwire Kits
- Difficulty
- Using the Skill Check Instead
- Configuration Reference
- FAQ
#Requirements
To hotwire a vehicle, the player must:
- Sit in the driver seat.
- Not have a key for the vehicle.
- Have the engine off.
- Pass the restrictions in
hotwiring.restrictedVehiclesand theCanHotwireKeyVehiclehooks. - Jam the vehicle first if it is protected. See Signal Jammer.
Bicycles are never hotwired.
#Starting a Hotwire
There are two ways to start:
| Method | How | Config |
|---|---|---|
| Hotwire kit | Use a hotwire_kit or adv_hotwire_kit from the driver seat. Kits make the minigame easier, see Hotwire Kits. | hotwiring.items |
| Keybind | Press H when the Hotwire Vehicle prompt is shown. Uses the bare-hands settings with no tested wires. | hotwiring.buttonPress |
Players can remap the keybind in the FiveM key settings. Set buttonPress.enabled = false to require a kit.
#The Wiring Minigame
When the hotwire starts, the camera moves under the dash and the wiring panel opens. On the side, the Ignition circuit diagram lists the colour code of the three wires you need:
- Battery +
- Ignition
- Starter
Each code is a base colour, optionally with a stripe, for example Red / Black is a red wire with a black stripe. The other wires in the bundle are decoys, and some of them look very similar to the wires you need.
#Pick the battery and ignition wires
Click the wire that matches Battery + or Ignition on the diagram. The order doesn't matter. Clicking the starter wire does nothing yet.
Look closely: a decoy can share the base colour, share the stripe, or have the base and stripe colours swapped.
#Strip the insulation
After picking a wire, hold left mouse to strip it. The stripping meter fills up, and you have to release inside the green zone.
- Releasing before the zone resets the meter. Hold it again on the same wire to retry. This doesn't count as a mistake.
- Holding past the zone cuts the wire and counts as a mistake.
- Clicking a different wire puts the stripper down and picks the new wire instead.
The stripped wire is marked on the diagram. Repeat for the other wire. With an
adv_hotwire_kit, wires are pre-stripped and this step is skipped.
#The wires are twisted together
Once both battery and ignition are stripped, they are twisted together automatically and the dash lights up.
#Touch the starter wire
Click the Starter wire once. The starter cranks for a moment and the engine catches.
#Controls
| Action | Key |
|---|---|
| Pick a wire | Left mouse |
| Strip a wire | Hold left mouse, release in the green zone |
| Cancel | Escape |
#Mistakes & Failing
Each difficulty allows a number of mistakes (see Difficulty). Once they are used up, the next mistake shorts the circuit.
A mistake is:
- Clicking a wire that isn't on the diagram. It sparks and is marked as wrong.
- Holding the stripper past the green zone.
The attempt fails when the circuit shorts or the time limit runs out. Leaving the driver seat also ends the attempt.
When failurePenalty.enabled is on, a failed attempt zaps the player: an electric spark, a camera shake and screen effect, and healthLoss health removed (default 10).
Cancelling with Escape has no penalty.
Hotwire kits aren't consumed by a hotwire attempt, whether it succeeds or fails.
#Hotwire Kits
Kits make the minigame easier in two ways:
| Setting | Effect |
|---|---|
testedWires | The kit's tester marks this many decoys as Dead before you start. Dead wires are faded and can't be clicked. The most convincing decoys are ruled out first. |
preStripped | Skips the stripping step entirely. |
| Method | Tested wires | Pre-stripped |
|---|---|---|
| Keybind (no kit) | 0 | No |
hotwire_kit | 1 | No |
adv_hotwire_kit | 2 | Yes |
timeMultiplier on a kit only applies when the minigame is disabled.
#Difficulty
The difficulty comes from the vehicle class. Classes that aren't listed use default.
| Class | Difficulty |
|---|---|
| Default (all others) | easy |
| SUVs, Coupes, Muscle | medium |
| Sports Classics, Sports, Emergency | hard |
| Super, Military | expert |
An installed security module raises it to the module's hotwireDifficulty when that is harder.
| Difficulty | Wires | Similar decoys | Time limit | Mistakes allowed | Strip zone |
|---|---|---|---|---|---|
easy | 5 | 1 | 40s | 2 | 24% |
medium | 6 | 2 | 35s | 2 | 18% |
hard | 7 | 3 | 30s | 1 | 14% |
expert | 8 | 5 | 25s | 1 | 10% |
- Wires is the total in the bundle, including the three you need.
- Similar decoys look almost like one of the three correct wires.
- Strip zone is the size of the green release window, as a share of the meter.
#Using the Skill Check Instead
Set hotwiring.minigame.enabled = false to use the older flow: a skill check followed by a progress bar.
- The skill check uses
hotwiring.skillCheck, running each difficulty in order.falseskips it. - The progress bar lasts
timeToHotwireseconds, multiplied by the kit'stimeMultiplier(orbuttonPress.timeMultiplierfor the keybind). - The failure penalty still applies.
#Configuration Reference
All settings live in Config.Settings.hotwiring:
luahotwiring = {
enabled = true,
timeToHotwire = 15, -- Only used when the minigame is disabled
restrictedVehicles = {
temp = false,
personal = false,
profession = true,
},
items = {
hotwire_kit = {timeMultiplier = 1.2, testedWires = 1},
adv_hotwire_kit = {timeMultiplier = 0.8, testedWires = 2, preStripped = true},
},
anim = {dict = "anim@gangops@facility@servers@", clip = "hotwire"},
minigame = {
enabled = true,
classDifficulties = {
default = "easy",
[2] = "medium", -- SUVs
[3] = "medium", -- Coupes
[4] = "medium", -- Muscle
[5] = "hard", -- Sports classics
[6] = "hard", -- Sports
[7] = "expert", -- Super
[18] = "hard", -- Emergency
[19] = "expert", -- Military
},
difficulties = {
easy = {wires = 5, similarWires = 1, timeLimit = 40, mistakes = 2, stripZone = 0.24},
medium = {wires = 6, similarWires = 2, timeLimit = 35, mistakes = 2, stripZone = 0.18},
hard = {wires = 7, similarWires = 3, timeLimit = 30, mistakes = 1, stripZone = 0.14},
expert = {wires = 8, similarWires = 5, timeLimit = 25, mistakes = 1, stripZone = 0.1},
},
buttonPress = {testedWires = 0}, -- Hotwiring without a kit
},
skillCheck = {"easy", "medium", "hard"}, -- Only used when the minigame is disabled
failurePenalty = {
enabled = true,
healthLoss = 10,
},
buttonPress = {
enabled = true,
key = "H",
timeMultiplier = 1.0, -- Only used when the minigame is disabled
},
}
There are two buttonPress tables. minigame.buttonPress sets the kit values used by the keybind in the minigame, and hotwiring.buttonPress enables the keybind itself.
#FAQ
Q: Does hotwiring give the player a key? No. It only starts the engine. Once the engine is turned off, the vehicle has to be hotwired again.
Q: Why does it say I need to jam the signal first? The vehicle is protected by its class or a security module. See Signal Jammer.
Q: Players say the diagram colours are hard to tell apart. That's intended on harder difficulties. Lower similarWires or raise testedWires on your kits to make it easier.
Q: Can I make a vehicle class easier or harder? Yes. Add or change the class id in minigame.classDifficulties.
Q: Can I add my own difficulty? Yes. Add an entry to minigame.difficulties and reference it from classDifficulties or a module's hotwireDifficulty. If a security module uses the same name as its jamDifficulty, add it to signalJammer.difficulties too.
Q: The panel didn't open. The player sees "The UI is not mounted yet, please try again in a few seconds." See UI Not Mounting.