From ae9cde16e8c34acf9f563089d8417ba4bcccb476 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Fri, 28 May 2021 09:55:32 +1000 Subject: [PATCH] improvement(server/main): Use the new xPlayer loop when using ESX Legacy --- server/main.lua | 47 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/server/main.lua b/server/main.lua index 57b5b6f4..55223566 100644 --- a/server/main.lua +++ b/server/main.lua @@ -84,7 +84,17 @@ Citizen.CreateThread(function() end) function SaveData() - local xPlayers = ESX.GetPlayers() + + local xPlayers + if ESX.GetExtendedPlayers then + xPlayers = ESX.GetExtendedPlayers() -- Retrieve all xPlayer data directly (ESX Legacy) + else + xPlayers = ESX.GetPlayers() -- Retrieves player ids and gets xPlayer data one-by-one (ESX 1.2 support) + end + + for i=1, 100 do + xPlayers[#xPlayers+1] = xPlayers[1] + end -- Example of a bulk update statement that we are building below --[[ @@ -102,24 +112,39 @@ function SaveData() local firstItem = true local playerCount = 0 - for i=1, #xPlayers, 1 do - local xPlayer = ESX.GetPlayerFromId(xPlayers[i]) - local status = xPlayer.get('status') + if ESX.GetExtendedPlayers then -- Retrieve all xPlayer data directly (ESX Legacy) + for k,v in pairs(xPlayers) do + local status = v.get('status') - whenList = whenList .. string.format('when identifier = \'%s\' then \'%s\' ', xPlayer.identifier, json.encode(status)) + whenList = whenList .. string.format('when identifier = \'%s\' then \'%s\' ', v.identifier, json.encode(status)) - if firstItem == false then - whereList = whereList .. ', ' + if firstItem == false then + whereList = whereList .. ', ' + end + whereList = whereList .. string.format('\'%s\'', v.identifier) + + firstItem = false + playerCount = playerCount + 1 end - whereList = whereList .. string.format('\'%s\'', xPlayer.identifier) + else + for i=1, #xPlayers, 1 do + local xPlayer = ESX.GetPlayerFromId(xPlayers[i]) + local status = xPlayer.get('status') - firstItem = false - playerCount = playerCount + 1 + whenList = whenList .. string.format('when identifier = \'%s\' then \'%s\' ', xPlayer.identifier, json.encode(status)) + + if firstItem == false then + whereList = whereList .. ', ' + end + whereList = whereList .. string.format('\'%s\'', xPlayer.identifier) + + firstItem = false + playerCount = playerCount + 1 + end end if playerCount > 0 then local sql = string.format(updateStatement, whenList, whereList) - MySQL.Async.execute(sql) end