'for'limit必须是数字LUA错误

时间:2017-08-06 21:43:39

标签: lua

所以,我收到的错误如下:[ERROR] addons / itemstore / lua / itemstore / lua / itemsure / vgui / container.lua:43'for'limit必须是数字

这是container.lua

local PANEL = {}

AccessorFunc( PANEL, "ContainerID", "ContainerID" )
AccessorFunc( PANEL, "Rows", "Rows" )
AccessorFunc( PANEL, "Columns", "Columns" )

function PANEL:Init()
    self.Items = {}

    table.insert( itemstore.containers.Panels, self )
end

function PANEL:Refresh()
    local container = itemstore.containers.Get( self:GetContainerID() )
    if ( container ) then
        for i = 1, container.Size do
            if ( not self.Items[ i ] ) then
                self.Items[ i ] = self:Add( "ItemStoreSlot" )
            end

            local panel = self.Items[ i ]
            panel:SetItem( container:GetItem( i ) )
            panel:SetContainerID( self:GetContainerID() )
            panel:SetSlot( i )
            panel:InvalidateLayout()
        end

        self:InvalidateLayout()
    end
end

function PANEL:SetContainerID( containerid )
    self.ContainerID = containerid
    self:Refresh()
end

function PANEL:PerformLayout()
    self:SetSpaceX( 1 )
    self:SetSpaceY( 1 )

    local container = itemstore.containers.Get( self:GetContainerID() )
    if ( container ) then
        for i = 1, container.Size do
            local panel = self.Items[ i ]

            if ( panel ) then
                panel:SetSize( unpack( itemstore.config.SlotSize ) )
            end
        end
    end

    self.BaseClass.PerformLayout( self )
end

vgui.Register( "ItemStoreContainer", PANEL, "DIconLayout" )

任何人都能想到的任何解决方案?我想不出什么,因为对我来说,它应该工作正常吗?

1 个答案:

答案 0 :(得分:3)

错误很清楚。在第43行中,你有一个for语句,它使用container.Size作为限制,在你的情况下不是数字。

解决方案:

使用数字作为限制。如果你必须使用container.Size并且它来自" outside",请找出它为什么不是数字以及你可以做些什么。如果您无法确定其编号,则不能将其用作限制。

所以把你的for循环放在if type(container.Size) == "number" then语句或类似语句中。