[STANDALONE] Ankle Monitor System

Ankle Monitor System

Keep offenders under watch and elevate your law enforcement roleplay with this advanced ankle monitor system. It allows officers to fit offenders with tracking devices and monitor their movements in real time, adding immersive detail to criminal and police interactions. Whether you’re enforcing parole conditions or managing restricted areas, this script brings depth and authenticity to every encounter on your server.

:shopping_cart: Get it here: gamzkystore.com

:question: Support: Discord

:movie_camera: Detailed preview: Youtube

Features

  • The ankle monitor prop is included with the files.
  • Can be run f͟u͟l͟l͟y͟ s͟t͟a͟n͟d͟a͟l͟o͟n͟e͟ through commands, but also supports job/item requirements as well as target-based interactions.
  • The positions of the tracked players update at an interval, to focus on performance optimalization (interval can be configured).
  • The option to lockpick the ankle monitor of another player, promoting teamwork among criminals (can also be fully disabled).
  • Fully synchronized between players.
  • The option to save the ankle monitor to the database. Players who disconnect whilst wearing an ankle monitor will keep it when reconnecting.
  • Animations are present to enhance immersion.
  • Highly configurable, see the code-snippet below for more details.

How it works

  • Use either a target-system or a command to apply the ankle monitor to a player.
  • Observe their live location on the map and enforce law accordingly.
  • Either let the ankle monitor be removed by law enforcement, or let someone lockpick the ankle monitor for you.

Resmon: Idle: 0.00ms - When wearing tracker: ~0.00ms

Update 1.1.0

  • Added a command to toggle all ankle monitor blips on/off.
  • Added a command to ‘whitelist’ specific players from this toggle, such that they are always displayed.
  • These commands can be configured at the bottom of the config.lua file, a short showcase video can be viewed on streamable.
Config
Config = {}

-- This command toggles the ankle monitor on a specified player (usage: /CommandName <player-id> ). Set "Config.CommandName = nil" to disasble the command.
Config.CommandName = 'toggle_monitor'

-- The maximum distance at which an ankle monitor can be applied to someone (so if someone walks away, you cannot apply the ankle monitor)
Config.MaxInteractDistance = 5

-- The required jobs which can apply the ankle monitor. Set "Config.RequiredJobs = {'police', 'ambulance'}" to allow police and ambulance to use the ankle monitor.
Config.RequiredJobs = nil

-- The required item needed to apply the ankle monitor. This can for instance be 'ankle_monitor' if you added the item to your inventory.
Config.RequiredItem = nil

-- The prop model of the ankle monitor
Config.PropModelName = 'ankle_monitor'

-- The bone to which the ankle monitor attaches, 63931 = SKEL_L_Ankle (left ankle)
Config.AttachBone = 63931

-- The position/rotation offset with respect to the Config.AttachBone where the prop will be attached
Config.AttachOffset = { x = 0.35, y = 0.01, z = -0.01, rx = 8.00, ry = -95.50, rz = 10.50 }

-- The frequency at which the blips are updated, decreasing this value will be more demanding w.r.t. performance.
Config.BlipUpdateInterval = 5000

-- Configuration of the blip
Config.Blip = {
    Label = 'Ankle Monitor',
    Sprite = 480,
    Scale = 0.85,
    Colour = 1,
}

-- Configuration for target systems (ox-target and qb-target supported by default)
Config.Target = {
    Enabled = true,                       -- Set to false to disable target options (you can only use Config.CommandName in this case)
    AddLabel = 'Add ankle monitor',       -- The target label to add the monitor
    RemoveLabel = 'Remove ankle monitor', -- The target label to remove the monitor
    Distance = 1.5,                       -- The maximum interaction distanc
}

-- Configuration for the lockpicking
Config.Lockpick = {
    Enabled = true,                   -- Set false to disable lockpicking (lockpicking can only be done through targeting)
    Label = 'Lockpick ankle monitor', -- The target label
    RequiredItem = 'lockpick',        -- The required item, set to RequiredItem = nil, to disable item requirement
    RemoveItemOnSucces = false,       -- Remove the item when lockpick was successful
    RemoveItemOnFail = true,          -- Remove the item when lockpick failed

    -- Minigame configuration
    AmountOfMinigames = 3,        -- The amount of successful minigames required to lockpick the wheel clamp (only for servers with ox_lib installed)
    MinigameAreaSize = 35,        -- The area size of the lockpick minigame, smaller value is more difficult (only for servers with ox_lib installed)
    MinigameSpeedMultiplier = 1.3 -- The speed multiplier for the lockpick minigame, larger value is more difficult (only for servers with ox_lib installed)
}

-- Configure any animation below
Config.Animation = {
    ['add_monitor'] = {
        Dict = 'anim@amb@clubhouse@tutorial@bkr_tut_ig3@',
        Anim = 'machinic_loop_mechandplayer',
        Flag = 1,
        Duration = 1200,
    },
    ['remove_monitor'] = {
        Dict = 'anim@amb@clubhouse@tutorial@bkr_tut_ig3@',
        Anim = 'machinic_loop_mechandplayer',
        Flag = 1,
        Duration = 1200,
    },
    ['lockpicking'] = {
        Dict = 'anim@amb@clubhouse@tutorial@bkr_tut_ig3@',
        Anim = 'machinic_loop_mechandplayer',
        Flag = 1,
        Duration = 3000, -- When using the lockpicking minigame, the duration is not applicable.
    },
}

-- Configuration of the notification text
Config.Locales = {
    ['player_not_online'] = 'This player is not online',
    ['missing_required_job'] = 'You do not have the required job',
    ['missing_required_item'] = 'You do not have the required item',
    ['target_to_far_away'] = 'The target is to far away',
    ['lockpick_prepare'] = 'Preparing lockpick',
    ['missing_player_name'] = 'Provide the name of the player',
}

-- Extra features from update 1.1.0 --

-- With the command below you can toggle the blips on/off for all the ankle monitors. Set to nil to disable the command.
Config.ToggleAllBlipsCommand = nil -- 'toggle_monitor_blips'

-- With the command below you can toggle the blips on/off for a specific player. Set to nil to disable the command.
-- You should pass the name of the player as an argument, so if the player is named 'John Doe', you can toggle the blip through </toggle_monitor_blips_player John Doe>
Config.TogglePlayerBlipsCommand = nil -- 'toggle_monitor_blips_player'

Code is accessible Partially, fully unencrypted version also available
Subscription-based No
Lines (approximately) ~900
Requirements None, can be run as standalone
Support Yes
2 Likes

I really like this but any chance instead of it constantly tracking on the map, the PD job can just search for them and track it when they want to? Maybe by citizen ID or something like that?

1 Like

Thanks for the suggestion!

How would you want to search for specific players? Like through a command, or did you have something else in mind?

1 Like

Yeah kind of the way qb-policejob does it with theirs. Id just rather use yours. Its through a command like /ankletlocation # by like citizen ID or something would be nice.

1 Like

I think this should not be too much work. I will try to look into it this weekend and come back to you once I have updated the resource :smiley:

1 Like

Sweet looking forward to it.

1 Like

I just pushed an update (1.1.0) where I added two commands @iamproof:

  • A command to toggle all ankle monitor blips on/off.
  • A command to ‘whitelist’ specific players from this toggle, such that they are always displayed.

This way you can only display specific players, here is a short video to showcase how it works:

You can configure these two commands at the bottom of the config.lua file, by default they will be disabled.

1 Like

oh wow! this is awesome. appreciate this. will be grabbing this tonight. thank you again.

1 Like

nice release!

1 Like

Thank you! :grin:

Update 1.2.0

  • Added the option to save the ankle monitor to the database. Players that disconnect with the ankle monitor will have an ankle monitor when they reconnect again. You can enable this in the config.lua file via Config.SaveToDatabase.

i wanted to buy but i have a question, theres posible that only persons with certain job can see the blip in the map? i just wanted the police to see the ankles monitors blips in the map

Hi @Mr.Nobody_21,

Yes you can configure job requirements such that only players with that job can apply the ankle monitor and view the blips.

This is a simple configurable option:
Config.RequiredJobs = { 'police', 'sheriff' }

ah, okey, i thought that was only for aplying the ankle monitor
image

thank you! <3

1 Like

Ah yeah I understand the confusion. But it is indeed also for the blip visibility :slight_smile: