QB CORE
go to qb-core/server/main.lua and replace whole file with this
QBCore = {}
QBCore.Config = QBConfig
QBCore.Shared = QBShared
QBCore.ClientCallbacks = {}
QBCore.ServerCallbacks = {}
---Adds or overwrites jobs in shared/jobs.lua
---@param jobs table<string, Job>
local function createJobs(jobs)
for jobName, job in pairs(jobs) do
QBCore.Shared.Jobs[jobName] = job
end
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Jobs', jobs)
TriggerEvent('QBCore:Server:UpdateObject')
end
exports('CreateJobs', createJobs)
---Adds or overwrites gangs in shared/gangs.lua
---@param gangs table<string, Gang>
local function createGangs(gangs)
for gangName, gang in pairs(gangs) do
QBCore.Shared.Gangs[gangName] = gang
end
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Gangs', gangs)
TriggerEvent('QBCore:Server:UpdateObject')
end
exports('CreateGangs', createGangs)
exports('GetCoreObject', function()
return QBCore
end)
-- To use this export in a script instead of manifest method
-- Just put this line of code below at the very top of the script
-- local QBCore = exports['qb-core']:GetCoreObject()
go to qb-management/client/cl_boss.lua, CTRL + F and look for CreateThread and replace that thread with this
RegisterNetEvent('QBCore:Client:UpdateObject', function()
QBCore = exports['qb-core']:GetCoreObject()
end)
CreateThread(function()
if Config.UseTarget then
for job, zones in pairs(Config.BossMenuZones) do
for index, data in ipairs(zones) do
exports['qb-target']:AddBoxZone(job.."-BossMenu-"..index, data.coords, data.length, data.width, {
name = job.."-BossMenu-"..index,
heading = data.heading,
-- debugPoly = true,
minZ = data.minZ,
maxZ = data.maxZ,
}, {
options = {
{
type = "client",
event = "qb-bossmenu:client:OpenMenu",
icon = "fas fa-sign-in-alt",
label = Lang:t("target.label"),
canInteract = function() return job == PlayerJob.name and PlayerJob.isboss end,
},
},
distance = 2.5
})
end
end
else
while true do
local wait = 2500
local pos = GetEntityCoords(PlayerPedId())
local inRangeBoss = false
local nearBossmenu = false
if PlayerJob then
local success, response = pcall(exports['uniq-jobcreator'].CloseToBoss)
if response == true then goto skipLoop end
wait = 0
for k, menus in pairs(Config.BossMenus) do
for _, coords in ipairs(menus) do
if k == PlayerJob.name and PlayerJob.isboss then
if #(pos - coords) < 5.0 then
inRangeBoss = true
if #(pos - coords) <= 1.5 then
nearBossmenu = true
if not shownBossMenu then
exports['qb-core']:DrawText(Lang:t("drawtext.label"), 'left')
shownBossMenu = true
end
if IsControlJustReleased(0, 38) then
exports['qb-core']:HideText()
TriggerEvent("qb-bossmenu:client:OpenMenu")
end
end
if not nearBossmenu and shownBossMenu then
CloseMenuFull()
shownBossMenu = false
end
end
end
end
end
if not inRangeBoss then
Wait(1500)
if shownBossMenu then
CloseMenuFull()
shownBossMenu = false
end
end
::skipLoop::
end
Wait(wait)
end
end
end)
go to qb-management/client/cl_gang.lua, CTRL + F and look for CreateThread and replace that thread with this
RegisterNetEvent('QBCore:Client:UpdateObject', function()
QBCore = exports['qb-core']:GetCoreObject()
end)
CreateThread(function()
if Config.UseTarget then
for gang, zones in pairs(Config.GangMenuZones) do
for index, data in ipairs(zones) do
exports['qb-target']:AddBoxZone(gang.."-GangMenu"..index, data.coords, data.length, data.width, {
name = gang.."-GangMenu"..index,
heading = data.heading,
-- debugPoly = true,
minZ = data.minZ,
maxZ = data.maxZ,
}, {
options = {
{
type = "client",
event = "qb-gangmenu:client:OpenMenu",
icon = "fas fa-sign-in-alt",
label = Lang:t("targetgang.label"),
canInteract = function() return gang == PlayerGang.name and PlayerGang.isboss end,
},
},
distance = 2.5
})
end
end
else
while true do
local wait = 2500
local pos = GetEntityCoords(PlayerPedId())
local inRangeGang = false
local nearGangmenu = false
if PlayerGang then
local success, response = pcall(exports['uniq-jobcreator'].CloseToBoss)
if response == true then goto skipLoop end
wait = 0
for k, menus in pairs(Config.GangMenus) do
for _, coords in ipairs(menus) do
if k == PlayerGang.name and PlayerGang.isboss then
if #(pos - coords) < 5.0 then
inRangeGang = true
if #(pos - coords) <= 1.5 then
nearGangmenu = true
if not shownGangMenu then
exports['qb-core']:DrawText(Lang:t("drawtextgang.label"), 'left')
shownGangMenu = true
end
if IsControlJustReleased(0, 38) then
exports['qb-core']:HideText()
TriggerEvent("qb-gangmenu:client:OpenMenu")
end
end
if not nearGangmenu and shownGangMenu then
CloseMenuFullGang()
shownGangMenu = false
end
end
end
end
end
if not inRangeGang then
Wait(1500)
if shownGangMenu then
CloseMenuFullGang()
shownGangMenu = false
end
end
::skipLoop::
end
Wait(wait)
end
end
end)
Last updated