Files
Elite-Gaming-FiveM/resources/[EGRP-Map-Addons]/MosleyAutoShop/client/functions.lua
T
2021-12-03 01:35:12 +00:00

83 lines
2.0 KiB
Lua

---------------------------------------------------------------------------
-- Functions taken from ESX to make the script standalone
---------------------------------------------------------------------------
local entityEnumerator = {
__gc = function(enum)
if enum.destructor and enum.handle then
enum.destructor(enum.handle)
end
enum.destructor = nil
enum.handle = nil
end
}
local function EnumerateEntities(initFunc, moveFunc, disposeFunc)
return coroutine.wrap(function()
local iter, id = initFunc()
if not id or id == 0 then
disposeFunc(iter)
return
end
local enum = {handle = iter, destructor = disposeFunc}
setmetatable(enum, entityEnumerator)
local next = true
repeat
coroutine.yield(id)
next, id = moveFunc(iter)
until not next
enum.destructor, enum.handle = nil, nil
disposeFunc(iter)
end)
end
function EnumerateObjects()
return EnumerateEntities(FindFirstObject, FindNextObject, EndFindObject)
end
function EnumeratePeds()
return EnumerateEntities(FindFirstPed, FindNextPed, EndFindPed)
end
function EnumerateVehicles()
return EnumerateEntities(FindFirstVehicle, FindNextVehicle, EndFindVehicle)
end
function EnumeratePickups()
return EnumerateEntities(FindFirstPickup, FindNextPickup, EndFindPickup)
end
function GetVehicles()
local vehicles = {}
for vehicle in EnumerateVehicles() do
table.insert(vehicles, vehicle)
end
return vehicles
end
function GetVehiclesInArea(coords, area)
local vehicles = GetVehicles()
local vehiclesInArea = {}
for i=1, #vehicles, 1 do
local vehicleCoords = GetEntityCoords(vehicles[i])
local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true)
if distance <= area then
table.insert(vehiclesInArea, vehicles[i])
end
end
return vehiclesInArea
end
function IsSpawnPointClear(coords, radius)
local vehicles = GetVehiclesInArea(coords, radius)
return #vehicles == 0
end