CodeWorks
YoutubeDiscordTebex
  • Welcome!
  • Main
    • How can i download my script
    • How can i transfer my script
    • Whats escrow system?
  • Errors
    • You lack the required entitlement to use cdw-*
  • Scripts
    • Boss Menu
      • Installation
      • Configuration
      • Language Files
      • Events / Export List
      • Editable Files
        • sv_utils.lua
        • cl_utils.lua
        • cl_mugshot.lua
    • Hud System
      • Installation
      • Configuration
      • Language Files
      • Events / Export List
      • Editable Files
        • sv_utils.lua
        • cl_utils.lua
      • Integrations
        • QB Core
          • Notification
          • Progressbar
        • ESX
          • Notification
          • Progressbar
        • ox_lib
          • Notification
          • Progressbar
  • GPS & Bodycam
    • GPS System
      • Installation
      • Configuration
      • Language Files
      • Editable Files
        • sv_utils.lua
        • cl_utils.lua
    • Bodycam System
      • Installation
      • Configuration
      • Language Files
      • Editable Files
        • sv_utils.lua
        • cl_utils.lua
Powered by GitBook
On this page
  1. Scripts
  2. Boss Menu
  3. Editable Files

sv_utils.lua

DutyPlayers = {}
Framework = "qb"
local Core

if GetResourceState("qbx_core") == "started" or Config.framework == "qbx"  then
    Framework = "qbx"
    Core = exports.qbx_core
    lib.print.info("Detected Framework: QBOX")
elseif GetResourceState("es_extended") == "started" or Config.framework == "esx" then
    Framework = "esx"
    Core = ESX
    lib.print.info("Detected Framework: ESX")
elseif GetResourceState("qb-core") == "started" or Config.framework == "qb"  then 
    Framework = "qb"
    Core = exports['qb-core']:GetCoreObject()
    lib.print.info("Detected Framework: QB")
else
    Framework = Config.framework
end 

webhook = "WEBHOOK HERE"

lib.callback.register('cdw-bossmenu:getWebhook', function(source)
    if webhook ~= "" then
        return webhook
    else
        return false
    end
end)

function GetPlayerJob(src)
    local jobName = ""
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(src)
        jobName = Player.PlayerData.job.name
        return jobName
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(src)
        jobName = xPlayer.getJob().name
        return jobName
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(src)
        jobName = Player.PlayerData.job.name
        return jobName
    else 
        --Custom Framework here
        return "Unknown"
    end
end

function IsPlayerBoss(src)
    local jobName = ""
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(src)
        jobName = Player.PlayerData.job.isboss
        return jobName
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(src)
        if not xPlayer then return false end

        local job = xPlayer.getJob()
        if job and job.grade_name then
            return job.grade_name == "boss"
        end

        return false
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(src)
        jobName = Player.PlayerData.job.isboss
        return jobName
    else 
        --Custom Framework here
        return "Unknown"
    end
end

function GetJobSalary(src)
    local salary = 0
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(src)
        salary = Player.PlayerData.job.grade.payment
        return salary
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(src)
        salary = Player.PlayerData.job.payment
        return salary
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(src)
        salary = xPlayer.getJob().salary
        return salary
    else 
        --Custom Framework here
        return 0
    end
end

function GetPlayerGrade(src)
    local GradeName = ""
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(src)
        GradeName = Player.PlayerData.job.grade.name
        return GradeName
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(src)
        GradeName = xPlayer.getJob().grade_label
        return GradeName
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(src)
        GradeName = Player.PlayerData.job.grade.name
        return GradeName
    else 
        --Custom Framework here
        return "Unknown"
    end
end

function GetPlayerGradeFromIdf(idf)
    local GradeName = ""
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayerByCitizenId(idf)
        GradeName = Player.PlayerData.job.grade.name
        return GradeName
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromIdentifier(idf)
        GradeName = xPlayer.getJob().grade_label
        return GradeName
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayerByCitizenId(idf)
        GradeName = Player.PlayerData.job.grade.name
        return GradeName
    else 
        --Custom Framework here
        return "Unknown"
    end
end

function AddMoney(playerId, amount)
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(playerId)
        Player.Functions.AddMoney("cash", amount)
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(playerId)
        xPlayer.addMoney(amount)
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(playerId)
        Player.Functions.AddMoney("cash", amount)
    else 
        --Custom Framework here
        return false
    end
end

function RemoveMoney(playerId, amount)
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(playerId)
        return Player.Functions.RemoveMoney("cash", amount)
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(playerId)
        return xPlayer.removeMoney(amount)
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(playerId)
        return Player.Functions.RemoveMoney("cash", amount)
    else 
        --Custom Framework here
        return false
    end
end

function GetPlayerFullName(playerId)
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(playerId)
        local fullname = Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname
        return fullname
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(playerId)
        local fullname = xPlayer.getName()
        return fullname
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(playerId)
        local fullname = Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname
        return fullname
    else 
        --Custom Framework here
        return "Unknown"
    end
end

function GetIdentifier(playerId)
    local identifier = nil
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayer(playerId)
        identifier = Player.PlayerData.citizenid
        return identifier
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromId(src)
        identifier = xPlayer.getIdentifier()
        return identifier
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayer(playerId)
        identifier = Player.PlayerData.citizenid
        return identifier
    else 
        --Custom Framework here
        return nil
    end
end

function IsPlayerActive(identifier)
    local deger = false
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayerByCitizenId(identifier)
        if Player then
            deger = Player
        end
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromIdentifier(identifier)
        if xPlayer then
            deger = xPlayer
        end
    elseif Framework == "qbx" then 
        local Player = exports.qbx_core:GetPlayerByCitizenId(identifier)
        if Player then
            deger = Player
        end
    else 
        --Custom Framework here
        return nil
    end
    return deger
end

function SetJob(idf, jobname, grade)
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayerByCitizenId(idf)
        Player.Functions.SetJob(jobname, grade)
    elseif Framework == "esx" then 
        local xPlayer = Core.GetPlayerFromIdentifier(idf)
        xPlayer.setJob(jobname, grade)
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayerByCitizenId(idf)
        Player.Functions.SetJob(jobname, grade)
    else 
    end
end

CreateThread(function()
    while Framework == nil or Core == nil do Wait(100) end

    while true do
        Wait(1000 * 60)

        for _, playerId in ipairs(GetPlayers()) do
            local src = tonumber(playerId)
            local identifier = nil
            local onduty = false

            if Framework == "qb" then
                local Player = Core.Functions.GetPlayer(src)
                if Player and Player.PlayerData.job and Player.PlayerData.job.onduty then
                    onduty = true
                    identifier = Player.PlayerData.citizenid
                end

            elseif Framework == "qbx" then
                local Player = Core:GetPlayer(src)
                if Player and Player.PlayerData.job and Player.PlayerData.job.onduty then
                    onduty = true
                    identifier = Player.PlayerData.citizenid
                end

            elseif Framework == "esx" then
                local xPlayer = Core.GetPlayerFromId(src)
                if xPlayer and xPlayer.getJob() then
                    local job = xPlayer.getJob()
                    onduty = true
                    identifier = xPlayer.getIdentifier()
                end
            elseif Framework == "custom" then
                --Custom Framework here
            end

            if onduty and identifier then
                DutyPlayers[identifier] = (DutyPlayers[identifier] or 0) + 1
            end
        end
    end
end)

AddEventHandler('playerDropped', function(reason)
    local src = source
    local identifier = nil

    if Framework == "qb" then
        local Player = Core.Functions.GetPlayer(src)
        if Player then
            identifier = Player.PlayerData.citizenid
        end

    elseif Framework == "qbx" then
        local Player = Core:GetPlayer(src)
        if Player then
            identifier = Player.PlayerData.citizenid
        end

    elseif Framework == "esx" then
        local xPlayer = Core.GetPlayerFromId(src)
        if xPlayer then
            identifier = xPlayer.getIdentifier()
        end
    else
        --Custom Framework here
    end

    if identifier and DutyPlayers[identifier] then
        local timeToAdd = DutyPlayers[identifier]

        MySQL.update('UPDATE cdw_bossmenu SET time = time + ? WHERE identifier = ?', {
            timeToAdd,
            identifier
        }, function(affectedRows)
            
        end)

        DutyPlayers[identifier] = nil
    end
end)

lib.callback.register('cdw-bossmenu:OpenStash', function(source)
    local src = source
    local job = GetPlayerJob(src)
    local result = MySQL.query.await('SELECT * FROM cdw_bossmenu WHERE identifier = ?', { GetIdentifier(src) })
    if result[1] then
        local perms = json.decode(result[1].perms)
        if perms.stash then
            return true
        else
            return false
        end
    else
        return false
    end
end)

RegisterNetEvent('cbw-bossmenu:OpenQBInventory', function(name)
    local data = { label = 'Job Stash', maxweight = 400000, slots = 500 }
    exports['qb-inventory']:OpenInventory(source, name, data)
end)

lib.callback.register('cdw-bossmenu:GetInventoryData', function(source)
    local src = source
    local job = GetPlayerJob(src)
    local stashName = job .. "stash"
    if GetResourceState("ox_inventory") == "started" then 
        local inv = exports.ox_inventory:GetInventory(stashName, false)
        local items = exports.ox_inventory:GetInventoryItems(stashName, false)
        if not inv then return "not_found" end
        return {count = #items or 0, capacity = (inv.weight / inv.maxWeight) * 100 or 0}
    else
        return "not_found"
    end
end)

-- For Ox Inventory Stash
-- This thread will register the stash for each job defined in Config.AccesCoords
CreateThread(function()
    if GetResourceState("ox_inventory") == "started" then 
        for k,v in pairs(Config.AccesCoords) do
            local stash = {
                id = k .. "stash",
                label = k .. "stash",
                slots = v.stash.slots,
                weight = v.stash.weight,
                groups = {[v.job] = 0},
                coords = v.coord,
            }
            exports.ox_inventory:RegisterStash(stash.id, stash.label, stash.slots, stash.weight, false, stash.groups, stash.coords)
        end
    end
end)

--for esx job grades
lib.callback.register("cdw-bossmenu:GetJobGrades", function(source, jobName)
    local grades = {}

    local result = MySQL.query.await([[
        SELECT grade, label, salary, isboss 
        FROM job_grades 
        WHERE job_name = ? 
        ORDER BY grade ASC
    ]], { jobName })

    for _, v in ipairs(result) do
        grades[v.grade] = {
            name = v.label .. (v.isboss == 1 and " (boss)" or ""),
            salary = v.salary,
            isBoss = v.isboss == 1
        }
    end

    return grades
end)
PreviousEditable FilesNextcl_utils.lua

Last updated 9 days ago