Signal Jammer
All information you would need regarding the signal jammer.
High-end vehicles have a security system that blocks lockpicking and hotwiring. Before a thief can tamper with one of these vehicles, they have to suppress its security with a signal_jammer. A successful jam keeps the vehicle's security down for a limited time, which is the window to lockpick the door and hotwire the engine.
#Table of Contents
- How Jamming Works
- Protected Vehicles
- Using the Jammer
- Controls
- Difficulty
- Failing an Attempt
- Jammer Durability
- Dispatch & Logs
- Configuration Reference
- FAQ
#How Jamming Works
- A protected vehicle blocks tampering. Using a lockpick or hotwiring it shows "This vehicle's security system blocks tampering. Jam its signal first."
- The thief uses a
signal_jammerwithinmaxDistance(default4.0) of the vehicle and completes the tuning minigame. - The vehicle is jammed for
jamDurationseconds (default120). During this window it can be lockpicked and hotwired as normal. - The jam expires. Once the timer runs out, the vehicle is protected again. If the thief hasn't started the engine by then, they need to jam it again.
The jam only removes the security block. The thief still needs a lockpick to open the door and a hotwire kit (or the hotwire keybind) to start the engine. See Lockpicking and Hotwiring.
#Protected Vehicles
A vehicle needs a jam when any of these apply:
| Reason | Configured in | Default |
|---|---|---|
| Its vehicle class is listed | signalJammer.protectedVehicles.classes | Class 7 (Super) |
| Its model is listed | signalJammer.protectedVehicles.models | None |
| It has a security module | Installed by the owner, see Security Modules | - |
Using the jammer on a vehicle that isn't protected shows "This vehicle has no security system worth jamming." and doesn't use the item.
You can choose which actions the jam is required for through requiredFor. By default both lockpicking and hotwiring require it.
luaprotectedVehicles = {
classes = {[7] = true, [6] = true}, -- Super and Sports
models = {[joaat("adder")] = true},
},
For fully custom rules, such as protecting job vehicles, edit IsSignalJammerProtectedVehicle in server/unlocked/hooks.lua. See Integration Hooks.
#Using the Jammer
#Get close to the vehicle
Stand within
maxDistance(default4.0) of the protected vehicle. The jammer targets the closest vehicle.
#Use the
signal_jammeritemYour character turns to face the vehicle and raises the jammer, and the camera moves onto the device's screen. The jammer runs a short boot sequence (self test, antennas, band sweep) before the scan starts.
Putting the jammer away during the boot sequence is free. The scan hasn't started yet, so no durability is lost and no alarm goes off.
#Match the target signal
The scope shows two waveforms: the vehicle's Target signal and Your Signal. Turn the Freq and Amp dials until your waveform lines up with the target. When both values are close enough, the screen shows Sync and the Signal Lock meter starts filling.
Hold the sync until the meter is full (about 3 seconds). If you drift out of sync, the meter drains again.
#Signal locked
The screen shows Signal Locked and you get a notification with how long the vehicle stays jammed. You can now lockpick and hotwire the vehicle until the jam expires.
#Controls
| Action | Keyboard & Mouse | Controller |
|---|---|---|
| Adjust frequency | A / D | Left stick (horizontal) |
| Adjust amplitude | W / S | Left stick (vertical) |
| Turn a dial | Drag a dial with left mouse, or scroll on it | - |
| Cancel | Escape, Backspace or right mouse | - |
The keys are shown as instructional buttons on screen while the jammer is active.
#Difficulty
Each jammer item has its own difficulty. A vehicle with a security module can raise it: the harder of the jammer's difficulty and the module's jamDifficulty is used. A module never makes a jam easier.
| Difficulty | Time limit | Frequency tolerance | Amplitude tolerance | Scope noise |
|---|---|---|---|---|
easy | 40s | ±10 | ±12 | 0.15 |
medium | 32s | ±7 | ±9 | 0.25 |
hard | 25s | ±5 | ±6 | 0.35 |
expert | 20s | ±3 | ±4 | 0.45 |
- Tolerances use the 0-100 dial scale. A smaller tolerance means you have to tune more precisely.
- Scope noise is the jitter on the waveforms (0 to 1), making the target harder to read.
- The difficulty is shown on the device screen.
With the default config, the signal_jammer item is hard. On an unmodified Super it plays as hard, and on a vehicle with an Elite module it plays as expert.
#Failing an Attempt
An attempt fails when:
- The time limit runs out before the lock meter is full.
- You cancel after the scan has started.
- You are interrupted: moving out of range, ragdolling, falling, dying, or the vehicle disappearing.
A failed attempt:
- Sets off the vehicle's alarm for
alarmDurationseconds (default30,0disables it). - Triggers the robbery hook with the
alarmTriggeredstage, which always counts as witnessed. See Dispatch & Logs. - Costs jammer durability, or may break it, depending on
itemUsageMode.
#Jammer Durability
itemUsageMode controls what happens to the jammer item. It works the same way as lockpicks.
| Mode | Behavior |
|---|---|
durability | Removes durability.success or durability.failure from the item. At 0 durability the jammer burns out and is removed. |
breakOnFail | Each failed attempt has a breakChance percent chance to destroy the jammer. |
disabled | The jammer is never damaged. |
By default, a successful jam costs nothing and a failed one costs 20 durability, so a jammer survives five failures.
Durability requires an inventory that supports item durability metadata. signal_jammer is non-stackable in the supplied item files for this reason.
#Dispatch & Logs
Jamming goes through the same hooks as the other theft actions:
| Stage | When | Witness check |
|---|---|---|
started | The scan goes live after the boot | Peds within witnessDistance (default 15.0) |
alarmTriggered | The attempt failed and the alarm went off | Always witnessed |
Both stages call OnKeyRobbery in server/unlocked/hooks.lua with type = "signalJammer", followed by the zyke_vehiclekeys:OnKeyRobbery event. Add your dispatch alert there.
A successful jam is logged through LogKeyAction as JammedVehicle.
To block jamming in certain places, edit CanJamKeyVehicle in the client or server hooks. By default it is blocked inside Zyke Garages sections when lockpicking.blockInGarageSections is enabled.
#Configuration Reference
All settings live in Config.Settings.signalJammer:
luasignalJammer = {
enabled = true,
protectedVehicles = {
classes = {[7] = true}, -- Vehicle class ids, 7 is Super
models = {}, -- Example: [joaat("adder")] = true
},
requiredFor = {
lockpicking = true, -- Lockpicking a protected vehicle needs a jam
hotwiring = true, -- Hotwiring a protected vehicle needs a jam
},
jamDuration = 120, -- Seconds the security stays jammed after a success
maxDistance = 4.0, -- How close the player has to be
witnessDistance = 15.0, -- Ped witness range when the scan starts
alarmDuration = 30, -- Seconds the alarm sounds after a failure, 0 disables it
itemUsageMode = "durability", -- "durability" | "breakOnFail" | "disabled"
items = {
signal_jammer = {
difficulty = "hard",
durability = {success = 0, failure = 20},
breakChance = 25, -- Used by breakOnFail
},
},
difficulties = {
easy = {timeLimit = 40, frequencyTolerance = 10, amplitudeTolerance = 12, noise = 0.15},
medium = {timeLimit = 32, frequencyTolerance = 7, amplitudeTolerance = 9, noise = 0.25},
hard = {timeLimit = 25, frequencyTolerance = 5, amplitudeTolerance = 6, noise = 0.35},
expert = {timeLimit = 20, frequencyTolerance = 3, amplitudeTolerance = 4, noise = 0.45},
},
}
#Adding More Jammer Tiers
Every entry in items is registered as a usable jammer. To add a cheaper, easier jammer, add the item to your inventory and a matching entry:
luaitems = {
signal_jammer = {difficulty = "hard", durability = {success = 0, failure = 20}, breakChance = 25},
cheap_jammer = {difficulty = "medium", durability = {success = 10, failure = 34}, breakChance = 40},
},
#FAQ
Q: Do I need to add the jammer to my inventory? Yes. Add signal_jammer from extras/items/ and copy signal_jammer.png from extras/items/images/256/ into your inventory images.
Q: Does the jammer give the thief a key? No. It only removes the security block. The vehicle still has to be lockpicked and hotwired.
Q: The jam ran out while I was hotwiring. Why can't I continue? The jam is checked when each action starts. If it expires before you start hotwiring, you need to jam again. Increase jamDuration if your players need more time.
Q: Can I disable the system entirely? Set signalJammer.enabled = false. Protected vehicles, including those with security modules, can then be stolen without a jam.
Q: Can I only require it for hotwiring? Yes. Set requiredFor.lockpicking = false.
Q: Players see "This vehicle's security is already jammed." Another player already jammed it and the timer is still running. They can go straight to lockpicking.