-- CAPY MENU MOD -- TWO-PAGE VERSION + INVISIBLE MODE V3 FIX -- FLY HOLD V7 + FLY SUPER V7 -- R6 FULL-BODY DOWNWARD POSE; R15 KEEPS TRANSFORM POSE -- FULL REPLACEMENT -- LocalScript: StarterPlayer > StarterPlayerScripts local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local function clearTable(tbl) for key in pairs(tbl) do tbl[key] = nil end end -- CLEANUP local oldGui = playerGui:FindFirstChild("CapyMenuMod") if oldGui then oldGui:Destroy() end -- ORIGINAL SETTINGS local originalBrightness = Lighting.Brightness local originalClockTime = Lighting.ClockTime -- SETTINGS local enabled = { HDR = false, Wall = false, Multi = false, FlySuper = false, FlyHold = false, Speed = false, Jump = false, HighJump = false, Boost = false, AutoJump = false, ClickTP = false, BlueTint = false, GreenTint = false, LightV1 = false, LightV2 = false, Helicopter = false, Explosion = false, BunnyHop = false, Fling = false, Invisible = false } local character local humanoid local root local baseSpeed = 16 local baseJump = 50 local baseAutoRotate = true local jumpHeld = false local jumpTouchInput local lastFlyJump = 0 local lastMultiJump = 0 local lastAutoJump = 0 local lastBunnyHop = 0 local lastNoclipUpdate = 0 local boostEnd = 0 local helicopterWasActive = false -- FLY POSE local flyPoseMotors = {} local flyPoseOriginals = {} local flyPoseOriginalC0 = {} local flyPoseActive = false -- FLING SETTINGS local flingStartTime = 0 local flingWasActive = false local flingMotors = {} local flingBaseTransforms = {} local flingConnection -- INVISIBLE SETTINGS local invisibleActive = false local invisibleOriginalTransparency = {} local invisibleDescendantConnection local originalCollision = {} local switchButtons = {} local currentPage = 1 local currentTint = "None" -- GUI local gui = Instance.new("ScreenGui") gui.Name = "CapyMenuMod" gui.ResetOnSpawn = false gui.DisplayOrder = 50 gui.Parent = playerGui local function make(class, props, parent) local obj = Instance.new(class) for key, value in pairs(props) do obj[key] = value end obj.Parent = parent return obj end -- MAIN PANEL local main = make("Frame", { Name = "Main", Size = UDim2.fromOffset(600, 420), Position = UDim2.new(0.5, -300, 0.5, -210), BackgroundColor3 = Color3.fromRGB(19, 25, 38), BorderSizePixel = 0 }, gui) make("UIStroke", { Color = Color3.fromRGB(75, 75, 90), Thickness = 1 }, main) -- HEADER local header = make("Frame", { Size = UDim2.new(1, 0, 0, 48), BackgroundColor3 = Color3.fromRGB(245, 20, 25), BorderSizePixel = 0, Active = true }, main) make("TextLabel", { Size = UDim2.new(1, -60, 1, 0), Position = UDim2.fromOffset(6, 0), BackgroundTransparency = 1, Text = "CAPY - MENU MOD", TextColor3 = Color3.new(1, 1, 1), TextSize = 21, Font = Enum.Font.GothamBold }, header) -- TOP PLUS BUTTON local topPlus = make("TextButton", { Size = UDim2.fromOffset(42, 42), Position = UDim2.new(1, -46, 0, 3), BackgroundTransparency = 1, Text = "+", TextColor3 = Color3.new(1, 1, 1), TextSize = 34, Font = Enum.Font.GothamBold, Visible = false }, header) -- PAGE CONTAINER local pageContainer = make("Frame", { Size = UDim2.new(1, -8, 1, -110), Position = UDim2.fromOffset(4, 52), BackgroundTransparency = 1, ClipsDescendants = true }, main) -- PAGE 1 local page1 = make("ScrollingFrame", { Name = "Page1", Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 4, ScrollBarImageColor3 = Color3.fromRGB(240, 80, 80), CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, Visible = true }, pageContainer) make("UIGridLayout", { CellSize = UDim2.new(0.5, -5, 0, 43), CellPadding = UDim2.fromOffset(5, 5), SortOrder = Enum.SortOrder.LayoutOrder }, page1) -- PAGE 2 local page2 = make("Frame", { Name = "Page2", Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, Visible = false }, pageContainer) local page2Options = make("Frame", { Name = "Page2Options", Size = UDim2.new(1, 0, 1, 0), Position = UDim2.fromOffset(0, 0), BackgroundTransparency = 1 }, page2) make("UIGridLayout", { CellSize = UDim2.new(0.5, -5, 0, 43), CellPadding = UDim2.fromOffset(0, 0), SortOrder = Enum.SortOrder.LayoutOrder }, page2Options) -- TINT EFFECT local tintEffect = Instance.new("ColorCorrectionEffect") tintEffect.Name = "CapyGameTint" tintEffect.Enabled = false tintEffect.TintColor = Color3.new(1, 1, 1) tintEffect.Parent = Lighting local function updateTint() if enabled.BlueTint then currentTint = "Blue" tintEffect.Enabled = true tintEffect.TintColor = Color3.fromRGB(125, 175, 255) elseif enabled.GreenTint then currentTint = "Green" tintEffect.Enabled = true tintEffect.TintColor = Color3.fromRGB(135, 255, 145) else currentTint = "None" tintEffect.Enabled = false tintEffect.TintColor = Color3.new(1, 1, 1) end end -- LIGHT SETTINGS local function updateLighting() if enabled.LightV2 then Lighting.Brightness = 10 elseif enabled.LightV1 then Lighting.Brightness = 6 elseif enabled.HDR then Lighting.Brightness = 3 else Lighting.Brightness = originalBrightness end if enabled.HDR then Lighting.ClockTime = 14 else Lighting.ClockTime = originalClockTime end end -- EXPLOSION EFFECT local function triggerExplosion() if not character or not root or not humanoid then return end local targetHumanoid = humanoid local explosionPosition = root.Position local explosionPart = Instance.new("Part") explosionPart.Name = "CapyExplosionEffect" explosionPart.Shape = Enum.PartType.Ball explosionPart.Size = Vector3.new(1, 1, 1) explosionPart.Position = explosionPosition explosionPart.Anchored = true explosionPart.CanCollide = false explosionPart.CanTouch = false explosionPart.CanQuery = false explosionPart.Material = Enum.Material.Neon explosionPart.Color = Color3.fromRGB(255, 115, 20) explosionPart.Transparency = 0.2 explosionPart.Parent = workspace local tween = TweenService:Create( explosionPart, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Size = Vector3.new(18, 18, 18), Transparency = 1 } ) tween:Play() task.delay(0.15, function() if targetHumanoid and targetHumanoid.Parent then targetHumanoid.Health = 0 end end) task.delay(0.5, function() if explosionPart and explosionPart.Parent then explosionPart:Destroy() end end) end -- SWITCH COLORS local function updateSwitches() for name, parts in pairs(switchButtons) do if enabled[name] then parts.track.BackgroundColor3 = Color3.fromRGB(20, 125, 55) parts.knob.Position = UDim2.new(1, -25, 0.5, -13) parts.knob.BackgroundColor3 = Color3.fromRGB(0, 255, 45) else parts.track.BackgroundColor3 = Color3.fromRGB(105, 35, 43) parts.knob.Position = UDim2.new(0, 0, 0.5, -13) parts.knob.BackgroundColor3 = Color3.fromRGB(255, 25, 30) end end end -- RESTORE FLY POSE V7 local function restoreFlyPose() flyPoseActive = false -- Restore animation transforms. for motor, original in pairs(flyPoseOriginals) do if motor and motor.Parent then motor.Transform = original end end -- Restore the original joint offsets. for motor, original in pairs(flyPoseOriginalC0) do if motor and motor.Parent then motor.C0 = original end end end -- APPLY FULL-BODY FLY POSE V7 (R6 + R15) local function applyFlyPose() if not character or not humanoid then return end flyPoseActive = true -- R6: tilt the torso joint so the torso, arms, and legs follow. -- Clear the animated transforms on these two joints so the -- default R6 animation cannot counteract the downward pose. if humanoid.RigType == Enum.HumanoidRigType.R6 then local rootJoint = flyPoseMotors.RootJoint local rootC0 = rootJoint and flyPoseOriginalC0[rootJoint] if rootJoint and rootJoint.Parent and rootC0 then rootJoint.C0 = rootC0 * CFrame.Angles(math.rad(-65), 0, 0) rootJoint.Transform = CFrame.identity end local neck = flyPoseMotors.Neck local neckC0 = neck and flyPoseOriginalC0[neck] if neck and neck.Parent and neckC0 then neck.C0 = neckC0 * CFrame.Angles(math.rad(-15), 0, 0) neck.Transform = CFrame.identity end return end -- R15: keep the previous Transform-based pose. local bodyRoot = flyPoseMotors.Root or flyPoseMotors.RootJoint if bodyRoot and bodyRoot.Parent then local original = flyPoseOriginals[bodyRoot] if original then bodyRoot.Transform = original * CFrame.Angles(math.rad(-65), 0, 0) end end local waist = flyPoseMotors.Waist if waist and waist.Parent then local original = flyPoseOriginals[waist] if original then waist.Transform = original * CFrame.Angles(math.rad(-25), 0, 0) end end local neck = flyPoseMotors.Neck if neck and neck.Parent then local original = flyPoseOriginals[neck] if original then neck.Transform = original * CFrame.Angles(math.rad(-15), 0, 0) end end end -- INVISIBLE MODE: RESTORE local function restoreInvisible() invisibleActive = false enabled.Invisible = false if invisibleDescendantConnection then invisibleDescendantConnection:Disconnect() invisibleDescendantConnection = nil end for part, oldTransparency in pairs(invisibleOriginalTransparency) do if part and part.Parent then part.LocalTransparencyModifier = oldTransparency end end clearTable(invisibleOriginalTransparency) end -- INVISIBLE MODE: HIDE A PART local function hideInvisiblePart(item) if not invisibleActive then return end if item:IsA("BasePart") then if invisibleOriginalTransparency[item] == nil then invisibleOriginalTransparency[item] = item.LocalTransparencyModifier end item.LocalTransparencyModifier = 1 end end -- INVISIBLE MODE: ACTIVATE local function activateInvisible() if invisibleActive then return end if not character or not humanoid or not root then return end if humanoid.Health <= 0 then return end clearTable(invisibleOriginalTransparency) invisibleActive = true enabled.Invisible = true for _, item in ipairs(character:GetDescendants()) do hideInvisiblePart(item) end invisibleDescendantConnection = character.DescendantAdded:Connect(function(item) hideInvisiblePart(item) end) end -- RESTORE FLING local function restoreFling() for motor, originalTransform in pairs(flingBaseTransforms) do if motor and motor.Parent then motor.Transform = originalTransform end end flingWasActive = false if humanoid then humanoid.AutoRotate = baseAutoRotate end end -- SWITCH CREATOR local function createSwitch(name, label, parent) parent = parent or page1 local row = make("Frame", { Size = UDim2.new(1, -5, 0, 43), BackgroundTransparency = 1 }, parent) make("TextLabel", { Size = UDim2.new(1, -85, 1, 0), Position = UDim2.fromOffset(4, 0), BackgroundTransparency = 1, Text = label, TextColor3 = Color3.fromRGB(245, 245, 250), TextSize = 18, Font = Enum.Font.Gotham, TextXAlignment = Enum.TextXAlignment.Left }, row) local track = make("TextButton", { Size = UDim2.fromOffset(65, 29), Position = UDim2.new(1, -75, 0.5, -14), BackgroundColor3 = Color3.fromRGB(105, 35, 43), BorderSizePixel = 0, Text = "", AutoButtonColor = false }, row) make("UICorner", { CornerRadius = UDim.new(1, 0) }, track) local knob = make("Frame", { Size = UDim2.fromOffset(27, 27), Position = UDim2.new(0, 0, 0.5, -13), BackgroundColor3 = Color3.fromRGB(255, 25, 30), BorderSizePixel = 0, ZIndex = 2 }, track) make("UICorner", { CornerRadius = UDim.new(1, 0) }, knob) switchButtons[name] = { track = track, knob = knob } track.Activated:Connect(function() if name == "Invisible" then if invisibleActive then restoreInvisible() else activateInvisible() end updateSwitches() return end enabled[name] = not enabled[name] if name == "FlySuper" and enabled.FlySuper then enabled.FlyHold = false elseif name == "FlyHold" and enabled.FlyHold then enabled.FlySuper = false end if name == "Helicopter" and enabled.Helicopter then enabled.FlySuper = false enabled.FlyHold = false enabled.Fling = false restoreFlyPose() restoreFling() elseif (name == "FlySuper" or name == "FlyHold") and enabled[name] then enabled.Helicopter = false enabled.Fling = false restoreFling() end if name == "Fling" and enabled.Fling then enabled.FlySuper = false enabled.FlyHold = false enabled.Helicopter = false restoreFlyPose() flingStartTime = os.clock() flingWasActive = true elseif name == "Fling" and not enabled.Fling then restoreFling() end if name == "BlueTint" and enabled.BlueTint then enabled.GreenTint = false elseif name == "GreenTint" and enabled.GreenTint then enabled.BlueTint = false end if name == "LightV1" and enabled.LightV1 then enabled.LightV2 = false elseif name == "LightV2" and enabled.LightV2 then enabled.LightV1 = false end if name == "BlueTint" or name == "GreenTint" then updateTint() end if name == "LightV1" or name == "LightV2" or name == "HDR" then updateLighting() end if name == "Boost" then boostEnd = enabled.Boost and (os.clock() + 7) or 0 end if name == "Explosion" and enabled.Explosion then triggerExplosion() end if not enabled.FlyHold and not enabled.FlySuper then restoreFlyPose() end updateSwitches() end) end -- PAGE 1 BUTTONS createSwitch("HDR", "HDR GRAPHICS") createSwitch("Wall", "WALL HACK") createSwitch("Multi", "MULTI JUMPS") createSwitch("FlySuper", "FLY SUPER V7") createSwitch("FlyHold", "FLY HOLD V7") createSwitch("Speed", "SUPER SPEED") createSwitch("Jump", "SUPER JUMP") createSwitch("Boost", "SPEED BOOST") createSwitch("AutoJump", "AUTO JUMP") createSwitch("ClickTP", "CLICK TELEPORT") createSwitch("BlueTint", "BLUE TINT") -- PAGE 2 BUTTONS createSwitch("GreenTint", "GREEN TINT", page2Options) createSwitch("LightV1", "LIGHT INCREASE V1", page2Options) createSwitch("LightV2", "LIGHT INCREASE V2", page2Options) createSwitch("Helicopter", "HELICOPTER HELICOPTER", page2Options) createSwitch("Explosion", "💥 EXPLOSION", page2Options) createSwitch("BunnyHop", "🐰 BUNNY HOP V2", page2Options) createSwitch("HighJump", "HIGH JUMP", page2Options) createSwitch("Fling", "FLING", page2Options) createSwitch("Invisible", "INVISIBLE MODE V3", page2Options) -- TELEPORT UP local teleportRow = make("Frame", { Size = UDim2.new(1, -5, 0, 43), BackgroundTransparency = 1 }, page1) make("TextLabel", { Size = UDim2.new(1, -85, 1, 0), Position = UDim2.fromOffset(4, 0), BackgroundTransparency = 1, Text = "TELEPORT UP", TextColor3 = Color3.fromRGB(245, 245, 250), TextSize = 18, Font = Enum.Font.Gotham, TextXAlignment = Enum.TextXAlignment.Left }, teleportRow) local teleportButton = make("TextButton", { Size = UDim2.fromOffset(65, 29), Position = UDim2.new(1, -75, 0.5, -14), BackgroundColor3 = Color3.fromRGB(240, 125, 35), Text = "GO", TextColor3 = Color3.new(1, 1, 1), TextSize = 15, Font = Enum.Font.GothamBold }, teleportRow) make("UICorner", { CornerRadius = UDim.new(1, 0) }, teleportButton) teleportButton.Activated:Connect(function() if root and root.Parent then root.CFrame = root.CFrame + Vector3.new(0, 35, 0) end end) -- BOTTOM BAR local bottom = make("Frame", { Size = UDim2.new(1, -12, 0, 48), Position = UDim2.new(0, 6, 1, -52), BackgroundTransparency = 1 }, main) -- MINUS local minus = make("TextButton", { Size = UDim2.fromOffset(43, 43), Position = UDim2.new(0, 45, 0, 0), BackgroundColor3 = Color3.fromRGB(240, 125, 35), Text = "−", TextColor3 = Color3.new(1, 1, 1), TextSize = 28, Font = Enum.Font.GothamBold }, bottom) make("UICorner", { CornerRadius = UDim.new(1, 0) }, minus) -- PAGE LEFT ARROW local leftArrow = make("TextButton", { Size = UDim2.fromOffset(48, 43), Position = UDim2.new(0.5, -55, 0, 0), BackgroundColor3 = Color3.fromRGB(240, 125, 35), Text = "←", TextColor3 = Color3.new(1, 1, 1), TextSize = 27, Font = Enum.Font.GothamBold }, bottom) make("UICorner", { CornerRadius = UDim.new(0, 8) }, leftArrow) -- PAGE RIGHT ARROW local rightArrow = make("TextButton", { Size = UDim2.fromOffset(48, 43), Position = UDim2.new(0.5, 7, 0, 0), BackgroundColor3 = Color3.fromRGB(240, 125, 35), Text = "→", TextColor3 = Color3.new(1, 1, 1), TextSize = 27, Font = Enum.Font.GothamBold }, bottom) make("UICorner", { CornerRadius = UDim.new(0, 8) }, rightArrow) -- CLOSE local close = make("TextButton", { Size = UDim2.fromOffset(43, 43), Position = UDim2.new(1, -85, 0, 0), BackgroundTransparency = 1, Text = "✕", TextColor3 = Color3.fromRGB(240, 125, 35), TextSize = 32, Font = Enum.Font.GothamBold }, bottom) -- PAGE SWITCHING local function showPage(number) currentPage = number page1.Visible = number == 1 page2.Visible = number == 2 leftArrow.Visible = number == 2 rightArrow.Visible = number == 1 end leftArrow.Activated:Connect(function() showPage(1) end) rightArrow.Activated:Connect(function() showPage(2) end) showPage(1) -- REOPEN BUTTON local reopen = make("TextButton", { Size = UDim2.fromOffset(120, 42), Position = UDim2.new(0, 12, 0.5, 0), BackgroundColor3 = Color3.fromRGB(245, 20, 25), Text = "CAPY MENU", TextColor3 = Color3.new(1, 1, 1), TextSize = 15, Font = Enum.Font.GothamBold, Visible = false }, gui) make("UICorner", { CornerRadius = UDim.new(0, 7) }, reopen) -- CLOSE / REOPEN close.Activated:Connect(function() main.Visible = false reopen.Visible = true end) reopen.Activated:Connect(function() main.Visible = true reopen.Visible = false end) -- MINIMIZE / RESTORE local minimized = false minus.Activated:Connect(function() if minimized then return end minimized = true pageContainer.Visible = false bottom.Visible = false main.Size = UDim2.fromOffset(600, 48) topPlus.Visible = true end) topPlus.Activated:Connect(function() if not minimized then return end minimized = false main.Size = UDim2.fromOffset(600, 420) pageContainer.Visible = true bottom.Visible = true topPlus.Visible = false end) -- DRAGGING local dragging = false local dragInput local dragStart local startPosition header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragInput = input dragStart = input.Position startPosition = main.Position end end) UIS.InputChanged:Connect(function(input) if not dragging then return end if input.UserInputType == Enum.UserInputType.MouseMovement or input == dragInput then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) UIS.InputEnded:Connect(function(input) if input == dragInput or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false dragInput = nil end end) -- CLEAR COLLISION TABLE local function clearCollisionTable() clearTable(originalCollision) end -- CHARACTER SETUP local function setupCharacter(char) restoreInvisible() restoreFlyPose() character = char humanoid = char:WaitForChild("Humanoid") root = char:WaitForChild("HumanoidRootPart") baseSpeed = humanoid.WalkSpeed baseJump = humanoid.JumpPower baseAutoRotate = humanoid.AutoRotate humanoid.UseJumpPower = true jumpHeld = false jumpTouchInput = nil helicopterWasActive = false lastBunnyHop = 0 flingStartTime = 0 flingWasActive = false flingMotors = {} flingBaseTransforms = {} flyPoseMotors = {} flyPoseOriginals = {} flyPoseOriginalC0 = {} local wantedMotors = { Root = true, RootJoint = true, Waist = true, Neck = true, LeftShoulder = true, RightShoulder = true, LeftHip = true, RightHip = true } for _, obj in ipairs(char:GetDescendants()) do if obj:IsA("Motor6D") then if wantedMotors[obj.Name] then flingMotors[obj.Name] = obj flingBaseTransforms[obj] = obj.Transform end if obj.Name == "Root" or obj.Name == "RootJoint" or obj.Name == "Waist" or obj.Name == "Neck" then flyPoseMotors[obj.Name] = obj flyPoseOriginals[obj] = obj.Transform flyPoseOriginalC0[obj] = obj.C0 end end end clearCollisionTable() updateSwitches() end if player.Character then setupCharacter(player.Character) end player.CharacterAdded:Connect(setupCharacter) -- PC JUMP INPUT UIS.InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.Space then jumpHeld = true end end) UIS.InputEnded:Connect(function(input) if input.KeyCode == Enum.KeyCode.Space then jumpHeld = false end end) -- MOBILE JUMP BUTTON local function connectJumpButton(object) if object.Name ~= "JumpButton" or not object:IsA("GuiButton") or object:GetAttribute("CapyJumpConnected") then return end object:SetAttribute("CapyJumpConnected", true) object.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then jumpHeld = true jumpTouchInput = input end end) object.InputEnded:Connect(function(input) if input == jumpTouchInput then jumpHeld = false jumpTouchInput = nil end end) end for _, object in ipairs(playerGui:GetDescendants()) do connectJumpButton(object) end playerGui.DescendantAdded:Connect(connectJumpButton) -- MULTI JUMP UIS.JumpRequest:Connect(function() if not enabled.Multi or not humanoid or not root then return end if humanoid.FloorMaterial == Enum.Material.Air and os.clock() - lastMultiJump > 0.25 then local velocity = root.AssemblyLinearVelocity root.AssemblyLinearVelocity = Vector3.new( velocity.X, 55, velocity.Z ) lastMultiJump = os.clock() end end) -- CLICK TELEPORT UIS.InputBegan:Connect(function(input, processed) if processed or not enabled.ClickTP then return end if not root or not character then return end if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end local camera = workspace.CurrentCamera if not camera then return end local screenPosition = input.Position if input.UserInputType == Enum.UserInputType.MouseButton1 then screenPosition = UIS:GetMouseLocation() end local ray = camera:ScreenPointToRay( screenPosition.X, screenPosition.Y ) local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = {character} local result = workspace:Raycast( ray.Origin, ray.Direction * 1000, params ) if result then root.CFrame = CFrame.new( result.Position + Vector3.new(0, 4, 0) ) end end) -- WALL HACK / NOCLIP local function updateNoclip() if not character then return end for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then if enabled.Wall then if originalCollision[part] == nil then originalCollision[part] = part.CanCollide end part.CanCollide = false elseif originalCollision[part] ~= nil then part.CanCollide = originalCollision[part] originalCollision[part] = nil end end end end -- ABILITY LOOP local heartbeatConnection = RunService.Heartbeat:Connect(function() if not humanoid or not root or not root.Parent then return end -- SPEED if enabled.Boost and os.clock() < boostEnd then humanoid.WalkSpeed = 40 elseif enabled.Speed then humanoid.WalkSpeed = 32 elseif enabled.BunnyHop then humanoid.WalkSpeed = 30 else humanoid.WalkSpeed = baseSpeed end -- BOOST TIMER if enabled.Boost and os.clock() >= boostEnd then enabled.Boost = false boostEnd = 0 updateSwitches() end -- JUMP POWER humanoid.UseJumpPower = true if enabled.HighJump then humanoid.JumpPower = 150 elseif enabled.Jump then humanoid.JumpPower = 100 else humanoid.JumpPower = baseJump end -- AUTO JUMP if enabled.AutoJump and humanoid.FloorMaterial ~= Enum.Material.Air and os.clock() - lastAutoJump > 0.7 then humanoid.Jump = true lastAutoJump = os.clock() end -- BUNNY HOP V2 if enabled.BunnyHop and humanoid.Health > 0 and humanoid.FloorMaterial ~= Enum.Material.Air and humanoid:GetState() ~= Enum.HumanoidStateType.Seated and humanoid:GetState() ~= Enum.HumanoidStateType.Swimming and humanoid:GetState() ~= Enum.HumanoidStateType.Climbing and os.clock() - lastBunnyHop >= 0.25 then lastBunnyHop = os.clock() humanoid.Jump = true humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end -- FLY HOLD V7 / FLY SUPER V7 -- MOVE STRAIGHT UP; DO NOT ROTATE THE ROOT PART if (enabled.FlyHold or enabled.FlySuper) and jumpHeld and humanoid.Health > 0 then humanoid.AutoRotate = false humanoid:ChangeState(Enum.HumanoidStateType.Jumping) local flySpeed = enabled.FlySuper and 115 or 55 root.AssemblyLinearVelocity = Vector3.new( 0, flySpeed, 0 ) else if flyPoseActive then restoreFlyPose() end if not enabled.Helicopter and not enabled.Fling then humanoid.AutoRotate = baseAutoRotate end end -- HELICOPTER if enabled.Helicopter then helicopterWasActive = true humanoid.AutoRotate = false local velocity = root.AssemblyLinearVelocity root.AssemblyLinearVelocity = Vector3.new( velocity.X, 38, velocity.Z ) root.AssemblyAngularVelocity = Vector3.new(0, 18, 0) elseif helicopterWasActive then helicopterWasActive = false root.AssemblyAngularVelocity = Vector3.zero if not enabled.Fling then humanoid.AutoRotate = baseAutoRotate end end -- WALL HACK UPDATE if os.clock() - lastNoclipUpdate >= 0.05 then updateNoclip() lastNoclipUpdate = os.clock() end end) -- FLY POSE UPDATE -- Runs after the character animation update. local flyPoseConnection = RunService.PreSimulation:Connect(function() if (enabled.FlyHold or enabled.FlySuper) and jumpHeld and humanoid and humanoid.Health > 0 then applyFlyPose() elseif flyPoseActive then restoreFlyPose() end end) -- R15 FLING ANIMATION flingConnection = RunService.PreSimulation:Connect(function() if not enabled.Fling then return end if not humanoid or humanoid.Health <= 0 then return end humanoid.AutoRotate = false local elapsed = os.clock() - flingStartTime local wave = elapsed * 14 local pitch = math.sin(wave) * 0.85 local roll = math.sin(wave + math.pi / 2) * 0.85 local yaw = math.sin(wave * 0.7) * 0.45 local function animateMotor(name, rotation) local motor = flingMotors[name] local original = motor and flingBaseTransforms[motor] if motor and motor.Parent and original then motor.Transform = original * rotation end end animateMotor("Root", CFrame.Angles(pitch, yaw, roll)) animateMotor("RootJoint", CFrame.Angles(pitch, yaw, roll)) animateMotor("Waist", CFrame.Angles( pitch * 0.45, yaw * 0.4, roll * 0.55 )) animateMotor("LeftShoulder", CFrame.Angles( 0, 0, math.sin(wave + 1) * 0.65 )) animateMotor("RightShoulder", CFrame.Angles( 0, 0, -math.sin(wave + 1) * 0.65 )) animateMotor("LeftHip", CFrame.Angles( math.sin(wave) * 0.35, 0, 0 )) animateMotor("RightHip", CFrame.Angles( -math.sin(wave) * 0.35, 0, 0 )) end) -- RESTORE SETTINGS gui.Destroying:Connect(function() restoreInvisible() restoreFlyPose() heartbeatConnection:Disconnect() flyPoseConnection:Disconnect() if flingConnection then flingConnection:Disconnect() end restoreFling() Lighting.Brightness = originalBrightness Lighting.ClockTime = originalClockTime for part, oldValue in pairs(originalCollision) do if part and part.Parent then part.CanCollide = oldValue end end if root and root.Parent then root.AssemblyAngularVelocity = Vector3.zero end if humanoid and humanoid.Parent then humanoid.AutoRotate = baseAutoRotate humanoid.WalkSpeed = baseSpeed humanoid.JumpPower = baseJump end if tintEffect then tintEffect:Destroy() end end) updateSwitches() print("CAPY MENU MOD V7 + FULL BODY FLY V7 LOADED")