Creating & Using Containers
Containers are shared, slot-based inventories that can be created dynamically or pre-defined for vehicles, world drops, fridges, etc. They support the same clean method API as player inventories.
Creating a Container
Use the create_container
export from the server to create any container:
local data, err = exports.list_inventory:create_container("world", "fridge", {
owner = "house_7",
coords = vector3(123.4, 456.7, 789.0),
persist = true
})
Params
category
string
Logical group (world
, vehicle
, etc.)
subtype
string
Container type (fridge
, drop
, etc.)
options
table
Metadata: owner
, coords
, persist
, etc.
Getting a Container
Use get_container(id)
to retrieve an active container object:
local container = exports.list_inventory:get_container("trunk:ABC123")
if not container then return end
Once retrieved, you can use any container method:
container:add_item("bandage", 2)
Container Methods
All container objects support these public methods:
add_item(id, amount, metadata)
remove_item(lookup, amount)
split_item(slot, amount)
get_items()
/get_item(lookup)
has_item(lookup, amount)
clear_items()
save()
/sync()
get_data(key)
/set_data(key, value)
Default Container Types
Container types and defaults are defined in data/containers.lua
. You can modify these or add your own.
Vehicles
trunk
100
vehicle
glovebox
10
vehicle
trailer
120
vehicle
Loot & Drops
drop
200
loot
Bag prop, outlines red
airdrop
50
loot
Crate prop, outlines blue
Storage Containers
desk_fridge
5
storage
quality_preservation = 1.5
mini_fridge
40
storage
quality_preservation = 2.0
fridge
40
storage
prevent_spoil = true
You can define props, outline styles, and special logic like spoilage blocking or preservation multipliers.
Temporary Drops
Drop containers (category loot
, subtype drop
) are temporary. When emptied, they are:
Deleted from server memory
Removed from the client UI
These are handled internally when a player drops an item however you could make one if you want too, why not? Who said you cant.
local coords = GetEntityCoords(GetPlayerPed(source))
exports.list_inventory:create_container("loot", "drop", {
owner = "drop_" .. source,
coords = coords,
persist = false
})
Notes
Containers use slot limits, not weights
Some types (like fridges) can prevent degradation or slow it if enabled
If a persistent container already exists for an
owner
, it will be loaded instead of recreatedYou can define your own container types freely, provided ones are purely example
Stay slotted, stay chill.™
Last updated