asd
A FiveM resource for postal locker theft activities. Players can hack into postal locker units, break open individual cells, and loot items with various minigames and interactions.
Features
Hacking Minigame: Brute force attack minigame to unlock postal locker units
Cell Breaking: Sequence minigame to break open individual locker cells
Loot System: Randomized loot generation with different package sizes (small, medium, large)
Carry System: Players can carry large loot items and loot them later
Dispatch Integration: Automatic police dispatch alerts when hacking fails
Reset System: Automatic cooldown and reset system for lockers
Multiple Models: Support for PostOp and GoPostal locker models
Visual Effects: Particle effects when breaking cells
State Synchronization: Client-server state synchronization using GlobalState
Installation
Prerequisites
kq_link - This script requires kq_link to be installed and running
Download: https://github.com/Kuzkay/kq_link
Make sure it's started before this resource
Steps
Place the
ls_locker_theftfolder in yourresources/[lith]directoryEnsure the resource name is exactly
ls_locker_theft(the script checks for this)Add to your
server.cfg:
ensure kq_link
ensure ls_locker_theftConfigure the script in
config.lua(see Configuration section)Restart your server or start the resource
Configuration
Basic Settings
Config.debug = false -- Enable debug modeLocker Locations
Configure locker positions in Config.lockers:
Config.lockers = {
{
coords = vector3(47.676, 99.946, 77.903),
rotation = vector3(0.3, -0.8, 68.9),
size = 2, -- 1 for small (15 cells), 2 for large (30 cells)
model = 2 -- 1 for PostOp, 2 for GoPostal
},
-- Add more lockers...
}Parameters:
coords: World position of the lockerrotation: Rotation vector for the lockersize:1= small (15 cells),2= large (30 cells)model:1= PostOp model,2= GoPostal model
Input Controls
Customize key bindings in Config.inputs:
Config.inputs = {
drop = {
key = 'X',
control = '~INPUT_VEH_DUCK~'
},
loot = {
key = 'E',
control = '~INPUT_CONTEXT~'
},
hack = {
key = 'F',
control = '~INPUT_VEH_DUCK~'
},
pick_up = {
key = 'E',
control = '~INPUT_CONTEXT~'
},
break_in = {
key = 'L',
control = '~INPUT_CONTEXT~'
}
}Loot Configuration
Loot Times
Time required to loot items based on size:
Config.loot_times = {
small = 2, -- seconds
medium = 3, -- seconds
large = 5 -- seconds
}Loot Props
Define which props appear for each size category:
Config.props = {
['small'] = {
'prop_drug_package_02',
'm23_2_prop_m32_package_01a',
-- Add more...
},
['medium'] = {
'v_ret_gc_ammo5',
-- Add more...
},
['large'] = {
'v_res_filebox01',
-- Add more...
}
}Prop Attachment
Configure how large props attach to players:
Config.prop_attach = {
['v_res_filebox01'] = {
offset = vector3(0.08, 0.12, -0.27),
rotation = vector3(166, 69, -257),
ped_bone = 0xDEAD
},
-- Add more...
}Loot Generation
Config.loot = {
empty_cell_chance = 10, -- % chance cell has no loot prop
empty_loot_chance = 20, -- % chance loot prop has no items
amounts = {
small = { min = 1, max = 2 },
medium = { min = 2, max = 3 },
large = { min = 4, max = 6 }
},
items = {
small = {
['phone'] = { 1, 5 }, -- [min, max] amount
['money'] = { 1, 5 },
['mastercard'] = { 1, 5 },
['clothing'] = { 1, 5 },
},
-- Configure medium and large similarly...
}
}Minigame Configuration
Hacking Minigame
Config.hack = {
code_length = 4, -- Length of code to guess
max_attempts = 8, -- Maximum attempts allowed
timer_length = 90 -- Time limit in seconds
}Sequence Minigame (Cell Breaking)
Config.sequence = {
min = 1, -- Minimum number of keys in sequence
max = 6 -- Maximum number of keys in sequence
}Reset Cooldown
Config.locker_reset_cooldown = {
value = 10,
units = 'minutes' -- 'minutes' or 'seconds'
}Visual Effects
Config.particles = {
enable = true,
particle_asset = 'core',
particle_name = 'ent_anim_dusty_hands',
particle_scale = 2.0,
particle_play_length = 2000 -- milliseconds
}Dispatch System
Config.dispatch = {
enabled = true,
jobs = { 'police', 'bsco', 'lspd' }, -- Jobs that receive alerts
blip = {
sprite = 4,
color = 1,
scale = 1.5,
text = L('dispatch_blip_message'),
flash = false
}
}Gameplay Mechanics
Hacking the Locker Unit
Approach a postal locker unit
Press the hack key (default:
F) when promptedA camera view focuses on the locker
Complete the brute force hacking minigame:
Enter a 4-digit code
Receive feedback on each digit (correct position, wrong position, or not in code)
You have 8 attempts and 90 seconds
If successful, all cells in the locker unlock
If failed, a dispatch alert is sent (if enabled)
Customization
Adding New Loot Items
Edit
Config.loot.itemsinconfig.lua:
Config.loot.items = {
small = {
['your_item'] = { 1, 5 }, -- [min, max]
-- ...
}
}Ensure your item system supports
kq_link:AddPlayerItemexport
Adding New Locker Locations
Add entries to Config.lockers:
{
coords = vector3(x, y, z),
rotation = vector3(rx, ry, rz),
size = 1 or 2,
model = 1 or 2
}Customizing Loot Props
Add prop models to
Config.propsunder appropriate size categoryIf it's a large prop, add attachment configuration to
Config.prop_attach
Modifying Minigames
Hacking: Edit
Config.hackand modifynui/index.htmlfor UI changesSequence: Edit
Config.sequencevalues
Changing Rewards System
Modify GiveReward() function in server/editables/loot.lua to integrate with your item framework.
Troubleshooting
Notes
The script uses GlobalState for client-server synchronization
Locker units are only loaded when players are within 150 units
Large loot items use networked entities for multiplayer sync
The resource name must be exactly
ls_locker_theft(checked on client start)Some files are marked as
escrow_ignorefor customization
Support
For issues or questions, contact Lith Studios or check the original resource page.
Last updated
Was this helpful?

