I have a couple weapons with more than one part, and I am making a game that is like retro shooters, where the guns float and rotate (I already have the floating down.) This script only works for meshed weapons, but not weapons with more than one part.
repeat script.Parent.CFrame = script.Parent.CFrame * CFrame.fromEulerAnglesXYZ(0,0,0.04) wait(0) until script.Parent.Parent.Parent.Name == "Backpack" or script.Parent.Parent.Parent.className == "Model"