118 lines
3.0 KiB
Lua
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 |