所以,我收到的错误如下:[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" )
任何人都能想到的任何解决方案?我想不出什么,因为对我来说,它应该工作正常吗?
答案 0 :(得分:3)
错误很清楚。在第43行中,你有一个for语句,它使用container.Size作为限制,在你的情况下不是数字。
解决方案:
使用数字作为限制。如果你必须使用container.Size并且它来自" outside",请找出它为什么不是数字以及你可以做些什么。如果您无法确定其编号,则不能将其用作限制。
所以把你的for循环放在if type(container.Size) == "number" then
语句或类似语句中。