forked from Simnation/Main
74 lines
No EOL
2 KiB
Lua
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) |