1
0
Fork 0
forked from Simnation/Main
Main/resources/[Developer]/[Nordi]/0r-rccar/client/headshot.lua
2025-06-07 08:51:21 +02:00

74 lines
No EOL
2 KiB
Lua

local requests = {}
local function GenerateId()
local id = ""
for i = 1, 15 do
id = id .. (math.random(1, 2) == 1 and string.char(math.random(97, 122)) or tostring(math.random(0,9)))
end
return id
end
local function ClearHeadshots()
for i = 1, 32 do
if IsPedheadshotValid(i) then
UnregisterPedheadshot(i)
end
end
end
local function GetHeadshot(ped)
ClearHeadshots()
if not ped then ped = PlayerPedId() end
if DoesEntityExist(ped) then
local handle, timer = RegisterPedheadshot(ped), GetGameTimer() + 5000
while not IsPedheadshotReady(handle) or not IsPedheadshotValid(handle) do
Wait(50)
if GetGameTimer() >= timer then
return {success=false, error="Could not load ped headshot."}
end
end
local txd = GetPedheadshotTxdString(handle)
local url = string.format("https://nui-img/%s/%s", txd, txd)
return {success=true, url=url, txd=txd, handle=handle}
end
end
GetBase64 = function(ped)
if not ped then ped = PlayerPedId() end
local headshot = GetHeadshot(ped)
if headshot.success then
local requestId = GenerateId()
requests[requestId] = nil
SendNUIMessage({
type = "convert_base64",
img = headshot.url,
handle = headshot.handle,
id = requestId
})
local timer = GetGameTimer() + 5000
while not requests[requestId] do
Wait(250)
if GetGameTimer() >= timer then
return {success=false, error="Waiting for base64 conversion timed out."}
end
end
return {success=true, base64=requests[requestId]}
else
return headshot
end
end
RegisterNUICallback("base64", function(data, cb)
if data.handle then
UnregisterPedheadshot(data.handle)
end
if data.id then
requests[data.id] = data.base64
Wait(1500)
requests[data.id] = nil
end
cb({ok=true})
end)