Customisation

Features you may want to customize

Qb-Management

1) qb-management/server/sv_boss.lua

Find line 162 and change the whole event to

-- Fire Employee
RegisterNetEvent('qb-bossmenu:server:FireEmployee', function(data)
	local src = source
	local Player = QBCore.Functions.GetPlayer(src)
	local Employee = QBCore.Functions.GetPlayerByCitizenId(data.target)
   
	
	if not Player.PlayerData.job.isboss then ExploitBan(src, 'FireEmployee Exploiting') return end

	if Employee then
		if data.target ~= Player.PlayerData.citizenid then
			if Employee.PlayerData.job.grade.level > Player.PlayerData.job.grade.level then TriggerClientEvent('QBCore:Notify', src, "You cannot fire this citizen!", "error") return end
			if Employee.Functions.SetJob("unemployed", '0') then
				TriggerEvent("qb-log:server:CreateLog", "bossmenu", "Job Fire", "red", Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname .. ' successfully fired ' .. Employee.PlayerData.charinfo.firstname .. " " .. Employee.PlayerData.charinfo.lastname .. " (" .. Player.PlayerData.job.name .. ")", false)
				TriggerClientEvent('QBCore:Notify', src, "Employee fired!", "success")
				TriggerClientEvent('QBCore:Notify', Employee.PlayerData.source , "You have been fired! Good luck.", "error")
				MySQL.query('DELETE FROM `player_jobs` WHERE `cid` = ? and `job` = ?', {data.target, data.job})
				
				local cid = Employee.PlayerData.citizenid
				local results =  MySQL.Sync.fetchAll('SELECT * FROM player_jobs_num  WHERE cid = @id', {["@id"] = cid })
				for i = 1, #results, 1 do resultss = results[i].jobs end 
				MySQL.Async.insert('UPDATE player_jobs_num SET jobs = @jobs WHERE cid = @cid', {
				["@jobs"] = resultss - 1,
				["@cid"] = cid
			   })
			else
				TriggerClientEvent('QBCore:Notify', src, "Error..", "error")
			end
		else
			TriggerClientEvent('QBCore:Notify', src, "You can\'t fire yourself", "error")
		end
	else
		local player = MySQL.query.await('SELECT * FROM players WHERE citizenid = ?', { data.target })
		if player[1] ~= nil then
			Employee = player[1]
			Employee.job = json.decode(Employee.job)
			if Employee.job.grade.level > Player.PlayerData.job.grade.level then TriggerClientEvent('QBCore:Notify', src, "You cannot fire this citizen!", "error") return end
			local job = {}
			job.name = "unemployed"
			job.label = "Unemployed"
			job.payment = QBCore.Shared.Jobs[job.name].grades['0'].payment or 500
			job.onduty = true
			job.isboss = false
			job.grade = {}
			job.grade.name = nil
			job.grade.level = 0
			MySQL.update('UPDATE players SET job = ? WHERE citizenid = ?', { json.encode(job), data.target })
			TriggerClientEvent('QBCore:Notify', src, "Employee fired!", "success")
			TriggerEvent("qb-log:server:CreateLog", "bossmenu", "Job Fire", "red", Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname .. ' successfully fired ' .. Employee.PlayerData.charinfo.firstname .. " " .. Employee.PlayerData.charinfo.lastname .. " (" .. Player.PlayerData.job.name .. ")", false)
		else
			TriggerClientEvent('QBCore:Notify', src, "Civilian not in city.", "error")
		end
	end
	TriggerClientEvent('qb-bossmenu:client:OpenMenu', src)
end)

Find line 117 and change the whole event to

-- Get Employees
QBCore.Functions.CreateCallback('qb-bossmenu:server:GetEmployees', function(source, cb, jobname)
	local src = source
	local Player = QBCore.Functions.GetPlayer(src)

	if not Player.PlayerData.job.isboss then ExploitBan(src, 'GetEmployees Exploiting') return end

	local employees = {}

	local players = MySQL.query.await("SELECT * FROM `player_jobs` WHERE `job` = ?", {jobname})
	
	if players[1] ~= nil then
		for _, value in pairs(players) do
			local isOnline = QBCore.Functions.GetPlayerByCitizenId(value.cid)

			if isOnline and isOnline.PlayerData.job.name == jobname then
				employees[#employees+1] = {
				empSource = isOnline.PlayerData.citizenid,
				grade = isOnline.PlayerData.job.grade.level,
				isboss = isOnline.PlayerData.job.isboss,
				name = '🟢 ' .. isOnline.PlayerData.charinfo.firstname .. ' ' .. isOnline.PlayerData.charinfo.lastname
				}
			elseif value.job == jobname then
				local player = MySQL.query.await("SELECT * FROM `players` WHERE `citizenid` = ?", {value.cid})
				if player[1] ~= nil then
					Employee = player[1]
					Employee.charinfo = json.decode(Employee.charinfo)
					employees[#employees+1] = {
					empSource = value.cid,
					grade =  value.grade,
					isboss = value.job.isboss,
					name = '❌ '..  Employee.charinfo.firstname .. ' ' .. Employee.charinfo.lastname
					}
				end
			end
		end
		table.sort(employees, function(a, b)
            return a.grade > b.grade
        end)
	end
	cb(employees)
end)

3) qb-management/client/cl_boss.lua

Find line 177 and edit it to this

EmployeeMenu[#EmployeeMenu + 1] = {
        header = "Fire Employee",
        icon = "fa-solid fa-user-large-slash",
        params = {
            isServer = true,
            event = "qb-bossmenu:server:FireEmployee",
            args = { 
                target = data.player.empSource,
                job = data.work.name
        }
        }
    }

Replace on line 131, "txt = v.grade.name," to

txt = QBCore.Shared.Jobs[PlayerJob.name].grades[tostring(v.grade)].name,

Editing the theme

The resource comes with 2 pre-created themes, but you can always make your own by editing the index.css file.

Last updated