diff --git a/server/commands.lua b/server/commands.lua index ca07b9b..0080b66 100644 --- a/server/commands.lua +++ b/server/commands.lua @@ -120,12 +120,14 @@ QBCore.Commands.Add("job", "Check Your Job", {}, false, function(source, args) TriggerClientEvent('QBCore:Notify', source, "Job: "..Player.PlayerData.job.label.. " Grade: "..Player.PlayerData.job.grade.name) end) -QBCore.Commands.Add("setgang", "Set A Players Gang (Admin Only)", {{name="id", help="Player ID"}, {name="job", help="Name of a gang"}}, true, function(source, args) +QBCore.Commands.Add("setgang", "Set A Players Gang (Admin Only)", {{name="id", help="Player ID"}, {name="job", help="Name of a gang"}, {name="grade", help="Grade"}}, true, function(source, args) local Player = QBCore.Functions.GetPlayer(tonumber(args[1])) - if Player ~= nil then - Player.Functions.SetGang(tostring(args[2])) - else + if (args[1] == nil) or (args[2] == nil) or (args[3] == nil) then + TriggerClientEvent('QBCore:Notify', source, "All Arguments Must Be Filled", "error") + elseif Player == nil then TriggerClientEvent('QBCore:Notify', source, "Player Not Online", "error") + else + Player.Functions.SetGang(tostring(args[2]), tonumber(args[3])) end end, "admin") @@ -133,7 +135,7 @@ QBCore.Commands.Add("gang", "Check Your Gang", {}, false, function(source, args) local Player = QBCore.Functions.GetPlayer(source) if Player.PlayerData.gang.name ~= "none" then - TriggerClientEvent('QBCore:Notify', source, "Gang: "..Player.PlayerData.gang.label) + TriggerClientEvent('QBCore:Notify', source, "Gang: "..Player.PlayerData.gang.label.. " Grade: "..Player.PlayerData.gang.grade.name) else TriggerClientEvent('QBCore:Notify', source, "No Gang Affiliation", "error") end diff --git a/server/player.lua b/server/player.lua index f42590b..99d7827 100644 --- a/server/player.lua +++ b/server/player.lua @@ -117,6 +117,11 @@ QBCore.Player.CheckPlayerData = function(source, PlayerData) PlayerData.gang = PlayerData.gang ~= nil and PlayerData.gang or {} PlayerData.gang.name = PlayerData.gang.name ~= nil and PlayerData.gang.name or "none" PlayerData.gang.label = PlayerData.gang.label ~= nil and PlayerData.gang.label or "No Gang Affiliaton" + -- Added for grade system + PlayerData.gang.isboss = PlayerData.gang.isboss ~= nil and PlayerData.gang.isboss or false + PlayerData.gang.grade = PlayerData.gang.grade ~= nil and PlayerData.gang.grade or {} + PlayerData.gang.grade.name = PlayerData.gang.grade.name ~= nil and PlayerData.gang.grade.name or "none" + PlayerData.gang.grade.level = PlayerData.gang.grade.level ~= nil and PlayerData.gang.grade.level or 0 PlayerData.position = PlayerData.position ~= nil and PlayerData.position or QBConfig.DefaultSpawn PlayerData.LoggedIn = true @@ -169,11 +174,26 @@ QBCore.Player.CreatePlayer = function(PlayerData) return false end - self.Functions.SetGang = function(gang) + self.Functions.SetGang = function(gang, grade) local gang = gang:lower() + local grade = tostring(grade) ~= nil and tostring(grade) or '0' + if QBCore.Shared.Gangs[gang] ~= nil then self.PlayerData.gang.name = gang self.PlayerData.gang.label = QBCore.Shared.Gangs[gang].label + if QBCore.Shared.Gangs[gang].grades[grade] then + local ganggrade = QBCore.Shared.Gangs[gang].grades[grade] + self.PlayerData.gang.grade = {} + self.PlayerData.gang.grade.name = ganggrade.name + self.PlayerData.gang.grade.level = tonumber(grade) + self.PlayerData.gang.isboss = ganggrade.isboss ~= nil and ganggrade.isboss or false + else + self.PlayerData.gang.grade = {} + self.PlayerData.gang.grade.name = 'No Grades' + self.PlayerData.gang.grade.level = 0 + self.PlayerData.gang.isboss = false + end + self.Functions.UpdatePlayerData() TriggerClientEvent("QBCore:Client:OnGangUpdate", self.PlayerData.source, self.PlayerData.gang) end diff --git a/shared.lua b/shared.lua index f158ccc..522fd78 100644 --- a/shared.lua +++ b/shared.lua @@ -359,25 +359,126 @@ QBShared.Weapons = { -- Gangs QBShared.Gangs = { ["none"] = { - label = "No Gang" + label = "No Gang", + grades = { + ['0'] = { + name = "Unaffiliated" + }, + }, }, ["lostmc"] = { - label = "The Lost MC" + label = "The Lost MC", + bossmenu = vector3(0, 0, 0), + grades = { + ['0'] = { + name = "Recruit" + }, + ['1'] = { + name = "Enforcer" + }, + ['2'] = { + name = "Shot Caller" + }, + ['3'] = { + name = "Boss", + isboss = true + }, + }, }, ["ballas"] = { - label = "Ballas" + label = "Ballas", + bossmenu = vector3(0, 0, 0), + grades = { + ['0'] = { + name = "Recruit" + }, + ['1'] = { + name = "Enforcer" + }, + ['2'] = { + name = "Shot Caller" + }, + ['3'] = { + name = "Boss", + isboss = true + }, + }, }, ["vagos"] = { - label = "Vagos" + label = "Vagos", + bossmenu = vector3(0, 0, 0), + grades = { + ['0'] = { + name = "Recruit" + }, + ['1'] = { + name = "Enforcer" + }, + ['2'] = { + name = "Shot Caller" + }, + ['3'] = { + name = "Boss", + isboss = true + }, + }, }, ["cartel"] = { - label = "Cartel" + label = "Cartel", + bossmenu = vector3(0, 0, 0), + grades = { + ['0'] = { + name = "Recruit" + }, + ['1'] = { + name = "Enforcer" + }, + ['2'] = { + name = "Shot Caller" + }, + ['3'] = { + name = "Boss", + isboss = true + }, + }, }, - ["familes"] = { - label = "Families" + ["families"] = { + label = "Families", + bossmenu = vector3(0, 0, 0), + grades = { + ['0'] = { + name = "Recruit" + }, + ['1'] = { + name = "Enforcer" + }, + ['2'] = { + name = "Shot Caller" + }, + ['3'] = { + name = "Boss", + isboss = true + }, + }, }, ["triads"] = { - label = "Triads" + label = "Triads", + bossmenu = vector3(0, 0, 0), + grades = { + ['0'] = { + name = "Recruit" + }, + ['1'] = { + name = "Enforcer" + }, + ['2'] = { + name = "Shot Caller" + }, + ['3'] = { + name = "Boss", + isboss = true + }, + }, } }