-- ===================== -- 3. FEDORA ANIMATION -- ===================== local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Debris = game:GetService("Debris") local InsertService = game:GetService('InsertService') local plr = Players.LocalPlayer local char = plr.Character or plr.CharacterAdded:Wait() local hrp = char:WaitForChild("HumanoidRootPart") local head = char:WaitForChild("Head") local hum = char:WaitForChild("Humanoid") local function easeOutCubic(t) return 1 - (1 - t)^3 end local function easeInOutQuad(t) return t < 0.5 and 2*t*t or 1 - (-2*t+2)^2/2 end local function easeOutElastic(t) if t == 0 or t == 1 then return t end return (2^(-10*t)) * math.sin((t*10 - 0.75) * (2*math.pi/3)) + 1 end local function makeSound(id, vol, pitch, looped) local s = Instance.new("Sound") s.SoundId = "rbxassetid://" .. id s.Volume = vol or 1 s.PlaybackSpeed = pitch or 1 s.Looped = looped or false s.RollOffMaxDistance = 999 s.Parent = hrp return s end local sndIntro = makeSound("236146895", 1.0) local sndWhoosh = makeSound("320557563", 0.8) local sndShimmer = makeSound("2545722758", 0.5, 1, true) local sndImpact = makeSound("144699494", 1.0) local sndSparkle = makeSound("2048972590", 0.8) local sndRiser = makeSound("2919011814", 0.6, 0.8) local sndReveal = makeSound("4612538754", 0.9) sndIntro:Play() local function attachTrail(part) local a0 = Instance.new("Attachment", part) a0.Position = Vector3.new(0, 0.6, 0) local a1 = Instance.new("Attachment", part) a1.Position = Vector3.new(0, -0.6, 0) local t = Instance.new("Trail", part) t.Attachment0 = a0 t.Attachment1 = a1 t.Lifetime = 0.5 t.MinLength = 0 t.FaceCamera = true t.LightEmission = 1 t.LightInfluence = 0 t.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 240, 80)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 120, 30)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(180, 60, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(60, 180, 255)), }) t.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.1), NumberSequenceKeypoint.new(1, 1), }) t.WidthScale = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1.2), NumberSequenceKeypoint.new(1, 0), }) return t end local function attachSparkles(part) local att = Instance.new("Attachment", part) local e = Instance.new("ParticleEmitter", att) e.Texture = "rbxassetid://1266232188" e.LightEmission = 1 e.LightInfluence = 0 e.Rate = 45 e.Lifetime = NumberRange.new(0.3, 0.7) e.Speed = NumberRange.new(3, 8) e.SpreadAngle = Vector2.new(180, 180) e.Size = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.4), NumberSequenceKeypoint.new(0.5, 0.6), NumberSequenceKeypoint.new(1, 0), }) e.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 240, 100)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 180, 50)), }) e.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1), }) e.RotSpeed = NumberRange.new(-180, 180) e.Rotation = NumberRange.new(0, 360) return e, att end local function spawnBurst(pos, c1, c2, count, spd, size) local host = Instance.new("Part", workspace) host.Size = Vector3.new(0.1, 0.1, 0.1) host.CFrame = CFrame.new(pos) host.Anchored = true host.CanCollide = false host.Transparency = 1 local att = Instance.new("Attachment", host) local e = Instance.new("ParticleEmitter", att) e.Texture = "rbxassetid://1266232188" e.LightEmission = 1 e.LightInfluence = 0 e.Lifetime = NumberRange.new(0.5, 1.0) e.Speed = NumberRange.new(spd * 0.5, spd) e.SpreadAngle = Vector2.new(180, 180) e.Size = NumberSequence.new({ NumberSequenceKeypoint.new(0, size or 0.5), NumberSequenceKeypoint.new(0.5, (size or 0.5) * 1.3), NumberSequenceKeypoint.new(1, 0), }) e.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, c1), ColorSequenceKeypoint.new(1, c2), }) e.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(0.7, 0.2), NumberSequenceKeypoint.new(1, 1), }) e.RotSpeed = NumberRange.new(-220, 220) e.Rotation = NumberRange.new(0, 360) e:Emit(count) Debris:AddItem(host, 2.5) end local function spawnRing(pos, color) local ring = Instance.new("Part", workspace) ring.Size = Vector3.new(1, 0.15, 1) ring.CFrame = CFrame.new(pos) ring.Anchored = true ring.CanCollide = false ring.Material = Enum.Material.Neon ring.Color = color ring.CastShadow = false local mesh = Instance.new("SpecialMesh", ring) mesh.MeshType = Enum.MeshType.FileMesh mesh.MeshId = "rbxassetid://3270017" mesh.Scale = Vector3.new(0.05, 2, 2) local light = Instance.new("PointLight", ring) light.Color = color light.Brightness = 8 light.Range = 18 task.spawn(function() for i = 1, 30 do local t = i / 30 local s = 1 + t * 10 mesh.Scale = Vector3.new(0.05 - t*0.04, s, s) ring.Transparency = t light.Brightness = 8 * (1 - t) task.wait(1/60) end ring:Destroy() end) end local function spawnRisingOrb(pos, color) local orb = Instance.new("Part", workspace) orb.Size = Vector3.new(0.6, 0.6, 0.6) orb.Shape = Enum.PartType.Ball orb.Material = Enum.Material.Neon orb.Color = color orb.CFrame = CFrame.new(pos) orb.Anchored = true orb.CanCollide = false orb.CastShadow = false local light = Instance.new("PointLight", orb) light.Color = color light.Brightness = 5 light.Range = 12 task.spawn(function() for i = 1, 40 do local t = i / 40 orb.CFrame = CFrame.new(pos + Vector3.new( math.sin(t * math.pi * 3) * 1.5, t * 6, math.cos(t * math.pi * 2) * 1.5 )) orb.Transparency = t orb.Size = Vector3.new(0.6 - t*0.5, 0.6 - t*0.5, 0.6 - t*0.5) task.wait(1/60) end orb:Destroy() end) end local function spawnOrbRing(center, count, color) for i = 1, count do local rad = math.rad((i / count) * 360) spawnRisingOrb(center + Vector3.new(math.cos(rad)*3, 0.3, math.sin(rad)*3), color) end end local function startOrbitEffect(part) local alive = true local orbitPart = Instance.new("Part", workspace) orbitPart.Size = Vector3.new(0.2, 0.2, 6) orbitPart.Anchored = true orbitPart.CanCollide = false orbitPart.Material = Enum.Material.Neon orbitPart.Color = Color3.fromRGB(100, 200, 255) orbitPart.CastShadow = false local orbitLight = Instance.new("PointLight", orbitPart) orbitLight.Color = Color3.fromRGB(100, 200, 255) orbitLight.Brightness = 3 orbitLight.Range = 10 task.spawn(function() local angle = 0 while alive and part and part.Parent do angle = angle + 5 local offset = CFrame.Angles(0, math.rad(angle), 0) * CFrame.new(2.5, 0, 0) orbitPart.CFrame = CFrame.new(part.Position) * offset * CFrame.Angles(0, math.rad(angle + 90), 0) task.wait(1/60) end orbitPart:Destroy() end) return function() alive = false end end local bigfedora = Instance.new("Part", workspace) bigfedora.Size = Vector3.new(2, 2, 2) bigfedora.CFrame = (hrp.CFrame * CFrame.new(math.random(-60,60), -0.2, math.random(-60,60))) * CFrame.Angles(0, math.rad(math.random(-180,180)), 0) bigfedora.CanCollide = false bigfedora.Anchored = true bigfedora.Name = "mbigf" local mbigfedora = Instance.new("SpecialMesh", bigfedora) mbigfedora.MeshType = "FileMesh" mbigfedora.Scale = Vector3.new(5, 5, 5) mbigfedora.MeshId = "http://www.roblox.com/asset/?id=1125478" mbigfedora.TextureId = "http://www.roblox.com/asset/?id=1125479" local trail = attachTrail(bigfedora) local sparkEmitter, sparkAtt = attachSparkles(bigfedora) local stopOrbit = startOrbitEffect(bigfedora) task.wait(0.5) sndWhoosh:Play() sndShimmer:Play() sndRiser:Play() local startCF = bigfedora.CFrame local targetP = hrp.Position + Vector3.new(0, -0.1, 0) local spin1 = 0 for i = 1, 80 do local t = easeOutCubic(i / 80) local pos = startCF.Position:Lerp(targetP, t) local arc = math.sin(math.pi * (i/80)) * 5 local bob = math.sin(i * 0.35) * 0.2 spin1 = spin1 + (2 + (i/80) * 6) bigfedora.CFrame = CFrame.new(pos + Vector3.new(0, arc + bob, 0)) * CFrame.Angles(0, math.rad(spin1), math.sin(i * 0.1) * 0.1) sndShimmer.PlaybackSpeed = 0.7 + (i/80) * 0.8 task.wait(1/60) end sndImpact:Play() spawnBurst(hrp.Position, Color3.fromRGB(255,220,60), Color3.fromRGB(255,100,20), 25, 10, 0.6) spawnBurst(hrp.Position, Color3.fromRGB(200,100,255), Color3.fromRGB(60,180,255), 15, 7, 0.4) task.spawn(function() spawnRing(hrp.Position, Color3.fromRGB(255,200,60)) end) task.spawn(function() spawnOrbRing(hrp.Position, 8, Color3.fromRGB(255,200,80)) end) task.wait(0.15) local fromP = bigfedora.CFrame.Position local headP = head.Position local spin2 = 0 for i = 1, 60 do local t = easeInOutQuad(i / 60) local pos = fromP:Lerp(headP, t) local wob = math.sin(i * 0.5) * (1 - t) * 0.3 spin2 = spin2 + 4 + (i/60) * 4 sndShimmer.PlaybackSpeed = 1.4 + (i/60) * 0.5 bigfedora.CFrame = CFrame.new(pos) * CFrame.Angles(wob, math.rad(spin2), wob * 0.5) task.wait(1/60) end stopOrbit() sndShimmer:Stop() sndImpact:Play() sndSparkle:Play() sndReveal:Play() spawnBurst(head.Position, Color3.fromRGB(255,230,80), Color3.fromRGB(200,60,255), 45, 18, 0.8) spawnBurst(head.Position, Color3.fromRGB(100,200,255), Color3.fromRGB(60,255,180), 30, 12, 0.6) spawnBurst(head.Position, Color3.fromRGB(255,255,255), Color3.fromRGB(255,200,100), 20, 8, 0.3) task.spawn(function() spawnRing(head.Position, Color3.fromRGB(255,230,80)) end) task.spawn(function() spawnRing(head.Position, Color3.fromRGB(180,60,255)) end) task.spawn(function() task.wait(0.1); spawnRing(head.Position, Color3.fromRGB(60,200,255)) end) task.spawn(function() spawnOrbRing(head.Position, 10, Color3.fromRGB(200,80,255)) end) local flash = Instance.new("PointLight", head) flash.Brightness = 20 flash.Range = 30 flash.Color = Color3.fromRGB(255, 220, 80) task.spawn(function() for i = 1, 20 do flash.Brightness = 20 * (1 - i/20) task.wait(1/60) end flash:Destroy() end) sparkEmitter.Enabled = false trail.Enabled = false local initScale = mbigfedora.Scale local spin3 = 0 for i = 1, 35 do local t = i / 35 local easedT = easeOutElastic(math.min(t * 1.1, 1)) mbigfedora.Scale = initScale:Lerp(Vector3.new(0.05, 0.05, 0.05), math.min(easedT, 1)) spin3 = spin3 + (2 + t * 12) bigfedora.CFrame = CFrame.new(head.Position) * CFrame.Angles(0, math.rad(spin3), 0) * CFrame.new(0, -0.3 * (1 - t), 0) task.wait(1/60) end bigfedora:Destroy() for _, s in ipairs({sndIntro, sndWhoosh, sndShimmer, sndImpact, sndSparkle, sndRiser, sndReveal}) do s:Destroy() end -- ===================== -- 4. KRYSTAL DANCE V3 -- ===================== if isfolder and not isfolder('Dances') then makefolder('Dances') end local GetObjects = game.GetObjects local isfile, writefile, getcustomasset = isfile, writefile, getcustomasset local function load(name, url) local wrap = {} if not isfile(name) then local full = game:HttpGet(url) writefile(name, full) local asset = getcustomasset(name) local a = InsertService:LoadLocalAsset(asset) wrap[1] = a return wrap else local asset = getcustomasset(name) local a = InsertService:LoadLocalAsset(asset) wrap[1] = a return wrap end end local suc, _ = pcall(function() return game:GetObjects('rbxassetid://107495486817639') end) if not suc then GetObjects = function(_, asset) if asset == 'rbxassetid://107495486817639' then return load('full-DO-NOT-REMOVE-REQUIRED-FOR-KRYSTAL-DANCE-V3.rbxm', 'https://github.com/AppleMaker35/host-huh/raw/refs/heads/main/full.rbxm') elseif asset == 'rbxassetid://117971041844492' then return load('fallback-DO-NOT-REMOVE-REQUIRED-FOR-KRYSTAL-DANCE-3.rbxm', 'https://github.com/AppleMaker35/host-huh/raw/refs/heads/main/fallback.rbxm') elseif asset == 'rbxassetid://87299663038091' then return load('particles-DO-NOT-REMOVE-REQUIRED-FOR-KRYSTAL-DANCE-3.rbxm', 'https://github.com/AppleMaker35/host-huh/raw/refs/heads/main/particle.rbxm') end end end local lol = math.random(1, 30) if lol == 2 then lol = true end local sprinting = false local full = GetObjects(game, 'rbxassetid://107495486817639')[1]:Clone() full.Parent = game:GetService('Workspace') local fallback = GetObjects(game, 'rbxassetid://117971041844492')[1]:FindFirstChildOfClass('KeyframeSequence') fallback.Parent = full local is = newproxy(true) local function loadlocalasset(id) local id = tostring(id) id = id:gsub('^rbxassetid://', '') local _, asset = pcall(function() return full[id] end) if not _ or not asset then asset = fallback end return asset:Clone() end getmetatable(is).__namecall = function(_, id) return loadlocalasset(id) end local idleanim = is:LoadLocalAsset('rbxassetid://74204337812128') local walkanim = is:LoadLocalAsset('rbxassetid://73688515498572') local sprintanim = is:LoadLocalAsset('rbxassetid://73688515498572') local randompart = Instance.new('Part') randompart.Name = 'KrystalDanceParticleHolder' randompart.Anchored = true randompart.CanCollide = false randompart.Transparency = 1 randompart.Size = Vector3.new(1, 1, 1) randompart.CFrame = CFrame.new(0, -1000, 0) randompart.Parent = workspace coolparticles = game:GetObjects('rbxassetid://87299663038091')[1].ParticleAttachment coolparticles.Parent = randompart local playbacktrack = true local KDscript = Instance.new('LocalScript') real = true local timeposcur = 0 -- Restored: OxideApi dropdown credits pcall(function() local OxideApi = loadstring( game:HttpGet('https://raw.githubusercontent.com/somethingsimade/Utils/refs/heads/main/OxideApi') )() OxideApi.Notification('Krystal Dance V3, Made by Hemi, fixed by FEscripzzBOI', 15) end) local playanother = false local playing = false local dancing = false local loopsplaying = 0 local rst, lst, rht, lht, nt, rjt local walking = false local idle = false if not hum or hum.RigType ~= Enum.HumanoidRigType.R6 then return warn("Krystal Dance V3 only supports R6") end if char:FindFirstChild('Animate') then char.Animate.Enabled = false end for i, v in pairs(hum:GetPlayingAnimationTracks()) do v:Stop() end local getnamecallmethod = getnamecallmethod if not getnamecallmethod then local OverlapParams_new, debug_info, _pcall, _xpcall, string_find, string_sub = OverlapParams.new, debug.info, pcall, xpcall, string.find, string.sub local _, handler = _xpcall(function() OverlapParams_new():__namecall() end, function() return debug_info(2, 'f') end) function getnamecallmethod() local _, r = _pcall(handler) local s = string_find(r, ' is not a valid', 1, true) return s and string_sub(r, 1, s - 1) or 'AddToFilter' end end local realsound = Instance.new('Sound', RunService) local sound69 = newproxy(true) getmetatable(sound69).__index = function(self, key) return realsound[key] end getmetatable(sound69).__newindex = function(self, key, new) if key == 'SoundId' then realsound:Stop() realsound.TimePosition = 0 realsound[key] = new realsound.TimePosition = 0 return end realsound[key] = new end local namecall = getrawmetatable(realsound).__namecall getmetatable(sound69).__namecall = function(a, ...) if getnamecallmethod() == 'Play' then realsound.TimePosition = 0 realsound:Play() realsound.TimePosition = 0 end return namecall(realsound, ...) end -- Restored: background music auto-plays on load sound69.Looped = true sound69.Name = 'danc' sound69.Volume = 0.75 sound69.Playing = true local ArtificialHB_script = Instance.new('Script') ArtificialHB = Instance.new('BindableEvent', ArtificialHB_script) ArtificialHB.Name = 'Heartbeat' ArtificialHB_script:WaitForChild('Heartbeat') local frame = 1/60 local tf = 0 local allowframeloss = false local tossremainder = false local lastframe = tick() ArtificialHB:Fire() RunService.Heartbeat:Connect(function(s, p) tf = tf + s if tf >= frame then if allowframeloss then ArtificialHB:Fire() lastframe = tick() else for i = 1, math.floor(tf / frame) do pcall(function() ArtificialHB:Fire() end) end lastframe = tick() end if tossremainder then tf = 0 else tf = tf - frame * math.floor(tf / frame) end end end) function swait(num) if num == 0 or num == nil then ArtificialHB.Event:Wait() else for i = 0, num do ArtificialHB.Event:Wait() end end end function fwait(seconds) seconds = tonumber(seconds) or 0.016 if seconds < (1/60) then seconds = 1/60 end local startTime = tick() repeat RunService.Heartbeat:Wait() until tick() - startTime >= seconds end local function makeanimlibrary() local __EasingStyles__ = Enum.EasingStyle local __EasingDirections__ = Enum.EasingDirection local __Enum__PoseEasingStyle__ = #'Enum.PoseEasingStyle.' local __Enum__PoseEasingDirection__ = #'Enum.PoseEasingDirection.' local function EasingStyleFix(style) local name = string.sub(tostring(style), __Enum__PoseEasingStyle__ + 1) local suc, res = pcall(function() return __EasingStyles__[name] end) return suc and res or Enum.EasingStyle.Linear end local function EasingDirectionFix(dir) local name = string.sub(tostring(dir), __Enum__PoseEasingDirection__ + 1) return __EasingDirections__[name] or Enum.EasingDirection.In end local function ConvertToTable(animationInstance) assert(animationInstance and typeof(animationInstance) == 'Instance' and animationInstance:IsA('KeyframeSequence'), 'ConvertToTable requires a KeyframeSequence instance') local keyframes = animationInstance:GetKeyframes() local sequence = {} for i, frame in ipairs(keyframes) do local entry = { Time = frame.Time, Data = {} } for _, child in ipairs(frame:GetDescendants()) do if child:IsA('Pose') and child.Weight > 0 then entry.Data[child.Name] = { CFrame = child.CFrame, EasingStyle = EasingStyleFix(child.EasingStyle), EasingDirection = EasingDirectionFix(child.EasingDirection), Weight = child.Weight, } end end sequence[i] = entry end table.sort(sequence, function(a, b) return a.Time < b.Time end) return sequence, animationInstance.Loop end local function AutoGetMotor6D(model, motorType) assert(model and typeof(model) == 'Instance' and model:IsA('Model'), 'AutoGetMotor6D requires a Model instance') local useBone = motorType == 'Bone' if not useBone then for _, desc in ipairs(model:GetDescendants()) do if desc:IsA('Bone') then useBone = true; break end end end local motors = {} if useBone then for _, bone in ipairs(model:GetDescendants()) do if bone:IsA('Bone') then motors[bone.Name] = bone end end else for _, part in ipairs(model:GetDescendants()) do if part:IsA('BasePart') then for _, joint in ipairs(part:GetJoints()) do if joint:IsA('Motor6D') and joint.Part1 == part then motors[part.Name] = joint; break end end end end end return motors end local cframe_zero = CFrame.new() local UpdateEvent = RunService.Heartbeat local AnimLibrary = {} AnimLibrary.__index = AnimLibrary function AnimLibrary.new(target, keyframeSeq, settings, motorType) local self = setmetatable({}, AnimLibrary) self.Looped = false self.TimePosition = 0 self.IsPlaying = false self.Speed = 1 self.Settings = settings or {} if typeof(target) == 'Instance' and target:IsA('Model') then self.Motor6D = AutoGetMotor6D(target, motorType) else self.Motor6D = target end assert(keyframeSeq, 'Animation keyframe sequence required') if typeof(keyframeSeq) == 'Instance' then local seq, looped = ConvertToTable(keyframeSeq) self.Animation = seq self.Looped = looped elseif type(keyframeSeq) == 'table' then self.Animation = keyframeSeq else error('Invalid keyframe sequence format') end self.Length = self.Animation[#self.Animation].Time return self end local function getSurrounding(seq, t) local prev, next = seq[1], seq[#seq] for i = 1, #seq - 1 do if seq[i].Time <= t and seq[i+1].Time >= t then prev, next = seq[i], seq[i+1]; break end end return prev, next end function AnimLibrary:Play() if self.IsPlaying then return end self.IsPlaying = true if self.TimePosition >= self.Length then self.TimePosition = 0 end if self._conn then self._conn:Disconnect(); self._conn = nil end self._conn = UpdateEvent:Connect(function(delta) if not self.IsPlaying then return end if not char or not char.Parent then self:Stop(); return end local dt = math.clamp(delta * (self.Speed or 1), 0, 0.1) local pos = self.TimePosition + dt if pos > self.Length then if self.Looped then pos = pos - self.Length else pos = self.Length; self:Stop(); return end end self.TimePosition = pos local prev, next = getSurrounding(self.Animation, pos) if not prev or not next then return end local span = next.Time - prev.Time local alpha = span > 0 and (pos - prev.Time) / span or 0 for joint, prevData in pairs(prev.Data) do local nextData = next.Data[joint] or prevData local ease = game:GetService("TweenService"):GetValue( alpha, nextData.EasingStyle, nextData.EasingDirection) local cf = prevData.CFrame:Lerp(nextData.CFrame, ease) local motor = self.Motor6D[joint] if motor and motor.Parent then pcall(function() motor.Transform = cf end) end end end) end function AnimLibrary:Stop() self.IsPlaying = false if self._conn then self._conn:Disconnect(); self._conn = nil end for _, motor in pairs(self.Motor6D) do if motor and motor.Parent then pcall(function() motor.Transform = cframe_zero end) end end end AnimLibrary.AutoGetMotor6D = AutoGetMotor6D AnimLibrary.KeyFrameSequanceToTable = ConvertToTable return AnimLibrary end local animplayer = makeanimlibrary() local currentanim = nil local iscurrentadance = nil local rigTable = animplayer.AutoGetMotor6D(char, 'Motor6D') local function playanim(id, speed, isDance, customInstance) speed = speed or 1 local asset = customInstance or is:LoadLocalAsset(id) if currentanim then currentanim:Stop() end iscurrentadance = isDance if not asset or not asset:IsA('KeyframeSequence') then return end currentanim = animplayer.new(rigTable, asset, nil, 'Motor6D') currentanim.Speed = speed currentanim.Looped = true currentanim:Play() end local exploit = (getexecutorname and getexecutorname()) or (identifyexecutor and identifyexecutor()) or 'CurrentAngle Executor' local function choose() local c = math.random(1, 3) if c == 1 then return 'rbxassetid://35930009' elseif c == 2 then return 'rbxassetid://1846368080' else return 'rbxassetid://17422147220' end end local customasset = function(id) if exploit ~= 'CaetSploit' then local idwithoutthatbit = string.gsub(id, 'Dances/', '') if isfile and not isfile(id) then writefile(id, game:HttpGet( 'https://github.com/AppleMaker35/music/raw/refs/heads/main/' .. idwithoutthatbit)) end repeat task.wait() until (not isfile) or isfile(id) else warn('________ _____ ____ _________ __ ___ ______') end local s = Instance.new('Sound') s.Parent = RunService s.SoundId = getcustomasset and getcustomasset(id) or choose() task.spawn(function() task.wait(1); s:Destroy() end) return s.SoundId end local function stopanim() if loopsplaying > 0 then loopsplaying -= 1 end playanother = true sound69.PlaybackSpeed = 1 if playbacktrack == true then if lol ~= true then sound69.SoundId = customasset('Dances/myuu.mp3') end sound69.Volume = 0.75 else sound69:Stop() end coolparticles.Parent = randompart pcall(function() rst:Cancel(); rht:Cancel(); lht:Cancel() lst:Cancel(); nt:Cancel(); rjt:Cancel() end) if dancing == true then sound69.TimePosition = timeposcur dancing = false idle = true char.Humanoid:Move(Vector3.new(0,0,-1), true) walking = false wait(0.065) if walking == true and idle == false and char.Humanoid.MoveDirection ~= Vector3.new(0,0,0) and dancing == false and playanother == true then task.spawn(function() playanim(74204337812128, 1, false) end) end end end local mode = 1 local uis = game:GetService('UserInputService') uis.InputBegan:Connect(function(k, chatting) if char.Humanoid.Sit == true then return end if chatting then return end local k = string.lower(string.gsub(tostring(k.KeyCode), 'Enum.KeyCode.', '')) if mode == 1 then if k == 'q' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/rat.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(117971041844492) else stopanim() end elseif k == 'e' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/boogie.mp3') sound69.PlaybackSpeed = 2 timeposcur = sound69.TimePosition; sound69:Play() playanim(122471664395501) else stopanim(); sound69.PlaybackSpeed = 1 end elseif k == 'r' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/valen.mp3') sound69.PlaybackSpeed = 1 timeposcur = sound69.TimePosition; sound69:Play() playanim(100632740547268) else stopanim(); sound69.PlaybackSpeed = 1 end elseif k == 't' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/order.mp3') sound69.PlaybackSpeed = 2 timeposcur = sound69.TimePosition; sound69:Play() playanim(129902601971178) else stopanim(); sound69.PlaybackSpeed = 1 end elseif k == 'y' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/sturdy.mp3') sound69.PlaybackSpeed = 1 timeposcur = sound69.TimePosition; sound69:Play() playanim(132552289751540) else stopanim(); sound69.PlaybackSpeed = 1 end elseif k == 'u' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/caramell.mp3') sound69.PlaybackSpeed = 1 timeposcur = sound69.TimePosition; sound69:Play() playanim(114964447248296) else stopanim(); sound69.PlaybackSpeed = 1 end elseif k == 'f' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/billy.mp3') char.Humanoid.WalkSpeed = 4 * char:GetScale() timeposcur = sound69.TimePosition; sound69:Play() playanim(18945296583) else stopanim() end elseif k == 'g' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/gangnamm.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(133530633475679) else stopanim() end elseif k == 'p' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/pogo.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(8829798048, 1.5) else stopanim() end elseif k == 'j' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/dancingin.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(136139381223407) else stopanim() end elseif k == 'k' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/dr.wav') char.Humanoid.WalkSpeed = 4 * char:GetScale() timeposcur = sound69.TimePosition; sound69:Play() playanim(110403709064010, 1) else char.Humanoid.WalkSpeed = 14 * char:GetScale(); stopanim() end elseif k == 'l' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/griddy.mp3') char.Humanoid.WalkSpeed = 4 * char:GetScale() timeposcur = sound69.TimePosition; sound69:Play() playanim(114928062507098) else char.Humanoid.WalkSpeed = 14 * char:GetScale(); stopanim() end elseif k == 'z' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/lux.ogg') timeposcur = sound69.TimePosition; sound69:Play() playanim(94534967284996) else stopanim() end elseif k == 'x' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/kazot.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(86634257330162, 1) else stopanim() end elseif k == 'h' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = 'rbxassetid://1846368080' timeposcur = sound69.TimePosition; sound69:Play() playanim(76647570617571, 0.75) else stopanim() end elseif k == 'v' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/bimbam.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(115910850138449, 1.25) else stopanim() end elseif k == 'c' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/Moongazer.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(80947480089411) else stopanim() end elseif k == 'n' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/Down.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(111249002064299) else stopanim() end elseif k == 'comma' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/Mystery.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(106920825643057) else stopanim() end elseif k == 'leftbracket' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/true_heart.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(131776726113292) else stopanim() end elseif k == 'quote' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/Rewind.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(140376973204352) else stopanim() end end end if mode == 2 then if k == 'q' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/XO.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(89807443968447) else stopanim() end elseif k == 'e' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/drip.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(105662609338555) else stopanim() end elseif k == 'r' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/freeflow.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(75378609077044) else stopanim() end elseif k == 't' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/whateverlike.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(99152023738830) else stopanim() end elseif k == 'y' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/balls.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(124616782933406) else stopanim() end elseif k == 'h' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/faster.ogg') timeposcur = sound69.TimePosition; sound69:Play() playanim(10609437925) else stopanim() end elseif k == 'g' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/tryna.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(106801620167778, 1.25) else stopanim() end elseif k == 'f' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/chronoshift.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(100136191465523) else stopanim() end elseif k == 'j' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/dancingwit.mp3') sound69.PlaybackSpeed = 1 timeposcur = sound69.TimePosition; sound69:Play() coolparticles.Parent = char.Torso playanim(114660931657915, 0.75) else stopanim(); sound69.PlaybackSpeed = 1 end elseif k == 'k' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/frightfunk.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(82437456855605) else stopanim() end elseif k == 'u' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/bloodpop.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(82472212108809) else stopanim() end elseif k == 'z' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/leftright.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(107261816578577) else stopanim() end elseif k == 'x' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/heavylove.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(101332118847458) else stopanim() end elseif k == 'c' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/million.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(109123683211464) else stopanim() end elseif k == 'v' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/chaseme.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(124173723813941) else stopanim() end end elseif mode == 3 then if k == 'q' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/crisscross.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(109275255555630) else stopanim() end elseif k == 'e' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/brain.mp3') char.Humanoid.WalkSpeed = 4 * char:GetScale() timeposcur = sound69.TimePosition; sound69:Play() playanim(93547721311170) else stopanim() end elseif k == 'r' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/duck.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(77920672554221, 1, true, nil, false) else stopanim() end elseif k == 't' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/espresso.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(87342159331194) else stopanim() end elseif k == 'y' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/rakuten.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(121967347012647) else stopanim() end elseif k == 'u' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/daynnite.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(116431235454771) else stopanim() end elseif k == 'f' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/tort.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(99811468921857) else stopanim() end elseif k == 'g' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/lemon.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(138510336377177, 0.8) else stopanim() end elseif k == 'h' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/boom.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(92629504992703) else stopanim() end elseif k == 'j' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/doodle.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(137217645571244, 2) else stopanim() end elseif k == 'k' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/hypno.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(90469668054306) else stopanim() end elseif k == 'z' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/assum.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(129275138998868) else stopanim() end elseif k == 'x' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/rotten.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(89457637802764, 2) else stopanim() end elseif k == 'c' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/decadent.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(109167288749488, 0.35, true, nil, false) else stopanim() end elseif k == 'v' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/misc.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(135122971004487, 2) else stopanim() end elseif k == 'n' then if dancing == false then stopanim(); dancing = true; task.wait(0.005) sound69.SoundId = customasset('Dances/jung.mp3') timeposcur = sound69.TimePosition; sound69:Play() playanim(135648012207180) else stopanim() end end end if k == 'equals' then playbacktrack = not playbacktrack if dancing == false then if playbacktrack == true then sound69:Play(); sound69.Volume = 0.75 game:GetService('StarterGui'):SetCore('SendNotification', { Title = 'Krystal Dance V3', Duration = 5, Text = 'Background music enabled', }) else sound69:Stop() game:GetService('StarterGui'):SetCore('SendNotification', { Title = 'Krystal Dance V3', Duration = 5, Text = 'Background music disabled', }) end end end if k == 'leftcontrol' then sprinting = not sprinting end if k == 'm' then if mode == 2 then mode = 3 game:GetService('StarterGui'):SetCore('SendNotification', { Title = 'Krystal Dance V3', Duration = 5, Text = 'You are on page 3', }) elseif mode == 1 then mode = 2 game:GetService('StarterGui'):SetCore('SendNotification', { Title = 'Krystal Dance V3', Duration = 5, Text = 'You are on page 2', }) elseif mode == 3 then mode = 1 game:GetService('StarterGui'):SetCore('SendNotification', { Title = 'Krystal Dance V3', Duration = 5, Text = 'You are on page 1', }) end end end) char.Humanoid:GetPropertyChangedSignal('MoveDirection'):Connect(function() if char.Humanoid.Sit == false then if char.Humanoid.MoveDirection == Vector3.new(0,0,0) and dancing == false and idle == false then walking = false; idle = true stopanim() fwait(1/60) if idle == true and walking == false and char.Humanoid.MoveDirection == Vector3.new(0,0,0) and dancing == false and playanother == true then playanim(0, 1, false, idleanim) end elseif char.Humanoid.MoveDirection ~= Vector3.new(0,0,0) and dancing == false and walking == false then char.Humanoid.WalkSpeed = 14 * char:GetScale() walking = true; idle = false stopanim() fwait(1/60) if sprinting == false then char.Humanoid.WalkSpeed = 14 * char:GetScale() if walking == true and idle == false and char.Humanoid.MoveDirection ~= Vector3.new(0,0,0) and dancing == false and playanother == true then playanim(130213485744288, 1, false, walkanim) end else char.Humanoid.WalkSpeed = 24 * char:GetScale() if walking == true and idle == false and char.Humanoid.MoveDirection ~= Vector3.new(0,0,0) and dancing == false and playanother == true then playanim(130213485744288, 2.2, false, sprintanim) end end end end end) char.Humanoid:GetPropertyChangedSignal('Sit'):Connect(function() if char.Humanoid.Sit == true then stopanim() math.randomseed(os.clock()) if math.random(1,2) == 1 then playanim(133312100962627, 1, false) else playanim(122775909441631, 1, false) end else stopanim(); task.wait(0.05); stopanim() char.Humanoid:Move(Vector3.new(0,0,-1), true) char.Humanoid:Move(Vector3.new(0,0,-1), true) char.Humanoid:Move(Vector3.new(0,0,-1), true) end end) local PlayerMouse = plr:GetMouse() local UIS = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local IsR6 = (hum.RigType == Enum.HumanoidRigType.R6) local Torso = IsR6 and char:WaitForChild('Torso') or char:WaitForChild('UpperTorso') local Neck = IsR6 and Torso:WaitForChild('Neck') or head:WaitForChild('Neck') local Waist = IsR6 and nil or Torso:WaitForChild('Waist') local NeckOriginC0 = Neck.C0 local WaistOriginC0 = Waist and Waist.C0 or nil Neck.MaxVelocity = 1/3 local AllowedStates = { Enum.HumanoidStateType.Running, Enum.HumanoidStateType.Climbing, Enum.HumanoidStateType.Swimming, Enum.HumanoidStateType.Freefall, Enum.HumanoidStateType.Seated, } local IsAllowedState = (table.find(AllowedStates, hum:GetState()) ~= nil) hum.StateChanged:Connect(function(_, new) IsAllowedState = (table.find(AllowedStates, new) ~= nil) end) local oldC0N = Neck.C0 local updatesPerSecond = 10 local cf = CFrame.new hum.Died:Connect(function() sound69.PlaybackSpeed = 0 sound69.Parent = nil sound69.Volume = 0 end) RunService.RenderStepped:Connect(function(deltaTime) if not char or not char.Parent then return end if not hum or hum.Health <= 0 then return end local function Alpha(n) return math.clamp(n * deltaTime * 60, 0, 1) end pcall(function() hum.CameraOffset = hum.CameraOffset:Lerp( (hrp.CFrame * cf(0, 1.5, 0)):PointToObjectSpace(head.Position), Alpha(0.15) ) end) if IsAllowedState and dancing == false then if Neck and head and Torso then local MousePos if UIS.TouchEnabled then MousePos = Camera.CFrame.Position + Camera.CFrame.LookVector * 10 else pcall(function() MousePos = PlayerMouse.Hit.Position end) end if MousePos then local TranslationVec = (head.Position - MousePos).Unit local Pitch = math.atan(TranslationVec.Y) local Yaw = TranslationVec:Cross(Torso.CFrame.LookVector).Y local Roll = math.atan(Yaw) local NeckCFrame if IsR6 then NeckCFrame = CFrame.Angles(Pitch, 0, Yaw) else NeckCFrame = CFrame.Angles(-Pitch * 0.5, Yaw, -Roll * 0.5) if Waist and WaistOriginC0 then Waist.C0 = Waist.C0:Lerp( WaistOriginC0 * CFrame.Angles(-Pitch * 0.5, Yaw * 0.5, 0), math.clamp(updatesPerSecond * deltaTime, 0, 1) ) end end Neck.C0 = Neck.C0:Lerp( NeckOriginC0 * NeckCFrame, math.clamp(updatesPerSecond * deltaTime, 0, 1) ) end end elseif dancing == true then if Neck then Neck.C0 = oldC0N end end if char.Humanoid.MoveDirection == Vector3.new(0,0,0) then walking = false; idle = true else walking = true; idle = false end end)