local function action(Pick, part, OldFrame, OldSize)
if Pick == 1 then
for i = 1, 4 do
part.Parent:SetPrimaryPartCFrame(part.CFrame + part.CFrame.UpVector * 2)
wait(0.1)
part.Parent:SetPrimaryPartCFrame(part.CFrame - part.CFrame.UpVector * 2)
wait(0.1)
end
for i = 1, 20 do
part.Parent:SetPrimaryPartCFrame(part.CFrame - part.CFrame.UpVector * 5)
wait(0.05)
end
wait(3)
part.Parent:SetPrimaryPartCFrame(OldFrame)
end
end
while wait(1) do
local index = math.random(1, #script.Parent.Grounds:GetChildren())
for i, v in script.Parent.Grounds:GetChildren() do
if i == index then
action(math.random(1, 2), v.Block, v.Block.CFrame, v.Block.Size)
print('done')
end
end
end
This is supposed to make different tiles in a little grid go down. How can I make it so it doesn't have to stop until one if finished in order to start another

2 comments
well yeah I found the solution actually. Idk if you even read the script but it's supposed to take time to do the action. What I wanted to do is to fire the same function multiple times
Yes, I did, but that's how wait() works, it yields the script, if you could post your solution for other people to know how you did it, it'd be nice as i've seen a couple people with this problem.