..Trying to make a cleanup script becuase explosions can sometimes wont get deleted..basically im making a magic game, and the projectiles explosions are all called booom and booom2. is there a way to get all of the booms and boom2s to get selected and get deleted at the same time.
Deletables = game.Workspace:GetChildren("Booom") Deletables2 = game.Workspace:GetChildren("Booom2") while true do Wait(*For a reasonable time*) Deletbles:Destroy() Deletables2:Destroy() end
lol i am bad
Try this, and use the code blocks next time. look at the comments embedded.
local function GetChildrenFromName(parent, name) local t = {} for _, obj in next, parent:GetChildren() do -- loop through parents children if obj.Name == name then -- check if the object's name is the name given t[#t+1] = obj -- add the object to table end end return t -- return the table end -- new function created! -- table GetChildrenFromName [function], Args #1 = Parent, Args #2 Name local deletables = GetChildrenFromName(game.Workspace, "Booom") -- use our New function local deletables2 = GetChildrenFromName(game.Workspace, "Booom2") -- use the function again while wait() do -- forever -- you cant delete a table, loop through it! for _, o in next, deletables do -- loop through the deletables o:Destroy() -- delete the object, as you used last time on your original script. end for _, o in next, deletables2 do -- loop through the deletables2 o:Destroy() -- delete the object, as you used last time on your original script end end
Hope this works in your context, please mark this as a solution if this works for you. Metatable out!
You would need to loop through the children in workspace and pick out the names from there, and you can do that with for loops.
Here is what the new script would look like:
local Time = 60 -- The time you want it to disappear while true do for i, v in pairs(workspace:GetChildren()) do -- Getting all the children in workspace if v.Name == "Booom" or v.Name == "Booom2" then -- Checking the names of children v:Destroy() -- Destroying the booms end end wait(Time) -- Wait to stop the loop from breaking the game. end
That should hopefully work.
To be honest, there is a better way to do this. Such as using Debris
. I can't see your magic script but I would guess that there is a part where you create a boom. Under that part you could write:
game.Debris:AddItem(BoomName, AmountOfTimeUntilDisappear)
That would work better, but if you cannot use that then stick with the fixed code I wrote.
Hope this helps!