54 lines
1.1 KiB
Lua
54 lines
1.1 KiB
Lua
local points = {}
|
|
|
|
function ESX.CreatePointInternal(coords, distance, hidden, enter, leave)
|
|
local point = {
|
|
coords = coords,
|
|
distance = distance,
|
|
hidden = hidden,
|
|
enter = enter,
|
|
leave = leave,
|
|
resource = GetInvokingResource()
|
|
}
|
|
local handle = ESX.Table.SizeOf(points) + 1
|
|
points[handle] = point
|
|
return handle
|
|
end
|
|
|
|
function ESX.RemovePointInternal(handle)
|
|
points[handle] = nil
|
|
end
|
|
|
|
function ESX.HidePointInternal(handle, hidden)
|
|
if points[handle] then
|
|
points[handle].hidden = hidden
|
|
end
|
|
end
|
|
|
|
function StartPointsLoop()
|
|
CreateThread(function()
|
|
while true do
|
|
local coords = GetEntityCoords(ESX.PlayerData.ped)
|
|
for handle, point in pairs(points) do
|
|
if not point.hidden and #(coords - point.coords) <= point.distance then
|
|
if not point.nearby then
|
|
points[handle].nearby = true
|
|
points[handle].enter()
|
|
end
|
|
elseif point.nearby then
|
|
points[handle].nearby = false
|
|
points[handle].leave()
|
|
end
|
|
end
|
|
Wait(500)
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
AddEventHandler('onResourceStop', function(resource)
|
|
for handle, point in pairs(points) do
|
|
if point.resource == resource then
|
|
points[handle] = nil
|
|
end
|
|
end
|
|
end) |