feat(imports/points): distance checks and interaction api

WIP. Set callback functions when exiting and standing in range of
a set point. Primary callback is called on-frame and can be used
to check for key presses, distance, draw markers, etc.
This commit is contained in:
Linden
2022-03-13 03:22:09 +00:00
parent 35e4bc7509
commit 2ce934c41a

54
imports/points/client.lua Normal file
View File

@@ -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