首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NUI的FiveM车辆额外列表

使用NUI的FiveM车辆额外列表
EN

Stack Overflow用户
提问于 2020-02-25 19:38:37
回答 1查看 6.2K关注 0票数 0

我正在创建一个独立的车辆附加菜单。我的问题是,如果我产生A型车,它有4个额外的选择,他们的工作很好。但是,如果我产卵B车,它有8,菜单仍将只显示4从以前的汽车A,这是正确的,无论我离开汽车A或删除它。有什么好办法让它读正确的车吗?

代码语言:javascript
复制
local AvailableExtras = {['VehicleExtras'] = {}}
local Items = {['Vehicle'] = {}}
local MenuExists, Vehicle
_menuPool = NativeUI.CreatePool()
mainMenu = NativeUI.CreateMenu("Vehicle Extras", "~b~Select Extras")       
_menuPool:Add(mainMenu)
_menuPool:MouseControlsEnabled (false);
_menuPool:MouseEdgeEnabled (false);
_menuPool:ControlDisablingEnabled(false);

Citizen.CreateThread(function()
        while true do
                Citizen.Wait(0)
                _menuPool:MouseControlsEnabled (false);
                _menuPool:MouseEdgeEnabled (false);
                _menuPool:ControlDisablingEnabled(false)
                _menuPool:ProcessMenus()
                if IsControlJustPressed(1, 56) then
                    mainMenu:Visible(not mainMenu:Visible())
                end
        end
end)

function Extras(menu)
    local AvailableExtras = {['VehicleExtras'] = {}}
    local Items = {['Vehicle'] = {}}
    local MenuExists
    local Vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
    local GotVehicleExtras = false
    for ExtraID = 0, 20 do
            if DoesExtraExist(Vehicle, ExtraID) then
                    AvailableExtras.VehicleExtras[ExtraID] = (IsVehicleExtraTurnedOn(Vehicle, ExtraID) == 1)
                    GotVehicleExtras = true
            end
    end
    -- Vehicle Extras
    if GotVehicleExtras then
            for Key, Value in pairs(AvailableExtras.VehicleExtras) do
                    local ExtraItem = NativeUI.CreateCheckboxItem('Extra ' .. Key, AvailableExtras.VehicleExtras[Key],Vehicle)
                    mainMenu:AddItem(ExtraItem)
                    Items.Vehicle[Key] = ExtraItem
            end
            menu.OnCheckboxChange = function(Sender, Item, Checked)
                    for Key, Value in pairs(Items.Vehicle) do
                            if Item == Value then
                                    AvailableExtras.VehicleExtras[Key] = Checked
                                    if AvailableExtras.VehicleExtras[Key] then
                                            SetVehicleExtra(Vehicle, Key, 0)
                                    else
                                            SetVehicleExtra(Vehicle, Key, 1)
                                    end
                            end
                    end
            end
    end
end
Extras(mainMenu)
_menuPool:RefreshIndex()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 04:16:45

修好了

代码语言:javascript
复制
        while true do
                Citizen.Wait(0)
                _menuPool:MouseControlsEnabled (false);
                _menuPool:MouseEdgeEnabled (false);
                _menuPool:ControlDisablingEnabled(false)
                _menuPool:ProcessMenus()
                if IsControlJustPressed(1, 56) then
                    Extras(mainMenu)
                    mainMenu:Visible(not mainMenu:Visible())
                end
        end
end)

function Extras(menu)
    mainMenu:Clear()
    local AvailableExtras = {['VehicleExtras'] = {}}
    local Items = {['Vehicle'] = {}}
    local MenuExists
    local Vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
    local GotVehicleExtras = false
    for ExtraID = 0, 20 do
            if DoesExtraExist(Vehicle, ExtraID) then
                    AvailableExtras.VehicleExtras[ExtraID] = (IsVehicleExtraTurnedOn(Vehicle, ExtraID) == 1)
                    GotVehicleExtras = true
            end
    end
    -- Vehicle Extras
    if GotVehicleExtras then
            for Key, Value in pairs(AvailableExtras.VehicleExtras) do
                    local ExtraItem = NativeUI.CreateCheckboxItem('Extra ' .. Key, AvailableExtras.VehicleExtras[Key],"Enable or Disable Extras")
                    mainMenu:AddItem(ExtraItem)
                    Items.Vehicle[Key] = ExtraItem
            end
            menu.OnCheckboxChange = function(Sender, Item, Checked)
                    for Key, Value in pairs(Items.Vehicle) do
                            if Item == Value then
                                    AvailableExtras.VehicleExtras[Key] = Checked
                                    if AvailableExtras.VehicleExtras[Key] then
                                            SetVehicleExtra(Vehicle, Key, 0)
                                    else
                                            SetVehicleExtra(Vehicle, Key, 1)
                                    end
                            end
                    end
            end
    end
end```
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60402001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档