Scripts/resources/[qb]/[qb_extras]/qb-gym/client/functions.lua
2024-12-29 21:07:50 +01:00

118 lines
3.0 KiB
Lua

local QBCore = exports['qb-core']:GetCoreObject()
FetchSkills = function()
QBCore.Functions.TriggerCallback("skillsystem:fetchStatus", function(data)
if data then
for status, value in pairs(data) do
if Config.Skills[status] then
Config.Skills[status]["Current"] = value["Current"]
else
print("Removing: " .. status)
end
end
end
RefreshSkills()
end)
end
GetCurrentSkill = function(skill)
return Config.Skills[skill]
end
--exports('GetCurrentSkill')
UpdateSkill = function(skill, amount)
if not Config.Skills[skill] then
print("Skill " .. skill .. " doesn't exist")
return
end
local SkillAmount = Config.Skills[skill]["Current"]
if SkillAmount + tonumber(amount) < 0 then
Config.Skills[skill]["Current"] = 0
elseif SkillAmount + tonumber(amount) > 100 then
Config.Skills[skill]["Current"] = 100
else
Config.Skills[skill]["Current"] = SkillAmount + tonumber(amount)
end
RefreshSkills()
if tonumber(amount) > 0 then
QBCore.Functions.Notify( Config.Skills[skill]["Local"] .. ': + ' .. amount ..'%', 'success')
end
TriggerServerEvent("skillsystem:update", json.encode(Config.Skills))
end
function round(num)
return math.floor(num+.5)
end
RefreshSkills = function()
for type, value in pairs(Config.Skills) do
if Config.Debug then
print(type .. ": " .. value['Current'])
elseif Config.Debug and not Config.Skills[skill] then
print("something went wrong")
end
if value["Stat"] then
StatSetInt(value["Stat"], round(value["Current"]), true)
end
end
end
exports('CheckSkill', function(skill, val, hasskill)
if Config.Skills[skill] then
if Config.Skills[skill]["Current"] >= tonumber(val) then
hasskill(true)
else
hasskill(false)
end
else
print("Skill " .. skill .. " doesn't exist")
hasskill(false)
end
end)
MessageBox = function(text, alpha)
if alpha > 255 then
alpha = 255
elseif alpha < 0 then
alpha = 0
end
SetTextFont(4)
SetTextProportional(1)
SetTextColour(255, 255, 255, math.floor(alpha))
SetTextEdge(2, 0, 0, 0, math.floor(alpha))
SetTextDropShadow()
SetTextEntry("STRING")
SetTextCentre(1)
SetTextScale(0.31, 0.31)
AddTextComponentString(text)
local factor = (string.len(text)) / 350
local x = 0.015
local y = 0.5
local width = 0.05
local height = 0.025
DrawText(x + (width / 2.0), y + (height / 2.0) - 0.01)
DrawRect(x + (width / 2.0), y + (height / 2.0), width, height, 25, 25, 25, math.floor(alpha))
end
Notification = function(message)
local alpha = 185
for time = 1, 250 do
Citizen.Wait(1)
if time >= 150 then
alpha = alpha - 2
if alpha <= 0 then
alpha = 0
end
end
MessageBox(message, alpha)
end
end