Something like this?
local part = script.Parent
local decals = {}
for _, d in ipairs(part:GetChildren()) do
if d:IsA("Decal") then
d.Transparency = 1
table.insert(decals, d)
end
end
table.sort(decals, function(a, b)
local aNum = tonumber(a.Name:match("%d+")) or 0
local bNum = tonumber(b.Name:match("%d+")) or 0
return aNum < bNum
end)
task.wait(5)
local currentIndex = 1
while true do
local currentDecal = decals[currentIndex]
for _, d in ipairs(decals) do
if d ~= currentDecal then
d.Transparency = 1
else
d.Transparency = 0
end
end
warn(currentDecal)
-- Move to next frame
currentIndex += 1
if currentIndex > #decals then
task.wait(1)
currentIndex = 1
end
task.wait(0.1)
end