structura foldere

mutat kq- folders in un singur folder [kq]
This commit is contained in:
2026-03-30 01:55:03 +03:00
parent af1286d583
commit c291b81f26
2319 changed files with 0 additions and 14 deletions
@@ -0,0 +1,243 @@
if Config.Menu ~= 'esx_context' then
return
end
function OpenManagementMenu()
local Elements = {
{
unselectable = true,
title = 'Management',
},
{
title = 'Give Key',
name = 'givekey',
},
{
title = 'Key Holders',
name = 'keyholders',
},
{
title = 'Sell Garage',
name = 'sell',
},
}
ESX.OpenContext('right', Elements,
function(menu, element)
if element.name == 'givekey' then
TriggerEvent('advancedgarages:openGiveKeyMenu')
ESX.CloseContext()
end
if element.name == 'keyholders' then
TriggerEvent('advancedgarages:openKeyHoldersMenu')
ESX.CloseContext()
end
if element.name == 'sell' then
TriggerEvent('advancedgarages:sellGarage')
ESX.CloseContext()
end
end, function(menu)
ESX.CloseContext()
end)
end
function openGiveKeyMenu(vehicleList)
local Elements = {}
table.insert(Elements, {
unselectable = true,
title = 'Give Key',
})
for k, v in pairs(vehicleList) do
table.insert(Elements, {
title = 'Player: ' .. v.name.firstName .. ' ' .. v.name.lastName,
name = 'givekey',
data = {
id = v.id,
garage = ClosestGarage
}
})
end
ESX.OpenContext('right', Elements, function(menu, element)
if element.name == 'givekey' then
local selectedData = element.data
local data = {
id = selectedData.id,
garage = selectedData.garage
}
TriggerServerEvent('advancedgarages:giveKey', data)
ESX.CloseContext()
end
end,
function(menu)
ESX.CloseContext()
end)
end
function openTakeKeyMenu()
local Elements = {}
local holders = lib.callback.await('advancedgarages:getGarageKeyHolders', false, ClosestGarage)
if not holders or #holders == 0 then
Notification(i18n.t('keyholders.empty_list'), 'info')
return
end
table.insert(Elements, {
unselectable = true,
title = 'Take Key',
})
for k, v in pairs(holders) do
table.insert(Elements, {
title = 'Player: ' .. v.firstname .. ' ' .. v.lastname,
name = 'keyholders',
data = {
id = v.identifier,
garage = ClosestGarage
}
})
end
ESX.OpenContext('right', Elements, function(menu, element)
if element.name == 'keyholders' then
local selectedData = element.data
local data = {
id = selectedData.id,
garage = selectedData.garage
}
TriggerServerEvent('advancedgarages:takeKey', data)
ESX.CloseContext()
end
end,
function(menu)
ESX.CloseContext()
end)
end
function HandleKeyboard(callback)
local Elements = {
{
title = 'Set a Price',
input = true,
inputType = 'number',
inputValue = 1,
inputPlaceholder = 'Garage Price...',
name = 'price',
},
{
title = 'Continue',
name = 'next',
},
}
ESX.OpenContext('right', Elements, function(menu, element)
local amount = menu.eles[1].inputValue
if amount == 0 or amount == nil then return end
if element.name == 'next' then
ESX.CloseContext()
callback(amount)
end
end, function(menu)
ESX.CloseContext()
end)
end
function HandleGarageJob()
local promise = promise.new()
local Elements = {
{
title = 'Job Name (you can leave it blank for everyone)',
input = true,
inputType = 'text',
inputValue = '',
inputPlaceholder = 'Job Name...',
name = 'Job Name',
},
{
title = 'Continue',
name = 'next',
},
}
ESX.OpenContext('right', Elements, function(menu, element)
local jobName = menu.eles[1].inputValue
if jobName == nil then
return promise:resolve(false)
end
if element.name == 'next' then
ESX.CloseContext()
promise:resolve(jobName)
end
end, function(menu)
ESX.CloseContext()
end)
return Citizen.Await(promise)
end
function OpenRecoveryMenu(vehicleList)
local Elements = {}
table.insert(Elements, {
unselectable = true,
title = 'Recovery Vehicle (OUT)',
})
for k, v in pairs(vehicleList) do
table.insert(Elements, {
title = v.plate,
plate = v.plate,
type = v.type,
name = 'recovery',
data = {
plate = v.plate,
type = v.type
}
})
end
ESX.OpenContext('right', Elements, function(menu, element)
if element.name == 'recovery' then
local selectedData = element.data
TriggerServerEvent('advancedgarages:RecoveryVehicle', selectedData)
ESX.CloseContext()
end
end,
function(menu)
ESX.CloseContext()
end)
end
function OpenDeleteJobVehicleMenu(garage, job)
local Elements = {}
local vehicles = lib.callback.await('advancedgarages:getJobVehicles', false, garage, job)
if not vehicles or #vehicles == 0 then
Notification(i18n.t('keyholders.empty_out'), 'info')
return
end
table.insert(Elements, {
unselectable = true,
title = 'Delete work vehicles',
})
for k, v in pairs(vehicles) do
table.insert(Elements, {
title = v.plate,
name = 'next',
data = {
plate = v.plate,
garage = garage
}
})
end
ESX.OpenContext('right', Elements, function(menu, element)
if element.name == 'next' then
local selectedData = element.data
TriggerServerEvent('advancedgarages:deleteJobVehicle', selectedData)
ESX.CloseContext()
end
end, function(menu)
ESX.CloseContext()
end)
end
@@ -0,0 +1,203 @@
if Config.Menu ~= 'esx_menu_default' then
return
end
function OpenManagementMenu()
local elementsList = {}
table.insert(elementsList, { label = 'Give Key', value = 'givekey' })
table.insert(elementsList, { label = 'Key Holders', value = 'keyholders' })
table.insert(elementsList, { label = 'Sell Garage', value = 'sell' })
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'management', {
title = 'Management',
align = 'right',
elements = elementsList
}, function(data, menu)
if data.current.value == 'givekey' then
menu.close()
TriggerEvent('advancedgarages:openGiveKeyMenu')
end
if data.current.value == 'keyholders' then
menu.close()
TriggerEvent('advancedgarages:openKeyHoldersMenu')
end
if data.current.value == 'sell' then
menu.close()
TriggerEvent('advancedgarages:sellGarage')
end
end, function(data, menu)
menu.close()
end)
end
function openGiveKeyMenu(players)
local elementsList = {}
for k, v in pairs(players) do
table.insert(elementsList, {
label = 'Player: ' .. v.name.firstName .. ' ' .. v.name.lastName,
value = {
id = v.id,
garage = ClosestGarage
}
})
end
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'givekey', {
title = 'Give Key',
align = 'right',
elements = elementsList
}, function(data, menu)
if data.current.value then
menu.close()
local selectedData = data.current.value
local data = {
id = selectedData.id,
garage = selectedData.garage
}
TriggerServerEvent('advancedgarages:giveKey', data)
end
end, function(data, menu)
menu.close()
end)
end
function openTakeKeyMenu()
local elementsList = {}
local holders = lib.callback.await('advancedgarages:getGarageKeyHolders', false, ClosestGarage)
if not holders or #holders == 0 then
Notification(i18n.t('keyholders.empty_list'), 'info')
return
end
for k, v in pairs(holders) do
table.insert(elementsList, {
label = 'Player: ' .. v.firstname .. ' ' .. v.lastname,
value = {
id = v.identifier,
garage = ClosestGarage
}
})
end
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'keyholders', {
title = 'Recovery',
align = 'right',
elements = elementsList
}, function(data, menu)
if data.current.value then
menu.close()
local selectedData = data.current.value
local data = {
id = selectedData.id,
garage = selectedData.garage
}
TriggerServerEvent('advancedgarages:takeKey', data)
end
end, function(data, menu)
menu.close()
end)
end
function HandleKeyboard(callback)
ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'price',
{
title = ('Set a price')
},
function(data, menu)
local amount = tonumber(data.value)
if amount == nil then
Notification('Invalid Amount', 'error')
else
menu.close()
callback(amount)
end
end,
function(data, menu)
menu.close()
end)
end
function HandleGarageJob()
local promise = promise.new()
ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'job',
{
title = ('Job Name (you can leave it blank for everyone)')
},
function(data, menu)
local jobName = data.value
if jobName == nil then
menu.close()
return promise:resolve(false)
end
promise:resolve(jobName)
menu.close()
end,
function(data, menu)
menu.close()
end)
return Citizen.Await(promise)
end
function OpenRecoveryMenu(vehicleList)
local elementsList = {}
for k, v in pairs(vehicleList) do
table.insert(elementsList, {
label = v.plate,
type = v.type,
value = {
plate = v.plate,
type = v.type
}
})
end
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'recovery', {
title = 'Recovery Vehicle (OUT)',
align = 'right',
elements = elementsList
}, function(data, menu)
if data.current.value then
menu.close()
local selectedData = data.current.value
TriggerServerEvent('advancedgarages:RecoveryVehicle', selectedData)
end
end, function(data, menu)
menu.close()
end)
end
function OpenDeleteJobVehicleMenu(garage, job)
local elementsList = {}
local vehicles = lib.callback.await('advancedgarages:getJobVehicles', false, garage, job)
if not vehicles or #vehicles == 0 then
Notification(i18n.t('keyholders.empty_out'), 'info')
return
end
for k, v in pairs(vehicles) do
table.insert(elementsList, {
label = v.plate,
value = {
plate = v.plate,
garage = garage
}
})
end
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'deletejob', {
title = 'Delete work vehicles',
align = 'right',
elements = elementsList
}, function(data, menu)
local selectedData = data.current.value
if selectedData then
TriggerServerEvent('advancedgarages:deleteJobVehicle', selectedData)
menu.close()
end
end, function(data, menu)
menu.close()
end)
end
@@ -0,0 +1,145 @@
if Config.Menu ~= 'nh-context' then
return
end
function OpenManagementMenu()
TriggerEvent('nh-context:createMenu', {
{
header = 'Management',
},
{
header = 'Give Key',
event = 'advancedgarages:openGiveKeyMenu',
},
{
header = 'Key Holders',
event = 'advancedgarages:openKeyHoldersMenu',
},
{
header = 'Sell Garage',
event = 'advancedgarages:sellGarage',
}
})
end
function openGiveKeyMenu(players)
local Elements = {
{
header = 'Give Key',
}
}
for k, v in pairs(players) do
local data = {
id = v.id,
garage = ClosestGarage
}
table.insert(Elements, {
header = 'Give Key',
context = 'Player: ' .. v.name.firstName .. ' ' .. v.name.lastName,
event = 'advancedgarages:giveKey',
server = true,
args = {
data
}
})
end
TriggerEvent('nh-context:createMenu', Elements)
end
function openTakeKeyMenu()
local Elements = {
{
header = 'Take Key',
}
}
local holders = lib.callback.await('advancedgarages:getGarageKeyHolders', false, ClosestGarage)
if not holders or #holders == 0 then
Notification(i18n.t('keyholders.empty_list'), 'info')
return
end
for k, v in pairs(holders) do
local data = {
id = v.identifier,
garage = ClosestGarage
}
table.insert(Elements, {
header = 'Take Key',
context = 'Player: ' .. v.firstname .. ' ' .. v.lastname,
event = 'advancedgarages:takeKey',
server = true,
args = {
data
}
})
end
TriggerEvent('nh-context:createMenu', Elements)
end
function HandleKeyboard(callback)
local keyboard, value = exports['nh-keyboard']:Keyboard({
header = 'Set a Price',
rows = { 'Price' }
})
if keyboard then
callback(value)
end
end
function HandleGarageJob()
local keyboard, value = exports['nh-keyboard']:Keyboard({
header = 'Job Name (you can leave it blank for everyone)',
rows = { 'Job Name' }
})
if keyboard then
return value
end
end
function OpenRecoveryMenu(vehicleList)
local menu = {}
table.insert(menu, {
header = 'Recovery Vehicle (OUT)'
})
for k, v in pairs(vehicleList) do
table.insert(menu, {
header = v.plate,
event = 'advancedgarages:RecoveryVehicle',
server = true,
args = {
v
}
})
end
TriggerEvent('nh-context:createMenu', menu)
end
function OpenDeleteJobVehicleMenu(garage, job)
local menu = {}
local vehicles = lib.callback.await('advancedgarages:getJobVehicles', false, garage, job)
if not vehicles or #vehicles == 0 then
Notification(i18n.t('keyholders.empty_out'), 'info')
return
end
table.insert(menu, {
header = 'Delete work vehicles'
})
for k, v in pairs(vehicles) do
local data = {
plate = v.plate,
garage = garage
}
table.insert(menu, {
header = v.plate,
event = 'advancedgarages:deleteJobVehicle',
server = true,
args = {
data
}
})
end
TriggerEvent('nh-context:createMenu', menu)
end
@@ -0,0 +1,152 @@
if Config.Menu ~= 'ox_lib' then
return
end
function OpenManagementMenu()
local elements = {
{
title = 'Give Key',
onSelect = function(args)
TriggerEvent('advancedgarages:openGiveKeyMenu')
end
},
{
title = 'Key Holders',
onSelect = function(args)
TriggerEvent('advancedgarages:openKeyHoldersMenu')
end
},
{
title = 'Sell Garage',
onSelect = function(args)
TriggerEvent('advancedgarages:sellGarage')
end
}
}
lib.registerContext({
id = 'management',
title = 'Management',
options = elements
})
lib.showContext('management')
end
function openGiveKeyMenu(players)
local elements = {}
for k, v in pairs(players) do
table.insert(elements, {
title = 'Player: ' .. v.name.firstName .. ' ' .. v.name.lastName,
onSelect = function(args)
local data = {
id = v.id,
garage = ClosestGarage
}
TriggerServerEvent('advancedgarages:giveKey', data)
end
})
end
lib.registerContext({
id = 'givekey',
title = 'Give Keys',
options = elements
})
lib.showContext('givekey')
end
function openTakeKeyMenu()
local elements = {}
local holders = lib.callback.await('advancedgarages:getGarageKeyHolders', false, ClosestGarage)
if not holders or #holders == 0 then
Notification(i18n.t('keyholders.empty_list'), 'info')
return
end
for k, v in pairs(holders) do
table.insert(elements, {
title = 'Player: ' .. v.firstname .. ' ' .. v.lastname,
onSelect = function(args)
local data = {
id = v.identifier,
garage = ClosestGarage
}
TriggerServerEvent('advancedgarages:takeKey', data)
end
})
end
lib.registerContext({
id = 'keyholders',
title = 'Key Holders',
options = elements
})
lib.showContext('keyholders')
end
function HandleKeyboard(callback)
local input = lib.inputDialog('Set a Price', { 'Garage Price...' })
if not input then return end
local price = tonumber(input[1])
if price then
local amount = price
if amount == nil then
Notification('Invalid Amount', 'error')
else
if amount >= 0 then
callback(amount)
else
Notification('Invalid Amount', 'error')
end
end
end
end
function HandleGarageJob()
local input = lib.inputDialog('Job Name (you can leave it blank for everyone)', { 'Job Name' })
if not input or input[1] == '' then return false end
return input[1]
end
function OpenRecoveryMenu(vehicleList)
local menu = {}
for k, v in pairs(vehicleList) do
table.insert(menu, {
title = v.plate,
onSelect = function(args)
TriggerServerEvent('advancedgarages:RecoveryVehicle', { plate = v.plate, type = v.type })
end,
})
end
lib.registerContext({
id = 'recovery',
title = 'Recovery Vehicle (OUT)',
options = menu
})
lib.showContext('recovery')
end
function OpenDeleteJobVehicleMenu(garage, job)
local menu = {}
local vehicles = lib.callback.await('advancedgarages:getJobVehicles', false, garage, job)
if not vehicles or #vehicles == 0 then
Notification(i18n.t('keyholders.empty_out'), 'info')
return
end
for k, v in pairs(vehicles) do
local data = {
plate = v.plate,
garage = garage
}
table.insert(menu, {
title = v.plate,
onSelect = function(args)
TriggerServerEvent('advancedgarages:deleteJobVehicle', data)
end,
})
end
lib.registerContext({
id = 'deletejobvehicle',
title = 'Delete work vehicles',
options = menu
})
lib.showContext('deletejobvehicle')
end
@@ -0,0 +1,176 @@
if Config.Menu ~= 'qb-menu' then
return
end
function OpenManagementMenu()
local elementsList = {
{
header = 'Management',
isMenuHeader = true,
},
{
header = 'Give Key',
params = {
event = 'advancedgarages:openGiveKeyMenu',
}
},
{
header = 'Key Holders',
params = {
event = 'advancedgarages:openKeyHoldersMenu',
}
}
}
exports['qb-menu']:openMenu(elementsList)
end
function openGiveKeyMenu(players)
local elementsList = {}
table.insert(elementsList, {
header = 'Give Key',
isMenuHeader = true,
})
for k, v in pairs(players) do
table.insert(elementsList, {
header = 'Player: ' .. v.name.firstName .. ' ' .. v.name.lastName,
params = {
isServer = true,
event = 'advancedgarages:giveKey',
args = {
id = v.id,
garage = ClosestGarage
}
}
})
end
exports['qb-menu']:openMenu(elementsList)
end
function openTakeKeyMenu()
local elementsList = {}
local holders = lib.callback.await('advancedgarages:getGarageKeyHolders', false, ClosestGarage)
if not holders or #holders == 0 then
Notification(i18n.t('keyholders.empty_list'), 'info')
return
end
table.insert(elementsList, {
header = 'Take Key',
isMenuHeader = true,
})
for k, v in pairs(holders) do
table.insert(elementsList, {
header = 'Player: ' .. v.firstname .. ' ' .. v.lastname,
params = {
isServer = true,
event = 'advancedgarages:takeKey',
args = {
id = v.identifier,
garage = ClosestGarage
}
}
})
end
exports['qb-menu']:openMenu(elementsList)
end
function HandleKeyboard(callback)
local dialog = exports['qb-input']:ShowInput({
header = 'Set a Price',
submitText = 'Continue',
inputs = {
{
text = 'Garage Price...',
name = 'price',
type = 'number',
isRequired = true,
}
},
})
if dialog ~= nil then
for k, v in pairs(dialog) do
callback(v)
end
end
end
function HandleGarageJob()
local dialog = exports['qb-input']:ShowInput({
header = 'Job Name (you can leave it blank for everyone)',
submitText = 'Continue',
inputs = {
{
text = 'Job Name...',
name = 'Job public garage',
type = 'text',
isRequired = false,
}
},
})
if dialog ~= nil then
for k, v in pairs(dialog) do
if v and v ~= '' then
return v
end
return nil
end
end
end
function OpenRecoveryMenu(vehicleList)
local elementsList = {}
table.insert(elementsList, {
header = 'Recovery Vehicle (OUT)',
isMenuHeader = true,
})
for k, v in pairs(vehicleList) do
table.insert(elementsList, {
header = v.plate,
params = {
isServer = true,
event = 'advancedgarages:RecoveryVehicle',
args = {
plate = v.plate,
type = v.type
}
}
})
end
exports['qb-menu']:openMenu(elementsList)
end
function OpenDeleteJobVehicleMenu(garage, job)
local menu = {}
local vehicles = lib.callback.await('advancedgarages:getJobVehicles', false, garage, job)
if not vehicles or #vehicles == 0 then
Notification(i18n.t('keyholders.empty_out'), 'info')
return
end
table.insert(menu, {
header = 'Delete work vehicles'
})
for k, v in pairs(vehicles) do
table.insert(menu, {
header = v.plate,
params = {
isServer = true,
event = 'advancedgarages:deleteJobVehicle',
args = {
plate = v.plate,
garage = garage
}
}
})
end
exports['qb-menu']:openMenu(menu)
end