mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-29 17:28:53 +00:00
66b14d2300
* 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
189 lines
5.8 KiB
Lua
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')}) |