diff --git a/[esx]/es_extended/server/functions.lua b/[esx]/es_extended/server/functions.lua index e03d0dc2..a1d3977c 100644 --- a/[esx]/es_extended/server/functions.lua +++ b/[esx]/es_extended/server/functions.lua @@ -232,8 +232,18 @@ ESX.GetPlayers = function() return sources end -ESX.GetExtendedPlayers = function() - return ESX.Players +ESX.GetExtendedPlayers = function(key, val) + local xPlayers = {} + for k, v in pairs(ESX.Players) do + if key then + if (key == 'job' and v.job.name == val) or v[key] == val then + table.insert(xPlayers, v) + end + else + table.insert(xPlayers, v) + end + end + return xPlayers end ESX.GetPlayerFromId = function(source) diff --git a/esx_example/server/main.lua b/esx_example/server/main.lua new file mode 100644 index 00000000..441d5867 --- /dev/null +++ b/esx_example/server/main.lua @@ -0,0 +1,29 @@ +RegisterNetEvent('esx:playerLoaded') -- When a player loads in, we can store some basic information about them locally +AddEventHandler('esx:playerLoaded', function(playerId, xPlayer, isNew) + ESX.Players[playerId] = xPlayer.job.name +end) + +RegisterNetEvent('esx:setJob') -- When a player loads in, we can store some basic information about them locally +AddEventHandler('esx:setJob', function(playerId, job, lastJob) + ESX.Players[playerId] = job.name +end) + +AddEventHandler('esx:playerDropped', function(playerId, reason) -- Remove the data once the player no longer exists + ESX.Players[playerId] = nil +end) + +AddEventHandler('onResourceStart', function(resourceName) -- The resource just restarted so we actually have a fresh copy of ESX.Players from the framework + if (GetCurrentResourceName() == resourceName) then -- Useful if we need to run functions or send events after a restart + for playerId, xPlayer in pairs(ESX.Players) do + print( ('%s %s is online with player id %s'):format(xPlayer.job.grade_label, xPlayer.name, playerId) ) + end + end +end) + +Citizen.CreateThread(function() + Citizen.Wait(1000) + local xPlayers = ESX.GetExtendedPlayers('job', 'police') -- New hitchless xPlayer loop, with the ability to only return players with specific data + for _, xPlayer in pairs(xPlayers) do + print(xPlayer.source, xPlayer.job.grade_label, xPlayer.name) + end +end) \ No newline at end of file