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
This commit is contained in:
ArkSeyonet
2020-02-19 20:37:25 +01:00
committed by GitHub
parent 322ecdcb85
commit 66b14d2300
6 changed files with 56 additions and 344 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ RegisterNUICallback('escape', function(data, cb)
if hasIdentity then
EnableGui(false)
else
TriggerEvent('chat:addMessage', { args = { '^1[IDENTITY]', '^1You must create your first character in order to play' } })
ESX.ShowNotification(_U('create_a_character'))
end
end)
+3
View File
@@ -0,0 +1,3 @@
Config = {}
Config.Locale = 'en'
+1 -13
View File
@@ -6,16 +6,4 @@ ALTER TABLE `users`
ADD COLUMN `dateofbirth` VARCHAR(25) NULL DEFAULT '',
ADD COLUMN `sex` VARCHAR(10) NULL DEFAULT '',
ADD COLUMN `height` VARCHAR(5) NULL DEFAULT ''
;
CREATE TABLE `characters` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(255) NOT NULL,
`firstname` VARCHAR(255) NOT NULL,
`lastname` VARCHAR(255) NOT NULL,
`dateofbirth` VARCHAR(255) NOT NULL,
`sex` VARCHAR(1) NOT NULL DEFAULT 'M',
`height` VARCHAR(128) NOT NULL,
PRIMARY KEY (`id`)
);
;
+6 -2
View File
@@ -4,16 +4,20 @@ game 'gta5'
description 'ESX Identity'
version '1.1.0'
version '1.2.0'
server_scripts {
'@mysql-async/lib/MySQL.lua',
'@es_extended/locale.lua',
'@mysql-async/lib/MySQL.lua',
'locales/en.lua',
'config.lua',
'server/main.lua'
}
client_scripts {
'@es_extended/locale.lua',
'locales/en.lua',
'config.lua',
'client/main.lua'
}
+11
View File
@@ -0,0 +1,11 @@
Locales['en'] = {
['show_registration'] = 'Show Registration Menu',
['show_active_character'] = 'Show Active Character',
['delete_character'] = 'Delete Your Character And Create A New One',
['deleted_character'] = 'Your character has been deleted.',
['not_registered'] = 'You do not have a character reistered.',
['active_character'] = '~b~Active Character:~s~ %s %s',
['already_registered'] = 'You already have a character registered.',
['failed_identity'] = 'Failed to set your character, try again later or contact the server admin!',
['create_a_character'] = 'You have to create a character in order to play.'
}
+34 -328
View File
@@ -3,10 +3,10 @@ ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
function getIdentity(source, callback)
local identifier = GetPlayerIdentifiers(source)[1]
local xPlayer = ESX.GetPlayerFromId(source)
MySQL.Async.fetchAll('SELECT identifier, firstname, lastname, dateofbirth, sex, height FROM `users` WHERE `identifier` = @identifier', {
['@identifier'] = identifier
['@identifier'] = xPlayer.identifier
}, function(result)
if result[1].firstname ~= nil then
local data = {
@@ -34,108 +34,6 @@ function getIdentity(source, callback)
end)
end
function getCharacters(source, callback)
local identifier = GetPlayerIdentifiers(source)[1]
MySQL.Async.fetchAll('SELECT * FROM `characters` WHERE `identifier` = @identifier', {
['@identifier'] = identifier
}, function(result)
if result[1] and result[2] and result[3] then
local data = {
identifier = result[1].identifier,
firstname1 = result[1].firstname,
lastname1 = result[1].lastname,
dateofbirth1 = result[1].dateofbirth,
sex1 = result[1].sex,
height1 = result[1].height,
firstname2 = result[2].firstname,
lastname2 = result[2].lastname,
dateofbirth2 = result[2].dateofbirth,
sex2 = result[2].sex,
height2 = result[2].height,
firstname3 = result[3].firstname,
lastname3 = result[3].lastname,
dateofbirth3 = result[3].dateofbirth,
sex3 = result[3].sex,
height3 = result[3].height
}
callback(data)
elseif result[1] and result[2] and not result[3] then
local data = {
identifier = result[1].identifier,
firstname1 = result[1].firstname,
lastname1 = result[1].lastname,
dateofbirth1 = result[1].dateofbirth,
sex1 = result[1].sex,
height1 = result[1].height,
firstname2 = result[2].firstname,
lastname2 = result[2].lastname,
dateofbirth2 = result[2].dateofbirth,
sex2 = result[2].sex,
height2 = result[2].height,
firstname3 = '',
lastname3 = '',
dateofbirth3 = '',
sex3 = '',
height3 = ''
}
callback(data)
elseif result[1] and not result[2] and not result[3] then
local data = {
identifier = result[1].identifier,
firstname1 = result[1].firstname,
lastname1 = result[1].lastname,
dateofbirth1 = result[1].dateofbirth,
sex1 = result[1].sex,
height1 = result[1].height,
firstname2 = '',
lastname2 = '',
dateofbirth2 = '',
sex2 = '',
height2 = '',
firstname3 = '',
lastname3 = '',
dateofbirth3 = '',
sex3 = '',
height3 = ''
}
callback(data)
else
local data = {
identifier = '',
firstname1 = '',
lastname1 = '',
dateofbirth1 = '',
sex1 = '',
height1 = '',
firstname2 = '',
lastname2 = '',
dateofbirth2 = '',
sex2 = '',
height2 = '',
firstname3 = '',
lastname3 = '',
dateofbirth3 = '',
sex3 = '',
height3 = ''
}
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,
@@ -149,15 +47,6 @@ function setIdentity(identifier, data, callback)
callback(true)
end
end)
MySQL.Async.execute('INSERT INTO characters (identifier, firstname, lastname, dateofbirth, sex, height) VALUES (@identifier, @firstname, @lastname, @dateofbirth, @sex, @height)', {
['@identifier'] = identifier,
['@firstname'] = data.firstname,
['@lastname'] = data.lastname,
['@dateofbirth'] = data.dateofbirth,
['@sex'] = data.sex,
['@height'] = data.height
})
end
function updateIdentity(playerId, data, callback)
@@ -178,29 +67,28 @@ function updateIdentity(playerId, data, callback)
end)
end
function deleteIdentity(identifier, data, callback)
MySQL.Async.execute('DELETE FROM `characters` WHERE identifier = @identifier AND firstname = @firstname AND lastname = @lastname AND dateofbirth = @dateofbirth AND sex = @sex AND height = @height', {
['@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)
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
TriggerClientEvent('chat:addMessage', myIdentifiers.playerid, { args = { '^1[IDENTITY]', 'Failed to set character, try again later or contact the server admin!' } })
xPlayer.showNotification(_U('failed_identity'))
end
end)
end)
@@ -268,216 +156,34 @@ AddEventHandler('onResourceStart', function(resource)
end
end)
TriggerEvent('es:addCommand', 'register', function(source, args, user)
getCharacters(source, function(data)
if data.firstname3 ~= '' then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You can only have 3 registered characters. Use the ^3/chardel^0 command in order to delete existing characters.' } })
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', source)
TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
end
end)
end, {help = "Register a new character"})
end, false, {help = _U('show_registration')})
TriggerEvent('es:addGroupCommand', 'char', 'user', function(source, args, user)
getIdentity(source, function(data)
ESX.RegisterCommand('char', 'user', function(xPlayer, args, showError)
getIdentity(xPlayer.source, function(data)
if data.firstname == '' then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You do not have an active character!' } })
xPlayer.showNotification(_U('not_registered'))
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Active character: ^2' .. data.firstname .. ' ' .. data.lastname } })
xPlayer.showNotification(_U('active_character', data.firstname, data.lastname))
end
end)
end, function(source, args, user)
TriggerClientEvent('chat:addMessage', source, { args = { '^1SYSTEM', 'Insufficient permissions!' } })
end, {help = "List your current character"})
end, false, {help = _U('show_active_character')})
TriggerEvent('es:addGroupCommand', 'charlist', 'user', function(source, args, user)
getCharacters(source, function(data)
if data.firstname1 ~= '' then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY] Character 1:', data.firstname1 .. ' ' .. data.lastname1 } })
if data.firstname2 ~= '' then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY] Character 2:', data.firstname2 .. ' ' .. data.lastname2 } })
if data.firstname3 ~= '' then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY] Character 3:', data.firstname3 .. ' ' .. data.lastname3 } })
end
end
ESX.RegisterCommand('chardel', 'user', function(xPlayer, args, showError)
getIdentity(xPlayer.source, function(data)
if data.firstname == '' then
xPlayer.showNotification(_U('not_registered'))
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You have no registered characters. Use the ^3/register^0 command to register a character.' } })
deleteIdentity(xPlayer.source)
xPlayer.showNotification(_U('deleted_character'))
TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
end
end)
end, function(source, args, user)
TriggerClientEvent('chat:addMessage', source, { args = { '^1SYSTEM', 'Insufficient permissions!' } })
end, {help = "List all your registered characters"})
TriggerEvent('es:addGroupCommand', 'charselect', 'user', function(source, args, user)
local charNumber = tonumber(args[1])
if charNumber == nil or charNumber > 3 or charNumber < 1 then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'That\'s an invalid character!' } })
return
end
getCharacters(source, function(data)
if charNumber == 1 then
local data = {
identifier = data.identifier,
firstname = data.firstname1,
lastname = data.lastname1,
dateofbirth = data.dateofbirth1,
sex = data.sex1,
height = data.height1
}
if data.firstname ~= '' then
updateIdentity(source, data, function(callback)
if callback then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Updated your active character to ^2' .. data.firstname .. ' ' .. data.lastname } })
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to update your identity, try again later or contact the server admin!' } })
end
end)
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You don\'t have a character in slot 1!' } })
end
elseif charNumber == 2 then
local data = {
identifier = data.identifier,
firstname = data.firstname2,
lastname = data.lastname2,
dateofbirth = data.dateofbirth2,
sex = data.sex2,
height = data.height2
}
if data.firstname ~= '' then
updateIdentity(source, data, function(callback)
if callback then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Updated your active character to ^2' .. data.firstname .. ' ' .. data.lastname } })
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to update your identity, try again later or contact the server admin!' } })
end
end)
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You don\'t have a character in slot 2!' } })
end
elseif charNumber == 3 then
local data = {
identifier = data.identifier,
firstname = data.firstname3,
lastname = data.lastname3,
dateofbirth = data.dateofbirth3,
sex = data.sex3,
height = data.height3
}
if data.firstname ~= '' then
updateIdentity(source, data, function(callback)
if callback then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Updated your active character to ^2' .. data.firstname .. ' ' .. data.lastname } })
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to update your identity, try again later or contact the server admin!' } })
end
end)
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You don\'t have a character in slot 3!' } })
end
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to update your identity, try again later or contact the server admin!' } })
end
end)
end, function(source, args, user)
TriggerClientEvent('chat:addMessage', source, { args = { '^1SYSTEM', 'Insufficient permissions!' } })
end, {help = "Switch between character", params = {{name = "char", help = "the character id, ranges from 1-3"}}})
TriggerEvent('es:addGroupCommand', 'chardel', 'user', function(source, args, user)
local charNumber = tonumber(args[1])
if charNumber == nil or charNumber > 3 or charNumber < 1 then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'That\'s an invalid character!' } })
return
end
getCharacters(source, function(data)
if charNumber == 1 then
local data = {
identifier = data.identifier,
firstname = data.firstname1,
lastname = data.lastname1,
dateofbirth = data.dateofbirth1,
sex = data.sex1,
height = data.height1
}
if data.firstname ~= '' then
deleteIdentity(GetPlayerIdentifiers(source)[1], data, function(callback)
if callback then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You have deleted ^1' .. data.firstname .. ' ' .. data.lastname } })
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to delete the character, try again later or contact the server admin!' } })
end
end)
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You don\'t have a character in slot 1!' } })
end
elseif charNumber == 2 then
local data = {
identifier = data.identifier,
firstname = data.firstname2,
lastname = data.lastname2,
dateofbirth = data.dateofbirth2,
sex = data.sex2,
height = data.height2
}
if data.firstname ~= '' then
deleteIdentity(GetPlayerIdentifiers(source)[1], data, function(callback)
if callback then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You have deleted ^1' .. data.firstname .. ' ' .. data.lastname } })
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to delete the character, try again later or contact the server admin!' } })
end
end)
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You don\'t have a character in slot 2!' } })
end
elseif charNumber == 3 then
local data = {
identifier = data.identifier,
firstname = data.firstname3,
lastname = data.lastname3,
dateofbirth = data.dateofbirth3,
sex = data.sex3,
height = data.height3
}
if data.firstname ~= '' then
deleteIdentity(GetPlayerIdentifiers(source)[1], data, function(callback)
if callback then
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You have deleted ^1' .. data.firstname .. ' ' .. data.lastname } })
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to delete the character, try again later or contact the server admin!' } })
end
end)
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'You don\'t have a character in slot 3!' } })
end
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1[IDENTITY]', 'Failed to delete the character, try again!' } })
end
end)
end, function(source, args, user)
TriggerClientEvent('chat:addMessage', source, { args = { '^1SYSTEM', 'Insufficient permissions!' } })
end, {help = "Delete a registered character", params = {{name = "char", help = "the character id, ranges from 1-3"}}})
end, false, {help = _U('delete_character')})