📃
Docs
  • 👋Welcome
  • 🌉Bridge
    • 💾Installation
    • 🌐Compatibility
    • 👨Client exports
      • ⏩Framework
        • getName
        • getJob
        • TriggerServerCallback
        • getSex
      • 🎒Inventory
        • getItemCount
      • 👁️Target
    • 🖥️Server exports
      • 🗃️Database
        • getUserData
        • getVehicleData
      • 🎒Inventory
        • openInventory
        • addItem
        • removeItem
        • canCarryItem
        • getItemCount
        • registerStash
        • setDurability
      • ⏩Framework
        • getPlayerFromId
        • getPlayerFromIdentifier
        • getIdentifier
        • RegisterServerCallback
        • getSource
        • getName
        • getJob
        • getAllPlayers
        • setJob
        • doesJobExist
        • getCoords
        • getJobs
  • 🔫Organization Panel
    • 📝Configuration
    • 💾Installation
    • 🗃️Framework integration
      • 💼ESX
        • 🚪ox_doorlock usage
      • 💼QBCore
        • 🚪ox_doorlock usage
      • 💼Other framework
    • 💻Server
      • Server exports
      • Server events
    • 👨Client
      • Client exports
  • ♣️Bossmenu
    • 📝Configuration
    • 💾Installation
    • 📖Framework integration
      • 🖼️ESX
      • 🖼️QBCore & QBOX
      • 🖼️Other Framework
    • 🖥️Server
      • 🔁Events
      • 🔃Exports
    • 👨Client
      • 🔁Events
      • 🔃Exports
  • 🕺Adjust Animation
    • 🗒️Configuration
    • 💾Installation
    • 📚Other scripts integration
      • 💃scully_emotemenu
      • 💃rpemotes
      • 💃other
  • 👮Police MDT
    • 🚀Install & Setup Guide
    • 📝Configuration
    • 📖Framework integration
      • 🖼️ESX
      • 🖼️QBOX/QB-Core
      • 🖼️Other Framework
    • 🚨wk_wars_2x Integration
    • 📚Exports
      • 🔃Server
      • 👨Client
  • 👨‍💼DOJ MDT
    • 🚀Install & Setup Guide
    • 📝Configuration
    • 📚Exports
      • 👨Client
  • 🩺EMS MDT
    • 🚀Install & Setup Guide
    • 📝Configuration
    • 📚Exports
      • 🔃Server
      • 👨Client
Powered by GitBook
On this page

Was this helpful?

  1. Organization Panel
  2. Framework integration
  3. QBCore

ox_doorlock usage

Unfortunately, ox_doorlock does not provide functions that will help us grant doorlock access to a member of the organization, so one solution may be to use it as follows.

  1. Go to pp-orgpanel/server/editable/framework and find this

RegisterNetEvent('esx:playerLoaded', function(player, xPlayer, isNew)
    [...]
end)
  1. Change this part of code to this

RegisterNetEvent('QBCore:Server:PlayerLoaded', function(player)
    local playerId = player.PlayerData.source
    local playerIdentifier = player.PlayerData.citizenid

    MySQL.Async.fetchAll('SELECT org_id FROM organization_members WHERE user_id = @identifier', {
        ['@identifier'] = playerIdentifier
    }, function(membersResult)
        if membersResult and #membersResult > 0 then
            local orgId = membersResult[1].org_id
            MySQL.Async.fetchAll('SELECT doorlock FROM organization_interiors WHERE org_id = @org_id', { 
                ['@org_id'] = orgId 
            }, function(interiorsResult)
                if interiorsResult and #interiorsResult > 0 then
                    local orgDoorlock = interiorsResult[1].doorlock
                    Player(playerId).state.orgDoorlock = orgDoorlock
                end
            end)
        end
    end)
end)
  1. Below the PlayerLoaded event, add something like this to keep the door lock system in sync.

RegisterNetEvent('pp-orgpanel:memberAdded', function(orgId, sourceId, targetId)
    MySQL.Async.fetchAll('SELECT doorlock FROM organization_interiors WHERE org_id = @org_id', { 
        ['@org_id'] = orgId 
    }, function(interiorsResult)
        if interiorsResult and #interiorsResult > 0 then
            local orgDoorlock = interiorsResult[1].doorlock
            Player(targetId).state.orgDoorlock = orgDoorlock
        end
    end)
end)

RegisterNetEvent('pp-orgpanel:memberFired', function(targetId)
    Player(targetId).state.orgDoorlock = nil
end)

RegisterNetEvent('pp-orgpanel:memberLeaved', function(orgId, targetId)
    Player(targetId).state.orgDoorlock = nil
end)
  1. Now go to ox_doorlock/server/framework/qb-core find the IsPlayerInGroup function and replace it with this

function IsPlayerInGroup(player, filter)
    local type = type(filter)
    local currentOrg = Player(player.PlayerData.source).state.orgDoorlock
    
    if type == 'string' then
        for i = 1, #groups do
            local data = player.PlayerData[groups[i]]
            
            if data.name == filter or currentOrg == filter then
                return true
            end
        end
    else
        local tabletype = table.type(filter)
        
        if tabletype == 'hash' then
            for i = 1, #groups do
                local data = player.PlayerData[groups[i]]
                local grade = filter[data.name]

                if (grade and grade <= data.grade.level) or filter[currentOrg] then
                    return true
                end
            end
        elseif tabletype == 'array' then
            for i = 1, #filter do
                local group = filter[i]
                
                for j = 1, #groups do
                    local data = player.PlayerData[groups[j]]
                    
                    if data.name == group or currentOrg == group then
                        return true
                    end
                end
            end
        end
    end
    
    return false
end
  1. Now set the interior doorlock in pp-orgpanel/config_c/Config.interiors to the same name as the group in the doorlock settings, for example:

        ['interior1'] = {
            size = vec3(1.20000004768371, 0.60000002384185, 3.0),
            coords = vec3(746.5399780273438, -1781.989990234375, 36.54000091552734),
            rotation = 90,
            doorlock = 'organization1' -- doorlock group name
        }
  1. Restart your server and everything should work great now

PreviousQBCoreNextOther framework

Was this helpful?

🔫
🗃️
💼
🚪
doorlock group settings