[How-to] Make Multiple Item Types and SubMenus & MORE in NativeUI

To make Multiple Item Types in NativeUI you must have each Item Type in the same Function and not separated. A example of which is as follows.

function Weapons(menu)
local submenu = _menuPool:AddSubMenu(menu, "Weapons Menu", "Sub Menu for Weapons") 
local gunsList = NativeUI.CreateListItem("Get Weapons", weapons, 1)
  submenu.OnListSelect = function(sender, item, index)  
      if item == gunsList then
          local selectedGun = item:IndexToItem(index)
          giveWeapon(selectedGun)
          notify("Gave Weapon: "..selectedGun)
    end
  end
    local click = NativeUI.CreateItem("~r~Clear Weapon(s)", "Clears Peds Weapons")
    local weapon = NativeUI.CreateItem("~b~Give all Weapons")
    submenu.OnItemSelect = function (sender, item, index)
      if item == click then
        RemoveAllPedWeapons(GetPlayerPed(-1), true)
        notify("~r~Removed All Weapon(s)")
      else if item == weapon then
        giveWeapon("weapon_knife")
      end
  end
end
submenu:AddItem(gunsList)
submenu:AddItem(weapon)
submenu:AddItem(click)
end

If you were to then go on and make a new submenu you can go on and do that in a seperate Function, but to have multiple of the same types in one submenu you must keep that in one single function with if and elseif statements.

NOTE: If you have any questions feel free to comment them, I am open for discussion. This is not the most in-depth because it’s not to to hard… but if you are confused (New to Programming) that is understandable and I am there to help.

If you wish to make SubMenu’s in SubMenu’s then do the following.

  • Change submenu to othermenu (ex local othermenu = _menuPool:AddSubMenu(submenu, "Test Menu", "" was originally local submenu = _menuPool:AddSubMenu(menu, "Weapons Menu", "Sub Menu for Weapons")
  • For submenu:AddItem() change submenu to othermenu

Example

local othermenu = _menuPool:AddSubMenu(submenu, "~b~Emergency Loadouts")
    local stateloadout = NativeUI.CreateItem("State Loadout", "Gives State Loadout")
    local hwayloadout = NativeUI.CreateItem("Highway Patrol Loadout", "Gives Highway Patrol Loadout")
    local coploadout = NativeUI.CreateItem("Police Loadout", "Gives Police Loadout")
    local sherloadout = NativeUI.CreateItem("Sheriff Loadout", "Gives Sheriff Loadout")
    local medloadout = NativeUI.CreateItem("EMT Loadout", "Gives EMT Loadout")
    local fireloadout = NativeUI.CreateItem("Fire Loadout", "Gives Fire Loadout")
    othermenu:AddItem(stateloadout)
    othermenu:AddItem(hwayloadout)
    othermenu:AddItem(coploadout)
    othermenu:AddItem(sherloadout)
    othermenu:AddItem(medloadout)
    othermenu:AddItem(fireloadout)
    othermenu.OnItemSelect = function(sender, item, index)
      if item == coploadout then
        if police then
          loaded = not loaded
          if loaded then
        loadModel("s_m_y_cop_01")
        giveWeapon("weapon_teargas")
        giveWeapon("weapon_combatpistol")
        giveWeapon("weapon_stungun")
        giveWeapon("weapon_pumpshotgun")
        giveWeapon("weapon_carbinerifle")
        giveWeapon("weapon_nightstick")
        giveWeapon("weapon_flashlight")
        notify("~b~Police Loadout Given")
      else
        RemoveAllPedWeapons(GetPlayerPed(-1), true)
        notify("~r~Loadout is now Removed")
      end
      else
        notify("~r~Permission not granted!")
      end
      else if item == stateloadout then
        if state then
          loaded2 = not loaded2
          if loaded2 then
          loadModel("s_m_y_sheriff_01")
          giveWeapon("weapon_teargas")
          giveWeapon("weapon_combatpistol")
          giveWeapon("weapon_stungun")
          giveWeapon("weapon_pumpshotgun")
          giveWeapon("weapon_carbinerifle")
          giveWeapon("weapon_nightstick")
          giveWeapon("weapon_flashlight")
          notify("~b~Sheriff Loadout Given: ")
        else
          RemoveAllPedWeapons(GetPlayerPed(-1), true)
          notify("~r~Loadout is now Removed")
        end
        else
          notify("~r~Permission not granted!")
        end
      else if item == sherloadout then
        if sheriff then
        loaded3 = not loaded3
        if loaded3 then
        loadModel("s_m_y_sheriff_01")
        giveWeapon("weapon_teargas")
        giveWeapon("weapon_combatpistol")
        giveWeapon("weapon_stungun")
        giveWeapon("weapon_pumpshotgun")
        giveWeapon("weapon_carbinerifle")
        giveWeapon("weapon_nightstick")
        giveWeapon("weapon_flashlight")
        notify("~b~Sheriff Loadout Given: ")
      else
        RemoveAllPedWeapons(GetPlayerPed(-1), true)
        notify("~r~Loadout is now Removed")
      end
      else
        notify("~r~Permission not granted!")
      end
      else if item == medloadout then
        if emt then
        loaded4 = not loaded4
        if loaded4 then
        loadModel("S_M_M_Paramedic_01")
      else
        RemoveAllPedWeapons(GetPlayerPed(-1), true)
        notify("~r~Loadout is now Removed")
      end
      else
        notify("~r~Permission not granted!")
      end
      else if item == fireloadout then
        if fire then
        loaded5 = not loaded5
        if loaded5 then
        loadModel("S_M_Y_Fireman_01")
        giveWeapon("weapon_flaregun")
        giveWeapon("weapon_fireextinguisher")
        giveWeapon("weapon_crowbar")
        notify("~b~Fire Loadout Given")
      else
        RemoveAllPedWeapons(GetPlayerPed(-1), true)
        notify("~r~Loadout is now Removed")
      end
      else
        notify("~r~Permission not granted!")
      end
    else if item == hwayloadout then
      if sheriff then
      loaded3 = not loaded3
      if loaded3 then
      giveWeapon("weapon_teargas")
      giveWeapon("weapon_combatpistol")
      giveWeapon("weapon_stungun")
      giveWeapon("weapon_pumpshotgun")
      giveWeapon("weapon_carbinerifle")
      giveWeapon("weapon_nightstick")
      giveWeapon("weapon_flashlight")
      notify("~b~Sheriff Loadout Given: ")
    else
      RemoveAllPedWeapons(GetPlayerPed(-1), true)
      notify("~r~Loadout is now Removed")
    end
    else
      notify("~r~Permission not granted!")
    end
              end
            end
          end
        end
      end
    end
  end
end
1 Like

Could i just copy and paste this in and it would work?

So I’m looking to trigger an event when a specific item from an array is chosen. For example - I would have an array called doors. My code would look something like this. Can you tell me why this wouldn’t work? I feel like an idiot

local doorList = NativeUICreateListItem("Toggle Doors", doors, 1)
submenu.OnListSelect = function(sender, item, index)
        if item == doorList then
                 local selectedDoor = item:IndexToItem(index)
                          if selectedDoor = "Front Right" then
                                 TriggerEvent("frdoor")
                          end
      end

I just don’t understand why this wouldn’t work, and was wondering if someone could give me some advice here.

Thank You @ Thymester you helped me figure out how to add Items of the same type on the CreateItem Type

1 Like

Can someone help me? the ItemList speed is very high.

Thank you Sir. This was exactly what I was looking for.

1 Like

Glad to be of assistance!

good post! but this is kinda wierd because you are using the default NativeUI

In NativeUIReloaded the Submenu and the Item that it corresponds to are seperated means
Again this here only works with nativeuireloaded and is complicated in the original NativeUI

submenu1 =  _menuPool:AddSubMenu(mainmenu, "this is the 1st submenu", "")

will make a submenu as usual
but if you want to lets say add a rightlabel to the item of that submenu you need to use it like this

submenu1.Item:RightLabel("hello")

and using that item in nativeui is kinda wierd. you need to find it per index as im aware but not quite sure
and if you want to use the menu its

submenu1.SubMenu

if you want to use lets say as an example a submenu in a submenu you would add it with that name example:

		lights = _menuPool:AddSubMenu(mainmenu, framework_Locale("lights"), "", true, true)
		 xenon = NativeUI.CreateCheckboxItem(framework_Locale("xenon"), false, "")
		lights.SubMenu:AddItem(xenon)

here! i can help you, instead of using the menu to find if the item is selected, try using this:

local doorList = NativeUICreateListItem("Toggle Doors", doors, 1)
doorList.OnListChanged = function(sender, item, index)
			print("its right now on" .. index)
		end