【问题标题】:I can't add menu on submenu with NativeUI我无法使用 NativeUI 在子菜单上添加菜单
【发布时间】:2022-11-04 23:43:13
【问题描述】:

我无法通过 NativeUI 在菜单中添加关卡,我在 EasyAdmin 上创建了我们的工具插件,可在此处获取:https://easyadmin.readthedocs.io/en/latest/

这是我遇到问题的部分:

            local thisPlayerJobMenu = _menuPool:AddSubMenu(thisESXMenu,"Configuration du Job","Job Actuel : "..playerInfos.job.label.."\nGrade : "..playerInfos.job.grade_label,true)
            thisPlayerJobMenu:SetMenuWidthOffset(menuWidth)
            
            local jobList = NativeUI.CreateItem("~g~-------  JOBS DISPONIBLE  -------~s~", "") 
            thisPlayerJobMenu:AddItem(jobList)

            ESX.TriggerServerCallback('EasyAdmin:fiveone:getJobs', function(jobs)
                for i, job in pairs(jobs) do
                    if not string.find(job.name, "off") then
                        local tempList = NativeUI.CreateItem(job.label, "")
                        tempList:RightLabel(job.name)                       
                        thisPlayerJobMenu:AddItem(tempList)
                        tempList.Activated = function(ParentMenu,SelectedItem)

                            local thisPlayerGradeMenu = _menuPool:AddSubMenu(ParentMenu,"Selection du grade",SelectedItem.Label.Text._Text,true)
                            thisPlayerGradeMenu:SetMenuWidthOffset(menuWidth)
                            
                            ESX.TriggerServerCallback('EasyAdmin:fiveone:getGrades', function(jobGrade)
                                for i, grade in pairs(jobGrade) do
                                    local tempGrade = NativeUI.CreateItem(grade.label, "")
                                    tempGrade:RightLabel(grade.grade)                       
                                    thisPlayerGradeMenu:AddItem(tempGrade)
                                    tempGrade.Activated = function(ParentMenu2,SelectedItem2)
                                        print(playerId, SelectedItem.Label.Text._Text, SelectedItem2.Label.Text._Text)
                                        TriggerServerEvent("EasyAdmin:fiveone:SetJob", playerId, SelectedItem.Label.Text._Text, SelectedItem2.Label.Text._Text)
                                        thisPlayerGradeMenu:GoBack()
                                        thisPlayerJobMenu:GoBack()
                                    end
                                end
                            end, SelectedItem.Label.Text._Text)
                        end
                    end
                end
            end)

这段代码的作用:它在数据库中检索可用工作列表并在菜单中列出它们,在选择其中一个后,它会检索该工作的可用等级,然后将它们列出以选择等级并将该工作应用于目标玩家。

这段代码的问题:一切正常,但不是在所选工作的其他子菜单中列出工作等级,而是将操作“Selection du Grade”添加到工作列表中,我们需要在访问工作等级列表之前选择这一行。

你能告诉我为什么他不想直接进入子菜单吗?

非常感谢

【问题讨论】:

    标签: user-interface lua native fivem


    【解决方案1】:

    我设法通过从列表中删除对象来添加其他对象来使用另一种方法(不是很好)。

                local thisPlayerJobMenu = _menuPool:AddSubMenu(thisESXMenu,"Configuration du Job","Job Actuel : "..playerInfos.job.label.."
    Grade : "..playerInfos.job.grade_label,true)
                thisPlayerJobMenu:SetMenuWidthOffset(menuWidth)
                
                local jobList = NativeUI.CreateItem("~g~-------  JOBS DISPONIBLE  -------~s~", "") 
                thisPlayerJobMenu:AddItem(jobList)
    
                ESX.TriggerServerCallback('EasyAdmin:fiveone:getJobs', function(jobs)
                    for i, job in pairs(jobs) do
                        if not string.find(job.name, "off") then
                            local tempList = NativeUI.CreateItem(job.label, "")
                            tempList:RightLabel(job.name)                       
                            thisPlayerJobMenu:AddItem(tempList)
                            tempList.Activated = function(ParentMenu,SelectedItem)
                                -- for key, value in pairs(SelectedItem) do print("SelectedItem : key, value",key, value) end
                                
                                local index = #ParentMenu.Items
                                for i = 1, index do
                                    if #ParentMenu.Items ~= 1 then
                                        thisPlayerJobMenu:RemoveItemAt(#ParentMenu.Items)
                                        index = index - i
                                    end
                                end
                                
                                ESX.TriggerServerCallback('EasyAdmin:fiveone:getGrades', function(jobGrade)
                                    for i, grade in pairs(jobGrade) do
                                        local tempList = NativeUI.CreateItem(grade.label, "")
                                        tempList:RightLabel(grade.grade)                        
                                        thisPlayerJobMenu:AddItem(tempList)
                                        tempList.Activated = function(ParentMenu2,SelectedItem2)
                                            TriggerServerEvent("EasyAdmin:fiveone:SetJob", playerId, SelectedItem.Label.Text._Text, SelectedItem2.Label.Text._Text)
                                            thisPlayerJobMenu:GoBack()
                                            thisPlayerJobMenu:RefreshIndex()
                                        end
                                    end
                                end, SelectedItem.Label.Text._Text)
                            end
                        end
                    end
                end)
    

    菜单不能很好地刷新,但它可以工作......

    你有一个想法来优化这个吗? 因为我找不到其他解决方案...

    【讨论】:

      猜你喜欢
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 2017-10-19
      相关资源
      最近更新 更多