Setup
QBCore Installation
4
Paste the following code:
function QBCore.Functions.InsertGangs(label, name, grades)
local formattedGrades = {}
local maxIndex = 0
for k, _ in pairs(grades) do
local idx = tonumber(k)
if idx and idx > maxIndex then
maxIndex = idx
end
end
for k, grade in pairs(grades) do
local i = tonumber(k)
if i then
local gradeLabel = grade.label or grade.name or ('Grade ' .. i)
formattedGrades[tostring(i)] = {
name = string.lower(gradeLabel):gsub("%s+", "_"),
label = gradeLabel,
isboss = (grade.isboss == true) or (i == maxIndex)
}
end
end
QBCore.Shared.Gangs[name] = {
label = label,
grades = formattedGrades
}
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', name, QBCore.Shared.Gangs[name])
TriggerEvent('QBCore:Server:UpdateObject')
end
function QBCore.Functions.DeleteGang(gangName)
if not gangName or not QBCore.Shared.Gangs[gangName] then
return false
end
QBCore.Shared.Gangs[gangName] = nil
local players = QBCore.Functions.GetQBPlayers()
for _, player in pairs(players) do
if player.PlayerData.gang.name == gangName then
player.Functions.SetGang('none', 0)
end
end
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, nil)
return true
end
function QBCore.Functions.UpdateGangGrades(gangName, newGrades)
if not QBCore.Shared.Gangs[gangName] then
return false
end
local formattedGrades = {}
for k, grade in pairs(newGrades) do
local gradeKey = tostring(k)
local gradeLabel = grade.label or grade.name or ("Grade " .. k)
formattedGrades[gradeKey] = {
name = grade.name or string.lower(gradeLabel):gsub("%s+", "_"),
label = gradeLabel,
isboss = grade.isboss or false
}
end
QBCore.Shared.Gangs[gangName].grades = formattedGrades
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, QBCore.Shared.Gangs[gangName])
TriggerEvent('QBCore:Server:UpdateObject')
local players = QBCore.Functions.GetQBPlayers()
for _, player in pairs(players) do
if player.PlayerData.gang.name == gangName then
local currentGradeLevel = player.PlayerData.gang.grade.level
local gradeKey = tostring(currentGradeLevel)
if formattedGrades[gradeKey] then
player.Functions.SetGang(gangName, gradeKey)
else
player.Functions.SetGang(gangName, "0")
end
end
end
return true
end
function QBCore.Functions.UpdateGangLabel(gangName, label)
if not QBCore.Shared.Gangs[gangName] then
return false
end
QBCore.Shared.Gangs[gangName].label = label
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, QBCore.Shared.Gangs[gangName])
TriggerEvent('QBCore:Server:UpdateObject')
end
CreateThread(function()
local gangsData = MySQL.query.await('SELECT `name`, `data` FROM `uniq_mafia`')
if not gangsData then return end
for i = 1, #gangsData do
local row = gangsData[i]
if row.data then
local info = json.decode(row.data)
if info and info.label and info.grades then
QBCore.Shared.Gangs[row.name] = {
label = info.label,
grades = info.grades
}
end
end
end
end)Last updated