for amountofspinstodo = 1, 100 do
local pick = math.random( 1, #box.CONTENTS )
local rarity = INV:CalculateItemRarity()
local ITEMPICK = INV:GetDataFromName(box.CONTENTS[pick])
local RARITYS_OF_ITEM_PICK = ITEMPICK.RARITYS
if has_value(RARITYS_OF_ITEM_PICK, rarity)then
tbl.spintable[amountofspinstodo] = { NAME = box.CONTENTS[pick], RARITY = rarity }
print(amountofspinstodo)
else
amountofspinstodo = amountofspinstodo - 1
print(amountofspinstodo)
end
end
我进行了此for循环,以检查某项是否具有一定的稀有性,是否允许它成为某项,但是如果它不具有稀有性,则应该使for循环执行该稀有性再次,直到每个项目被选中。但是,当我运行for循环时,它会这样做,我也不知道为什么。
https://i.stack.imgur.com/yIdYZ.png
一些数字是重复的,例如48和48,应该是48和49。
任何帮助将不胜感激!
-感谢D12
amountofspinstodo
不能在for循环内更改,并且保留到下一个循环运行。参考:
第三,切勿更改控制变量的值:此类更改的效果不可预测。如果要在正常终止之前中断for循环,请使用break。 -Programming in Lua: 4.3.4 – Numeric for
这是一个简单的示例,您可以用来查看:
for i = 1, 10 do
print(i)
i = 10
end
相反,您应该使用while循环:
local amountofspinstodo = 1 while(amountofspinstodo < 100) do local pick = math.random( 1, #box.CONTENTS ) local rarity = INV:CalculateItemRarity() local ITEMPICK = INV:GetDataFromName(box.CONTENTS[pick]) local RARITYS_OF_ITEM_PICK = ITEMPICK.RARITYS if has_value(RARITYS_OF_ITEM_PICK, rarity)then tbl.spintable[amountofspinstodo] = { NAME = box.CONTENTS[pick], RARITY = rarity } amountofspinstodo = amountofspinstodo + 1 print(amountofspinstodo) else amountofspinstodo = amountofspinstodo - 1 print(amountofspinstodo) end end