local player = game.Players.LocalPlayer local playerCamera = workspace.CurrentCamera local ScrGui=Instance.new("ScreenGui", game.CoreGui) local T=Instance.new("TextLabel", ScrGui) T.BackgroundTransparency=1 T.Size=UDim2.new(1,0,0.1,0) T.Position=UDim2.new(0,0,0.7,0) T.TextColor3=Color3.new(1,1,1) T.Text="" T.TextScaled=true T.RichText=true -- Function to set Lyrics function Lyrics(t, c) if c==nil then c=Color3.new(1,1,1) end if t==nil then t="" end T.TextColor3=c T.Text=t end -- Function to download music from URL and save it to a file function saveMusicFromUrl(url, fileName) local success, response = pcall(function() -- Download the MP3 file as binary data return game:HttpGet(url) end) if success then -- Write the binary data to a file writefile("music/SFTG/"..fileName, response) print("Music saved successfully to " .. fileName) else warn("Failed to download music: " .. response) end end -- Function to download and display the image in the sky function displayImageInSky(url, fileName) local success, response = pcall(function() -- Download the PNG file as binary data return game:HttpGet(url) end) if success then -- Save the image to a file writefile(fileName, response) print("Image saved successfully to " .. fileName) -- Create a new part to display the image in the sky local imagePart = Instance.new("Part") imagePart.Size = Vector3.new(25, 25, 1) -- Set size of the image part imagePart.Position = playerCamera.CFrame.Position + Vector3.new(0, 50, -100) -- Set initial position in front of the camera imagePart.Anchored = true imagePart.CanCollide = false imagePart.Parent = workspace -- Create a Decal to apply the image to the part local decal = Instance.new("Decal") local decalAsset if getsynasset then decalAsset = getsynasset("FITHsun.png") elseif getcustomasset then decalAsset = getcustomasset("FITHsun.png") else warn("Neither getsynasset nor getcustomasset is available in this executor.") end decal.Texture = decalAsset -- Texture from the saved PNG file decal.Parent = imagePart imagePart.Transparency=1 -- Update the part to always face the camera game:GetService("RunService").RenderStepped:Connect(function() if imagePart.Name~="Active" then imagePart.CFrame = CFrame.lookAt(imagePart.Position, playerCamera.CFrame.Position) end end) return imagePart else warn("Failed to download image: " .. response) return nil end end -- Play the music as soon as the animation starts function playMusic(fileName) local sound = Instance.new("Sound") local soundAsset if getsynasset then soundAsset = getsynasset("music/SFTG/".. fileName) elseif getcustomasset then soundAsset = getcustomasset("music/SFTG/".. fileName) else warn("Neither getsynasset nor getcustomasset is available in this executor.") end sound.SoundId = soundAsset -- Use the local file you just saved sound.Looped = false -- Set music to loop if desired sound.Parent = player.Character or player.CharacterAdded:Wait() -- Attach sound to the character sound:Play() -- Start playing the music print("Music is now playing...") end -- Save and play the music from GitHub local musicUrl = "https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/music.mp3" local musicFileName = "music.mp3" saveMusicFromUrl(musicUrl, musicFileName) -- Display the image in the sky, always in camera view local imageUrl = "https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITHsun.png" local imageFileName = "FITHsun.png" -- Start the music once everything is set up playMusic(musicFileName) local playerchr = game.Players.LocalPlayer.Character or game.Players.LocalPlayer.CharacterAdded:Wait() local isR6 if playerchr:FindFirstChild("Torso") then isR6 = true else isR6 = false end function changeDecalFile(url, path, part) local success, response = pcall(function() -- Download the PNG file as binary data return game:HttpGet(url) end) if success then -- Save the image to a file writefile(path, response) print("Image saved successfully to " .. path) local decalAsset if getsynasset then decalAsset = getsynasset(path) elseif getcustomasset then decalAsset = getcustomasset(path) else warn("Neither getsynasset nor getcustomasset is available in this executor.") end part.Decal.Texture=decalAsset end end -- Original position and rotation for each body part (these will stay the same) local lArmOG local rArmOG local headOG local lLegOG local rLegOG local rootOG -- Function to store original positions and rotations of character's body parts function getOGposandAnchorParts(a) local root = playerchr:FindFirstChild("HumanoidRootPart") local lArm = isR6 and playerchr["Left Arm"] or playerchr.LeftUpperArm local rArm = isR6 and playerchr["Right Arm"] or playerchr.RightUpperArm local head = playerchr:FindFirstChild("Head") local lLeg = isR6 and playerchr["Left Leg"] or playerchr.LeftUpperLeg local rLeg = isR6 and playerchr["Right Leg"] or playerchr.RightUpperLeg lArm.Anchored=a rArm.Anchored=a lLeg.Anchored=a head.Anchored=a rLeg.Anchored=a -- Store position and rotation of each part (these will stay constant) rootOG = {Position = root.Position, Rotation = root.CFrame.Rotation} lArmOG = {Position = lArm.Position, Rotation = lArm.CFrame.Rotation} rArmOG = {Position = rArm.Position, Rotation = rArm.CFrame.Rotation} headOG = {Position = head.Position, Rotation = head.CFrame.Rotation} lLegOG = {Position = lLeg.Position, Rotation = lLeg.CFrame.Rotation} rLegOG = {Position = rLeg.Position, Rotation = rLeg.CFrame.Rotation} end -- Call the function to store initial positions and rotations getOGposandAnchorParts(true) -- Function to move a body part with position and rotation offsets (but keep original position constant) function moveBodyPart(partName, posOffset, rotOffset) partName = string.lower(partName) -- Convert to lowercase for consistency local part, originalPos, originalRot -- Determine which part to move and retrieve its original position and rotation if partName == "b" then part = playerchr:FindFirstChild("HumanoidRootPart") originalPos = rootOG.Position originalRot = rootOG.Rotation elseif partName == "la" then part = isR6 and playerchr["Left Arm"] or playerchr.LeftUpperArm originalPos = lArmOG.Position originalRot = lArmOG.Rotation elseif partName == "ra" then part = isR6 and playerchr["Right Arm"] or playerchr.RightUpperArm originalPos = rArmOG.Position originalRot = rArmOG.Rotation elseif partName == "ll" then part = isR6 and playerchr["Left Leg"] or playerchr.LeftUpperLeg originalPos = lLegOG.Position originalRot = lLegOG.Rotation elseif partName == "rl" then part = isR6 and playerchr["Right Leg"] or playerchr.RightUpperLeg originalPos = rLegOG.Position originalRot = rLegOG.Rotation elseif partName == "h" then part = playerchr:FindFirstChild("Head") originalPos = headOG.Position originalRot = headOG.Rotation else warn("Invalid part name: " .. partName) return end -- Apply position and rotation offsets while keeping original position constant if part then -- Calculate new CFrame with position and rotation offsets, original position remains fixed part.CFrame = CFrame.new(originalPos + posOffset) * CFrame.Angles(rotOffset.X, rotOffset.Y, rotOffset.Z) else warn("Failed to find part for: " .. partName) end end --moveBodyPart("h", Vector3.new(0, -0.1, 0), Vector3.new(-2, 0, 0)) --moveBodyPart("la", Vector3.new(0, -1, 0), Vector3.new(0, 0, 0)) --moveBodyPart("ra", Vector3.new(0, -1, 0), Vector3.new(0, 0, 0)) wait(4) Lyrics("I..") wait(1.5) Lyrics("I Hear") wait(0.2) Lyrics("I Hear the") wait(0.2) Lyrics("I Hear the Symph-") wait(0.1) Lyrics("I Hear the Symphony") wait(0.1) Lyrics("I Hear the Symphony of-") wait(0.45) Lyrics("I Hear the Symphony of the") wait(0.5) Lyrics("DEAD,", Color3.new(1,0.75,0.75)) wait(0.7) Lyrics("DEAD, call-") wait(0.2) Lyrics("DEAD, calling out-") wait(0.4) Lyrics("DEAD, calling out upon") wait(0.6) Lyrics("DEAD, calling out upon YOUR") wait(0.5) Lyrics("DEAD, calling out upon YOUR DEATH-") wait(0.3) Lyrics("DEAD, calling out upon YOUR DEATHBED") wait(0.7) Lyrics("Rising") wait(0.6) Lyrics("Rising from") wait(0.5) Lyrics("Rising from the") wait(0.3) Lyrics("Rising from the AFTER-") wait(0.2) Lyrics("Rising from the AFTERLIFE,") wait(0.6) Lyrics("All") wait(0.3) Lyrics("All You're") wait(0.3) Lyrics("All you're do-") wait(0.2) Lyrics("All you're doing") wait(0.2) Lyrics("is") wait(0.6) Lyrics("WASTING") wait(0.8) Lyrics("WASTING MY") wait(0.7) Lyrics("TIME!", Color3.new(1,0,0)) --moveBodyPart("h", Vector3.new(0, 0.1, 0), Vector3.new(2.5, 0, 0)) --moveBodyPart("la", Vector3.new(1, 1, 0), Vector3.new(0, 0, 0)) --moveBodyPart("ra", Vector3.new(-1, 1, 0), Vector3.new(0, 0, 0)) local normal=displayImageInSky(imageUrl, imageFileName) wait(0.6) Lyrics("EVERY-") wait(0.3) Lyrics("EVERY FACE,") wait(1) Lyrics("EVERY FACE, EVERY-") wait(0.1) Lyrics("EVERY FACE, EVERY LIFE.") wait(1) Lyrics("ALL") wait(0.5) Lyrics("ALL SLOWLY") wait(0.6) Lyrics("LO-") wait(0.4) Lyrics("LOBO-", Color3.new(1,0.75,0.75)) wait(0.4) Lyrics("LOBOTO-", Color3.new(1,0.25,0.25)) wait(0.3) Lyrics("LOBOTOMIZED!", Color3.new(1,0,0)) normal.Name="Active" -- example to change image for normal: changeDecalFile(url, path, normal) normal.Position+=Vector3.new(0,-10,-10) changeDecalFile("https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITHf1.png", "FITHf1.png", normal) wait(0.2) normal.Position+=Vector3.new(0,-20,-40) changeDecalFile("https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITHf2.png", "FITHf2.png", normal) local musicUrl = "https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITH.mp3" local musicFileName = "FITH.mp3" saveMusicFromUrl(musicUrl, musicFileName) playMusic(musicFileName) wait(0.3) normal.Position+=Vector3.new(0,0,-20) changeDecalFile("https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITHf3.png", "FITHf3.png", normal) wait(0.3) normal.Position+=Vector3.new(0,0,-10) changeDecalFile("https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITHf4.png", "FITHf4.png", normal) wait(0.3) normal.Position+=Vector3.new(0,0,0) changeDecalFile("https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITHf5.png", "FITHf5.png", normal) wait(0.3) normal.Position+=Vector3.new(0,0,0) changeDecalFile("https://raw.githubusercontent.com/softbf395/CFRAMEANIMS-roblox/main/SFTG/FITHf6.png", "FITHf6.png", normal) wait(0.3) normal:Destroy() ScrGui:Destroy() local ScrGui=Instance.new("ScreenGui", game.Players.LocalPlayer.PlayerGui) ScrGui.IgnoreGuiInset = true local f=Instance.new("Frame", ScrGui) f.BackgroundColor3=Color3.new(1,1,1) f.Size=UDim2.new(1,0,1,0) wait(2) game:GetService("TweenService"):Create(f, TweenInfo.new(10), {BackgroundTransparency=1}):Play() wait(10) ScrGui:Destroy() getOGposandAnchorParts(false)