From 872cc1faa8a9dd5e6b53a8c4ae9c6955235b3ac9 Mon Sep 17 00:00:00 2001 From: "Nutria.sh" <106103733+nutria22@users.noreply.github.com> Date: Wed, 28 Dec 2022 01:21:47 +0100 Subject: [PATCH 01/29] translation Spanish translation --- [esx_addons]/esx_banking/html/config.json | 97 +++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/[esx_addons]/esx_banking/html/config.json b/[esx_addons]/esx_banking/html/config.json index af9490cc..565c4c9b 100644 --- a/[esx_addons]/esx_banking/html/config.json +++ b/[esx_addons]/esx_banking/html/config.json @@ -292,5 +292,102 @@ "tableFullLanguage":"Italian" } } + }, +"ES":{ + "DYNAMIC_FORM_DATA":[ + { + "componentName":"moreGraph", + "elementID":"#wrapper", + "title":"", + "closeButtonText":"Cerrar", + "bankTitle":"Banco Fleeca", + "mainExitButtonText": "Cerrar sesión" + }, + { + "elementID":"#cpincode", + "name":"cpincode", + "buttonText":"Aprobar", + "inputPlaceholder": "Introduzca 4 dígitos...", + "title":"CONFIGURACIÓN DEL PIN", + "description": "Aquí puede establecer o cambiar el código PIN.", + "type":"password" + }, + { + "elementID":"#withdraw", + "name":"withdraw", + "buttonText":"Aprobar", + "inputPlaceholder": "Importe", + "title":"RETIRAR", + "description": "Aquí puede retirar su dinero del banco.", + "type":"number" + }, + { + "elementID":"#deposit", + "name":"deposit", + "buttonText":"Aprobación", + "inputPlaceholder": "Importe", + "title":"DEPOSITO", + "description": "Aquí puede ingresar su dinero en el banco.", + "type":"number" + }, + { + "elementID":"#transfer", + "name":"transfer", + "buttonText":"Transfererir", + "inputPlaceholder": "Importe", + "inputPlaceholder2": "ID del jugador", + "title":"TRANSFERENCIA", + "description": "Aquí puedes transferir tu dinero a otra persona." + }, + { + "componentName":"trans", + "elementID":"#third-column", + "title":"HISTORIAL DE TRANSACCIONES", + "description": "Aquí puede ver su historial de transacciones.", + "moreHistoryText": "Mostrar más historial", + "moreGraphText": "Mostrar el gráfico" + }, + { + "componentName":"pincodePanel", + "elementID":"#wrapper", + "title":"Introducir PIN", + "deleteButtonText": "", + "loginButtonText": "", + "closeButtonText": "Close" + }, + { + "componentName":"atmComponent", + "elementID":"#wrapper", + "title":"Banco Fleeca", + "closeButtonText":"Cerrar sesión" + } + ], + "LAUNGAGE": { + "your_money_title":"Saldo", + "your_money_desc":"Aquí puedes ver tu saldo actual y tu efectivo.", + "your_money_cash_label":"Su dinero en mano", + "your_money_bank_label":"Su saldo bancario", + "withdraw":"RETIRAR", + "deposit":"DEPÓSITO", + "transfer":"TRANSFERENCIA", + "transferReceive":"TRANSFERENCIA RECIBIDA", + "moneyFormat":"$__replaceData__", + "graphTitle":"Su saldo", + "moreGraphTitle": "Gráfico grande", + "moreHistoryTitle":"Mostrar más historial", + "inputErrorTitle":"Data is incorrect", + "inputErrorMessage":"No puede estar vacío ni tener un valor inferior a 1.", + "showPincodeErrorTitle":"PIN incorrecto", + "showPincodeErrorMessage":"El pin debe tener al menos 4 caracteres.", + "tableLang":{ + "typeLabel": "Tipo de transacción", + "balanceLabel":"Saldo", + "amountLabel":"Importe", + "timeLabel":"Tiempo", + "searchInputPlaceholder":"Buscar...", + "_comment": "tableFullLanguage options: English,Hungarian you can find here all lang: https://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/", + "tableFullLanguage":"Spanish" + } + } } } From 92b111cbc08b44c3ffcf1890a7f58c67b01aff07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?AL1=C6=8EN?= <72218928+johnsoul777@users.noreply.github.com> Date: Wed, 28 Dec 2022 12:44:39 +0100 Subject: [PATCH 02/29] Fix Translate Saving Fix Translate Saving --- [esx_addons]/esx_property/server/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[esx_addons]/esx_property/server/main.lua b/[esx_addons]/esx_property/server/main.lua index fc55b196..debf9aae 100644 --- a/[esx_addons]/esx_property/server/main.lua +++ b/[esx_addons]/esx_property/server/main.lua @@ -1125,7 +1125,7 @@ end) CreateThread(function() while true do Wait(60000 * Config.SaveInterval) - PropertySave(TranslateCap("interval_save")) + PropertySave(TranslateCap("interval_saving")) end end) From e6481e106e5771279ce442c2876842495d27f662 Mon Sep 17 00:00:00 2001 From: Cartman117 <121615906+Cartman117@users.noreply.github.com> Date: Thu, 29 Dec 2022 13:42:48 +0100 Subject: [PATCH 03/29] fix(esx_mechanicjob): Spawn vehicule from garage If Config.EnableSocietyOwnedVehicles = true, spawning vehicule from garage wasn't possible because element.value = 'vehicle_list' but we want vehicule's informations (element2.value) --- [esx_addons]/esx_mechanicjob/client/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[esx_addons]/esx_mechanicjob/client/main.lua b/[esx_addons]/esx_mechanicjob/client/main.lua index bb085d7d..85fccc2c 100644 --- a/[esx_addons]/esx_mechanicjob/client/main.lua +++ b/[esx_addons]/esx_mechanicjob/client/main.lua @@ -88,7 +88,7 @@ function OpenMechanicActionsMenu() ESX.OpenContext("right", elements2, function(menu2,element2) ESX.CloseContext() - local vehicleProps = element.value + local vehicleProps = element2.value ESX.Game.SpawnVehicle(vehicleProps.model, Config.Zones.VehicleSpawnPoint.Pos, 270.0, function(vehicle) ESX.Game.SetVehicleProperties(vehicle, vehicleProps) From 81306d503be75907e515ceb071f12d86b92c3738 Mon Sep 17 00:00:00 2001 From: Cartman117 <121615906+Cartman117@users.noreply.github.com> Date: Thu, 29 Dec 2022 14:02:01 +0100 Subject: [PATCH 04/29] fix(esx_mechanicjob): French translation --- [esx_addons]/esx_mechanicjob/locales/fr.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/[esx_addons]/esx_mechanicjob/locales/fr.lua b/[esx_addons]/esx_mechanicjob/locales/fr.lua index eb9283bd..5327a6e7 100644 --- a/[esx_addons]/esx_mechanicjob/locales/fr.lua +++ b/[esx_addons]/esx_mechanicjob/locales/fr.lua @@ -19,7 +19,7 @@ Locales['fr'] = { ['gas_can'] = 'Bouteille de gaz', ['repair_tools'] = 'Outils réparation', ['body_work_tools'] = 'Outils carosserie', - ['blowtorch'] = 'chalumeaux', + ['blowtorch'] = 'chalumeau', ['repair_kit'] = 'kit réparation', ['body_kit'] = 'kit carosserie', ['craft'] = 'établi', @@ -47,7 +47,7 @@ Locales['fr'] = { ['no_veh_att'] = 'il n\'y a ~r~pas de véhicule à attacher', ['not_right_veh'] = 'ce n\'est pas le bon véhicule', ['veh_det_succ'] = 'vehicule détaché avec succès!', - ['imp_flatbed'] = '~r~Impossible! Vous devez avoir un Flatbed pour ça', + ['imp_flatbed'] = '~r~Impossible! Vous devez avoir un Plateau pour ça', ['objects'] = 'objets', ['roadcone'] = 'plot', ['toolbox'] = 'boîte à outils', @@ -63,7 +63,7 @@ Locales['fr'] = { ['press_remove_obj'] = 'appuyez sur [E] pour enlever l\'objet', ['please_tow'] = 'veuillez remorquer le véhicule', ['wait_five'] = 'Vous devez ~r~attendre 5 minutes', - ['must_in_flatbed'] = 'Vous devez être en flatbed pour commencer la mission', + ['must_in_flatbed'] = 'Vous devez être à bord d\'un Plateau pour commencer la mission', ['not_right_place'] = 'Vous devez être au bon endroit pour faire cela', ['mechanic_customer'] = 'client mecano', ['you_do_not_room'] = '~r~Vous n\'avez plus de place', From 43f44a052f5195b26b2dfc8618cb65390cf1ae76 Mon Sep 17 00:00:00 2001 From: Csoki Date: Fri, 30 Dec 2022 09:43:27 +0100 Subject: [PATCH 05/29] refactor(esx_vehicleshop): GeneratePlate(), IsPlateTaken() --- [esx_addons]/esx_vehicleshop/client/utils.lua | 48 +++++-------------- 1 file changed, 11 insertions(+), 37 deletions(-) diff --git a/[esx_addons]/esx_vehicleshop/client/utils.lua b/[esx_addons]/esx_vehicleshop/client/utils.lua index ef2a9f51..6d05de30 100644 --- a/[esx_addons]/esx_vehicleshop/client/utils.lua +++ b/[esx_addons]/esx_vehicleshop/client/utils.lua @@ -7,27 +7,13 @@ for i = 65, 90 do table.insert(Charset, string.char(i)) end for i = 97, 122 do table.insert(Charset, string.char(i)) end function GeneratePlate() - local generatedPlate - local doBreak = false + math.randomseed(GetGameTimer()) - while true do - Wait(0) - math.randomseed(GetGameTimer()) - if Config.PlateUseSpace then - generatedPlate = string.upper(GetRandomLetter(Config.PlateLetters) .. ' ' .. GetRandomNumber(Config.PlateNumbers)) - else - generatedPlate = string.upper(GetRandomLetter(Config.PlateLetters) .. GetRandomNumber(Config.PlateNumbers)) - end + local generatedPlate = string.upper(GetRandomLetter(Config.PlateLetters) .. (Config.PlateUseSpace and ' ' or '') .. GetRandomNumber(Config.PlateNumbers)) - ESX.TriggerServerCallback('esx_vehicleshop:isPlateTaken', function(isPlateTaken) - if not isPlateTaken then - doBreak = true - end - end, generatedPlate) - - if doBreak then - break - end + local isTaken = IsPlateTaken(generatedPlate) + if isTaken then + return GeneratePlate() end return generatedPlate @@ -35,33 +21,21 @@ end -- mixing async with sync tasks function IsPlateTaken(plate) - local callback = 'waiting' - + local p = promise.new() + ESX.TriggerServerCallback('esx_vehicleshop:isPlateTaken', function(isPlateTaken) - callback = isPlateTaken + p:resolve(isPlateTaken) end, plate) - while type(callback) == 'string' do - Wait(0) - end - - return callback + return Citizen.Await(p) end function GetRandomNumber(length) Wait(0) - if length > 0 then - return GetRandomNumber(length - 1) .. NumberCharset[math.random(1, #NumberCharset)] - else - return '' - end + return length > 0 and GetRandomNumber(length - 1) .. NumberCharset[math.random(1, #NumberCharset)] or '' end function GetRandomLetter(length) Wait(0) - if length > 0 then - return GetRandomLetter(length - 1) .. Charset[math.random(1, #Charset)] - else - return '' - end + return length > 0 and GetRandomLetter(length - 1) .. Charset[math.random(1, #Charset)] or '' end From fbbd6eb66ab58a337f31adb2f9b8f439a1ece240 Mon Sep 17 00:00:00 2001 From: Csoki Date: Fri, 30 Dec 2022 10:01:51 +0100 Subject: [PATCH 06/29] refactor(esx_vehicleshop): server/main.lua --- [esx_addons]/esx_vehicleshop/server/main.lua | 285 +++++++++---------- 1 file changed, 135 insertions(+), 150 deletions(-) diff --git a/[esx_addons]/esx_vehicleshop/server/main.lua b/[esx_addons]/esx_vehicleshop/server/main.lua index d07bbffc..81d9f0ce 100644 --- a/[esx_addons]/esx_vehicleshop/server/main.lua +++ b/[esx_addons]/esx_vehicleshop/server/main.lua @@ -1,4 +1,5 @@ local categories, vehicles = {}, {} +local vehiclesByModel = {} TriggerEvent('esx_phone:registerNumber', 'cardealer', TranslateCap('dealer_customers'), false, false) TriggerEvent('esx_society:registerSociety', 'cardealer', TranslateCap('car_dealer'), 'society_cardealer', 'society_cardealer', 'society_cardealer', {type = 'private'}) @@ -25,62 +26,50 @@ end) function SQLVehiclesAndCategories() categories = MySQL.query.await('SELECT * FROM vehicle_categories') - vehicles = MySQL.query.await('SELECT * FROM vehicles') + vehicles = MySQL.query.await('SELECT vehicles.*, vehicle_categories.label AS categoryLabel FROM vehicles JOIN vehicle_categories ON vehicles.category = vehicle_categories.name') - GetVehiclesAndCategories(categories, vehicles) -end - -function GetVehiclesAndCategories(categories, vehicles) - for i = 1, #vehicles do - local vehicle = vehicles[i] - for j = 1, #categories do - local category = categories[j] - if category.name == vehicle.category then - vehicle.categoryLabel = category.label - break - end - end + for _, vehicle in pairs(vehicles) do + vehiclesByModel[vehicle.model] = vehicle end - -- send information after db has loaded, making sure everyone gets vehicle information - TriggerClientEvent('esx_vehicleshop:sendCategories', -1, categories) - TriggerClientEvent('esx_vehicleshop:sendVehicles', -1, vehicles) + TriggerClientEvent("esx_vehicleshop:updateVehiclesAndCategories", -1, vehicles, categories, vehiclesByModel) end function getVehicleFromModel(model) - for i = 1, #vehicles do - local vehicle = vehicles[i] - if vehicle.model == model then - return vehicle - end - end - - return + return vehiclesByModel[model] end +RegisterNetEvent("esx_vehicleshop:getVehiclesAndCategories", function() + TriggerClientEvent("esx_vehicleshop:updateVehiclesAndCategories", source, vehicles, categories, vehiclesByModel) +end) + RegisterNetEvent('esx_vehicleshop:setVehicleOwnedPlayerId') AddEventHandler('esx_vehicleshop:setVehicleOwnedPlayerId', function(playerId, vehicleProps, model, label) local xPlayer, xTarget = ESX.GetPlayerFromId(source), ESX.GetPlayerFromId(playerId) - if xPlayer.job.name == 'cardealer' and xTarget then - MySQL.scalar('SELECT id FROM cardealer_vehicles WHERE vehicle = ?', {model}, - function(id) - if id then - MySQL.update('DELETE FROM cardealer_vehicles WHERE id = ?', {id}, - function(rowsChanged) - if rowsChanged == 1 then - MySQL.insert('INSERT INTO owned_vehicles (owner, plate, vehicle) VALUES (?, ?, ?)', {xTarget.identifier, vehicleProps.plate, json.encode(vehicleProps)}, - function(id) - xPlayer.showNotification(TranslateCap('vehicle_set_owned', vehicleProps.plate, xTarget.getName())) - xTarget.showNotification(TranslateCap('vehicle_belongs', vehicleProps.plate)) - end) + if xPlayer.job.name ~= 'cardealer' or not xTarget then + return + end - MySQL.insert('INSERT INTO vehicle_sold (client, model, plate, soldby, date) VALUES (?, ?, ?, ?, ?)', {xTarget.getName(), label, vehicleProps.plate, xPlayer.getName(), os.date('%Y-%m-%d %H:%M')}) - end + MySQL.scalar('SELECT id FROM cardealer_vehicles WHERE vehicle = ?', {model}, + function(id) + if not id then + return + end + + MySQL.update('DELETE FROM cardealer_vehicles WHERE id = ?', {id}, + function(rowsChanged) + if rowsChanged == 1 then + MySQL.insert('INSERT INTO owned_vehicles (owner, plate, vehicle) VALUES (?, ?, ?)', {xTarget.identifier, vehicleProps.plate, json.encode(vehicleProps)}, + function(id) + xPlayer.showNotification(TranslateCap('vehicle_set_owned', vehicleProps.plate, xTarget.getName())) + xTarget.showNotification(TranslateCap('vehicle_belongs', vehicleProps.plate)) end) + + MySQL.insert('INSERT INTO vehicle_sold (client, model, plate, soldby, date) VALUES (?, ?, ?, ?, ?)', {xTarget.getName(), label, vehicleProps.plate, xPlayer.getName(), os.date('%Y-%m-%d %H:%M')}) end end) - end + end) end) ESX.RegisterServerCallback('esx_vehicleshop:getSoldVehicles', function(source, cb) @@ -93,22 +82,28 @@ RegisterNetEvent('esx_vehicleshop:rentVehicle') AddEventHandler('esx_vehicleshop:rentVehicle', function(vehicle, plate, rentPrice, playerId) local xPlayer, xTarget = ESX.GetPlayerFromId(source), ESX.GetPlayerFromId(playerId) - if xPlayer.job.name == 'cardealer' and xTarget then - MySQL.single('SELECT id, price FROM cardealer_vehicles WHERE vehicle = ?', {vehicle}, - function(result) - if result then - MySQL.update('DELETE FROM cardealer_vehicles WHERE id = ?', {result.id}, - function(rowsChanged) - if rowsChanged == 1 then - MySQL.insert('INSERT INTO rented_vehicles (vehicle, plate, player_name, base_price, rent_price, owner) VALUES (?, ?, ?, ?, ?, ?)', {vehicle, plate, xTarget.getName(), result.price, rentPrice, xTarget.identifier}, - function(id) - xPlayer.showNotification(TranslateCap('vehicle_set_rented', plate, xTarget.getName())) - end) - end - end) - end - end) + if xPlayer.job.name ~= 'cardealer' or not xTarget then + return end + + MySQL.single('SELECT id, price FROM cardealer_vehicles WHERE vehicle = ?', {vehicle}, + function(result) + if not result then + return + end + + MySQL.update('DELETE FROM cardealer_vehicles WHERE id = ?', {result.id}, + function(rowsChanged) + if rowsChanged ~= 1 then + return + end + + MySQL.insert('INSERT INTO rented_vehicles (vehicle, plate, player_name, base_price, rent_price, owner) VALUES (?, ?, ?, ?, ?, ?)', {vehicle, plate, xTarget.getName(), result.price, rentPrice, xTarget.identifier}, + function(id) + xPlayer.showNotification(TranslateCap('vehicle_set_rented', plate, xTarget.getName())) + end) + end) + end) end) RegisterNetEvent('esx_vehicleshop:getStockItem') @@ -123,13 +118,12 @@ AddEventHandler('esx_vehicleshop:getStockItem', function(itemName, count) if count > 0 and item.count >= count then -- can the player carry the said amount of x item? - if xPlayer.canCarryItem(itemName, count) then - inventory.removeItem(itemName, count) - xPlayer.addInventoryItem(itemName, count) - xPlayer.showNotification(TranslateCap('have_withdrawn', count, item.label)) - else - xPlayer.showNotification(TranslateCap('player_cannot_hold')) + if not xPlayer.canCarryItem(itemName, count) then + return xPlayer.showNotification(TranslateCap('player_cannot_hold')) end + inventory.removeItem(itemName, count) + xPlayer.addInventoryItem(itemName, count) + xPlayer.showNotification(TranslateCap('have_withdrawn', count, item.label)) else xPlayer.showNotification(TranslateCap('not_enough_in_society')) end @@ -154,14 +148,6 @@ AddEventHandler('esx_vehicleshop:putStockItems', function(itemName, count) end) end) -ESX.RegisterServerCallback('esx_vehicleshop:getCategories', function(source, cb) - cb(categories) -end) - -ESX.RegisterServerCallback('esx_vehicleshop:getVehicles', function(source, cb) - cb(vehicles) -end) - ESX.RegisterServerCallback('esx_vehicleshop:buyVehicle', function(source, cb, model, plate) local xPlayer = ESX.GetPlayerFromId(source) local modelPrice = getVehicleFromModel(model).price @@ -194,53 +180,57 @@ end) ESX.RegisterServerCallback('esx_vehicleshop:buyCarDealerVehicle', function(source, cb, model) local xPlayer = ESX.GetPlayerFromId(source) - if xPlayer.job.name == 'cardealer' then - local modelPrice = getVehicleFromModel(model).price - - if modelPrice then - TriggerEvent('esx_addonaccount:getSharedAccount', 'society_cardealer', function(account) - if account.money >= modelPrice then - account.removeMoney(modelPrice) - - MySQL.insert('INSERT INTO cardealer_vehicles (vehicle, price) VALUES (?, ?)', {model, modelPrice}, - function(rowsChanged) - cb(true) - end) - else - cb(false) - end - end) - end + if xPlayer.job.name ~= 'cardealer' then + return cb(false) end + local modelPrice = getVehicleFromModel(model).price + + if not modelPrice then + return cb(false) + end + TriggerEvent('esx_addonaccount:getSharedAccount', 'society_cardealer', function(account) + if account.money < modelPrice then + return cb(false) + end + + account.removeMoney(modelPrice) + + MySQL.insert('INSERT INTO cardealer_vehicles (vehicle, price) VALUES (?, ?)', {model, modelPrice}, + function(rowsChanged) + cb(true) + end) + end) end) RegisterNetEvent('esx_vehicleshop:returnProvider') AddEventHandler('esx_vehicleshop:returnProvider', function(vehicleModel) local xPlayer = ESX.GetPlayerFromId(source) - if xPlayer.job.name == 'cardealer' then - MySQL.single('SELECT id, price FROM cardealer_vehicles WHERE vehicle = ?', {vehicleModel}, - function(result) - if result then - local id = result.id - - MySQL.update('DELETE FROM cardealer_vehicles WHERE id = ?', {id}, - function(rowsChanged) - if rowsChanged == 1 then - TriggerEvent('esx_addonaccount:getSharedAccount', 'society_cardealer', function(account) - local price = ESX.Math.Round(result.price * 0.75) - local vehicleLabel = getVehicleFromModel(vehicleModel).label - - account.addMoney(price) - xPlayer.showNotification(TranslateCap('vehicle_sold_for', vehicleLabel, ESX.Math.GroupDigits(price))) - end) - end - end) - else - print(('[^3WARNING^7] Player ^5%s^7 Attempted To Sell Invalid Vehicle - ^5%s^7!'):format(source, vehicleModel)) - end - end) + if xPlayer.job.name ~= 'cardealer' then + return end + MySQL.single('SELECT id, price FROM cardealer_vehicles WHERE vehicle = ?', {vehicleModel}, + function(result) + if not result then + return print(('[^3WARNING^7] Player ^5%s^7 Attempted To Sell Invalid Vehicle - ^5%s^7!'):format(source, vehicleModel)) + end + + local id = result.id + + MySQL.update('DELETE FROM cardealer_vehicles WHERE id = ?', {id}, + function(rowsChanged) + if rowsChanged ~= 1 then + return + end + TriggerEvent('esx_addonaccount:getSharedAccount', 'society_cardealer', function(account) + local price = ESX.Math.Round(result.price * 0.75) + local vehicleLabel = getVehicleFromModel(vehicleModel).label + + account.addMoney(price) + xPlayer.showNotification(TranslateCap('vehicle_sold_for', vehicleLabel, ESX.Math.GroupDigits(price))) + end) + end) + end) end) ESX.RegisterServerCallback('esx_vehicleshop:getRentedVehicles', function(source, cb) @@ -263,20 +253,17 @@ end) ESX.RegisterServerCallback('esx_vehicleshop:giveBackVehicle', function(source, cb, plate) MySQL.single('SELECT base_price, vehicle FROM rented_vehicles WHERE plate = ?', {plate}, function(result) - if result then - local vehicle = result.vehicle - local basePrice = result.base_price - - MySQL.update('DELETE FROM rented_vehicles WHERE plate = ?', {plate}, - function(rowsChanged) - MySQL.insert('INSERT INTO cardealer_vehicles (vehicle, price) VALUES (?, ?)', {result.vehicle, result.base_price}) - - RemoveOwnedVehicle(plate) - cb(true) - end) - else - cb(false) + if not result then + return cb(false) end + + MySQL.update('DELETE FROM rented_vehicles WHERE plate = ?', {plate}, + function() + MySQL.insert('INSERT INTO cardealer_vehicles (vehicle, price) VALUES (?, ?)', {result.vehicle, result.base_price}) + + RemoveOwnedVehicle(plate) + cb(true) + end) end) end) @@ -294,36 +281,34 @@ ESX.RegisterServerCallback('esx_vehicleshop:resellVehicle', function(source, cb, if not resellPrice then print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Invalid Vehicle - ^5%s^7!'):format(source, model)) - cb(false) - else - MySQL.single('SELECT * FROM rented_vehicles WHERE plate = ?', {plate}, - function(result) - if result then -- is it a rented vehicle? - cb(false) -- it is, don't let the player sell it since he doesn't own it - else - MySQL.single('SELECT * FROM owned_vehicles WHERE owner = ? AND plate = ?', {xPlayer.identifier, plate}, - function(result) - if result then -- does the owner match? - local vehicle = json.decode(result.vehicle) - - if vehicle.model == model then - if vehicle.plate == plate then - xPlayer.addMoney(resellPrice, "Sold Vehicle") - RemoveOwnedVehicle(plate) - cb(true) - else - print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Vehicle With Invalid Plate - ^5%s^7!'):format(source, plate)) - cb(false) - end - else - print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Vehicle With Invalid Model - ^5%s^7!'):format(source, model)) - cb(false) - end - end - end) - end - end) + return cb(false) end + MySQL.single('SELECT * FROM rented_vehicles WHERE plate = ?', {plate}, + function(result) + if result then -- is it a rented vehicle? + return cb(false) -- it is, don't let the player sell it since he doesn't own it + end + MySQL.single('SELECT * FROM owned_vehicles WHERE owner = ? AND plate = ?', {xPlayer.identifier, plate}, + function(result) + if not result then -- does the owner match? + return + end + local vehicle = json.decode(result.vehicle) + + if vehicle.model ~= model then + print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Vehicle With Invalid Model - ^5%s^7!'):format(source, model)) + return cb(false) + end + if vehicle.plate ~= plate then + print(('[^3WARNING^7] Player ^5%s^7 Attempted To Resell Vehicle With Invalid Plate - ^5%s^7!'):format(source, plate)) + return cb(false) + end + + xPlayer.addMoney(resellPrice, "Sold Vehicle") + RemoveOwnedVehicle(plate) + cb(true) + end) + end) end end) From 6212076bd439d355aebfc76d715a1d791b92792c Mon Sep 17 00:00:00 2001 From: Csoki Date: Fri, 30 Dec 2022 10:24:19 +0100 Subject: [PATCH 07/29] fix(esx_vehicleshop): 'hu' locales --- [esx_addons]/esx_vehicleshop/locales/hu.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/[esx_addons]/esx_vehicleshop/locales/hu.lua b/[esx_addons]/esx_vehicleshop/locales/hu.lua index b25bfd37..bd681b3a 100644 --- a/[esx_addons]/esx_vehicleshop/locales/hu.lua +++ b/[esx_addons]/esx_vehicleshop/locales/hu.lua @@ -2,13 +2,13 @@ Locales['hu'] = { -- global menus ['not_enough_in_society'] = 'nincs elég ~r~tárgyad a vállalkozásban!', ['player_cannot_hold'] = '~r~nincs elég helyed a leltárban!', - ['vehicle_belongs'] = 'egy jármü engedélyel %s most már hozzád tartozik', + ['vehicle_belongs'] = '%s rendszámú jármű már a tulajdonodban van.', ['broke_company'] = 'nincs elég pénz a vállalati számlán', ['license_missing'] = 'nincs jogosítványod tedd le!', ['purchase_type'] = 'a vásárlás típusa', ['society_type'] = 'vállalkozás', ['staff_type'] = 'személyes használat', - ['buy_vehicle_shop'] = 'meg szeretnéd vásárolni %s ennyiért: %s NP-ért?', + ['buy_vehicle_shop'] = 'meg szeretnéd vásárolni %s ennyiért: %s $-ért?', ['buy_vehicle'] = 'vásárlás', ['car_dealer'] = 'Autókereskedés', ['shop_awaiting_model'] = 'az autó töltése folyamantban kérlek várj', @@ -26,23 +26,23 @@ Locales['hu'] = { ['not_enough_money'] = 'nincs elég pénzed', ['not_rental'] = 'ez nem ~r~bérelhetö autó', ['not_yours'] = 'ez az autó nem tartozik hozzád', - ['paid_rental'] = 'fizettél a kölcsönzönek: %s NP', + ['paid_rental'] = 'fizettél a kölcsönzönek: %s $', ['pop_vehicle'] = 'tedd a jármüvet eladásra', ['rent_vehicle'] = 'Autókereskedö - Jármüvek bérlése', ['return_provider_menu'] = 'Autókereskedö - Jámrü vissza adás a szollgáltatónak', ['rental_amount'] = 'bérlési költség', - ['sell_menu'] = 'nyomj [E] gombot hogy eladd a %s ennyiért %s NP', + ['sell_menu'] = 'nyomj [E] gombot hogy eladd a %s ennyiért %s $', ['set_vehicle_owner_rent'] = 'jármü kijelölése [Location]', ['set_vehicle_owner_sell'] = 'jármü eladása', ['set_vehicle_owner_sell_society'] = 'jármü kijelölése [Sale] [Society]', ['shop_menu'] = 'nyomj [E] gombot a vásárláshoz', - ['generic_shopitem'] = '%s NP', + ['generic_shopitem'] = '%s $', ['vehicle_dealer'] = 'jármü - Autókereskedö', ['vehicle_menu'] = 'nyomj [E] gombot hogy vissza add a bérelt jármüvet', ['vehicle_purchased'] = 'vásároltál egy jármüvet', ['vehicle_set_owned'] = 'jármü %s megvéve ennyiért: %s', ['vehicle_set_rented'] = 'jármü %s kibérelve ennyiért: %s', - ['vehicle_sold_for'] = 'A %s jármü eladva ennyiért %s NP', + ['vehicle_sold_for'] = 'A %s jármü eladva ennyiért %s $', ['vehicle_sold_to'] = 'a jármü rendszámmal %s eladva neki: %s', ['deposit_stock'] = 'beteszek a készletbe', ['take_stock'] = 'kiveszek a készletböl', From 2a659184d6e57a2b7d6d6e2174ed854310d5ed99 Mon Sep 17 00:00:00 2001 From: Csoki Date: Fri, 30 Dec 2022 10:41:57 +0100 Subject: [PATCH 08/29] refactor(esx_vehicleshop): main/client.lua --- [esx_addons]/esx_vehicleshop/client/main.lua | 136 ++++++++----------- 1 file changed, 57 insertions(+), 79 deletions(-) diff --git a/[esx_addons]/esx_vehicleshop/client/main.lua b/[esx_addons]/esx_vehicleshop/client/main.lua index 357869f6..e6065b83 100644 --- a/[esx_addons]/esx_vehicleshop/client/main.lua +++ b/[esx_addons]/esx_vehicleshop/client/main.lua @@ -1,42 +1,28 @@ local HasAlreadyEnteredMarker, IsInShopMenu = false, false local CurrentAction, CurrentActionMsg, LastZone, currentDisplayVehicle, CurrentVehicleData local CurrentActionData, Vehicles, Categories = {}, {}, {} +local VehiclesByModel = {} +local vehiclesByCategory = {} function getVehicleFromModel(model) - for i = 1, #Vehicles do - local vehicle = Vehicles[i] - if vehicle.model == model then - return vehicle - end - end + return VehiclesByModel[model] end -function getVehicles() - ESX.TriggerServerCallback('esx_vehicleshop:getCategories', function(categories) - Categories = categories - end) - - ESX.TriggerServerCallback('esx_vehicleshop:getVehicles', function(vehicles) - Vehicles = vehicles - end) -end - -AddEventHandler("onResourceStart", getVehicles) - function PlayerManagement() - if Config.EnablePlayerManagement then - if ESX.PlayerData.job.name == 'cardealer' then - Config.Zones.ShopEntering.Type = 1 + if not Config.EnablePlayerManagement then + return + end - if ESX.PlayerData.job.grade_name == 'boss' then - Config.Zones.BossActions.Type = 1 - end + if ESX.PlayerData.job.name ~= 'cardealer' then + Config.Zones.ShopEntering.Type = -1 + Config.Zones.BossActions.Type = -1 + Config.Zones.ResellVehicle.Type = -1 + return + end + Config.Zones.ShopEntering.Type = 1 - else - Config.Zones.ShopEntering.Type = -1 - Config.Zones.BossActions.Type = -1 - Config.Zones.ResellVehicle.Type = -1 - end + if ESX.PlayerData.job.grade_name == 'boss' then + Config.Zones.BossActions.Type = 1 end end @@ -45,21 +31,35 @@ AddEventHandler('esx:playerLoaded', function(xPlayer) ESX.PlayerData = xPlayer PlayerManagement() - getVehicles() + TriggerServerEvent("esx_vehicleshop:getVehiclesAndCategories") end) -RegisterNetEvent('esx_vehicleshop:sendCategories') -AddEventHandler('esx_vehicleshop:sendCategories', function(categories) - Categories = categories -end) - -RegisterNetEvent('esx_vehicleshop:sendVehicles') -AddEventHandler('esx_vehicleshop:sendVehicles', function(vehicles) +RegisterNetEvent('esx_vehicleshop:updateVehiclesAndCategories', function(vehicles, categories, vehiclesByModel) Vehicles = vehicles + Categories = categories + + VehiclesByModel = vehiclesByModel + + table.sort(Vehicles, function(a, b) + return a.name < b.name + end) + + for _, vehicle in ipairs(Vehicles) do + if IsModelInCdimage(joaat(vehicle.model)) then + local category = vehicle.category + + if not vehiclesByCategory[category] then + vehiclesByCategory[category] = {} + end + + table.insert(vehiclesByCategory[category], vehicle) + else + print(('[^3WARNING^7] Ignoring vehicle ^5%s^7 due to invalid Model'):format(vehicle.model)) + end + end end) - -RegisterNetEvent('esx:setJob') AddEventHandler('esx:setJob', PlayerManagement) +RegisterNetEvent('esx:setJob', PlayerManagement) function DeleteDisplayVehicleInsideShop() local attempt = 0 @@ -81,7 +81,7 @@ function ReturnVehicleProvider() ESX.TriggerServerCallback('esx_vehicleshop:getCommercialVehicles', function(vehicles) local elements = {} - for k,v in ipairs(vehicles) do + for k, v in ipairs(vehicles) do local returnPrice = ESX.Math.Round(v.price * 0.75) local vehicleLabel = getVehicleFromModel(v.vehicle).label @@ -135,28 +135,9 @@ function OpenShopMenu() SetEntityVisible(playerPed, false) SetEntityCoords(playerPed, Config.Zones.ShopInside.Pos) - local vehiclesByCategory = {} local elements = {} local firstVehicleData = nil - for i=1, #Categories, 1 do - vehiclesByCategory[Categories[i].name] = {} - end - - for i=1, #Vehicles, 1 do - if IsModelInCdimage(joaat(Vehicles[i].model)) then - table.insert(vehiclesByCategory[Vehicles[i].category], Vehicles[i]) - else - print(('[^3WARNING^7] Ignoring vehicle ^5%s^7 due to invalid Model'):format(Vehicles[i].model)) - end - end - - for k,v in pairs(vehiclesByCategory) do - table.sort(v, function(a, b) - return a.name < b.name - end) - end - for i=1, #Categories, 1 do local category = Categories[i] local categoryVehicles = vehiclesByCategory[category.name] @@ -439,7 +420,7 @@ function OpenPopVehicleMenu() local vehicleLabel = getVehicleFromModel(v.vehicle).label table.insert(elements, { - label = ('%s [MSRP %s]'):format(vehicleLabel, TranslateCap('generic_shopitem', ESX.Math.GroupDigits(v.price))), + label = ('%s [%s]'):format(vehicleLabel, TranslateCap('generic_shopitem', ESX.Math.GroupDigits(v.price))), value = v.vehicle }) end @@ -630,21 +611,18 @@ function OpenPutStocksMenu() end) end -AddEventHandler('esx_vehicleshop:hasEnteredMarker', function(zone) +function hasEnteredMarker(zone) if zone == 'ShopEntering' then - - if Config.EnablePlayerManagement then - if ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'cardealer' then - CurrentAction = 'reseller_menu' - CurrentActionMsg = TranslateCap('shop_menu') - CurrentActionData = {} - end - else + if not Config.EnablePlayerManagement then CurrentAction = 'shop_menu' CurrentActionMsg = TranslateCap('shop_menu') CurrentActionData = {} end - + if ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'cardealer' then + CurrentAction = 'reseller_menu' + CurrentActionMsg = TranslateCap('shop_menu') + CurrentActionData = {} + end elseif zone == 'GiveBackVehicle' and Config.EnablePlayerManagement then local playerPed = PlayerPedId() @@ -696,15 +674,15 @@ AddEventHandler('esx_vehicleshop:hasEnteredMarker', function(zone) CurrentActionMsg = TranslateCap('shop_menu') CurrentActionData = {} end -end) +end -AddEventHandler('esx_vehicleshop:hasExitedMarker', function(zone) +function hasExitedMarker(zone) if not IsInShopMenu then ESX.UI.Menu.CloseAll() end ESX.HideUI() CurrentAction = nil -end) +end AddEventHandler('onResourceStop', function(resource) if resource == GetCurrentResourceName() then @@ -736,8 +714,8 @@ if Config.EnablePlayerManagement then end -- Create Blips -CreateThread(function() - if Config.Blip.show then +if Config.Blip.show then + CreateThread(function() local blip = AddBlipForCoord(Config.Zones.ShopEntering.Pos) SetBlipSprite (blip, Config.Blip.Sprite) @@ -748,8 +726,8 @@ CreateThread(function() BeginTextCommandSetBlipName('STRING') AddTextComponentSubstringPlayerName(TranslateCap('car_dealer')) EndTextCommandSetBlipName(blip) - end -end) + end) +end -- Enter / Exit marker events & Draw Markers CreateThread(function() @@ -777,12 +755,12 @@ CreateThread(function() if (isInMarker and not HasAlreadyEnteredMarker) or (isInMarker and LastZone ~= currentZone) then HasAlreadyEnteredMarker, LastZone = true, currentZone LastZone = currentZone - TriggerEvent('esx_vehicleshop:hasEnteredMarker', currentZone) + hasEnteredMarker(currentZone) end if not isInMarker and HasAlreadyEnteredMarker then HasAlreadyEnteredMarker = false - TriggerEvent('esx_vehicleshop:hasExitedMarker', LastZone) + hasExitedMarker(LastZone) end if letSleep then From 795faa8d304ea7b98bf67578d4cabca541c39f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=20Gerg=C5=91?= <69343477+Rav3n95@users.noreply.github.com> Date: Fri, 30 Dec 2022 15:01:03 +0100 Subject: [PATCH 09/29] esx banking not goint freaking brr --- [esx_addons]/esx_banking/client/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[esx_addons]/esx_banking/client/main.lua b/[esx_addons]/esx_banking/client/main.lua index 4d7ee66d..bcaeb811 100644 --- a/[esx_addons]/esx_banking/client/main.lua +++ b/[esx_addons]/esx_banking/client/main.lua @@ -199,7 +199,7 @@ end) local function loadNPC(index, netID) CreateThread(function() while not NetworkDoesEntityExistWithNetworkId(netID) do - Wait(1) + Wait(200) end local npc = NetworkGetEntityFromNetworkId(netID) From effd985898a373fbee6f9d1e353aee2c7c48e50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?AL1=C6=8EN?= <72218928+johnsoul777@users.noreply.github.com> Date: Fri, 30 Dec 2022 15:56:21 +0100 Subject: [PATCH 10/29] Create es.js --- [esx]/esx_multicharacter/html/locales/es.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 [esx]/esx_multicharacter/html/locales/es.js diff --git a/[esx]/esx_multicharacter/html/locales/es.js b/[esx]/esx_multicharacter/html/locales/es.js new file mode 100644 index 00000000..b0791792 --- /dev/null +++ b/[esx]/esx_multicharacter/html/locales/es.js @@ -0,0 +1,8 @@ +const translate = new Object(); + +translate.name = "Nombre"; +translate.job = "Trabajo"; +translate.bank = "Banco"; +translate.money = "Dinero"; +translate.gender = "Género"; +translate.dob = "Fecha de nacimiento"; From 8c2b766dbd0f44d74aa692d34b99e175b6159f85 Mon Sep 17 00:00:00 2001 From: MoskalykA <100430077+MoskalykA@users.noreply.github.com> Date: Sat, 31 Dec 2022 15:15:57 +0100 Subject: [PATCH 11/29] fix: correction of the two errors in the example --- esx_example/client/main.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/esx_example/client/main.lua b/esx_example/client/main.lua index fe995759..696a6fa8 100644 --- a/esx_example/client/main.lua +++ b/esx_example/client/main.lua @@ -1,6 +1,6 @@ RegisterNetEvent('esx:playerLoaded') -- Store the players data AddEventHandler('esx:playerLoaded', function(xPlayer, isNew) - print("Player Loaded. New | " .. isNew) + print(('Player Loaded. New | %s'):format(isNew)) ESX.PlayerData = xPlayer ESX.PlayerLoaded = true end) @@ -23,7 +23,7 @@ end) function OnPlayerData(key, val, last) if type(val) == 'table' then val = json.encode(val) end - print('PlayerData.'..key..' was set to '..val) + print(('PlayerData.%s was set to %s'):format(key, val)) if key == 'job' then if last.name ~= val.name then print('You are now in a different job') From 842f221b34930171ff5b70224db309dbb40ddd2f Mon Sep 17 00:00:00 2001 From: Liam Dormon <66041893+Mojito-Fivem@users.noreply.github.com> Date: Mon, 2 Jan 2023 17:06:59 +0000 Subject: [PATCH 12/29] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 190c33e8..ec43d2de 100644 --- a/readme.md +++ b/readme.md @@ -22,7 +22,7 @@ Interested in helping us? [Take a look at our patreon](https://www.patreon.com/e ESX-legacy - ESX framework for FiveM -Copyright (C) 2015-2022 ESX-Framework +Copyright (C) 2015-2023 ESX-Framework This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version. From d7414a3571b5a2bddd5b4adb4c7aba8188e6e824 Mon Sep 17 00:00:00 2001 From: Benzo <102178921+Benzo00@users.noreply.github.com> Date: Mon, 2 Jan 2023 23:36:21 +0100 Subject: [PATCH 13/29] refactor(): adding ESX Prefix * adding prefix where it rejects players connection --- [esx]/es_extended/server/main.lua | 20 ++++++++++---------- [esx_addons]/esx_allowlist/server/main.lua | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/[esx]/es_extended/server/main.lua b/[esx]/es_extended/server/main.lua index 52a6f6f7..8b4c00d3 100644 --- a/[esx]/es_extended/server/main.lua +++ b/[esx]/es_extended/server/main.lua @@ -99,14 +99,14 @@ if not Config.Multichar then if identifier then if ESX.GetPlayerFromIdentifier(identifier) then deferrals.done( - ('There was an error loading your character!\nError code: identifier-active\n\nThis error is caused by a player on this server who has the same identifier as you have. Make sure you are not playing on the same account.\n\nYour identifier: %s'):format( + ('[ESX] There was an error loading your character!\nError code: identifier-active\n\nThis error is caused by a player on this server who has the same identifier as you have. Make sure you are not playing on the same account.\n\nYour identifier: %s'):format( identifier)) else deferrals.done() end else deferrals.done( - 'There was an error loading your character!\nError code: identifier-missing\n\nThe cause of this error is not known, your identifier could not be found. Please come back later or report this problem to the server administration team.') + '[ESX] There was an error loading your character!\nError code: identifier-missing\n\nThe cause of this error is not known, your identifier could not be found. Please come back later or report this problem to the server administration team.') end end) end @@ -133,9 +133,9 @@ function loadESXPlayer(identifier, playerId, isNew) end local index = #userData.accounts + 1 userData.accounts[index] = { - name = account, + name = account, money = foundAccounts[account] or Config.StartingAccountMoney[account] or 0, - label = data.label, + label = data.label, round = data.round, index = index } @@ -299,13 +299,13 @@ function loadESXPlayer(identifier, playerId, isNew) xPlayer.triggerEvent('esx:playerLoaded', { - accounts = xPlayer.getAccounts(), - coords = xPlayer.getCoords(), - identifier = xPlayer.getIdentifier(), + accounts = xPlayer.getAccounts(), + coords = xPlayer.getCoords(), + identifier = xPlayer.getIdentifier(), inventory = xPlayer.getInventory(), - job = xPlayer.getJob(), - loadout = xPlayer.getLoadout(), - maxWeight = xPlayer.getMaxWeight(), + job = xPlayer.getJob(), + loadout = xPlayer.getLoadout(), + maxWeight = xPlayer.getMaxWeight(), money = xPlayer.getMoney(), sex = xPlayer.get("sex") or "m", firstName = xPlayer.get("firstName") or "John", diff --git a/[esx_addons]/esx_allowlist/server/main.lua b/[esx_addons]/esx_allowlist/server/main.lua index 89d96428..8a2bf799 100644 --- a/[esx_addons]/esx_allowlist/server/main.lua +++ b/[esx_addons]/esx_allowlist/server/main.lua @@ -29,11 +29,11 @@ AddEventHandler('playerConnecting', function(name, setCallback, deferrals) local identifier = ESX.GetIdentifier(playerId) if ESX.Table.SizeOf(AllowList) == 0 then - kickReason = TranslateCap('allowlist_empty') + kickReason = "[ESX] " .. TranslateCap('allowlist_empty') elseif not identifier then - kickReason = TranslateCap('license_missing') + kickReason = "[ESX] " .. TranslateCap('license_missing') elseif not AllowList[identifier] then - kickReason = TranslateCap('not_allowlist') + kickReason = "[ESX] " .. TranslateCap('not_allowlist') end if kickReason then From 227e1694a65631b026e1488fa565efec7a551bc5 Mon Sep 17 00:00:00 2001 From: TheFantomas <117121911+TheFantomas@users.noreply.github.com> Date: Tue, 3 Jan 2023 20:38:14 +0100 Subject: [PATCH 14/29] Remove IT file (#805) Remove IT file --- it.lua | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 it.lua diff --git a/it.lua b/it.lua deleted file mode 100644 index d75a6e53..00000000 --- a/it.lua +++ /dev/null @@ -1,30 +0,0 @@ -Locales['it'] = { - ['male'] = "Maschio", - ['female'] = "Femmina", - ['delete_label'] = "Cancella %s %s?", - ['select_char'] = "Seleziona Personaggio", - ["select_char_description"] = "Seleziona il personaggio con cui vuoi giocare.", - ['create_char'] = "Crea un nuovo personaggio", - ['char_play'] = "Gioca questo personaggio", - ['char_disabled'] = "Questo personaggio è disabilitato", - ['char_delete'] = "Cancella questo personaggio", - ['cancel'] = "Annulla", - ['confirm'] = "Conferma", - ['command_setslots'] = "Imposta il numero di slot di personaggi di un giocatore", - ['command_remslots'] = "Rimuovi il numero di slot di personaggi di un giocatore", - ['command_enablechar'] = "Abilita un personaggio di un giocatore", - ['command_disablechar'] = "Disabilita un personaggio di un giocatore", - ['command_charslot'] = "Numero dello slot del personaggio", - ['command_identifier'] = "Identifier del giocatore", - ['command_slots'] = "# di slot", - ['slotsadd'] = "Hai aggiunto %s slot a %s", - ['slotsedit'] = "Hai impostato %s slot a %s", - ['slotsrem'] = "Hai rimosso gli slot a %s", - ['charenabled'] = "Hai abilitato il %s° personaggio di %s", - ['chardisabled'] = "Hai disabilitato il %s° personaggio di %s", - ['charnotfound'] = "Il personaggio %s di %s non esiste", - ['return_description'] ="Ritorna alla selezione dei personaggi" , - ['char_play_description'] ="continua a giocare con questo personaggio", - ['char_delete_description'] = "elimina il personaggio selezionato", - ['return'] = "ritorna indietro", -} From 53629668339148443d37be8caeee24250f0360a7 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Devic Date: Tue, 3 Jan 2023 21:14:26 +0100 Subject: [PATCH 15/29] fix(sql):vehicle_sold table temporary fix of the database requires a rewrite --- [SQL]/legacy.sql | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/[SQL]/legacy.sql b/[SQL]/legacy.sql index 218e3264..f0697065 100644 --- a/[SQL]/legacy.sql +++ b/[SQL]/legacy.sql @@ -710,7 +710,7 @@ INSERT INTO `vehicle_categories` (`name`, `label`) VALUES -- CREATE TABLE `vehicle_sold` ( - `id` INT(11) NOT NULL, + `id` int(11) NOT NULL AUTO_INCREMENT, `client` varchar(50) NOT NULL, `model` varchar(50) NOT NULL, `plate` varchar(50) NOT NULL, @@ -848,24 +848,12 @@ ALTER TABLE `user_licenses` ALTER TABLE `vehicle_categories` ADD PRIMARY KEY (`name`); --- --- Indexes for table `vehicle_sold` --- -ALTER TABLE `vehicle_sold` - ADD PRIMARY KEY (`id`); - -- -- Indexes for table `whitelist` -- ALTER TABLE `whitelist` ADD PRIMARY KEY (`identifier`); --- --- Indexes for table `vehicle_sold` --- -ALTER TABLE `vehicle_sold` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -- -- AUTO_INCREMENT for table `addon_account_data` -- From 5b2509b2fa278948d2ebaa1ffdb8510f56d895b2 Mon Sep 17 00:00:00 2001 From: Mycroft Date: Tue, 3 Jan 2023 23:14:27 +0000 Subject: [PATCH 16/29] feat(es_extended): add message to event --- [esx]/es_extended/client/common.lua | 5 +++++ [esx]/es_extended/server/common.lua | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/[esx]/es_extended/client/common.lua b/[esx]/es_extended/client/common.lua index 26020ace..c088fb90 100644 --- a/[esx]/es_extended/client/common.lua +++ b/[esx]/es_extended/client/common.lua @@ -5,3 +5,8 @@ end) if GetResourceState('ox_inventory') ~= 'missing' then Config.OxInventory = true end + +AddEventHandler("esx:getSharedObject", function() + local Invoke = GetInvokingResource() + print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://documentation.esx-framework.org/tutorials/sharedevent for how to fix!"):format(Invoke)) +end) diff --git a/[esx]/es_extended/server/common.lua b/[esx]/es_extended/server/common.lua index c8d004b4..75a9bc34 100644 --- a/[esx]/es_extended/server/common.lua +++ b/[esx]/es_extended/server/common.lua @@ -14,6 +14,10 @@ Core.Pickups = {} Core.PickupId = 0 Core.PlayerFunctionOverrides = {} +AddEventHandler("esx:getSharedObject", function() + local Invoke = GetInvokingResource() + print(("[ERROR] Resource %s Used the getSharedObject Event, this event no longer exists! Visit https://documentation.esx-framework.org/tutorials/sharedevent for how to fix!"):format(Invoke)) +end) exports('getSharedObject', function() return ESX From e9e4fa0205722273f79dfc9c6d64128f790c45ae Mon Sep 17 00:00:00 2001 From: Mycroft Date: Wed, 4 Jan 2023 00:17:51 +0000 Subject: [PATCH 17/29] fix(es_extended): print formatting --- [esx]/es_extended/server/common.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/[esx]/es_extended/server/common.lua b/[esx]/es_extended/server/common.lua index 75a9bc34..6aaf87c8 100644 --- a/[esx]/es_extended/server/common.lua +++ b/[esx]/es_extended/server/common.lua @@ -16,7 +16,7 @@ Core.PlayerFunctionOverrides = {} AddEventHandler("esx:getSharedObject", function() local Invoke = GetInvokingResource() - print(("[ERROR] Resource %s Used the getSharedObject Event, this event no longer exists! Visit https://documentation.esx-framework.org/tutorials/sharedevent for how to fix!"):format(Invoke)) + print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://documentation.esx-framework.org/tutorials/sharedevent for how to fix!"):format(Invoke)) end) exports('getSharedObject', function() From c732d7926326cfef5cbba70a223a7f9b42bcfc77 Mon Sep 17 00:00:00 2001 From: Mycroft Date: Wed, 4 Jan 2023 18:50:34 +0000 Subject: [PATCH 18/29] tweak(esx_society): better readme --- [esx_addons]/esx_society/README.md | 31 +----------------------------- 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/[esx_addons]/esx_society/README.md b/[esx_addons]/esx_society/README.md index 444a73eb..6ca83c1a 100644 --- a/[esx_addons]/esx_society/README.md +++ b/[esx_addons]/esx_society/README.md @@ -1,36 +1,7 @@ -# esx_society +

[ESX] Society

Discord - Website - Documentation Society management for ESX. Adds employee management (hire, fire, promote / demote, change salary), society bank accounts and money washing. It's crucial that this script gets started before all resources that utilize societies do, or else many things will go wrong. -## Requirements -- [cron](https://github.com/esx-framework/esx-legacy/tree/main/%5Besx%5D/cron) -- [esx_addonaccount](https://github.com/esx-framework/esx-legacy/tree/main/%5Besx_addons%5D/esx_addonaccount) - -## Download & Installation - -### Using [fvm](https://github.com/qlaffont/fvm-installer) -``` -fvm install --save --folder=esx esx-org/esx_society -``` - -### Using Git -``` -cd resources -git clone https://github.com/ESX-Org/esx_society [esx]/esx_society -``` - -### Manually -- Download https://github.com/ESX-Org/esx_society/archive/master.zip -- Put it in the `[esx]` directory - -## Installation -- Import `esx_society.sql` in your database -- Add this in your `server.cfg`: - -``` -start esx_society -``` - ## Explanation ESX Society works with addon accounts named 'society_xxx', for example 'society_taxi' or 'society_realestateagent'. If you job grade is 'boss' the society money will be displayed in your hud. From 43fe788a2bc82a02aa5664064ba2a4b60e31e78b Mon Sep 17 00:00:00 2001 From: Mycroft Date: Wed, 4 Jan 2023 18:52:48 +0000 Subject: [PATCH 19/29] refactor(esx_society): allow registering society with exports --- [esx_addons]/esx_society/server/main.lua | 32 +++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/[esx_addons]/esx_society/server/main.lua b/[esx_addons]/esx_society/server/main.lua index be5e0d3d..0630695a 100644 --- a/[esx_addons]/esx_society/server/main.lua +++ b/[esx_addons]/esx_society/server/main.lua @@ -9,24 +9,24 @@ function GetSociety(name) end end -AddEventHandler('onResourceStart', function(resourceName) - if resourceName == GetCurrentResourceName() then - local result = MySQL.query.await('SELECT * FROM jobs') +exports("GetSociety", GetSociety) - for i = 1, #result, 1 do - Jobs[result[i].name] = result[i] - Jobs[result[i].name].grades = {} - end +CreateThread(function() + local result = MySQL.query.await('SELECT * FROM jobs') - local result2 = MySQL.query.await('SELECT * FROM job_grades') + for i = 1, #result, 1 do + Jobs[result[i].name] = result[i] + Jobs[result[i].name].grades = {} + end - for i = 1, #result2, 1 do - Jobs[result2[i].job_name].grades[tostring(result2[i].grade)] = result2[i] - end + local result2 = MySQL.query.await('SELECT * FROM job_grades') + + for i = 1, #result2, 1 do + Jobs[result2[i].job_name].grades[tostring(result2[i].grade)] = result2[i] end end) -AddEventHandler('esx_society:registerSociety', function(name, label, account, datastore, inventory, data) +function registerSociety(name, label, account, datastore, inventory, data) local found = false local society = { @@ -46,9 +46,13 @@ AddEventHandler('esx_society:registerSociety', function(name, label, account, da end if not found then - table.insert(RegisteredSocieties, society) + RegisteredSocieties[#RegisteredSocieties + 1] = society + print(("[^2INFO^7] Registered Society ^5%s^7"):format(label)) end -end) +end + +AddEventHandler('esx_society:registerSociety',registerSociety) +exports("registerSociety", registerSociety) AddEventHandler('esx_society:getSocieties', function(cb) cb(RegisteredSocieties) From 3892aa9b8f7aab1faa731e6b2ece0dac85eafb07 Mon Sep 17 00:00:00 2001 From: Mycroft Date: Wed, 4 Jan 2023 18:59:30 +0000 Subject: [PATCH 20/29] fix: society race conditions --- [esx_addons]/esx_ambulancejob/fxmanifest.lua | 1 + [esx_addons]/esx_ambulancejob/server/main.lua | 6 +++--- [esx_addons]/esx_bankerjob/fxmanifest.lua | 5 ++++- [esx_addons]/esx_mechanicjob/server/main.lua | 5 ++++- [esx_addons]/esx_policejob/fxmanifest.lua | 1 + [esx_addons]/esx_policejob/server/main.lua | 4 +++- [esx_addons]/esx_property/fxmanifest.lua | 3 ++- [esx_addons]/esx_property/server/main.lua | 2 +- [esx_addons]/esx_taxijob/fxmanifest.lua | 5 ++++- [esx_addons]/esx_taxijob/server/main.lua | 8 +++++--- [esx_addons]/esx_vehicleshop/server/main.lua | 4 +++- 11 files changed, 31 insertions(+), 13 deletions(-) diff --git a/[esx_addons]/esx_ambulancejob/fxmanifest.lua b/[esx_addons]/esx_ambulancejob/fxmanifest.lua index 4b2c33a1..9800bf24 100644 --- a/[esx_addons]/esx_ambulancejob/fxmanifest.lua +++ b/[esx_addons]/esx_ambulancejob/fxmanifest.lua @@ -29,5 +29,6 @@ client_scripts { dependencies { 'es_extended', 'esx_skin', + 'esx_society', 'esx_vehicleshop' } diff --git a/[esx_addons]/esx_ambulancejob/server/main.lua b/[esx_addons]/esx_ambulancejob/server/main.lua index 6b22684a..c5265ab2 100644 --- a/[esx_addons]/esx_ambulancejob/server/main.lua +++ b/[esx_addons]/esx_ambulancejob/server/main.lua @@ -4,9 +4,9 @@ if GetResourceState("esx_phone") ~= 'missing' then TriggerEvent('esx_phone:registerNumber', 'ambulance', TranslateCap('alert_ambulance'), true, true) end -if GetResourceState("esx_society") ~= 'missing' then -TriggerEvent('esx_society:registerSociety', 'ambulance', 'Ambulance', 'society_ambulance', 'society_ambulance', 'society_ambulance', {type = 'public'}) -end +CreateThread(function() + exports["esx_society"]:registerSociety('ambulance', 'Ambulance', 'society_ambulance', 'society_ambulance', 'society_ambulance', {type = 'public'}) +end) RegisterNetEvent('esx_ambulancejob:revive') AddEventHandler('esx_ambulancejob:revive', function(playerId) diff --git a/[esx_addons]/esx_bankerjob/fxmanifest.lua b/[esx_addons]/esx_bankerjob/fxmanifest.lua index 664018c5..47eb4d5f 100644 --- a/[esx_addons]/esx_bankerjob/fxmanifest.lua +++ b/[esx_addons]/esx_bankerjob/fxmanifest.lua @@ -24,4 +24,7 @@ client_scripts { 'client/main.lua' } -dependency 'es_extended' +dependencies { + 'es_extended', + 'esx_society' +} diff --git a/[esx_addons]/esx_mechanicjob/server/main.lua b/[esx_addons]/esx_mechanicjob/server/main.lua index 4f8db966..0727d680 100644 --- a/[esx_addons]/esx_mechanicjob/server/main.lua +++ b/[esx_addons]/esx_mechanicjob/server/main.lua @@ -5,7 +5,10 @@ if Config.MaxInService ~= -1 then end TriggerEvent('esx_phone:registerNumber', 'mechanic', TranslateCap('mechanic_customer'), true, true) -TriggerEvent('esx_society:registerSociety', 'mechanic', 'mechanic', 'society_mechanic', 'society_mechanic', 'society_mechanic', {type = 'private'}) + +CreateThread(function() + exports["esx_society"]:registerSociety('mechanic', 'mechanic', 'society_mechanic', 'society_mechanic', 'society_mechanic', {type = 'private'}) +end) local function Harvest(source) SetTimeout(4000, function() diff --git a/[esx_addons]/esx_policejob/fxmanifest.lua b/[esx_addons]/esx_policejob/fxmanifest.lua index 9a3355d2..d8070a66 100644 --- a/[esx_addons]/esx_policejob/fxmanifest.lua +++ b/[esx_addons]/esx_policejob/fxmanifest.lua @@ -27,5 +27,6 @@ client_scripts { dependencies { 'es_extended', 'esx_billing', + 'esx_society', 'esx_vehicleshop' } diff --git a/[esx_addons]/esx_policejob/server/main.lua b/[esx_addons]/esx_policejob/server/main.lua index 1bffdee9..5aa7712f 100644 --- a/[esx_addons]/esx_policejob/server/main.lua +++ b/[esx_addons]/esx_policejob/server/main.lua @@ -5,7 +5,9 @@ if Config.EnableESXService then end TriggerEvent('esx_phone:registerNumber', 'police', TranslateCap('alert_police'), true, true) -TriggerEvent('esx_society:registerSociety', 'police', 'Police', 'society_police', 'society_police', 'society_police', {type = 'public'}) +CreateThread(function() + exports["esx_society"]:registerSociety('police', 'Police', 'society_police', 'society_police', 'society_police', {type = 'public'}) +end) RegisterNetEvent('esx_policejob:confiscatePlayerItem') AddEventHandler('esx_policejob:confiscatePlayerItem', function(target, itemType, itemName, amount) diff --git a/[esx_addons]/esx_property/fxmanifest.lua b/[esx_addons]/esx_property/fxmanifest.lua index e14af88a..36c5035c 100644 --- a/[esx_addons]/esx_property/fxmanifest.lua +++ b/[esx_addons]/esx_property/fxmanifest.lua @@ -42,5 +42,6 @@ client_scripts { } dependencies { - 'es_extended' + 'es_extended', + 'esx_society' } diff --git a/[esx_addons]/esx_property/server/main.lua b/[esx_addons]/esx_property/server/main.lua index fc55b196..e1e0b3ea 100644 --- a/[esx_addons]/esx_property/server/main.lua +++ b/[esx_addons]/esx_property/server/main.lua @@ -147,7 +147,7 @@ CreateThread(function() Wait(10) ESX.RefreshJobs() - TriggerEvent('esx_society:registerSociety', 'realestateagent', 'realestateagent', 'society_realestateagent', 'society_realestateagent', 'society_realestateagent', {type = 'private'}) + exports["esx_society"]:registerSociety('realestateagent', 'realestateagent', 'society_realestateagent', 'society_realestateagent', 'society_realestateagent', {type = 'private'}) end end) diff --git a/[esx_addons]/esx_taxijob/fxmanifest.lua b/[esx_addons]/esx_taxijob/fxmanifest.lua index 36fa1f0d..bc2408b8 100644 --- a/[esx_addons]/esx_taxijob/fxmanifest.lua +++ b/[esx_addons]/esx_taxijob/fxmanifest.lua @@ -22,4 +22,7 @@ server_scripts { 'server/main.lua' } -dependency 'es_extended' +dependencies { + 'es_extended', + 'esx_society' +} diff --git a/[esx_addons]/esx_taxijob/server/main.lua b/[esx_addons]/esx_taxijob/server/main.lua index 9bfdc4f9..e84561ad 100644 --- a/[esx_addons]/esx_taxijob/server/main.lua +++ b/[esx_addons]/esx_taxijob/server/main.lua @@ -5,9 +5,11 @@ if Config.MaxInService ~= -1 then end TriggerEvent('esx_phone:registerNumber', 'taxi', TranslateCap('taxi_client'), true, true) -TriggerEvent('esx_society:registerSociety', 'taxi', 'Taxi', 'society_taxi', 'society_taxi', 'society_taxi', { - type = 'public' -}) +CreateThread(function() + exports["esx_society"]:registerSociety('taxi', 'Taxi', 'society_taxi', 'society_taxi', 'society_taxi', { + type = 'public' + }) +end) RegisterNetEvent('esx_taxijob:success') AddEventHandler('esx_taxijob:success', function() diff --git a/[esx_addons]/esx_vehicleshop/server/main.lua b/[esx_addons]/esx_vehicleshop/server/main.lua index d07bbffc..a86f65cc 100644 --- a/[esx_addons]/esx_vehicleshop/server/main.lua +++ b/[esx_addons]/esx_vehicleshop/server/main.lua @@ -1,7 +1,9 @@ local categories, vehicles = {}, {} TriggerEvent('esx_phone:registerNumber', 'cardealer', TranslateCap('dealer_customers'), false, false) -TriggerEvent('esx_society:registerSociety', 'cardealer', TranslateCap('car_dealer'), 'society_cardealer', 'society_cardealer', 'society_cardealer', {type = 'private'}) +CreateThread(function() + exports["esx_society"]:registerSociety('cardealer', TranslateCap('car_dealer'), 'society_cardealer', 'society_cardealer', 'society_cardealer', {type = 'private'}) +end) CreateThread(function() local char = Config.PlateLetters From 77de399b999060587fb6e216aaadaed44bae1d3c Mon Sep 17 00:00:00 2001 From: Mycroft Date: Wed, 4 Jan 2023 19:58:43 +0000 Subject: [PATCH 21/29] fix: more race condition fixing --- [esx_addons]/esx_bankerjob/server/main.lua | 4 +++- [esx_addons]/esx_vehicleshop/fxmanifest.lua | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[esx_addons]/esx_bankerjob/server/main.lua b/[esx_addons]/esx_bankerjob/server/main.lua index 30bb523a..33dd831c 100644 --- a/[esx_addons]/esx_bankerjob/server/main.lua +++ b/[esx_addons]/esx_bankerjob/server/main.lua @@ -1,5 +1,7 @@ TriggerEvent('esx_phone:registerNumber', 'banker', _('phone_receive'), false, false) -TriggerEvent('esx_society:registerSociety', 'banker', TranslateCap('phone_label'), 'society_banker', 'society_banker', 'society_banker', {type = 'public'}) +CreateThread(function() + exports["esx_society"]:registerSociety('banker', TranslateCap('phone_label'), 'society_banker', 'society_banker', 'society_banker', {type = 'public'}) +end) RegisterServerEvent('esx_bankerjob:customerDeposit') AddEventHandler('esx_bankerjob:customerDeposit', function (target, amount) diff --git a/[esx_addons]/esx_vehicleshop/fxmanifest.lua b/[esx_addons]/esx_vehicleshop/fxmanifest.lua index dce7743a..f9f16497 100644 --- a/[esx_addons]/esx_vehicleshop/fxmanifest.lua +++ b/[esx_addons]/esx_vehicleshop/fxmanifest.lua @@ -26,6 +26,10 @@ client_scripts { 'client/main.lua' } -dependency 'es_extended' +dependencies { + 'es_extended', + 'esx_society' +} + export 'GeneratePlate' From 56992cd8bcc5bccc750d741d8093fdc950ac25e3 Mon Sep 17 00:00:00 2001 From: BeansFL <106496863+BeansFL@users.noreply.github.com> Date: Thu, 5 Jan 2023 02:57:03 +0100 Subject: [PATCH 22/29] Update de.lua --- [esx_addons]/esx_phone/locales/de.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/[esx_addons]/esx_phone/locales/de.lua b/[esx_addons]/esx_phone/locales/de.lua index 7adcb871..c5afe06d 100644 --- a/[esx_addons]/esx_phone/locales/de.lua +++ b/[esx_addons]/esx_phone/locales/de.lua @@ -2,12 +2,12 @@ Locales['de'] = { ['new_message'] = 'Neue Nachricht', ['press_take_call'] = '%s - Drücke [E] um den Anruf anzunehmen', ['taken_call'] = '%s hat den Anruf angenommen', - ['gps_position'] = 'ziel in GPS eingegeben', - ['message_sent'] = 'nachricht gesendet', - ['cannot_add_self'] = 'du kannst dich nicht selbst hinzufügen', - ['number_in_contacts'] = 'diese Nummer ist bereits in deinen Kontakten', - ['contact_added'] = 'kontakt hinzugefügt', - ['contact_removed'] = 'the contact has been removed!', - ['number_not_assigned'] = 'diese Nummer ist nicht vergeben...', - ['invalid_number'] = 'that\'s not an valid number!', + ['gps_position'] = 'Ziel im GPS eingegeben', + ['message_sent'] = 'Nachricht wurde versendet', + ['cannot_add_self'] = 'Du kannst dich nicht selbst hinzufügen', + ['number_in_contacts'] = 'Diese Nummer ist bereits in deinen Kontakten', + ['contact_added'] = 'Kontakt hinzugefügt', + ['contact_removed'] = 'Dieser Kontakt wurde entfernt!', + ['number_not_assigned'] = 'Diese Nummer ist nicht vergeben...', + ['invalid_number'] = 'Dies ist keine gültige Telefonnummer!', } From c4cc9843d5c10e909d7976d54d8a2e2ed0bcd983 Mon Sep 17 00:00:00 2001 From: BeansFL <106496863+BeansFL@users.noreply.github.com> Date: Thu, 5 Jan 2023 03:09:31 +0100 Subject: [PATCH 23/29] Update de.lua --- [esx_addons]/esx_policejob/locales/de.lua | 66 +++++++++++------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/[esx_addons]/esx_policejob/locales/de.lua b/[esx_addons]/esx_policejob/locales/de.lua index f105a044..2aebdc53 100644 --- a/[esx_addons]/esx_policejob/locales/de.lua +++ b/[esx_addons]/esx_policejob/locales/de.lua @@ -5,7 +5,7 @@ Locales['de'] = { ['police_wear'] = 'Arbeitskleidung', ['gilet_wear'] = 'orangefarbene reflektierende Jacke', ['bullet_wear'] = 'kugelsichere Weste', - ['no_outfit'] = 'Es gibt keine Uniform die dir passt.', + ['no_outfit'] = 'Es gibt keine, Uniform, die dir passt.', ['open_cloackroom'] = 'Drücke [E] um dich umzuziehen', -- Armory ['remove_object'] = 'Objekt nehmen', @@ -14,27 +14,27 @@ Locales['de'] = { ['put_weapon'] = 'Waffen bringen', ['buy_weapons'] = 'Waffen kaufen', ['armory'] = 'Waffenkammer', - ['open_armory'] = 'Drücke [E] um die Waffenkammer zu öffnen', - ['armory_owned'] = 'eigentum', + ['open_armory'] = 'Drücke [E], um die Waffenkammer zu öffnen', + ['armory_owned'] = 'Eigentum', ['armory_free'] = 'gratis', ['armory_item'] = '$%s', ['armory_weapontitle'] = 'Waffenkammer - Waffe kaufen', - ['armory_componenttitle'] = 'Waffenkammer - Waffen attatchments', + ['armory_componenttitle'] = 'Waffenkammer - Waffen Attachments', ['armory_bought'] = 'Du hast dir %s für $%s gekauft', ['armory_money'] = 'Du kannst dir die Waffe nicht leisten', - ['armory_hascomponent'] = 'Du hast das attchment bereits!', + ['armory_hascomponent'] = 'Du hast das Attachment bereits!', ['get_weapon_menu'] = 'Arsenal - Waffe auslagern', ['put_weapon_menu'] = 'Arsenal - Waffe einlagern', -- Vehicles ['vehicle_menu'] = 'Fahrzeug', ['vehicle_blocked'] = 'alle verfügbaren Spawnpunkte sind derzeit blockiert!', - ['garage_prompt'] = 'Drücke [E] um das Garagen Menü zu öffnen.', - ['garage_title'] = 'Fahrzeug aktionen', + ['garage_prompt'] = 'Drücke [E], um das Garagenmenü zu öffnen.', + ['garage_title'] = 'Fahrzeug Aktionen', ['garage_stored'] = 'eingelagert', ['garage_notstored'] = 'nicht in der Garage', ['garage_storing'] = 'Wir versuchen, das Fahrzeug zu entfernen, stelle sicher, dass sich keine Spieler in der Nähe des Fahrzeugs befinden.', ['garage_has_stored'] = 'das Fahrzeug wurde in deiner Garage abgestellt', - ['garage_has_notstored'] = 'Keine eigenen Fahrzeuge in der nähe gefunden', + ['garage_has_notstored'] = 'Keine eigenen Fahrzeuge in der Nähe gefunden', ['garage_notavailable'] = 'Dein Fahrzeug ist nicht in der Garage abgestellt.', ['garage_blocked'] = 'Es gibt keine verfügbaren Spawn-Punkte!', ['garage_empty'] = 'Du hast keine Fahrzeuge in der Garage.', @@ -62,7 +62,7 @@ Locales['de'] = { ['service_out'] = 'Du hast den Dienst verlassen.', ['service_out_announce'] = 'Operator %s hat seinen Dienst beendet.', -- Action Menu - ['citizen_interaction'] = 'Zivilistenaktionen', + ['citizen_interaction'] = 'Zivilinteraktionen', ['vehicle_interaction'] = 'Fahrzeuginteraktionen', ['object_spawner'] = 'Objekt Spawner', @@ -81,16 +81,16 @@ Locales['de'] = { ['no_players_nearby'] = 'keine Spieler in der Nähe', ['being_searched'] = 'Du wirst von der Polizei durchsucht', -- Vehicle interaction - ['vehicle_info'] = 'Fahrzeug Info', + ['vehicle_info'] = 'Fahrzeug Information', ['pick_lock'] = 'Fahrzeug öffnen', ['vehicle_unlocked'] = 'Fahrzeug offen', ['no_vehicles_nearby'] = 'Keine Fahrzeuge in der Nähe', - ['impound'] = 'beschlagnahmtes fahrzeug', + ['impound'] = 'beschlagnahmtes Fahrzeug', ['impound_prompt'] = 'Drücken Sie [E], um die Beschlagnahmung abzubrechen.', ['impound_canceled'] = 'Du hast die Beschlagnahmung abgebrochen', ['impound_canceled_moved'] = 'die Beschlagnahme wurde aufgehoben, weil das Fahrzeug bewegt wurde', ['impound_successful'] = 'Du hast das Fahrzeug beschlagnahmt', - ['search_database'] = 'Fahrzeug informationen', + ['search_database'] = 'Fahrzeug Informationen', ['search_database_title'] = 'Fahrzeuginformationen - Suche über das amtliche Kennzeichen', ['search_database_error_invalid'] = 'die keine gültige Registrierungsnummer ist', -- Traffic interaction @@ -101,51 +101,51 @@ Locales['de'] = { ['box'] = 'Box', ['cash'] = 'Box mit Geld', -- ID Card Menu - ['name'] = 'name: %s', - ['job'] = 'job: %s', - ['sex'] = 'geschlecht: %s', - ['dob'] = 'DOB: %s', - ['height'] = 'größe: %s', + ['name'] = 'Name: %s', + ['job'] = 'Job: %s', + ['sex'] = 'Geschlecht: %s', + ['dob'] = 'GEB.: %s', + ['height'] = 'Größe: %s', ['bac'] = 'BAC: %s', - ['unknown'] = 'unknown', + ['unknown'] = 'unbekannt', ['male'] = 'männlich', ['female'] = 'weiblich', -- Body Search Menu ['guns_label'] = '--- Waffen ---', ['inventory_label'] = '--- Inventar ---', ['license_label'] = ' --- Lizenzen ---', - ['confiscate'] = 'konfeszieren %s', + ['confiscate'] = 'konfiszieren %s', ['confiscate_weapon'] = 'konfisziere %s mit %s kugeln', ['confiscate_inv'] = 'konfisziere %sx %s', - ['confiscate_dirty'] = 'Schwarzgeld konfesziert: $%s', + ['confiscate_dirty'] = 'Schwarzgeld konfisziert: $%s', ['you_confiscated'] = 'Du konfiszierst %sx %s von %s', ['got_confiscated'] = '%sx %s wurde konfisziert von %s', ['you_confiscated_account'] = 'du konfiszierst $%s (%s) von %s', ['got_confiscated_account'] = '$%s (%s) wurde konfisziert von %s', ['you_confiscated_weapon'] = 'Du konfiszierst %s von %s mit %s kugeln', ['got_confiscated_weapon'] = 'Deine %s mit %s kugeln wurde konfisziert von %s', - ['traffic_offense'] = 'Verkehrs vergehen', - ['minor_offense'] = 'Geringes vergehen', - ['average_offense'] = 'Normales vergehen', - ['major_offense'] = 'Hohes vergehen', - ['fine_total'] = 'strafe: %s', + ['traffic_offense'] = 'Verkehrsvergehen', + ['minor_offense'] = 'Geringes Vergehen', + ['average_offense'] = 'Normales Vergehen', + ['major_offense'] = 'Hohes Vergehen', + ['fine_total'] = 'Strafe: %s', -- Vehicle Info Menu - ['plate'] = 'kennzeichen: %s', - ['owner_unknown'] = 'besitzer: Unbekannt', - ['owner'] = 'besitzer: %s', + ['plate'] = 'Kennzeichen: %s', + ['owner_unknown'] = 'Besitzer: Unbekannt', + ['owner'] = 'Besitzer: %s', -- Boss Menu - ['open_bossmenu'] = 'Drücke [E] um das Menü zu öffnen', + ['open_bossmenu'] = 'Drücke [E], um das Menü zu öffnen', ['quantity_invalid'] = 'ungültige Menge', ['have_withdrawn'] = 'Du hast abgehoben %sx %s', ['have_deposited'] = 'Sie haben eingezahlt %sx %s', - ['quantity'] = 'qualität', - ['inventory'] = 'inventar', + ['quantity'] = 'Qualität', + ['inventory'] = 'Inventar', ['police_stock'] = 'Polizeibestand', -- Misc - ['remove_prop'] = 'Drücke [E] um das Objekt zu entfernen', + ['remove_prop'] = 'Drücke [E], um das Objekt zu entfernen', ['map_blip'] = 'Polizeistation', ['unrestrained_timer'] = 'Du spürst, wie die Handschellen langsam ihren Halt verlieren und sich auflösen.', -- Notifications - ['alert_police'] = 'Polizei alamieren', + ['alert_police'] = 'Polizei alarmieren', ['phone_police'] = 'Polizei', } From 36d05607eb7748a824cd4793f81e8f5f4f6dba53 Mon Sep 17 00:00:00 2001 From: BeansFL <106496863+BeansFL@users.noreply.github.com> Date: Thu, 5 Jan 2023 03:26:47 +0100 Subject: [PATCH 24/29] Update de.lua --- [esx]/es_extended/locales/de.lua | 174 +++++++++++++++---------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/[esx]/es_extended/locales/de.lua b/[esx]/es_extended/locales/de.lua index 944c00ce..1401ce14 100644 --- a/[esx]/es_extended/locales/de.lua +++ b/[esx]/es_extended/locales/de.lua @@ -1,15 +1,15 @@ Locales['de'] = { -- Inventory - ['inventory'] = 'inventar %s / %s', + ['inventory'] = 'Inventar %s / %s', ['use'] = 'benutzen', ['give'] = 'geben', ['remove'] = 'entfernen', ['return'] = 'zurück', ['give_to'] = 'geben an', - ['amount'] = 'betrag', - ['giveammo'] = 'munition geben', - ['amountammo'] = 'anzahl der munition', - ['noammo'] = 'du hast keine munition!', + ['amount'] = 'Betrag', + ['giveammo'] = 'Munition geben', + ['amountammo'] = 'Anzahl der Munition', + ['noammo'] = 'du hast keine Munition!', ['gave_item'] = 'du gibst %sx %s an %s', ['received_item'] = 'du empfängst %sx %s von %s', ['gave_weapon'] = 'du gibst %s an %s', @@ -26,9 +26,9 @@ Locales['de'] = { ['received_account_money'] = 'du empfängst $%s (%s) von %s', ['amount_invalid'] = 'ungültiger Betrag', ['players_nearby'] = 'keine Spieler in der Nähe', - ['ex_inv_lim'] = 'aktion nicht möglich, Inventarlimit überschritten für %s', - ['imp_invalid_quantity'] = 'aktion nicht möglich, ungültige Anzahl', - ['imp_invalid_amount'] = 'aktion nicht möglich, ungültiger Betrag', + ['ex_inv_lim'] = 'Aktion nicht möglich, Inventarlimit überschritten für %s', + ['imp_invalid_quantity'] = 'Aktion nicht möglich, ungültige Anzahl', + ['imp_invalid_amount'] = 'Aktion nicht möglich, ungültiger Betrag', ['threw_standard'] = 'du wirfst %sx %s', ['threw_account'] = 'du wirfst $%s %s weg', ['threw_weapon'] = 'du wirfst %s weg', @@ -38,71 +38,71 @@ Locales['de'] = { ['threw_pickup_prompt'] = 'drücke E um aufzuheben', -- Key mapping - ['keymap_showinventory'] = 'inventar anzeigen', + ['keymap_showinventory'] = 'Inventar anzeigen', -- Salary related ['received_salary'] = 'du hast dein Gehalt erhalten: $%s', ['received_help'] = 'du hast deine Sozialhilfe erhalten: $%s', - ['company_nomoney'] = 'die Firma in der du angestellt bist, ist zu arm um dein Gehalt zu zahlen', + ['company_nomoney'] = 'die Firma in der du angestellt bist, ist zu arm um dir dein Gehalt zu zahlen', ['received_paycheck'] = 'erhaltener Gehaltsscheck', - ['bank'] = 'bank', - ['account_bank'] = 'bank', - ['account_black_money'] = 'schwarzgeld', - ['account_money'] = 'geld', + ['bank'] = 'Bank', + ['account_bank'] = 'Bank', + ['account_black_money'] = 'Schwarzgeld', + ['account_money'] = 'Geld', ['act_imp'] = 'Aktion nicht möglich', ['in_vehicle'] = 'du kannst keine Items in einem Fahrzeug weitergeben', -- Commands - ['command_car'] = 'fahrzeug spawnen', - ['command_car_car'] = 'fahrzeug spawn name oder hash', - ['command_cardel'] = 'fahrzeuge in der nähe löschen', - ['command_cardel_radius'] = 'optional, jedes fahrzeug innerhalb des angegebenen radius löschen', - ['command_clear'] = 'chat leeren', - ['command_clearall'] = 'chat leeren für alle spieler', - ['command_clearinventory'] = 'spieler inventar leeren', - ['command_clearloadout'] = 'spieler ausstattung löschen', - ['command_giveaccountmoney'] = 'gebe guthaben', - ['command_giveaccountmoney_account'] = 'gültiger account name', - ['command_giveaccountmoney_amount'] = 'anzahl zum hinzufügen', - ['command_giveaccountmoney_invalid'] = 'ungültiger account name', - ['command_giveitem'] = 'gebe ein item zu einem spieler', - ['command_giveitem_item'] = 'item name', - ['command_giveitem_count'] = 'item anzahl', - ['command_giveweapon'] = 'gebe waffe zu einem spieler', - ['command_giveweapon_weapon'] = 'waffen name', - ['command_giveweapon_ammo'] = 'munition anzahl', - ['command_giveweapon_hasalready'] = 'spieler hat bereits diese waffe', - ['command_giveweaponcomponent'] = 'gebe waffen component', - ['command_giveweaponcomponent_component'] = 'component name', - ['command_giveweaponcomponent_invalid'] = 'ungültiges waffen component', - ['command_giveweaponcomponent_hasalready'] = 'spieler hat bereits dieses waffen komponent', - ['command_giveweaponcomponent_missingweapon'] = 'spieler hat diese waffe nicht', - ['command_save'] = 'spieler in die datenbank sichern', - ['command_saveall'] = 'alle spieler in die datenbank sichern', - ['command_setaccountmoney'] = 'guthaben für den spieler setzen', - ['command_setaccountmoney_amount'] = 'guthaben zum setzen', - ['command_setcoords'] = 'teleportieren zu koordinaten', - ['command_setcoords_x'] = 'x axis', - ['command_setcoords_y'] = 'y axis', - ['command_setcoords_z'] = 'z axis', - ['command_setjob'] = 'job für einen spieler setzen', - ['command_setjob_job'] = 'job name', - ['command_setjob_grade'] = 'job rang', - ['command_setjob_invalid'] = 'der job, rang oder beides ist ungültig', - ['command_setgroup'] = 'setze spieler gruppe', - ['command_setgroup_group'] = 'gruppen name', - ['commanderror_argumentmismatch'] = 'argumentanzahl stimmt nicht überein (übergeben %s, gesucht %s)', + ['command_car'] = 'Fahrzeug spawnen', + ['command_car_car'] = 'Fahrzeug spawnname oder hash', + ['command_cardel'] = 'Fahrzeuge in der nähe löschen', + ['command_cardel_radius'] = 'Optional, jedes Fahrzeug innerhalb des angegebenen Radius löschen', + ['command_clear'] = 'Chat leeren', + ['command_clearall'] = 'Chat leeren für alle spieler', + ['command_clearinventory'] = 'Spielerinventar leeren', + ['command_clearloadout'] = 'Spielerausstattung löschen', + ['command_giveaccountmoney'] = 'Geld aufs Konto laden', + ['command_giveaccountmoney_account'] = 'gültiger Kontoname', + ['command_giveaccountmoney_amount'] = 'Anzahl zum hinzufügen', + ['command_giveaccountmoney_invalid'] = 'Ungültiger Kontoname', + ['command_giveitem'] = 'Item an Spieler geben', + ['command_giveitem_item'] = 'Itemname', + ['command_giveitem_count'] = 'item Anzahl', + ['command_giveweapon'] = 'Spieler eine Waffe geben', + ['command_giveweapon_weapon'] = 'Waffenname', + ['command_giveweapon_ammo'] = 'Munitionsanzahl', + ['command_giveweapon_hasalready'] = 'Spieler bereits im Besitz dieser Waffe', + ['command_giveweaponcomponent'] = 'Spieler Waffenaufsatz geben', + ['command_giveweaponcomponent_component'] = 'Waffenaufsatz Name', + ['command_giveweaponcomponent_invalid'] = 'ungültiger Waffenaufsatz', + ['command_giveweaponcomponent_hasalready'] = 'Spieler hat bereits diesen Waffenaufsatz', + ['command_giveweaponcomponent_missingweapon'] = 'Der Spieler besitzt diese Waffe nicht', + ['command_save'] = 'Spieler in der Datenbank sichern', + ['command_saveall'] = 'Sichern von allen Spielern auf der Datenbank', + ['command_setaccountmoney'] = 'Kontosumme des Spielers setzen', + ['command_setaccountmoney_amount'] = 'Summe', + ['command_setcoords'] = 'Zu den Koordinaten Teleportieren', + ['command_setcoords_x'] = 'x Position', + ['command_setcoords_y'] = 'y Position', + ['command_setcoords_z'] = 'z Position', + ['command_setjob'] = 'Dem Spieler einen Job setzen', + ['command_setjob_job'] = 'Name des Jobs', + ['command_setjob_grade'] = 'Rang des Jobs', + ['command_setjob_invalid'] = 'Der Rang oder der Job ist nicht gültigt.', + ['command_setgroup'] = 'Spielergruppe setzen', + ['command_setgroup_group'] = 'Gruppenname', + ['commanderror_argumentmismatch'] = 'Die Anzahl der Argumente stimmen nicht überein (übergeben %s, gesucht %s)', ['commanderror_argumentmismatch_number'] = 'argument #%s typ stimmt nicht überein (übergeben string, gewünscht zahl)', - ['commanderror_invaliditem'] = 'falscher item name', - ['commanderror_invalidweapon'] = 'ungültige waffe', - ['commanderror_console'] = 'der command kann nicht von der konsole ausgeführt werden', - ['commanderror_invalidcommand'] = '/%s ist kein verfügbarer command!', - ['commanderror_invalidplayerid'] = 'kein spieler ist online mit dieser id', - ['commandgeneric_playerid'] = 'spieler id', - ['command_giveammo_noweapon_found'] = '%s does not have that weapon', - ['command_giveammo_weapon'] = 'Weapon name', - ['command_giveammo_ammo'] = 'Ammo Quantity', + ['commanderror_invaliditem'] = 'falscher Itemname', + ['commanderror_invalidweapon'] = 'ungültige Waffe', + ['commanderror_console'] = 'Der Befehl kann nicht in der Konsole genutzt werden', + ['commanderror_invalidcommand'] = '/%s ist kein verfügbarer Befehl!', + ['commanderror_invalidplayerid'] = 'Kein Spieler mit dieser ID scheint online zu sein', + ['commandgeneric_playerid'] = 'Spieler ID', + ['command_giveammo_noweapon_found'] = '%s besitzt diese Waffe nicht', + ['command_giveammo_weapon'] = 'Waffenname', + ['command_giveammo_ammo'] = 'Munitionsanzahl', -- Locale settings ['locale_digit_grouping_symbol'] = ' ', @@ -187,34 +187,34 @@ Locales['de'] = { -- Weapon Components ['component_clip_default'] = 'standart Griff', ['component_clip_extended'] = 'erweiterter Griff', - ['component_clip_drum'] = 'trommelmagazin', - ['component_clip_box'] = 'kastenmagazin', - ['component_flashlight'] = 'taschenlampe', - ['component_scope'] = 'zielfernrohr', + ['component_clip_drum'] = 'Trommelmagazin', + ['component_clip_box'] = 'Kastenmagazin', + ['component_flashlight'] = 'Taschenlampe', + ['component_scope'] = 'Zielfernrohr', ['component_scope_advanced'] = 'erweitertes Zielfernrohr', - ['component_suppressor'] = 'schalldämpfer', - ['component_grip'] = 'griff', - ['component_luxary_finish'] = 'luxus Waffen Design', + ['component_suppressor'] = 'Schalldämpfer', + ['component_grip'] = 'Griff', + ['component_luxary_finish'] = 'luxus Waffendesign', -- Weapon Ammo - ['ammo_rounds'] = 'kugel(n)', - ['ammo_shells'] = 'schrotpatrone(n)', - ['ammo_charge'] = 'ladung', - ['ammo_petrol'] = 'liter Benzin', - ['ammo_firework'] = 'feuerwerksrakete(n)', - ['ammo_rockets'] = 'rakete(n)', - ['ammo_grenadelauncher'] = 'granate(n)', - ['ammo_grenade'] = 'granate(n)', - ['ammo_stickybomb'] = 'bombe(n)', - ['ammo_pipebomb'] = 'bombe(n)', - ['ammo_smokebomb'] = 'bombe(n)', - ['ammo_molotov'] = 'cocktail(s)', - ['ammo_proxmine'] = 'mine(n)', - ['ammo_bzgas'] = 'can(n)', - ['ammo_ball'] = 'ball', - ['ammo_snowball'] = 'schneebälle', - ['ammo_flare'] = 'signalfackel(n)', - ['ammo_flaregun'] = 'signalfackeln(munition)', + ['ammo_rounds'] = 'Kugel(n)', + ['ammo_shells'] = 'Schrotpatrone(n)', + ['ammo_charge'] = 'Ladung', + ['ammo_petrol'] = 'Benzinkanister', + ['ammo_firework'] = 'Feuerwerksrakete(n)', + ['ammo_rockets'] = 'Rakete(n)', + ['ammo_grenadelauncher'] = 'Granate(n)', + ['ammo_grenade'] = 'Granate(n)', + ['ammo_stickybomb'] = 'C4(s)', + ['ammo_pipebomb'] = 'Rohrbombe(n)', + ['ammo_smokebomb'] = 'Rauchgranate(n)', + ['ammo_molotov'] = 'Molotovcocktail(s)', + ['ammo_proxmine'] = 'Annäherungsmine(n)', + ['ammo_bzgas'] = 'Bzgas', + ['ammo_ball'] = 'Ball', + ['ammo_snowball'] = 'Schneebälle', + ['ammo_flare'] = 'Signalfackel(n)', + ['ammo_flaregun'] = 'Signalfackeln(munition)', -- Weapon Tints ['tint_default'] = 'standard', From 3ce03968db4b1f3557d7b100111ad6036482d31d Mon Sep 17 00:00:00 2001 From: Zinzin92 Date: Thu, 5 Jan 2023 12:16:02 +0100 Subject: [PATCH 25/29] Create fr.lua --- [esx_addons]/esx_property/locales/fr.lua | 218 +++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 [esx_addons]/esx_property/locales/fr.lua diff --git a/[esx_addons]/esx_property/locales/fr.lua b/[esx_addons]/esx_property/locales/fr.lua new file mode 100644 index 00000000..d2eee5e4 --- /dev/null +++ b/[esx_addons]/esx_property/locales/fr.lua @@ -0,0 +1,218 @@ +Locales[ fr ] = { + --- CCTV Strings ------ + + ["take_picture"] = "Prendre une photo", + ["rot_left_right"] = "Gauche/Droite", + ["rot_up_down"] = "Haut/Bas", + ["zoom"] = "Zoom avant/ arrière", + ["zoom_level"] = "Niveau de zoom : %s %%", + ["night_vision"] = "Basculer la vision nocturne", + ["clipboard"] = "Lien copié vers ~b~Cipboard", + ["picture_taken"] = "Photo prise !", + ["please_wait"] = "Veuillez patienter avant de prendre une autre ~b~photo", + ["exit"] = "Quitter", + + -- - Cordes de meubles ------ + + ["hauteur"] = "Hauteur", + ["tourner"] = "Rotation", + ["place"] = "Placer les meubles", + ["delete_furni"] = "Supprimer", + ["confirm_buy"] = "Voulez-vous acheter %s ?", + ["prix"] = "Prix : $%s", + ["yes"] = "Oui", + ["no"] = "Non", + ["action"] = "Vous %s ~b~%s~s~ !", + ["buyer_furni"] = "Vous avez ~g~acheté~s~ A ~b~%s~s~ !", + ["edited_furni"] = "Vous avez modifié ~b~%s~s~ !", + ["cant_buy"] = "Vous ~r~ne pouvez pas~s~ acheter ceci !", + ["cant_edit"] = "Vous ~r~ne pouvez pas~s~ modifier ceci !", + ["store_title"] = "Magasin - %s", + ["retour"] = "Retour", + ["edit_title"] = "Modification - %s", + ["move_title"] = "Déplacer", + ["delete_confirm"] = "Suppression de ~b~%s~s~ !", + ["delete_error"] = "Impossible de supprimer ~b~%s~s~ !", + ["Own_furni"] = "Meubles possédés", + ["menu_stores"] = "Magasins de meubles", + ["menu_stores_desc"] = "Acheter des meubles", + ["menu_reset"] = "Réinitialiser", + ["menu_reset_desc"] = "Efface tous les meubles", + ["menu_edit"] = "Modifier", + ["menu_edit_desc"] = "Déplacer et/ou supprimer des meubles", + ["furni_command"] = "meubles", + ["furni_command_desc"] = "(Propriété ESX) Ouvrir le menu des meubles", + ["furni_command_permission"] = "Vous ~r~ne pouvez pas~s~ accéder à ce menu !", + ["furni_reset_success"] = "Réinitialiser les meubles !", + ["furni_cannot_afford"] = "Vous ne pouvez pas vous permettre de faire ça !", + ["furni_reset_error"] = "Vous ~r~ne pouvez pas~s~ réinitialiser cette propriété !", + ["furni_management"] = "Gérer les meubles", + + -- ------- Chaînes de clés --------------- + + ["you_granted"] = "Vous avez reçu les clés de ~b~%s~s~.", + ["exists_has"] = "Ce joueur a déjà des clés !", + ["do_not_own"] = "Vous ne possédez ~r~pas~s~ cette propriété.", + ["key_revoked"] = "Votre clé d accès à ~b~%s~s~. A été ~r~révoqué~s~", + ["no_keys"] = "Ce joueur n a pas de clés !", + ["à proximité"] = "Joueurs à proximité", + ["gave_key"] = "Donner les clés à %s !", + ["key_cannot_give"] = "Vous ne pouvez pas donner une ~r~clé à ce joueur", + ["remove_title"] = "Supprimer les clés du lecteur", + ["key_revoke_success"] = "Révocation des clés de ~b~%s~s~.", + ["key_revoke_error"] = "Vous ne pouvez pas ~b~supprimer~s~ une ~r~clé~s~ de cette personne", + ["key_management"] = "Gestion des clés", + ["key_management_desc"] = "Contrôler l accès à la propriété.", + ["give_keys"] = "Donner des clés", + ["remove_keys"] = "Supprimer les clés", + + + -- ------- Chaînes immobilières --------------- + ["office_blip"] = "%s Bureau", + ["actions"] = "Actions immobilières", + ["property_create"] = "Créer une propriété", + ["property_manage"] = "Gérer les propriétés", + ["realestate_command"] = "realestatequickmenu", + ["realestate_command_desc"] = "(Propriété ESX) Ouvrir les actions rapides de l immobilier", + ["enter_office"] = "~b~Entrée~s~ Bureau.", + ["enter_office_error"] = "Vous ~r~ne pouvez pas~s~ entrer dans le bureau !", + ["exit_office"] = "~b~Sortie~s~ du bureau.", + ["exit_office_error"] = "Vous ~r~ne pouvez pas~s~ quitter le bureau !", + ["realestate_textui"] = "Appuyez sur ~b~[E]~s~ pour accéder à ~b~%s", + + -- ----------Chaînes de commande----------------------- + ["refresh_name"] = "propriété:refresh", + ["refresh_desc"] = "Actualiser à l état de démarrage du serveur", + ["save_name"] = "propriété:save", + ["save_desc"] = "Forcer l enregistrement des propriétés", + ["nom_création"] = "propriété:créer", + ["create_desc"] = "Créer une nouvelle propriété", + ["nom_admin"] = "propriété:admin", + ["admin_desc"] = "Gérer/afficher toutes les propriétés", + + + -- -------- Menu Actions propriété ------------------------- + + ["knocking"] = "Quelqu un ~b~frappe~s~ à la porte.", + ["name_edit"] = "Modifier le nom de la propriété", + ["nom"] = "Nom", + ["confirmer"] = "Confirmer", + ["name_edit_success"] = "Vous avez défini le nom de la propriété sur ~b~%s~s~.", + ["name_edit_error"] = "Vous ne pouvez pas définir le nom de la propriété sur ~r~%s~s~.", + ["door_locked"] = "Porte : verrouillée", + ["door_unlocked"] = "Porte : Déverrouillée", + ["name_manage"] = "Gérer le nom", + ["name_manage_desc"] = "Définir le nom de la propriété.", + ["sell_title"] = "Vendre", + ["sell_desc"] = "Vendre cette propriété pour $%s", + ["raid_title"] = "Raid", + ["raid_desc"] = "Forcer l entrée dans la propriété.", + ["titre_cctv"] = "CCTV", + ["cctv_desc"] = "Vérifiez la caméra CCTV.", + ["Inventory_title"] = "Inventaire", + ["Inventory_desc"] = "Modifier la position du stockage des propriétés.", + ["garde -robe_title"] = "Garde- robe", + ["armoire_desc"] = "Modifier la position de l armoire de propriété.", + ["meuble_titre"] = "Meuble", + ["furniture_desc"] = "Modifier la position des meubles de la propriété.", + ["enter_title"] = "Entrez", + ["knock_title"] = "Frappez à la porte", + ["buy_title"] = "Acheter", + ["buy_desc"] = "Acheter cette propriété pour $%s", + ["sellplayer_title"] = "Vendre au joueur", + ["sellplayer_desc"] = "Vendre cette propriété pour $%s", + ["view_title"] = "Aperçu de l intérieur", + ["exit_title"] = "Quitter", + ["property_editing_error"] = "Vous modifiez actuellement la propriété.", + ["unlock_error"] = "Vous ne pouvez pas ~b~déverrouiller~s~ cette propriété", + ["lock_error"] = "Vous ne pouvez pas ~b~verrouiller~s~ cette propriété", + ["prep_raid"] = "~b~Préparation~s~ Raid !", + ["raiding"] = "Raidage...", + ["cancel_raiding"] = "~r~Annulé~s~ Raid !", + ["cant_raid"] = "Vous ne pouvez pas ~b~Raid~s~ cette propriété.", + ["storage_pos_textui"] = "Appuyez sur ~b~[G]~s~ pour définir la position de stockage", + ["storage_pos_success"] = "~b~Stockage~s~ Position définie.", + ["storage_pos_error"] = "~r~Impossible~s~ de définir la position de ~b~stockage~s~.", + ["armoire_pos_textui"] = "Appuyez sur ~b~[G]~s~ pour définir la position de la garde -robe", + ["armoire_pos_success"] = "~b~Armoire~s~ Définir la position.", + ["armoire_pos_error"] = "~r~Impossible~s~ de définir la position de ~b~armoire~s~.", + ["please_finish"] = "Veuillez finir de définir la position ~b~%s~s~", + ["cant_afford"] = "Vous ne pouvez pas acheter cette propriété !", + ["select_player"] = "Sélectionner un joueur", + ["cant_sell"] = "Impossible de vendre à ce joueur !", + ["knock_on_door"] = "Frapper à la porte...", + ["nobody_home"] = "Il semble que personne n est à la maison...", + + -- -------- Chaînes générales ---------------- + + ["enabled"] = "Activé", + ["disabled"] = "Désactivé", + ["exiting"] = "Sortie de la propriété...", + ["entering"] = "Saisie de la propriété...", + ["shell_disabled"] ="Cet intérieur utilise des coques, qui sont désactivées !", + ["access_textui"] = "Appuyez sur ~b~[E]~s~ pour accéder à ~b~%s", + ["raid_notify_error"] = "Vous avez besoin de ~b~ %sx %s~s~ pour pouvoir effectuer un raid !", + ["raid_notify_success"] = "Votre propriété fait actuellement l objet d un ~b~raid !", + + -------------- Cordes de garage -------------- + + ["store_success"] = "Véhicule ~b~stocké !", + ["store_error"] = "Vous ne pouvez pas stocker ce véhicule !", + ["property_garage"] = "Propriété Garage", + ["retriving_notify"] = "Récupération de ~b~%s~s~ ...", + ["cant_access"] = "Vous ne pouvez pas accéder à ce garage !", + ["store_textui"] = "Appuyez sur ~b~[E]~s~ pour stocker ~b~%s", + ["garage_not_enabled"] = "Garage non activé sur cette propriété.", + ["cannot_access_property"] = "Vous ~r~ne pouvez pas~s~ accéder à cette propriété.", + + + -- --------------- Chaînes de menu de création ---------------- + + ["menu_title"] = "Création de propriété", + ["element_title1"] = "Numéro de rue", + ["element_description1"] = "Définissez le numéro de rue de la propriété.", + ["element_title2"] = "Prix", + ["element_description2"] = "Définir le prix de la propriété.", + ["element_title3"] = "Intérieur", + ["element_description3"] = "Sélectionnez un intérieur pour la propriété", + ["element_title4"] = "Garage", + ["element_description4"] = "(Facultatif) Gérer les paramètres du garage", + ["element_title5"] = "CCTV", + ["element_description5"] = "(Facultatif) Gérer les paramètres CCTV", + ["element_title6"] = "Entrée", + ["element_description6"] = "Définir l emplacement de l entrée de la propriété.", + ["element_create_title"] = "Créer une propriété", + ["element_create_desc_1"] = "Veuillez remplir toutes les entrées requises !", + ["entry_set_title"] = "Ensemble d entrée.", + ["entry_set_description"] = "Entrée : %s, %s, %s", + ["interior_set_title"] = "Intérieur sélectionné.", + ["interior_set_description"] = "Sélectionné : %s", + ["ipl_title"] = "Intérieurs IPL", + ["types_title"] = "Types intérieurs", + ["ipl_description"] = "Intérieurs GTA natifs, fabriqués par R*", + ["shell_title"] = "Intérieurs personnalisés", + ["shell_description"] = "Intérieurs personnalisés, faits par vous", + ["cctv_settings"] = "Paramètres CCTV", + ["garage_settings"] = "Paramètres du garage", + ["toggle_title"] = "Basculer l utilisation", + ["toggle_description"] = "État actuel : %s", + ["cctv_set_title"] = "Définir l angle CCTV", + ["cctv_set_description"] = "Règle l angle de la caméra sur la direction de vos caméras", + ["back_description"] = "retour à la création de la propriété.", + ["garage_set_title"] = "Définir la position du garage", + ["garage_set_description"] = "Définir la position du garage de la propriété.", + ["garage_textui"] = "Appuyez sur ~b~[E]~s~ pour définir la position", + ["cctv_textui_1"] = "Appuyez sur ~b~[E]~s~ pour régler l angle", + ["cctv_textui_2"] = "Appuyez sur ~b~[E]~s~ pour définir la rotation maximale à droite", + ["cctv_textui_3"] = "Appuyez sur ~b~[E]~s~ pour définir la rotation maximale à gauche", + ["create_success"] = "Propriété créée !", + ["missing_data"] = "Veuillez remplir toutes les entrées requises !", + + -- Enregistrement des traductions + ["server_restart"] = "Redémarrage du serveur", + ["server_shutdown"] = "Arrêt du serveur", + ["manual_save"] = "Enregistrement manuel (demandé par %s)", + ["resource_stop"] = "Arrêt de la ressource", + ["force_save"] = "Forcer l enregistrement (demandé par %s)", + ["interval_saving"] = "Enregistrement d intervalle" + } From ba4820c0a294458a73e50cefef8ebce6808620ac Mon Sep 17 00:00:00 2001 From: Zan <62830223+Zan1456@users.noreply.github.com> Date: Fri, 6 Jan 2023 11:42:08 +0100 Subject: [PATCH 26/29] Update hu.lua --- [esx_addons]/esx_ambulancejob/locales/hu.lua | 68 ++++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/[esx_addons]/esx_ambulancejob/locales/hu.lua b/[esx_addons]/esx_ambulancejob/locales/hu.lua index 0c1a057d..b0996bf6 100644 --- a/[esx_addons]/esx_ambulancejob/locales/hu.lua +++ b/[esx_addons]/esx_ambulancejob/locales/hu.lua @@ -5,54 +5,54 @@ Locales['hu'] = { ['ems_clothes_ems'] = 'Munkaruha', -- Vehicles ['ambulance'] = 'Mentőautó', - ['helicopter_prompt'] = ' [Információ]:omd meg az [E] gombot a helikopter listához.', - ['garage_prompt'] = ' [Információ]:omd meg az [E] gombot a kocsi listához.', + ['helicopter_prompt'] = 'Nyomd meg az [E] gombot a helikopter listához.', + ['garage_prompt'] = 'Nyomd meg az [E] gombot a kocsi listához.', ['garage_title'] = 'Autó funkciók', ['garage_stored'] = 'Garázsba', ['garage_notstored'] = 'Ismeretlen helyen', ['garage_storing'] = 'Próbáljuk betteni a kocsid a garázsodba, de előtte nézz körül, hogy biztos nincs melletted senki', - ['garage_has_stored'] = ' [Információ]:keresen tároltad a garázsba!', - ['garage_has_notstored'] = ' máció]:ncs a közeledben semmi!', - ['garage_notavailable'] = ' máció]:m tárolhatod a garázsba!', - ['garage_blocked'] = ' máció]:lami gátolja a kocsi lehívását!', - ['garage_empty'] = ' máció]:m teheted a garázsba!', - ['garage_released'] = ' [Információ]:keresen kivetted!', - ['garage_store_nearby'] = ' máció]:ncs a közeledben semmi!', + ['garage_has_stored'] = ' Sikeresen tároltad a garázsba!', + ['garage_has_notstored'] = 'Nincs a közeledben semmi!', + ['garage_notavailable'] = 'Nemm tárolhatod a garázsba!', + ['garage_blocked'] = 'Valami gátolja a kocsi lehívását!', + ['garage_empty'] = 'Nem teheted a garázsba!', + ['garage_released'] = 'Sikeresen kivetted!', + ['garage_store_nearby'] = 'Nincs a közeledben semmi!', ['garage_storeditem'] = 'Garázs megnyitása', ['garage_storeitem'] = 'Kocsi berakása a garázsba', ['garage_buyitem'] = 'Kocsi igénylés', ['shop_item'] = '$%s', ['vehicleshop_title'] = 'Autókereskedés', ['vehicleshop_confirm'] = 'Megszeretnéd venni ezt a járművet?', - ['vehicleshop_bought'] = ' [Információ]:keresen igényeltél egy %s enért: ', - ['vehicleshop_money'] = ' máció]:t most nem tudod megtenni!', + ['vehicleshop_bought'] = 'Sikeresen igényeltél egy %s ennyiért: ', + ['vehicleshop_money'] = 'Ezt most nem tudod megtenni!', ['vehicleshop_awaiting_model'] = 'Betöltés..', ['confirm_no'] = 'Vissza', ['confirm_yes'] = 'Igényel', -- Action Menu - ['revive_inprogress'] = ' [Információ]:kezdted az újraélesztést!', - ['revive_complete'] = ' [Információ]:raélesztetted: %s', - ['revive_complete_award'] = ' [Információ]:raélesztetted: %s jáost.', + ['revive_inprogress'] = 'Elkezdted az újraélesztést!', + ['revive_complete'] = 'Újraélesztetted: %s', + ['revive_complete_award'] = 'Újraélesztetted: %s játékost.', ['revive_fail_offline'] = 'A játékos nem elérhető', - ['heal_inprogress'] = ' [Információ]:kezdted a gyógyítást!', - ['heal_complete'] = ' [Információ]:ggyógyítottad: %s jáost.', - ['no_players'] = ' máció]:ncs a közeledben senki!', - ['player_not_unconscious'] = ' [Információ]:játékos nincs öntudatánál!', - ['player_not_conscious'] = ' [Információ]:játékos nincs öntudatánál!', + ['heal_inprogress'] = 'Elkezdted a gyógyítást!', + ['heal_complete'] = 'Meggyógyítottad: %s játékost.', + ['no_players'] = 'Nincs a közeledben senki!', + ['player_not_unconscious'] = 'A játékos nincs öntudatánál!', + ['player_not_conscious'] = 'A játékos nincs öntudatánál!', -- Boss Menu ['boss_actions'] = 'Leader panel', -- Misc - ['invalid_amount'] = ' telen mennyiség', - ['actions_prompt'] = ' [Információ]:omd meg az [E] gombot a panel megnyitásához.', + ['invalid_amount'] = 'Érvénytelen mennyiség', + ['actions_prompt'] = 'Nyomd meg az [E] gombot a panel megnyitásához.', ['deposit_amount'] = 'Összeg betétele', ['money_withdraw'] = 'Összeg kivétele', ['fast_travel'] = 'Nyomj [E] hogy használd a liftet', - ['open_pharmacy'] = ' [Információ]:omd meg az [E] gombot a gyógyszer kivételéhez.', + ['open_pharmacy'] = 'Nyomd meg az [E] gombot a gyógyszer kivételéhez.', ['pharmacy_menu_title'] = 'Kellékek', ['pharmacy_take'] = 'Kivétel: %s', ['medikit'] = 'Elsősegély készlet', ['bandage'] = 'Kötszer', - ['max_item'] = ' máció]:m fér már el nálad!', + ['max_item'] = 'Nem fér már el nálad!', -- F6 Menu ['ems_menu'] = 'EMS menü', ['ems_menu_title'] = 'EMS Menu', @@ -65,20 +65,20 @@ Locales['hu'] = { ['alert_ambulance'] = 'EMS értesités', -- Death ['respawn_available_in'] = 'Újraéledés: %s', - ['respawn_bleedout_in'] = 'Elfogsz vérezni %s perc %s másodperclva...\n', - ['respawn_bleedout_prompt'] = 'Nyomd meg az [E]mbot az újraéledéshez', + ['respawn_bleedout_in'] = 'Elfogsz vérezni %s perc %s másodperc múlva...\n', + ['respawn_bleedout_prompt'] = 'Nyomd meg az [E] gombot az újraéledéshez', ['respawn_bleedout_fine'] = 'Újraéledéshez: [E]', - ['respawn_bleedout_fine_msg'] = '[Információ]:Ennyit fizettél, hogy újraéledj', - ['distress_send'] = 'Nyomd meg a gombot a segítségkéréshez', - ['distress_sent'] = ' [Információ]:y civil értesítette az illetékes szervezetet!', + ['respawn_bleedout_fine_msg'] = 'Ennyit fizettél, hogy újraéledj', + ['distress_send'] = 'Nyomd meg a G gombot a segítségkéréshez', + ['distress_sent'] = 'Egy civil értesítette az illetékes szervezetet!', -- Revive - ['revive_help'] = 'újraéleszteni egy játékos', + ['revive_help'] = 'újraéleszteni egy játékost', -- Item - ['used_medikit'] = ' [Információ]:használtál 1x segélytáskát.', - ['used_bandage'] = ' [Információ]:használtál 1x kötszert.', - ['not_enough_medikit'] = '[Információ]:ncs nálad: Defibrillátor.', - ['not_enough_bandage'] = '[Információ]:ncs nálad: Kötszer.', - ['healed'] = ' [Információ]:ggyógyítottak!', + ['used_medikit'] = 'Elhasználtál 1x segélytáskát.', + ['used_bandage'] = 'Elhasználtál 1x kötszert.', + ['not_enough_medikit'] = 'Nincs nálad: Defibrillátor.', + ['not_enough_bandage'] = 'Nincs nálad: Kötszer.', + ['healed'] = 'Meggyógyítottak!', -- Blips ['blip_hospital'] = 'Korház', ['blip_dead'] = 'Eszméletlen játékos', From de666f1b922937e563db11353d7fa16100ffc0de Mon Sep 17 00:00:00 2001 From: Zan <62830223+Zan1456@users.noreply.github.com> Date: Fri, 6 Jan 2023 11:46:02 +0100 Subject: [PATCH 27/29] Create questions_hu.js --- .../esx_dmvschool/html/questions_hu.js | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 [esx_addons]/esx_dmvschool/html/questions_hu.js diff --git a/[esx_addons]/esx_dmvschool/html/questions_hu.js b/[esx_addons]/esx_dmvschool/html/questions_hu.js new file mode 100644 index 00000000..bb6f44ec --- /dev/null +++ b/[esx_addons]/esx_dmvschool/html/questions_hu.js @@ -0,0 +1,81 @@ +var tableauQuestion = [ + { + question: "Mit jelent a közlekedésben a bizalmi elv?", + propositionA: "Számíthat arra, hogy a KRESZ minden helyzetben és helyen szabályozza a közlekedésben résztvevők jogait és kötelességeit.", + propositionB: "Számíthat arra, hogy a közlekedési szabályokat mások is megtartják.", + propositionC: "Számíthat arra, hogy a szabálysértők mindig megkapják a megérdemelt büntetésüket.", + reponse: "B" + }, + + { + question: "Haladhat-e a villamospályán, ha az út vonalvezetése vagy a látási viszonyok akadályozzák a villamos kellő távolságból való észlelését?", + propositionA: "Igen", + propositionB: "Nem", + propositionC: "Nem tudom", + reponse: "B" + }, + + { + question: "Balra kíván bekanyarodni. Általában hová kell besorolni kétirányú forgalmú úton?", + propositionA: "Az úttest felezővonala mellé.", + propositionB: "Az úttest bal szélére.", + propositionC: "Az úttest jobb szélére.", + reponse: "B" + }, + + { + question: "Lakott területen kívül elsöbbséget kell adnia az autóbuszöblöt elhagyó autóbusz részére?", + propositionA: "Igen", + propositionB: "Nem", + propositionC: "Ha féktávon kivül vagyok, akkor nem", + reponse: "B" + }, + + { + question: "Miként befolyásolja a vezetõ reakcióidejét az alkohol és a fáradtság hatása?", + propositionA: "A reakcióideje többszörösére növekedhet.", + propositionB: "A reakcióideje kismértékben csökken.", + propositionC: "A reakcióideje csak kismértékben növekszik.", + reponse: "A" + }, + + { + question: "Mikor szabad hirtelen fékezni?", + propositionA: "Csak akkor, ha ezt a személy- és vagyonbiztonság megóvása szükségessé teszi.", + propositionB: "Csak akkor, ha Ön mögött haladó jármû helyes követési távolságot tart.", + propositionC: "Csak akkor, ha a jármü gumija nem kopik el fékezés közben.", + reponse: "A" + }, + + { + question: "Hogyan változik a látása a sebesség növekedésével?", + propositionA: "Nagy sebességgel haladva csak a közeli tárgyakat látja élesen; távolra csak homályosan lát.", + propositionB: "Nagy sebességgel haladva csak a távoli tárgyak képe éles; a közeli tárgyak képe elmosódik.", + propositionC: "Nagy sebességgel haladva, olyan mintha belennék állva.", + reponse: "A" + }, + + { + question: "A megkülönböztetõ jelzéseket használó gépjármû részére", + propositionA: "Minden helyzetben elsõbbséget kell adnia.", + propositionB: "Csak akkor kell elsõbbséget adnia, ha azzal más közlekedõt nem akadályoz jelentõsen.", + propositionC: "Csak akkor ha rámdudál.", + reponse: "A" + }, + + { + question: "Az előzés megkezdése előtt miként ellenőrízzük a mögöttes forgalmat?", + propositionA: "Oldalra-hátranézve.", + propositionB: "A belső, valamint a külső visszapillantó tükrök segítségével, és ha szükséges, akkor hátratekintéssel is.", + propositionC: "A külső visszapillantó tükör segítségével.", + reponse: "B" + }, + + { + question: "Be kell-e sorolni a járművel az úttest jobb szélén lévő autóbusz forgalmi sávba jobbra kanyarodáskor?", + propositionA: "Igen", + propositionB: "Nem", + propositionC: "Néha", + reponse: "B" + }, +] From e9e761b0651414851cfa8ade44a4408d4f3f2587 Mon Sep 17 00:00:00 2001 From: Zan <62830223+Zan1456@users.noreply.github.com> Date: Fri, 6 Jan 2023 11:46:26 +0100 Subject: [PATCH 28/29] Create ui_hu.html --- [esx_addons]/esx_dmvschool/html/ui_hu.html | 118 +++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 [esx_addons]/esx_dmvschool/html/ui_hu.html diff --git a/[esx_addons]/esx_dmvschool/html/ui_hu.html b/[esx_addons]/esx_dmvschool/html/ui_hu.html new file mode 100644 index 00000000..fffdf27a --- /dev/null +++ b/[esx_addons]/esx_dmvschool/html/ui_hu.html @@ -0,0 +1,118 @@ + + + + + + +

+
+ +
+

Autós Iskola

+
+ +
+
+ +
+ +
+

Üdvözöljük a Los Santos Autosiskolánál! +

+
+
Los Santos összes polgárának meg kell csinálni a KRESZ vizsgát a forgalmi vizsa elött +
A válaszoknál ne kapkodjon, használja ki a teljes idöt, gondolkodjon jozan ésszel. +
+
+
+ KRESZ Vizsga +
- A KRESZ vizsga 1.000$-ba kerül, ami nem visszatéritendö! +
- Az autosiskola elfogadja a bankkártyás fizetést is de vigyázz, ne kerülj adosságba! +
- Ha nem sikerülne a teszt, ne aggodjon, ismét megprobálhatja! +
+
Forgalmi Vizsga +
- A Forgalmi vizsga 1.500$-ba kerül, ami szintén nem visszatéritendö összeg! +
- A Forgalmi vizsgánál figyelj oda, hogy ne okozz balesetet! +

+ +
+
+ Kezdés +
+ +
+ +
+
+

+

+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+

Folyamat

+ +
+
+ +
+
+
+

Sikeres KRESZ Vizsga!

+
+
Gratulálok a sikeres KRESZ vizsgához! +
+
Most már elkezdheted a vezetést! +
+
+
+ Bezár +
+ +
+
+
+
+

Sajnos nem sikerült a vizsga!

+
+
Sajnálattal közlöm, de nem sikerült a KRESZ vizsga, kérlek probáld ujra késöbb... +
+
+
+
+
+ Bezár +
+ +
+
+
+ + + + + + + From 1abd1fb5b451fd8239adba584414329ccc761ff2 Mon Sep 17 00:00:00 2001 From: Kuuzoo <81863846+Kuuzoo@users.noreply.github.com> Date: Fri, 6 Jan 2023 23:01:10 +0100 Subject: [PATCH 29/29] Only show Default Inventory if Config enabled. On Itme Remove/Add the Default Inventory will now only show if enabled in the es_extended Config! --- [esx]/es_extended/client/main.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/[esx]/es_extended/client/main.lua b/[esx]/es_extended/client/main.lua index a10df217..1ce5d165 100644 --- a/[esx]/es_extended/client/main.lua +++ b/[esx]/es_extended/client/main.lua @@ -250,7 +250,9 @@ if not Config.OxInventory then ESX.UI.ShowInventoryItemNotification(true, item, count) end - ESX.ShowInventory() + if Config.EnableDefaultInventory then + ESX.ShowInventory() + end end) RegisterNetEvent('esx:removeInventoryItem') @@ -267,7 +269,9 @@ if not Config.OxInventory then ESX.UI.ShowInventoryItemNotification(false, item, count) end - ESX.ShowInventory() + if Config.EnableDefaultInventory then + ESX.ShowInventory() + end end) RegisterNetEvent('esx:addWeapon')