diff --git a/client/entityiter.lua b/client/entityiter.lua index c2e87406..11a23b8f 100644 --- a/client/entityiter.lua +++ b/client/entityiter.lua @@ -57,6 +57,27 @@ local function EnumerateEntities(initFunc, moveFunc, disposeFunc) end) end +function EnumerateEntitiesWithinDistance(entities, coords, maxDistance) + local nearbyEntities = {} + + if coords then + coords = vector3(coords.x, coords.y, coords.z) + else + local playerPed = PlayerPedId() + coords = GetEntityCoords(playerPed) + end + + for k,entity in ipairs(entities) do + local distance = #(coords - GetEntityCoords(entity)) + + if distance <= maxDistance then + table.insert(nearbyEntities, entity) + end + end + + return nearbyEntities +end + function EnumerateObjects() return EnumerateEntities(FindFirstObject, FindNextObject, EndFindObject) end diff --git a/client/functions.lua b/client/functions.lua index 814a8c39..60f497a4 100644 --- a/client/functions.lua +++ b/client/functions.lua @@ -449,9 +449,9 @@ ESX.Game.GetClosestObject = function(coords, modelFilter) return ESX.Game.GetClo ESX.Game.GetClosestPed = function(coords, modelFilter) return ESX.Game.GetClosestEntity(EnumeratePeds(), coords, modelFilter) end ESX.Game.GetClosestPlayer = function(coords, modelFilter) return ESX.Game.GetClosestEntity(ESX.Game.GetPlayers(), coords, modelFilter) end ESX.Game.GetClosestVehicle = function(coords, modelFilter) return ESX.Game.GetClosestEntity(EnumerateVehicles(), coords, modelFilter) end -ESX.Game.GetPlayersInArea = function(coords, area) return enumerateInArea(ESX.Game.GetPlayers(), coords, area) end -ESX.Game.GetVehiclesInArea = function(coords, area) return enumerateInArea(ESX.Game.GetVehicles(), coords, area) end -ESX.Game.IsSpawnPointClear = function(coords, radius) return #ESX.Game.GetVehiclesInArea(coords, radius) == 0 end +ESX.Game.GetPlayersInArea = function(coords, maxDistance) return EnumerateEntitiesWithinDistance(ESX.Game.GetPlayers(), coords, maxDistance) end +ESX.Game.GetVehiclesInArea = function(coords, maxDistance) return EnumerateEntitiesWithinDistance(EnumerateVehicles(), coords, maxDistance) end +ESX.Game.IsSpawnPointClear = function(coords, maxDistance) return #ESX.Game.GetVehiclesInArea(coords, maxDistance) == 0 end ESX.Game.GetClosestEntity = function(entities, coords, modelFilter) local closestEntity, closestEntityDistance, filteredEntities = -1, -1, nil