diff --git a/resources/[essential]/es_extended/server/commands.lua b/resources/[essential]/es_extended/server/commands.lua index 2d4ccc12..cf54ee92 100644 --- a/resources/[essential]/es_extended/server/commands.lua +++ b/resources/[essential]/es_extended/server/commands.lua @@ -45,4 +45,5 @@ TriggerEvent('es:addGroupCommand', 'car', 'admin', function(source, args, user) TriggerClientEvent('esx:spawnVehicle', source, args[2]) end, function(source, args, user) TriggerClientEvent('chatMessage', source, "SYSTEM", {255, 0, 0}, "Insufficient Permissions.") -end, {help = 'Spawn un véhicule'}) \ No newline at end of file +end, {help = 'Spawn un véhicule'}) + diff --git a/resources/[essential]/es_extended/server/common.lua b/resources/[essential]/es_extended/server/common.lua index 915707f8..06d8f8af 100644 --- a/resources/[essential]/es_extended/server/common.lua +++ b/resources/[essential]/es_extended/server/common.lua @@ -3,6 +3,7 @@ ESX.Players = {} ESX.UsableItemsCallbacks = {} ESX.Items = {} ESX.ServerCallbacks = {} +ESX.LastPlayerData = {} AddEventHandler('esx:getSharedObject', function(cb) cb(ESX) @@ -25,4 +26,27 @@ AddEventHandler('onMySQLReady', function () end ) -end) \ No newline at end of file +end) + +AddEventHandler('esx:playerLoaded', function(source) + + local xPlayer = ESX.GetPlayerFromId(source) + local accounts = {} + local items = {} + local xPlayerAccounts = xPlayer.getAccounts() + local xPlayerItems = xPlayer.getInventory() + + for i=1, #xPlayerAccounts, 1 do + accounts[xPlayerAccounts[i].name] = xPlayerAccounts[i].money + end + + for i=1, #xPlayerItems, 1 do + items[xPlayerItems[i].name] = xPlayerItems[i].count + end + + ESX.LastPlayerData[source] = { + accounts = accounts, + items = items + } + +end) diff --git a/resources/[essential]/es_extended/server/functions.lua b/resources/[essential]/es_extended/server/functions.lua index 44b01413..cb042b02 100644 --- a/resources/[essential]/es_extended/server/functions.lua +++ b/resources/[essential]/es_extended/server/functions.lua @@ -1,15 +1,15 @@ -local charset = {} +local Charset = {} -for i = 48, 57 do table.insert(charset, string.char(i)) end -for i = 65, 90 do table.insert(charset, string.char(i)) end -for i = 97, 122 do table.insert(charset, string.char(i)) end +for i = 48, 57 do table.insert(Charset, string.char(i)) end +for i = 65, 90 do table.insert(Charset, string.char(i)) end +for i = 97, 122 do table.insert(Charset, string.char(i)) end ESX.GetRandomString = function(length) math.randomseed(os.time()) if length > 0 then - return ESX.GetRandomString(length - 1) .. charset[math.random(1, #charset)] + return ESX.GetRandomString(length - 1) .. Charset[math.random(1, #Charset)] else return '' end @@ -32,42 +32,54 @@ ESX.SavePlayer = function(xPlayer, cb) -- User accounts for i=1, #xPlayer.accounts, 1 do - table.insert(asyncTasks, function(cb) + if ESX.LastPlayerData[xPlayer.source].accounts[xPlayer.accounts[i].name] ~= xPlayer.accounts[i].money then - MySQL.Async.execute( - 'UPDATE user_accounts SET `money` = @money WHERE identifier = @identifier AND name = @name', - { - ['@money'] = xPlayer.accounts[i].money, - ['@identifier'] = xPlayer.identifier, - ['@name'] = xPlayer.accounts[i].name - }, - function(rowsChanged) - cb() - end - ) + table.insert(asyncTasks, function(cb) - end) + MySQL.Async.execute( + 'UPDATE user_accounts SET `money` = @money WHERE identifier = @identifier AND name = @name', + { + ['@money'] = xPlayer.accounts[i].money, + ['@identifier'] = xPlayer.identifier, + ['@name'] = xPlayer.accounts[i].name + }, + function(rowsChanged) + cb() + end + ) + + end) + + ESX.LastPlayerData[xPlayer.source].accounts[xPlayer.accounts[i].name] = xPlayer.accounts[i].money + + end end -- Inventory items for i=1, #xPlayer.inventory, 1 do - table.insert(asyncTasks, function(cb) + if ESX.LastPlayerData[xPlayer.source].items[xPlayer.inventory[i].name] ~= xPlayer.inventory[i].count then - MySQL.Async.execute( - 'UPDATE user_inventory SET `count` = @count WHERE identifier = @identifier AND item = @item', - { - ['@count'] = xPlayer.inventory[i].count, - ['@identifier'] = xPlayer.identifier, - ['@item'] = xPlayer.inventory[i].name - }, - function(rowsChanged) - cb() - end - ) + table.insert(asyncTasks, function(cb) - end) + MySQL.Async.execute( + 'UPDATE user_inventory SET `count` = @count WHERE identifier = @identifier AND item = @item', + { + ['@count'] = xPlayer.inventory[i].count, + ['@identifier'] = xPlayer.identifier, + ['@item'] = xPlayer.inventory[i].name + }, + function(rowsChanged) + cb() + end + ) + + end) + + ESX.LastPlayerData[xPlayer.source].items[xPlayer.inventory[i].name] = xPlayer.inventory[i].count + + end end @@ -164,7 +176,7 @@ end RegisterServerEvent('esx:clientLog') AddEventHandler('esx:clientLog', function(msg) - RconPrint(msg) + RconPrint(msg .. "\n") end) RegisterServerEvent('esx:triggerServerCallback') diff --git a/resources/[essential]/es_extended/server/main.lua b/resources/[essential]/es_extended/server/main.lua index 251d70c8..9e617b1d 100644 --- a/resources/[essential]/es_extended/server/main.lua +++ b/resources/[essential]/es_extended/server/main.lua @@ -265,7 +265,8 @@ AddEventHandler('playerDropped', function() TriggerEvent('esx:playerDropped', _source) ESX.SavePlayer(xPlayer, function() - ESX.Players[_source] = nil + ESX.Players[_source] = nil + ESX.LastPlayerData[_source] = nil end) end