Hello, I have created a NativeUI menu that allows players to view and show their ID cards. However, I encountered an issue: when I attempt to show my ID card and there are no players nearby, I am unable to reopen the menu afterwards.
Here’s my code:
-- client.lua
_menuPool = NativeUI.CreatePool()
mainMenu = NativeUI.CreateMenu("~r~Averox Roleplay", "Averox Roleplay Lizenzen Menue")
_menuPool:Add(mainMenu)
function AddMenus(menu)
local idCardSubMenu = _menuPool:AddSubMenu(menu, "Personalausweis", "Optionen zum Ansehen des Personalausweises")
local viewIDCardItem = NativeUI.CreateItem("Personalausweis ansehen", "Sehe dir deinen eigenen Personalausweis an")
idCardSubMenu:AddItem(viewIDCardItem)
local showIDCardItem = NativeUI.CreateItem("Personalausweis zeigen", "Zeige deinen Personalausweis anderen Spielern")
idCardSubMenu:AddItem(showIDCardItem)
local driverLicenseSubMenu = _menuPool:AddSubMenu(menu, "Führerschein", "Optionen für den Führerschein")
local viewLicenseItem = NativeUI.CreateItem("Führerschein ansehen", "Sehe dir deinen Führerschein an")
driverLicenseSubMenu:AddItem(viewLicenseItem)
local showLicenseItem = NativeUI.CreateItem("Führerschein zeigen", "Zeige deinen Führerschein anderen Spielern")
driverLicenseSubMenu:AddItem(showLicenseItem)
viewIDCardItem.Activated = function(sender, item)
TriggerServerEvent('jsfour-idcard:open', GetPlayerServerId(PlayerId()), GetPlayerServerId(PlayerId()))
end
showIDCardItem.Activated = function(sender, item)
local player, distance = ESX.Game.GetClosestPlayer()
if distance ~= -1 and distance <= 3.0 then
TriggerServerEvent('jsfour-idcard:open', GetPlayerServerId(PlayerId()), GetPlayerServerId(player))
else
ESX.ShowNotification('No players nearby')
end
end
viewLicenseItem.Activated = function(sender, item)
TriggerServerEvent('jsfour-idcard:open', GetPlayerServerId(PlayerId()), GetPlayerServerId(PlayerId()), 'driver')
end
showLicenseItem.Activated = function(sender, item)
local player, distance = ESX.Game.GetClosestPlayer()
if distance ~= -1 and distance <= 3.0 then
TriggerServerEvent('jsfour-idcard:open', GetPlayerServerId(PlayerId()), GetPlayerServerId(player), 'driver')
else
ESX.ShowNotification('No players nearby')
end
end
end
AddMenus(mainMenu)
_menuPool:RefreshIndex()
RegisterCommand("openmenu", function()
mainMenu:Visible(not mainMenu:Visible())
end, false)
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
_menuPool:ProcessMenus()
if IsControlJustReleased(1, 182) then
mainMenu:Visible(not mainMenu:Visible())
end
end
end)