Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于不能完全正常工作的循环,Lua 对于amountofspinstodo=1100 do 本地拾取=math.random(1,#box.CONTENTS) 本地稀有性=投资:计算稀有性() local ITEMPICK=INV:GetDataFromName(box.CONTENTS[pick]) 本地稀有品种的稀有品种=稀有品种 如果有价值(物品的稀有性,稀有性),那么 tbl.spintable[amountofspinstodo]={NAME=box.CONTENTS[pick],RARITY=RARITY} 打印(amountofspinstodo) 其他的 amountofspinstodo=amountofspinstodo-1 打印(amountofspinstodo) 结束 结束_Lua - Fatal编程技术网

对于不能完全正常工作的循环,Lua 对于amountofspinstodo=1100 do 本地拾取=math.random(1,#box.CONTENTS) 本地稀有性=投资:计算稀有性() local ITEMPICK=INV:GetDataFromName(box.CONTENTS[pick]) 本地稀有品种的稀有品种=稀有品种 如果有价值(物品的稀有性,稀有性),那么 tbl.spintable[amountofspinstodo]={NAME=box.CONTENTS[pick],RARITY=RARITY} 打印(amountofspinstodo) 其他的 amountofspinstodo=amountofspinstodo-1 打印(amountofspinstodo) 结束 结束

对于不能完全正常工作的循环,Lua 对于amountofspinstodo=1100 do 本地拾取=math.random(1,#box.CONTENTS) 本地稀有性=投资:计算稀有性() local ITEMPICK=INV:GetDataFromName(box.CONTENTS[pick]) 本地稀有品种的稀有品种=稀有品种 如果有价值(物品的稀有性,稀有性),那么 tbl.spintable[amountofspinstodo]={NAME=box.CONTENTS[pick],RARITY=RARITY} 打印(amountofspinstodo) 其他的 amountofspinstodo=amountofspinstodo-1 打印(amountofspinstodo) 结束 结束,lua,Lua,我做了这个for循环来检查一个项目是否有一定的稀有性,如果它确实允许它成为一个项目,但是如果它没有稀有性,那么它应该让for循环再次这样做,直到每个项目都被选中。然而,当我运行for循环时,它会这样做,我不知道为什么 有些数字是重复的,比如48和48,应该是48和49 任何帮助都将不胜感激 -感谢D12amountofspinstodo无法从for循环内部更改,并持续到循环的下一次运行 参考资料: 第三,永远不要更改控制变量的值:这种更改的效果是不可预测的。如果要在正常终止前中断for循环,请

我做了这个for循环来检查一个项目是否有一定的稀有性,如果它确实允许它成为一个项目,但是如果它没有稀有性,那么它应该让for循环再次这样做,直到每个项目都被选中。然而,当我运行for循环时,它会这样做,我不知道为什么

有些数字是重复的,比如48和48,应该是48和49

任何帮助都将不胜感激


-感谢D12

amountofspinstodo
无法从for循环内部更改,并持续到循环的下一次运行

参考资料:

第三,永远不要更改控制变量的值:这种更改的效果是不可预测的。如果要在正常终止前中断for循环,请使用break。-

下面是一个简单的示例,您可以使用它来查看:

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 }
        print(amountofspinstodo)
        amountofspinstodo = amountofspinstodo + 1
    else
        print(amountofspinstodo)
    end
end
local amountofspinstodo=1
而(amountofspinstodo<100)do
本地拾取=math.random(1,#box.CONTENTS)
本地稀有性=投资:计算稀有性()
local ITEMPICK=INV:GetDataFromName(box.CONTENTS[pick])
本地稀有品种的稀有品种=稀有品种
如果有价值(物品的稀有性,稀有性),那么
tbl.spintable[amountofspinstodo]={NAME=box.CONTENTS[pick],RARITY=RARITY}
打印(amountofspinstodo)
amountofspinstodo=amountofspinstodo+1
其他的
打印(amountofspinstodo)
结束
结束
当Nifim退出时,您不能

但看看你的代码,很明显你实际上是在一个for循环中做两个实际的循环,这显然是行不通的

将代码移动一点,您会得到:

旋转=1100 do时的

本地精选、稀有
重复
pick=math.random(1,#box.CONTENTS)
稀有性=投资:计算稀有性()
local ITEMPICK=INV:GetDataFromName(box.CONTENTS[pick])
本地稀有品种的稀有品种=稀有品种
打印(旋转)
直到有价值(物品的稀有性、稀有性)
tbl.spintable[spins]={NAME=box.CONTENTS[pick],RARITY=RARITY}
结束

正如您所看到的,有一个从1到100的外部循环,还有一个内部循环,它重复一些代码,直到您对结果感到满意。

您好,欢迎来到Stack Overflow!从技术上讲,您的代码正在执行您告诉它的操作,如果稀有性不匹配,请从
amountofspins
中减去1。但是如果
amountofspins
要匹配表中的项目数,最好使用
print(#tbl.spintable)
。另外,我认为您可能会考虑<代码>表。插入(TBL.SPTINTURE,{…})<代码>,而不是您现在如何做。看起来您错过了在您所发布的代码中for循环的开始,可以包括吗?@ NIFIM抱歉,我已经添加了它。您不能从Afor for循环中更改循环迭代器值,您将希望使用while循环,而不是while循环。您的意思是“不能”还是“不应该?”不能,简单的示例:
对于i=1,10 do print(i);i=10;end
特别提醒注意:“[…]您永远不应该更改控制变量的值:此类更改的效果是不可预测的。”实际上,您可以随心所欲地更改主体中的变量。。。但是在接下来的迭代中,更改将被放弃。@canon谢谢,我正在寻找一份确切的文档,以包含在我的答案中。