mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-31 02:08:55 +00:00
129 lines
3.5 KiB
Lua
129 lines
3.5 KiB
Lua
local GUI, MenuType, OpenedMenus, CurrentNameSpace = {}, 'default', 0, nil
|
|
GUI.Time = 0
|
|
|
|
local function openMenu(namespace, name, data)
|
|
CurrentNameSpace = namespace
|
|
OpenedMenus += 1
|
|
SendNUIMessage({
|
|
action = 'openMenu',
|
|
namespace = namespace,
|
|
name = name,
|
|
data = data
|
|
})
|
|
end
|
|
|
|
local function closeMenu(namespace, name)
|
|
CurrentNameSpace = namespace
|
|
OpenedMenus -= 1
|
|
SendNUIMessage({
|
|
action = 'closeMenu',
|
|
namespace = namespace,
|
|
name = name
|
|
})
|
|
end
|
|
|
|
AddEventHandler('onResourceStop', function(resource)
|
|
if GetCurrentResourceName() == resource and OpenedMenus > 0 then
|
|
ESX.UI.Menu.CloseAll()
|
|
elseif CurrentNameSpace ~= nil and CurrentNameSpace == resource and OpenedMenus > 0 then
|
|
ESX.UI.Menu.CloseAll()
|
|
end
|
|
end)
|
|
|
|
ESX.UI.Menu.RegisterType(MenuType, openMenu, closeMenu)
|
|
|
|
RegisterNUICallback('menu_submit', function(data, cb)
|
|
local menu = ESX.UI.Menu.GetOpened(MenuType, data._namespace, data._name)
|
|
if menu.submit ~= nil then
|
|
menu.submit(data, menu)
|
|
end
|
|
cb('OK')
|
|
end)
|
|
|
|
RegisterNUICallback('menu_cancel', function(data, cb)
|
|
local menu = ESX.UI.Menu.GetOpened(MenuType, data._namespace, data._name)
|
|
|
|
if menu.cancel ~= nil then
|
|
menu.cancel(data, menu)
|
|
end
|
|
cb('OK')
|
|
end)
|
|
|
|
RegisterNUICallback('menu_change', function(data, cb)
|
|
local menu = ESX.UI.Menu.GetOpened(MenuType, data._namespace, data._name)
|
|
|
|
for i = 1, #data.elements, 1 do
|
|
menu.setElement(i, 'value', data.elements[i].value)
|
|
|
|
if data.elements[i].selected then
|
|
menu.setElement(i, 'selected', true)
|
|
else
|
|
menu.setElement(i, 'selected', false)
|
|
end
|
|
end
|
|
|
|
if menu.change ~= nil then
|
|
menu.change(data, menu)
|
|
end
|
|
cb('OK')
|
|
end)
|
|
|
|
ESX.RegisterInput('menu_default_enter', 'Submit menu item', 'keyboard', 'RETURN', function()
|
|
if OpenedMenus > 0 and (GetGameTimer() - GUI.Time) > 200 then
|
|
SendNUIMessage({
|
|
action = 'controlPressed',
|
|
control = 'ENTER'
|
|
})
|
|
GUI.Time = GetGameTimer()
|
|
end
|
|
end)
|
|
|
|
ESX.RegisterInput('menu_default_backspace', 'Close menu', 'keyboard', 'BACK', function()
|
|
if OpenedMenus > 0 then
|
|
SendNUIMessage({
|
|
action = 'controlPressed',
|
|
control = 'BACKSPACE'
|
|
})
|
|
GUI.Time = GetGameTimer()
|
|
end
|
|
end)
|
|
|
|
ESX.RegisterInput('menu_default_top', 'Change menu focus to top item', 'keyboard', 'UP', function()
|
|
if OpenedMenus > 0 then
|
|
SendNUIMessage({
|
|
action = 'controlPressed',
|
|
control = 'TOP'
|
|
})
|
|
GUI.Time = GetGameTimer()
|
|
end
|
|
end)
|
|
|
|
ESX.RegisterInput('menu_default_down', 'Change menu focus to down item', 'keyboard', 'DOWN', function()
|
|
if OpenedMenus > 0 then
|
|
SendNUIMessage({
|
|
action = 'controlPressed',
|
|
control = 'DOWN'
|
|
})
|
|
GUI.Time = GetGameTimer()
|
|
end
|
|
end)
|
|
|
|
ESX.RegisterInput('menu_default_left', 'Change menu slider to left', 'keyboard', 'LEFT', function()
|
|
if OpenedMenus > 0 then
|
|
SendNUIMessage({
|
|
action = 'controlPressed',
|
|
control = 'LEFT'
|
|
})
|
|
GUI.Time = GetGameTimer()
|
|
end
|
|
end)
|
|
|
|
ESX.RegisterInput('menu_default_right', 'Change menu slider to right', 'keyboard', 'RIGHT', function()
|
|
if OpenedMenus > 0 then
|
|
SendNUIMessage({
|
|
action = 'controlPressed',
|
|
control = 'RIGHT'
|
|
})
|
|
GUI.Time = GetGameTimer()
|
|
end
|
|
end) |