From 073c2072b3f201139d4ff38f334c5b1b99ec3f9b Mon Sep 17 00:00:00 2001 From: Linden Date: Sat, 3 Jul 2021 02:56:35 +1000 Subject: [PATCH] chore(example): Provide more information --- esx_example/client/main.lua | 43 +++++++++++++++++++++++++++++++++++++ esx_example/server/main.lua | 9 +++++--- 2 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 esx_example/client/main.lua diff --git a/esx_example/client/main.lua b/esx_example/client/main.lua new file mode 100644 index 00000000..880a0fec --- /dev/null +++ b/esx_example/client/main.lua @@ -0,0 +1,43 @@ +RegisterNetEvent('esx:playerLoaded') -- Store the players data +AddEventHandler('esx:playerLoaded', function(xPlayer, isNew) + ESX.PlayerData = xPlayer + ESX.PlayerLoaded = true +end) + +RegisterNetEvent('esx:playerLogout') -- When a player logs out (multicharacter), reset their data +AddEventHandler('esx:playerLogout', function(xPlayer, isNew) + ESX.PlayerLoaded = false + ESX.PlayerData = {} +end) + + + +-- These two functions can perform the same task +RegisterNetEvent('esx:setJob') +AddEventHandler('esx:setJob', function(job) + print('PlayerData.job was set to '..job) + if ESX.PlayerData.job.name ~= job.name then + print('You are now in a different job') + end + ESX.PlayerData.job = job +end) + +OnPlayerData = function(key, val, last) + if type(val) == 'table' then val = json.encode(val) end + print('PlayerData.'..key..' was set to '..val) + if key == 'job' then + if last.name ~= val.name then + print('You are now in a different job') + end + elseif key == 'dead' then -- However, this function can be used for other PlayerData + if val == true then + print('You die too easily') + SetTimeout(2000, function() + if ESX.PlayerData.dead then + print('Why are you still dead?') + end + end) + end + end +end +----------------------------------------------- \ No newline at end of file diff --git a/esx_example/server/main.lua b/esx_example/server/main.lua index 441d5867..6ee5dcdf 100644 --- a/esx_example/server/main.lua +++ b/esx_example/server/main.lua @@ -3,20 +3,23 @@ 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 +RegisterNetEvent('esx:setJob') -- The stored data does not sync with the framework unless we tell it to 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 +AddEventHandler('esx:playerDropped', function(playerId, reason) -- Remove any cached 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 + local players = {} + for _, xPlayer in pairs(ESX.Players) do + players[playerId] = xPlayer.job.name print( ('%s %s is online with player id %s'):format(xPlayer.job.grade_label, xPlayer.name, playerId) ) end + ESX.Players = players -- Replace the data as it is a waste of memory end end)