Files
2026-07-07 21:08:52 +02:00

101 lines
2.5 KiB
Lua

Skin = {}
Skin._index = Skin
Skin.firstSpawn = true
Skin.zoomOffset = 0.0
Skin.camOffset = 0.0
Skin.heading = 90.0
Skin.customPI = math.pi / 180.0
function Skin:CalcualteHeading(angle)
if angle > 360 then
angle = angle - 360
elseif angle < 0 then
angle = angle + 360
end
angle = angle * self.customPI
return angle
end
function Skin:CalcuatePosition(coords)
local angle = self.heading * self.customPI
local theta = {
x = math.cos(angle),
y = math.sin(angle),
}
local pos = {
x = coords.x + (self.zoomOffset * theta.x),
y = coords.y + (self.zoomOffset * theta.y),
}
local angleToLook = self:CalcualteHeading(self.heading - 140.0)
local thetaToLook = {
x = math.cos(angleToLook),
y = math.sin(angleToLook),
}
local posToLook = {
x = coords.x + (self.zoomOffset * thetaToLook.x),
y = coords.y + (self.zoomOffset * thetaToLook.y),
}
return pos, posToLook
end
AddEventHandler("esx_skin:resetFirstSpawn", function()
Skin.firstSpawn = true
ESX.PlayerLoaded = false
end)
AddEventHandler("esx_skin:playerRegistered", function()
CreateThread(function()
while not ESX.PlayerLoaded do
Wait(100)
end
if Skin.firstSpawn then
ESX.TriggerServerCallback("esx_skin:getPlayerSkin", function(skin)
if skin == nil then
exports["skinchanger"]:LoadSkin({ sex = 0 })
Menu:Saveable()
else
exports["skinchanger"]:LoadSkin(skin)
end
end)
Skin.firstSpawn = false
end
end)
end)
RegisterNetEvent("esx:playerLoaded", function(_, _, skin)
ESX.PlayerLoaded = true
TriggerServerEvent("esx_skin:setWeight", skin)
end)
RegisterNetEvent("esx_skin:openMenu", function(submitCb, cancelCb)
Menu:Open(submitCb, cancelCb, nil)
end)
RegisterNetEvent("esx_skin:openRestrictedMenu", function(submitCb, cancelCb, restrict)
Menu:Open(submitCb, cancelCb, restrict)
end)
RegisterNetEvent("esx_skin:openSaveableMenu", function(submitCb, cancelCb)
Menu:Saveable(submitCb, cancelCb, nil)
end)
RegisterNetEvent("esx_skin:openSaveableRestrictedMenu", function(submitCb, cancelCb, restrict)
Menu:Saveable(submitCb, cancelCb, restrict)
end)
AddEventHandler("esx_skin:getLastSkin", function(cb)
cb(Skin.Last)
end)
AddEventHandler("esx_skin:setLastSkin", function(skin)
Skin.Last = skin
end)