diff --git a/imports/points/client.lua b/imports/points/client.lua new file mode 100644 index 0000000..becce52 --- /dev/null +++ b/imports/points/client.lua @@ -0,0 +1,54 @@ +local points = {} +local nearby = {} + +function points.new(coords, distance, data) + local id = #points + 1 + + local self = { + id = id, + coords = coords, + distance = distance + } + + for k, v in pairs(data) do + self[k] = v + end + + points[id] = self + + return self +end + +CreateThread(function() + while true do + local coords = GetEntityCoords(cache.ped) + Wait(300) + table.wipe(nearby) + + for i = 1, #points do + local point = points[i] + local distance = #(coords - point.coords) + + if distance <= point.distance then + nearby[#nearby + 1] = point + point.currentDistance = distance + elseif point.currentDistance then + if point.onExit then point:onExit() end + point.entered = nil + point.currentDistance = nil + end + end + end +end) + +CreateThread(function() + while true do + Wait(0) + for i = 1, #nearby do + local point = nearby[i] + if point.callback then point:callback() end + end + end +end) + +return points \ No newline at end of file