Hi! I have this script that plays an Animation and gives you a tool. The tool you acquire is from a crate, and I want to tween some cool fading thing. However, I could've used unions, but it was too glitchy and left some parts. So, I tried using a for loop to gather every part in my crate and do the fading thing. I failed because the Animation would run in the for loop, and I had to wait for it to gather every part I wanted. How would I go about this? You don't need to give me code. Just explain and answer for me to put it in my code. Here's the code!
local proximityPrompt = script.Parent.Special2.ProximityPrompt local RS = game:GetService("ReplicatedStorage") proximityPrompt.Triggered:Connect(function(plr) local char = plr.Character or plr.CharacterAdded:Wait() local hum = char:WaitForChild("Humanoid") local randomArray = {RS:WaitForChild("Tool"), RS:WaitForChild("Tool2"), RS:WaitForChild("Tool3"), RS:WaitForChild("Tool4"), RS:WaitForChild("Tool5")} local randomIndex = math.random(1,#randomArray) local randomTool = randomArray[randomIndex] local toolClone = randomTool:Clone() local deathAnim = hum:LoadAnimation(script.DeathAnim) local debounce = true for i,v in pairs(plr.Backpack:GetChildren()) do if v.Name == randomTool.Name then debounce = false print(randomTool.Name) end end if debounce == true then for i,v in pairs(script.Parent:GetChildren()) do if v.Name == "Part" then local Info = TweenInfo.new(1.5) local Tween1 = game:GetService("TweenService"):Create(v,Info,{Transparency=0}) local Tween2 = game:GetService("TweenService"):Create(v,Info,{Transparency=1}) deathAnim:Play() wait(1.5) Tween2:Play() proximityPrompt.Enabled = false v.CanCollide = false script.Parent.Spawner.Attachment.ParticleEmitter.Enabled = true toolClone.Parent = plr.Backpack wait(5) Tween1:Play() v.CanCollide = true script.Parent.Spawner.Attachment.ParticleEmitter.Enabled = false proximityPrompt.Enabled = true end end end debounce = true end)
Try using delay instead of wait:
delay(time, function() -- Your code end)