Introducing ctrl_streamer, a free and powerful module for dynamic object management in your RedM server. Designed for efficiency and immersion, ctrl_streamer ensures objects spawn and despawn dynamically based on player location, improving performance and gameplay.
Create an object using the server event or export:
TriggerEvent('objectStreamer:createObject', 'prop_chair_01a', 100.0, 200.0, 300.0, 90.0, { owner = 'Player1' })
-- Or using the export
local objectId = exports['ctrl_streamer']:CreateObject('prop_chair_01a', 100.0, 200.0, 300.0, 90.0, { owner = 'Player1' })
print("Object ID:", objectId)Delete an object by its unique ID:
TriggerEvent('objectStreamer:deleteObject', 12345678) local object = exports['ctrl_streamer']:GetObjectById(12345678)
if object then
print("Object found:", object.model)
end
local object = exports['ctrl_streamer']:GetObjectByCoords(100.0, 200.0, 300.0)
if object then
print("Object found at coordinates:", object.model)
end
TriggerServerEvent('objectStreamer:getObjects')
-- The server will send all objects to the client via the 'objectStreamer:loadObjects' event.
Customize the client behavior with these configuration options:
Allow players to dynamically place campfires:
RegisterCommand('campfire', function(source, args)
local playerCoords = GetEntityCoords(GetPlayerPed(source))
TriggerEvent('objectStreamer:createObject', 'p_campfire04x', playerCoords.x, playerCoords.y, playerCoords.z, 0.0, { owner = GetPlayerName(source) })
end)Enable players to delete nearby objects:
RegisterCommand('cleanup', function(source)
local playerCoords = GetEntityCoords(GetPlayerPed(source))
local object = exports['ctrl_streamer']:GetObjectByCoords(playerCoords.x, playerCoords.y, playerCoords.z)
if object then
exports['ctrl_streamer']:DeleteObject(object.id)
print("Object deleted:", object.model)
else
print("No object found nearby!")uj
end
end)Attach custom metadata to objects for ownership or gameplay:
TriggerEvent('objectStreamer:createObject', 'prop_safe_01', 150.0, 250.0, 50.0, 180.0, { owner = 'Player123', locked = true })Join our Discord for support or questions:
FYI: Only limited, non-priority support is offered due to the package price (which is free).