Skip to content

Retro Hidden Mic

Common problems and their solutions. If you find a matching issue below, follow the provided fix.


I can’t open the wiretap panel / no target option appears

Section titled “I can’t open the wiretap panel / no target option appears”

The panel only opens at a command center, and the option is hidden unless your job and grade match. Check:

  1. You defined at least one entry in Config.CommandCenters.
  2. Your player’s job name matches a key in that center’s jobs table (comparison is case-sensitive).
  3. Your grade is greater than or equal to the minimum grade.
config/config.lua
Config.CommandCenters = {
{
name = "LSPD Police Station",
targetCoords = vector4(440.0, -980.0, 30.6, 187.4622),
antennaCoords = vector3(425.0, -980.0, 45.0),
jobs = { ['police'] = 0 }, -- job = minimum grade
},
}

The live audio feed runs entirely through pma-voice. If you hear no audio:

  • Make sure pma-voice is installed and started before rs_hiddenmic.
  • Add setr voice_enableUi 0 to your server.cfg (the script renders its own visualization).
  • A target must actually be within the bug’s listening range (Config.BugListenRange, Config.BugPlayerListenRange, or Config.BugVehicleListenRange).
  • Check the signal isn’t being killed by distance, speed, a roof penalty, or a nearby jammer.

”No player nearby” / “No vehicle nearby” when planting

Section titled “”No player nearby” / “No vehicle nearby” when planting”

Player and vehicle bugs are planted through the target option on the entity, not by using the item alone. Aim your target at the player or vehicle, choose the wire option, and stay within Config.DistanceInteract (default 2.0).


  1. Verify the item names in your inventory match the config names exactly: room_bug, player_bug, vehicle_bug, bug_jammer, bug_signal_amplifier.
  2. Make sure you added the items from the correct file in INSTALL/inventory/ for your inventory.
  3. Confirm Config.Framework matches your actual framework so usable items register correctly.
config/config.lua
Config.BugItem = 'room_bug'
Config.BugPlayerItem = 'player_bug'
Config.BugVehicleItem = 'vehicle_bug'
Config.JammerSetup.Item = 'bug_jammer'
Config.AmplifierSetup.Item = 'bug_signal_amplifier'

  • The scanner is the weapon set in Config.ScanerWeapon (default WEAPON_DIGISCANNER). It must be equipped in hand.
  • The bug must be within scanning range and its signal alive (a dead battery or a jammer can hide it).
  • To detect moving bugs (players/vehicles) with directional color indication, enable it:
config/config.lua
Config.EnableDirectionalScannerForDynamicBugs = true

While the scanner is on the bug, press the key set in Config.KeyRemoveBug. Change the key and its on-screen label here:

config/config.lua
Config.KeyRemoveBug = {
KeyId = 182, -- Control ID
KeyLabel = 'L', -- Label shown in the prompt
}

Bugs die too quickly / never run out of battery

Section titled “Bugs die too quickly / never run out of battery”

Battery life is per device type, in seconds. Increase the values, or change auto-removal behaviour:

config/config.lua
Config.BatteryLife = {
Surface = 7200, -- 2 hours
Player = 5400, -- 1.5 hours
Vehicle = 3600, -- 1 hour
}
Config.RemoveBugOnBatteryEmpty = false -- true = bug is deleted when the battery hits 0

Signal strength is reduced by distance, speed, and obstruction. Tune these:

  • Config.DefaultMaxSignalDistance distance at which the signal hits 0% (raise per-center with maxSignalDistance).
  • Config.SpeedPenaltyThreshold / Config.SpeedPenaltyMultiplier penalty for fast-moving player/vehicle bugs.
  • Config.EnableRoofPenalty / Config.RoofSignalPenalty penalty under roofs, tunnels, and overpasses.
  • Deploy a Signal Amplifier near the bug to extend range, or add a Config.StaticAmplifiers relay.

A bug disappears from the map but is still planted

Section titled “A bug disappears from the map but is still planted”

That’s the signal threshold system, not a bug. When a device’s signal drops below these values, the NUI hides parts of it:

config/config.lua
Config.SignalHideMapThreshold = 20 -- Hide from the map below 20%
Config.SignalHidePlayersThreshold = 15 -- Hide player list below 15%
Config.SignalHideWaveformThreshold = 5 -- Hide the speaking waveform below 5%

That’s intended. A jammer cuts signal for every bug inside its radius. Reduce its reach or strength:

config/config.lua
Config.JammerSetup = {
Range = 40.0, -- Smaller radius (m)
Penalty = 100, -- 100 = total cut; lower it for partial interference
}

Audio channels collide with my phone / dispatch

Section titled “Audio channels collide with my phone / dispatch”

Bugs use pma-voice call channels starting at Config.BaseCallChannel. If another script uses overlapping channels, move the base value:

config/config.lua
Config.BaseCallChannel = 9000 -- Raise this above any range used by other scripts

Set Config.Locale to one of the included locale files. To translate, edit the matching file in locales/.

config/config.lua
Config.Locale = 'en' -- 'en', 'pl', 'ar', 'cn', 'de', 'es', 'fr', 'hu', 'it', 'ja', 'pt', 'sv', 'zh-tw'

  1. Check Config.Webhooks.Enabled = true in config/webhooks.lua.
  2. Confirm LogSystem matches the backend you configured ('discord', 'ox', 'datadog', 'fivemanage').
  3. For Discord, set DefaultURL (used as a fallback when a specific action URL is empty).
config/webhooks.lua
Config.Webhooks = {
Enabled = true,
LogSystem = 'discord',
DefaultURL = "https://discord.com/api/webhooks/...",
}