mirror of
https://github.com/sky-systems/sky_phone.git
synced 2026-08-29 03:01:42 +00:00
54 lines
1.9 KiB
Lua
54 lines
1.9 KiB
Lua
local overhead_members = {}
|
|
local overhead_expires_at = 0
|
|
|
|
local function draw_overhead_label(coords, username, role)
|
|
SetDrawOrigin(coords.x, coords.y, coords.z + 1.05, 0)
|
|
SetTextScale(0.0, 0.29)
|
|
SetTextFont(4)
|
|
SetTextProportional(true)
|
|
SetTextColour(235, 245, 255, 235)
|
|
SetTextCentre(true)
|
|
SetTextOutline()
|
|
BeginTextCommandDisplayText("STRING")
|
|
AddTextComponentSubstringPlayerName(("~b~%s~s~ %s"):format(username, role))
|
|
EndTextCommandDisplayText(0.0, 0.0)
|
|
ClearDrawOrigin()
|
|
end
|
|
|
|
RegisterNUICallback("crewlink:live", function(data, cb)
|
|
local result = Bridge.Callbacks.Trigger("sky_phone:crewlink:live", data)
|
|
overhead_members = result and result.success and result.data and result.data.overheadMembers or {}
|
|
overhead_expires_at = GetGameTimer() + Config.CrewLink.OverheadRefreshMilliseconds * 2
|
|
cb(result or { success = false, error = "request_failed" })
|
|
end)
|
|
|
|
AddEventHandler("sky_phone:nuiClosed", function()
|
|
overhead_members = {}
|
|
overhead_expires_at = 0
|
|
end)
|
|
|
|
CreateThread(function()
|
|
while true do
|
|
local sleep = 1000
|
|
if overhead_expires_at > 0 and GetGameTimer() >= overhead_expires_at then
|
|
overhead_members = {}
|
|
overhead_expires_at = 0
|
|
end
|
|
if #overhead_members > 0 then
|
|
sleep = 0
|
|
local player_coords = GetEntityCoords(PlayerPedId())
|
|
for _, member in ipairs(overhead_members) do
|
|
local player = GetPlayerFromServerId(member.source)
|
|
if player ~= -1 then
|
|
local ped = GetPlayerPed(player)
|
|
local coords = GetEntityCoords(ped)
|
|
if #(player_coords - coords) <= Config.CrewLink.OverheadDistance then
|
|
draw_overhead_label(coords, member.username, member.roleLabel)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
Wait(sleep)
|
|
end
|
|
end)
|