PEACESCRIPT Documentation
StoreDiscord
  • 👋Introduction
  • 📸PEACE-Speedcamera
    • 📜Config File
    • 📂Unlocked File
      • 🖥️Server
        • QBCore
        • ESX
        • QBOX
        • Custom
      • 💻Client
        • QBCore
        • ESX
        • QBOX
        • Custom
  • 📄PEACE-JobMenu
    • 📜Config File
    • 📂Unlocked File
      • 💻Client
        • QBCore
        • ESX
        • Custom
  • 📊PEACE-DutyLog
    • 📜Config File
    • 📂Unlocked File
      • 💻Client
        • QBCore
        • ESX
        • QBOX
        • Custom
        • Target
      • 🖥️Server
        • QBCore
        • ESX
        • QBOX
        • Custom
  • 🖋️PEACE-PropsManager
    • ⬇️Installation
    • 📜Configuration
    • ❓FAQ
    • 📂Unlocked File
      • 🖥️Server
        • QBCore
        • ESX
        • Custom
      • 💻Client
        • QBCore
        • ESX
        • Custom
Powered by GitBook
On this page
  1. PEACE-DutyLog
  2. Unlocked File
  3. Server

QBOX

CreateThread(function()
    if Config.framework ~= 'QBOX' then return end

    function GetPlayer(source)
        local player = exports.qbx_core:GetPlayer(source)
        return player
    end

    function IsPlayerOnDuty(player)
        local playerData = GetPlayer(player)
        return playerData and playerData.PlayerData and playerData.PlayerData.job and playerData.PlayerData.job.duty or false
    end

    function GetPlayerJob(player)
        local playerData = GetPlayer(player)
        return playerData and playerData.PlayerData and playerData.PlayerData.job or nil
    end

    function GetPlayerJobName(player)
        local job = GetPlayerJob(player)
        return job and job.name or nil
    end

    function GetCitizenID(source)
        local playerData = GetPlayer(source)
        if playerData and playerData.PlayerData and playerData.PlayerData.citizenid then
            return playerData.PlayerData.citizenid
        end
        return nil
    end

    function GetName(source)
        local playerData = GetPlayer(source)
        if playerData and playerData.PlayerData and playerData.PlayerData.charinfo then
            local charinfo = playerData.PlayerData.charinfo
            return charinfo.firstname .. ' ' .. charinfo.lastname
        end
        return nil
    end

    function GetIdentifier(source, identifierType)
        local identifiers = GetPlayerIdentifiers(source)
        for _, identifier in ipairs(identifiers) do
            if identifierType == 'discord' and string.sub(identifier, 1, 8) == "discord:" then
                return identifier
            elseif identifierType == 'license' and string.sub(identifier, 1, 8) == "license:" then
                return identifier
            end
        end
        return nil
    end

    function GetDutyLogsByJob(jobName, callback)
        local allPlayers = {}
        MySQL.Async.fetchAll("SELECT citizenid, charinfo, JSON_EXTRACT(job, '$.duty') as duty FROM players WHERE JSON_EXTRACT(job, '$.name') = @job", {
            ['@job'] = jobName
        }, function(players)
            local remainingPlayers = #players
            for _, player in pairs(players) do
                local citizenId = player.citizenid
                local charinfo = json.decode(player.charinfo)
                if charinfo and charinfo.firstname and charinfo.lastname then
                    local playerName = charinfo.firstname .. ' ' .. charinfo.lastname
                    local duty = json.decode(player.duty)
                    GetDutyLogInformation(citizenId, jobName, function(timestamps)
                        allPlayers[citizenId] = {
                            name = playerName,
                            timestamps = timestamps,
                            duty = duty,
                        }
                        remainingPlayers = remainingPlayers - 1
                        if remainingPlayers == 0 then
                            callback(allPlayers)
                        end
                    end)
                end
            end
            if #players == 0 then
                callback(allPlayers)
            end
        end)
    end

    RegisterNetEvent('wasabi_police:svToggleDuty', function(job, grade)
        if Config.WasabiScripts then
            local src = source
            local playerData = GetPlayer(src)
            local onDuty = playerData and playerData.PlayerData and playerData.PlayerData.job and playerData.PlayerData.job.duty or false
            exports.qbx_core:SetJobDuty(src, not onDuty)
        end
    end)

    RegisterNetEvent('wasabi_ambulance:svToggleDuty', function(job, grade)
        if Config.WasabiScripts then
            local src = source
            local playerData = GetPlayer(src)
            local onDuty = playerData and playerData.PlayerData and playerData.PlayerData.job and playerData.PlayerData.job.duty or false
            exports.qbx_core:SetJobDuty(src, not onDuty)
        end
    end)
end)
PreviousESXNextCustom

Last updated 4 months ago

📊
📂
🖥️