mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-17 06:56:03 +01:00
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:
54
imports/points/client.lua
Normal file
54
imports/points/client.lua
Normal 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
|
||||||
Reference in New Issue
Block a user