local player = game.Players.LocalPlayer local screenGui = Instance.new("ScreenGui") local flyButton = Instance.new("TextButton") local upButton = Instance.new("TextButton") local downButton = Instance.new("TextButton") local uICorner = Instance.new("UICorner") screenGui.Name = "ChildEmp" screenGui.Parent = player:WaitForChild("PlayerGui") flyButton.Name = "FlyButton" flyButton.Text = "Fly" flyButton.Size = UDim2.new(0, 100, 0, 50) flyButton.Position = UDim2.new(0.9, -50, 0.5, -25) flyButton.Parent = screenGui flyButton.Visible = true uICorner.Parent = flyButton upButton.Name = "UpButton" upButton.Text = "^" upButton.Size = UDim2.new(0, 100, 0, 50) upButton.Position = UDim2.new(0.8, -50, 0.4, -25) upButton.Parent = screenGui upButton.Visible = false uICorner:Clone().Parent = upButton downButton.Name = "DownButton" downButton.Text = "v" downButton.Size = UDim2.new(0, 100, 0, 50) downButton.Position = UDim2.new(0.8, -50, 0.6, -25) downButton.Parent = screenGui downButton.Visible = false uICorner:Clone().Parent = downButton local loadingFrame = Instance.new("Frame") loadingFrame.Size = UDim2.new(0, 300, 0, 100) loadingFrame.Position = UDim2.new(0.5, -150, 0.5, -50) loadingFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0) loadingFrame.BackgroundTransparency = 0.5 loadingFrame.Parent = screenGui local loadingText = Instance.new("TextLabel") loadingText.Size = UDim2.new(1, 0, 1, 0) loadingText.Text = "Loading V1 Fly...." loadingText.TextColor3 = Color3.fromRGB(255, 255, 255) loadingText.TextScaled = true loadingText.Parent = loadingFrame local topText = Instance.new("TextLabel") topText.Size = UDim2.new(1, 0, 0, 50) topText.Position = UDim2.new(0, 0, 0, 0) topText.BackgroundTransparency = 1 topText.Text = "made by valker038 Discord: https://discord.gg/7RjcmaUSsy" topText.TextColor3 = Color3.fromRGB(255, 255, 255) topText.TextScaled = true topText.Parent = screenGui wait(5) loadingFrame:Destroy() topText.TextTransparency = 0.4 local idleAnimationId = "rbxassetid://17124061663" local forwardAnimationId = "rbxassetid://17124063826" local leftAnimationId = "rbxassetid://17124105294" local rightAnimationId = "rbxassetid://17124112547" local backwardAnimationId = "rbxassetid://17124067635" local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local idleAnimation = Instance.new("Animation") idleAnimation.AnimationId = idleAnimationId local idleAnimTrack = humanoid:LoadAnimation(idleAnimation) local forwardAnimation = Instance.new("Animation") forwardAnimation.AnimationId = forwardAnimationId local forwardAnimTrack = humanoid:LoadAnimation(forwardAnimation) local leftAnimation = Instance.new("Animation") leftAnimation.AnimationId = leftAnimationId local leftAnimTrack = humanoid:LoadAnimation(leftAnimation) local rightAnimation = Instance.new("Animation") rightAnimation.AnimationId = rightAnimationId local rightAnimTrack = humanoid:LoadAnimation(rightAnimation) local backwardAnimation = Instance.new("Animation") backwardAnimation.AnimationId = backwardAnimationId local backwardAnimTrack = humanoid:LoadAnimation(backwardAnimation) local flying = false local flightSpeed = 35 local bodyVelocity local originalWalkSpeed local originalJumpPower local hooks = { walkspeed = 29, jumppower = 50 } local originalIndex local originalNewIndex originalIndex = hookmetamethod(game, "__index", function(self, property) if not checkcaller() and self:IsA("Humanoid") and self:IsDescendantOf(player.Character) then local lowerProperty = property:lower() if hooks[lowerProperty] then return hooks[lowerProperty] end end return originalIndex(self, property) end) originalNewIndex = hookmetamethod(game, "__newindex", function(self, property, value) if not checkcaller() and self:IsA("Humanoid") and self:IsDescendantOf(player.Character) then local lowerProperty = property:lower() if hooks[lowerProperty] then hooks[lowerProperty] = value return end end return originalNewIndex(self, property, value) end) local function startFlying() local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") originalWalkSpeed = humanoid.WalkSpeed originalJumpPower = humanoid.JumpPower humanoid.PlatformStand = true bodyVelocity = Instance.new("BodyVelocity") bodyVelocity.MaxForce = Vector3.new(0, math.huge, 0) bodyVelocity.Velocity = Vector3.new(0, 0, 0) bodyVelocity.Parent = character.HumanoidRootPart humanoid.WalkSpeed = 40 humanoid.JumpPower = 50 -- Play idle animation when flying starts idleAnimTrack:Play() end local function stopFlying() if bodyVelocity then bodyVelocity:Destroy() end local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") humanoid.PlatformStand = false humanoid.WalkSpeed = originalWalkSpeed humanoid.JumpPower = originalJumpPower idleAnimTrack:Stop() forwardAnimTrack:Stop() leftAnimTrack:Stop() rightAnimTrack:Stop() backwardAnimTrack:Stop() end flyButton.MouseButton1Click:Connect(function() if not flying then startFlying() flying = true upButton.Visible = true downButton.Visible = true local movingUp = false local movingDown = false upButton.MouseButton1Down:Connect(function() movingUp = true while movingUp do bodyVelocity.Velocity = Vector3.new(0, flightSpeed, 0) wait(0.1) idleAnimTrack:Stop() end idleAnimTrack:Play() end) downButton.MouseButton1Down:Connect(function() movingDown = true while movingDown do bodyVelocity.Velocity = Vector3.new(0, -flightSpeed, 0) wait(0.1) idleAnimTrack:Stop() end idleAnimTrack:Play() end) upButton.MouseButton1Up:Connect(function() movingUp = false bodyVelocity.Velocity = Vector3.new(0, 0, 0) idleAnimTrack:Play() end) downButton.MouseButton1Up:Connect(function() movingDown = false bodyVelocity.Velocity = Vector3.new(0, 0, 0) idleAnimTrack:Play() end) else stopFlying() flying = false upButton.Visible = false downButton.Visible = false end end) local function playMovementAnimation(direction) if direction == "forward" then forwardAnimTrack:Play() idleAnimTrack:Stop() elseif direction == "left" then leftAnimTrack:Play() idleAnimTrack:Stop() elseif direction == "right" then rightAnimTrack:Play() idleAnimTrack:Stop() elseif direction == "backward" then backwardAnimTrack:Play() idleAnimTrack:Stop() else idleAnimTrack:Play() end end game:GetService("RunService").RenderStepped:Connect(function() if flying then local moveDirection = Vector3.new() if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then moveDirection = player.Character.HumanoidRootPart.Velocity if moveDirection.Z > 0 then playMovementAnimation("forward") elseif moveDirection.Z < 0 then playMovementAnimation("backward") elseif moveDirection.X > 0 then playMovementAnimation("right") elseif moveDirection.X < 0 then playMovementAnimation("left") else playMovementAnimation("idle") end end end end) -- Animation AntiChange Tool local player = game.Players.LocalPlayer local backpack = player:WaitForChild("Backpack") local invisibleTool = Instance.new("Tool") invisibleTool.Name = "Hold When Fly Active (made by valker038 on roblox)" invisibleTool.RequiresHandle = true local handle = Instance.new("Part") handle.Name = "Handle" handle.Size = Vector3.new(1, 1, 1) handle.Transparency = 1 handle.Anchored = false handle.CanCollide = false handle.Parent = invisibleTool local function onEquipped() invisibleTool.Parent = player.Character for _,v in pairs(player.Character:GetChildren()) do if v:IsA("Tool") then v.Handle.Transparency = 1 end end end local function onUnequipped() invisibleTool.Parent = backpack end invisibleTool.Equipped:Connect(onEquipped) invisibleTool.Unequipped:Connect(onUnequipped) invisibleTool.Parent = backpack