Documentation

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

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.restrictedVehicles and the CanHotwireKeyVehicle hooks.
  • Jam the vehicle first if it is protected. See Signal Jammer.

Bicycles are never hotwired.


#Starting a Hotwire

There are two ways to start:

MethodHowConfig
Hotwire kitUse a hotwire_kit or adv_hotwire_kit from the driver seat. Kits make the minigame easier, see Hotwire Kits.hotwiring.items
KeybindPress 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:

  1. Battery +
  2. Ignition
  3. 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

ActionKey
Pick a wireLeft mouse
Strip a wireHold left mouse, release in the green zone
CancelEscape

#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:

SettingEffect
testedWiresThe 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.
preStrippedSkips the stripping step entirely.
MethodTested wiresPre-stripped
Keybind (no kit)0No
hotwire_kit1No
adv_hotwire_kit2Yes

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.

ClassDifficulty
Default (all others)easy
SUVs, Coupes, Musclemedium
Sports Classics, Sports, Emergencyhard
Super, Militaryexpert

An installed security module raises it to the module's hotwireDifficulty when that is harder.

DifficultyWiresSimilar decoysTime limitMistakes allowedStrip zone
easy5140s224%
medium6235s218%
hard7330s114%
expert8525s110%
  • 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. false skips it.
  • The progress bar lasts timeToHotwire seconds, multiplied by the kit's timeMultiplier (or buttonPress.timeMultiplier for the keybind).
  • The failure penalty still applies.

#Configuration Reference

All settings live in Config.Settings.hotwiring:

lua
hotwiring = {
    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.