You save me time i save you time…
Server side…
RegisterServerEvent('AddXp')
AddEventHandler('AddXp',function(value)
local _source = source
local xPlayer = ESX.GetPlayerFromId(_source)
MySQL.Async.fetchAll('SELECT `xp` FROM users WHERE identifier = @identifier', {
['@identifier'] = xPlayer.identifier
}, function(result)
-- print(result[1].rank)
local xpbd = result[1].xp
MySQL.Async.fetchAll("UPDATE users SET xp = @xp WHERE identifier = @identifier",
{
['@identifier'] = xPlayer.identifier,
['@xp'] = xpbd + (value)
}
)
end)
end)
RegisterServerEvent('RemoveXp')
AddEventHandler('RemoveXp',function(value)
local _source = source
local xPlayer = ESX.GetPlayerFromId(_source)
MySQL.Async.fetchAll('SELECT `xp` FROM users WHERE identifier = @identifier', {
['@identifier'] = xPlayer.identifier
}, function(result)
-- print(result[1].rank)
local xpbd = result[1].xp
MySQL.Async.fetchAll("UPDATE users SET xp = @xp WHERE identifier = @identifier",
{
['@identifier'] = xPlayer.identifier,
['@xp'] = xpbd - (value)
}
)
end)
end)
Client side… Add xp
TriggerServerEvent('AddXp', 10)
Client side RemoveXp
TriggerServerEvent('RemoveXp', 500)
Those Trigger Save with esx framework to the database
in this case i created an xp column in the users tab. Change xp to rank in your case (server side code)
here a little exemple where to put trigger… in fact just after an XNL Add or XNL remove…
exemple:
#Add 10
exports.XNLRankBar:Exp_XNL_AddPlayerXP(10)
TriggerServerEvent('AddXp', 10)
#remove 500
exports.XNLRankBar:Exp_XNL_RemovePlayerXP(500)
TriggerServerEvent('RemoveXp', 500)