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
Run Code Online (Sandbox Code Playgroud)
我做了这个 for 循环来检查一个项目是否有一定的稀有性,如果它确实允许它成为一个项目,但如果它没有稀有性,那么它应该让 for 循环再做一次,直到每个项目都被选中。但是,当我运行 for 循环时,它会这样做,但我不知道为什么。
有些数字是重复的,例如 48 和 48,它们应该是 48 和 49。
任何帮助,将不胜感激!
-谢谢 D12
amountofspinstodo 不能从你的 for 循环内部更改,并坚持到循环的下一次运行。
参考:
第三,永远不要改变控制变量的值:这种改变的影响是不可预测的。如果要在正常终止之前中断 for 循环,请使用 break。- Lua 编程:4.3.4 - 数字
这是一个简单的示例,您可以用来查看:
for i = 1, 10 do
print(i)
i = 10
end
Run Code Online (Sandbox Code Playgroud)
相反,您应该使用 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 }
print(amountofspinstodo)
amountofspinstodo = amountofspinstodo + 1
else
print(amountofspinstodo)
end
end
Run Code Online (Sandbox Code Playgroud)