Files
esx_core-esx-framework/server/main.lua
T
ArkSeyonet 66b14d2300 Update ESX Identity For The New ESX (#61)
* Update ESX Identity For New ESX

Updated ESX Identity For The New ESX
- Added locales
- Added ESX.RegisterCommand support
- Removed Multiple Characters

* Update main.lua
2020-02-19 20:37:25 +01:00

189 lines
5.8 KiB
Lua

ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
function getIdentity(source, callback)
local xPlayer = ESX.GetPlayerFromId(source)
MySQL.Async.fetchAll('SELECT identifier, firstname, lastname, dateofbirth, sex, height FROM `users` WHERE `identifier` = @identifier', {
['@identifier'] = xPlayer.identifier
}, function(result)
if result[1].firstname ~= nil then
local data = {
identifier = result[1].identifier,
firstname = result[1].firstname,
lastname = result[1].lastname,
dateofbirth = result[1].dateofbirth,
sex = result[1].sex,
height = result[1].height
}
callback(data)
else
local data = {
identifier = '',
firstname = '',
lastname = '',
dateofbirth = '',
sex = '',
height = ''
}
callback(data)
end
end)
end
function setIdentity(identifier, data, callback)
MySQL.Async.execute('UPDATE `users` SET `firstname` = @firstname, `lastname` = @lastname, `dateofbirth` = @dateofbirth, `sex` = @sex, `height` = @height WHERE identifier = @identifier', {
['@identifier'] = identifier,
['@firstname'] = data.firstname,
['@lastname'] = data.lastname,
['@dateofbirth'] = data.dateofbirth,
['@sex'] = data.sex,
['@height'] = data.height
}, function(rowsChanged)
if callback then
callback(true)
end
end)
end
function updateIdentity(playerId, data, callback)
local xPlayer = ESX.GetPlayerFromId(playerId)
MySQL.Async.execute('UPDATE `users` SET `firstname` = @firstname, `lastname` = @lastname, `dateofbirth` = @dateofbirth, `sex` = @sex, `height` = @height WHERE identifier = @identifier', {
['@identifier'] = xPlayer.identifier,
['@firstname'] = data.firstname,
['@lastname'] = data.lastname,
['@dateofbirth'] = data.dateofbirth,
['@sex'] = data.sex,
['@height'] = data.height
}, function(rowsChanged)
if callback then
TriggerEvent('esx_identity:characterUpdated', playerId, data)
callback(true)
end
end)
end
function deleteIdentity(source)
local xPlayer = ESX.GetPlayerFromId(source)
MySQL.Async.execute('UPDATE `users` SET `firstname` = @firstname, `lastname` = @lastname, `dateofbirth` = @dateofbirth, `sex` = @sex, `height` = @height WHERE identifier = @identifier', {
['@identifier'] = xPlayer.identifier,
['@firstname'] = '',
['@lastname'] = '',
['@dateofbirth'] = '',
['@sex'] = '',
['@height'] = '',
})
end
RegisterServerEvent('esx_identity:setIdentity')
AddEventHandler('esx_identity:setIdentity', function(data, myIdentifiers)
local xPlayer = ESX.GetPlayerFromId(source)
setIdentity(myIdentifiers.steamid, data, function(callback)
if callback then
TriggerClientEvent('esx_identity:identityCheck', myIdentifiers.playerid, true)
TriggerEvent('esx_identity:characterUpdated', myIdentifiers.playerid, data)
else
xPlayer.showNotification(_U('failed_identity'))
end
end)
end)
AddEventHandler('esx:playerLoaded', function(playerId, xPlayer)
local myID = {
steamid = xPlayer.identifier,
playerid = playerId
}
TriggerClientEvent('esx_identity:saveID', playerId, myID)
getIdentity(playerId, function(data)
if data.firstname == '' then
TriggerClientEvent('esx_identity:identityCheck', playerId, false)
TriggerClientEvent('esx_identity:showRegisterIdentity', playerId)
else
TriggerClientEvent('esx_identity:identityCheck', playerId, true)
TriggerEvent('esx_identity:characterUpdated', playerId, data)
end
end)
end)
AddEventHandler('esx_identity:characterUpdated', function(playerId, data)
local xPlayer = ESX.GetPlayerFromId(playerId)
if xPlayer then
xPlayer.setName(('%s %s'):format(data.firstname, data.lastname))
xPlayer.set('firstName', data.firstname)
xPlayer.set('lastName', data.lastname)
xPlayer.set('dateofbirth', data.dateofbirth)
xPlayer.set('sex', data.sex)
xPlayer.set('height', data.height)
end
end)
-- Set all the client side variables for connected users one new time
AddEventHandler('onResourceStart', function(resource)
if resource == GetCurrentResourceName() then
Citizen.Wait(3000)
local xPlayers = ESX.GetPlayers()
for i=1, #xPlayers, 1 do
local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
if xPlayer then
local myID = {
steamid = xPlayer.identifier,
playerid = xPlayer.source
}
TriggerClientEvent('esx_identity:saveID', xPlayer.source, myID)
getIdentity(xPlayer.source, function(data)
if data.firstname == '' then
TriggerClientEvent('esx_identity:identityCheck', xPlayer.source, false)
TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
else
TriggerClientEvent('esx_identity:identityCheck', xPlayer.source, true)
TriggerEvent('esx_identity:characterUpdated', xPlayer.source, data)
end
end)
end
end
end
end)
ESX.RegisterCommand('register', 'user', function(xPlayer, args, showError)
getIdentity(xPlayer.source, function(data)
if data.firstname ~= '' then
xPlayer.showNotification(_U('already_registered'))
else
TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
end
end)
end, false, {help = _U('show_registration')})
ESX.RegisterCommand('char', 'user', function(xPlayer, args, showError)
getIdentity(xPlayer.source, function(data)
if data.firstname == '' then
xPlayer.showNotification(_U('not_registered'))
else
xPlayer.showNotification(_U('active_character', data.firstname, data.lastname))
end
end)
end, false, {help = _U('show_active_character')})
ESX.RegisterCommand('chardel', 'user', function(xPlayer, args, showError)
getIdentity(xPlayer.source, function(data)
if data.firstname == '' then
xPlayer.showNotification(_U('not_registered'))
else
deleteIdentity(xPlayer.source)
xPlayer.showNotification(_U('deleted_character'))
TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
end
end)
end, false, {help = _U('delete_character')})