title: Object Concealer
Just a simple resource used to Hide Unused/Vulnerable Objects in FiveM
Official Download
Create one yourself
server/main.lua
RegisterServerEvent('server:createObject')
RegisterServerEvent('server:loadObjects')
RegisterServerEvent('server:loadObjectsForPlayer')
-- [[ Variáveis ]]
Project = 'HiddenObjects - v0.0.1'
Archive = 'hidden.ini'
local objectData = {}
-- [[ Eventos ]]
AddEventHandler('server:createObject', function(model, coords, time) -- vector4 coords
table.insert(objectData, {
model = model,
coords = coords,
time = (os.time() + time)
})
TriggerClientEvent('client:createObject', -1, model, coords) -- Chamado para todos os players
end)
AddEventHandler('server:loadObjects', function()
local f = io.open(Archive, 'r')
if f then
for x in f:lines() do
local obj = json.decode(x)
table.insert(objectData, {
model = obj.model,
coords = vector4(obj.coords.x, obj.coords.y, obj.coords.z, obj.coords.w),
time = obj.time
})
print('[' .. Project .. '] Objeto ' .. #objectData .. ' carregado com sucesso!')
end
f:close()
end
end)
AddEventHandler('server:loadObjectsForPlayer', function()
local src = source
for k, v in pairs(objectData) do
TriggerClientEvent('client:loadObject', src, v.model, v.coords)
end
end)
-- [[ Threads ]]
Citizen.CreateThread(function()
TriggerEvent('server:loadObjects')
while true do
Citizen.Wait(1000)
for k, v in pairs(objectData) do
if v.time < os.time() then
TriggerClientEvent('client:deleteObject', -1, v.model, v.coords, 1.0) -- Chamado para todos os players
k = nil
-- break
end
end
_saveObjects()
end
end)
-- [[ Funções ]]
function _saveObjects() -- dini times
local f = io.open(Archive, 'w+')
for k, v in pairs(objectData) do
f:write(json.encode(v) .. '\n')
end
f:close()
end
client/main.lua
RegisterNetEvent('client:createObject')
RegisterNetEvent('client:deleteObject')
RegisterNetEvent('client:loadObject')
-- [[ Eventos ]]
AddEventHandler('client:createObject', function(model, coords) -- vector4 coords
local object = CreateObject(GetHashKey(model), coords.x, coords.y, coords.z, false, true, true)
SetEntityHeading(object, coords.w)
PlaceObjectOnGroundProperly(object)
end)
AddEventHandler('client:deleteObject', function(model, coords, radius) -- only vector3 coords
local object = GetClosestObjectOfType(coords.x, coords.y, coords.z, radius, GetHashKey(model), true)
if object then
DeleteObject(object)
end
end)
AddEventHandler('client:loadObject', function(model, coords) -- vector4 coords
local object = CreateObject(GetHashKey(model), coords.x, coords.y, coords.z, false, true, true)
SetEntityHeading(object, coords.w)
PlaceObjectOnGroundProperly(object)
end)
-- [[ Threads ]]
Citizen.CreateThread(function()
while true do
Citizen.Wait(1000)
if NetworkIsSessionStarted() then
TriggerServerEvent('server:loadObjectsForPlayer')
break
end
end
end)
__resource.lua
description 'SomeScriptName'
version '0.0.1'
server_script 'server/main.lua'
client_script 'client/main.lua'