For循环无法完全正常运行,Lua

问题描述 投票:1回答:1
    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

lua
1个回答
1
投票
[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

© www.soinside.com 2019 - 2024. All rights reserved.