From 66b14d2300db2b664a13e1af74d885c50c97a324 Mon Sep 17 00:00:00 2001 From: ArkSeyonet <31637812+ArkSeyonet@users.noreply.github.com> Date: Wed, 19 Feb 2020 13:37:25 -0600 Subject: [PATCH] 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 --- client/main.lua | 2 +- config.lua | 3 + esx_identity.sql | 14 +- fxmanifest.lua | 8 +- locales/en.lua | 11 ++ server/main.lua | 362 +++++------------------------------------------ 6 files changed, 56 insertions(+), 344 deletions(-) create mode 100644 config.lua create mode 100644 locales/en.lua diff --git a/client/main.lua b/client/main.lua index 9b1f08f0..791f84f7 100644 --- a/client/main.lua +++ b/client/main.lua @@ -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) diff --git a/config.lua b/config.lua new file mode 100644 index 00000000..aaec53d7 --- /dev/null +++ b/config.lua @@ -0,0 +1,3 @@ +Config = {} + +Config.Locale = 'en' \ No newline at end of file diff --git a/esx_identity.sql b/esx_identity.sql index 42d5c152..e6a39cc3 100644 --- a/esx_identity.sql +++ b/esx_identity.sql @@ -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`) -); \ No newline at end of file +; \ No newline at end of file diff --git a/fxmanifest.lua b/fxmanifest.lua index fdf64c89..55dd13ec 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -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' } diff --git a/locales/en.lua b/locales/en.lua new file mode 100644 index 00000000..99a27f34 --- /dev/null +++ b/locales/en.lua @@ -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.' +} \ No newline at end of file diff --git a/server/main.lua b/server/main.lua index 27c243c2..f96f4495 100644 --- a/server/main.lua +++ b/server/main.lua @@ -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')}) \ No newline at end of file