100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
FM.player = {}
 | 
						|
 | 
						|
---@return boolean
 | 
						|
function FM.player.isLoggedIn()
 | 
						|
    if ESX then
 | 
						|
        local playerData = ESX.GetPlayerData()
 | 
						|
        return playerData ~= nil and playerData.identifier ~= nil
 | 
						|
    elseif QB then
 | 
						|
        local playerData = QB.Functions.GetPlayerData()
 | 
						|
        return playerData ~= nil and playerData ~= nil and playerData.citizenid ~= nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
---@return string | nil
 | 
						|
function FM.player.getFullName()
 | 
						|
    if ESX then
 | 
						|
        local playerData = ESX.GetPlayerData()
 | 
						|
        return playerData ~= nil and tostring(playerData.firstName) .. " " .. tostring(playerData.lastName) or nil
 | 
						|
    elseif QB then
 | 
						|
        local playerData = QB.Functions.GetPlayerData()
 | 
						|
        return playerData ~= nil and playerData.charinfo.firstname .. " " .. playerData.charinfo.lastname or nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
---@return string | nil
 | 
						|
function FM.player.getIdentifier()
 | 
						|
    if ESX then
 | 
						|
        local playerData = ESX.GetPlayerData()
 | 
						|
        return playerData ~= nil and playerData.identifier or nil
 | 
						|
    elseif QB then
 | 
						|
        local playerData = QB.Functions.GetPlayerData()
 | 
						|
        return playerData ~= nil and playerData.citizenid or nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
---@return { name: string, label: string, grade: number, gradeLabel: string } | nil
 | 
						|
function FM.player.getJob()
 | 
						|
    if ESX then
 | 
						|
        local playerData = ESX.GetPlayerData()
 | 
						|
        local job = playerData ~= nil and playerData.job or nil
 | 
						|
 | 
						|
        return job and {
 | 
						|
            name = job.name,
 | 
						|
            label = job.label,
 | 
						|
            grade = job.grade,
 | 
						|
            gradeLabel = job.grade_label
 | 
						|
        } or nil
 | 
						|
    elseif QB then
 | 
						|
        local playerData = QB.Functions.GetPlayerData()
 | 
						|
        local job = playerData ~= nil and playerData.job or nil
 | 
						|
 | 
						|
        return job and {
 | 
						|
            name = job.name,
 | 
						|
            label = job.label,
 | 
						|
            grade = job.grade.level,
 | 
						|
            gradeLabel = job.grade.name
 | 
						|
        } or nil
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
---@return { name: string, label: string, grade: number, gradeLabel: string } | nil gang
 | 
						|
function FM.player.getGang()
 | 
						|
    return FM.callback.sync('fm:internal:getGang')
 | 
						|
end
 | 
						|
 | 
						|
--[[
 | 
						|
    EVENT HANDLERS
 | 
						|
--]]
 | 
						|
 | 
						|
local function onJobUpdate(newJob)
 | 
						|
    local job
 | 
						|
    if ESX then
 | 
						|
        job = newJob and {
 | 
						|
            name = newJob.name,
 | 
						|
            label = newJob.label,
 | 
						|
            grade = newJob.grade,
 | 
						|
            gradeLabel = newJob.grade_label
 | 
						|
        } or nil
 | 
						|
    elseif QB then
 | 
						|
        job = newJob and {
 | 
						|
            name = newJob.name,
 | 
						|
            label = newJob.label,
 | 
						|
            grade = newJob.grade.level,
 | 
						|
            gradeLabel = newJob.grade.name
 | 
						|
        } or nil
 | 
						|
    end
 | 
						|
 | 
						|
    TriggerEvent('fm:player:onJobUpdate', job)
 | 
						|
end
 | 
						|
 | 
						|
-- We do not send player data, because for ESX its also sent when there is no character selected yet.
 | 
						|
-- After this event gets triggered, use FM.player.isLoggedIn to check if the player is logged in & to make sure the character is selected.
 | 
						|
local function onPlayerLoaded()
 | 
						|
    TriggerEvent('fm:player:onPlayerLoaded')
 | 
						|
end
 | 
						|
 | 
						|
RegisterNetEvent('esx:setJob', onJobUpdate)
 | 
						|
RegisterNetEvent('QBCore:Client:OnJobUpdate', onJobUpdate)
 | 
						|
RegisterNetEvent('esx:playerLoaded', onPlayerLoaded)
 | 
						|
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', onPlayerLoaded)
 |