--// Configuration local FLY_SPEED = 75 local BOOST_WALKSPEED = 120 local BOOST_JUMP = 100 local DEFAULT_SPEED = 16 local DEFAULT_JUMP = 50 local DESCENT_MULTIPLIER = 3.5 local BALL_NAME = "Soccerball" --// Services local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera --// UI Cleanup if CoreGui:FindFirstChild("BallMaster_Draggable") then CoreGui.BallMaster_Draggable:Destroy() end local ScreenGui = Instance.new("ScreenGui", CoreGui) ScreenGui.Name = "BallMaster_Draggable" local MainFrame = Instance.new("Frame", ScreenGui) MainFrame.Size = UDim2.new(0, 250, 0, 300) MainFrame.Position = UDim2.new(0.5, -125, 0.15, 0) MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15) MainFrame.Active = true MainFrame.Draggable = true Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 10) local Layout = Instance.new("UIListLayout", MainFrame) Layout.Padding = UDim.new(0, 8) Layout.HorizontalAlignment = "Center" Layout.VerticalAlignment = "Center" local function CreateButton(name, text) local btn = Instance.new("TextButton", MainFrame) btn.Name = name btn.Size = UDim2.new(0, 220, 0, 40) btn.BackgroundColor3 = Color3.fromRGB(35, 35, 35) btn.Text = text btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.GothamBold btn.TextSize = 16 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) return btn end local FlyButton = CreateButton("FlyBtn", "FLY: OFF") local ClipButton = CreateButton("ClipBtn", "NOCLIP: OFF") local SpeedButton = CreateButton("SpeedBtn", "SPEED: OFF") local JumpButton = CreateButton("JumpBtn", "JUMP: OFF") local TPButton = CreateButton("TPBtn", "GET TP TOOL") --// Variables local isFlying = false local noclipEnabled = false local speedActive = false local jumpActive = false local FakeBall = nil --// FIXED LOOP: Handles Resetting RunService.RenderStepped:Connect(function() local char = LocalPlayer.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then -- Handle Speed Toggle if speedActive then hum.WalkSpeed = BOOST_WALKSPEED else -- If we just turned it off, set it back to normal once if hum.WalkSpeed ~= DEFAULT_SPEED then hum.WalkSpeed = DEFAULT_SPEED end end -- Handle Jump Toggle if jumpActive then hum.JumpPower = BOOST_JUMP hum.UseJumpPower = true else -- Reset Jump to normal if hum.JumpPower ~= DEFAULT_JUMP then hum.JumpPower = DEFAULT_JUMP end end end end) --// Flight & NoClip Logic RunService.Stepped:Connect(function() local char = LocalPlayer.Character local root = char and char:FindFirstChild("HumanoidRootPart") if not char or not root then return end if noclipEnabled then for _, v in pairs(char:GetDescendants()) do if v:IsA("BasePart") then v.CanCollide = false end end end if isFlying then local realBall = workspace:FindFirstChild(BALL_NAME, true) or workspace:FindFirstChild("Ball", true) local activeBall = realBall or FakeBall if not realBall and not FakeBall then activeBall = Instance.new("Part") activeBall.Name = "TempBall"; activeBall.Shape = "Ball"; activeBall.Size = Vector3.new(4,4,4); activeBall.Parent = workspace FakeBall = activeBall end activeBall.CFrame = root.CFrame * CFrame.new(0, -3.5, 0) activeBall.CanCollide = true local moveDir = Vector3.new(0,0,0) if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDir += Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDir -= Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDir -= Camera.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDir += Camera.CFrame.RightVector end local yV = UserInputService:IsKeyDown(Enum.KeyCode.Space) and FLY_SPEED or (UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) and -(FLY_SPEED*DESCENT_MULTIPLIER) or 0) local vel = (moveDir.Magnitude > 0 and moveDir.Unit * FLY_SPEED or Vector3.new(0,0,0)) + Vector3.new(0, yV, 0) activeBall.Velocity = vel; root.Velocity = vel end end) --// Toggles SpeedButton.MouseButton1Click:Connect(function() speedActive = not speedActive SpeedButton.Text = speedActive and "SPEED: ON" or "SPEED: OFF" SpeedButton.BackgroundColor3 = speedActive and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(35, 35, 35) end) JumpButton.MouseButton1Click:Connect(function() jumpActive = not jumpActive JumpButton.Text = jumpActive and "JUMP: ON" or "JUMP: OFF" JumpButton.BackgroundColor3 = jumpActive and Color3.fromRGB(150, 0, 255) or Color3.fromRGB(35, 35, 35) end) FlyButton.MouseButton1Click:Connect(function() isFlying = not isFlying FlyButton.Text = isFlying and "FLYING: ON" or "FLY: OFF" FlyButton.BackgroundColor3 = isFlying and Color3.fromRGB(0, 120, 255) or Color3.fromRGB(35, 35, 35) if not isFlying and FakeBall then FakeBall:Destroy(); FakeBall = nil end end) ClipButton.MouseButton1Click:Connect(function() noclipEnabled = not noclipEnabled ClipButton.Text = noclipEnabled and "NOCLIP: ON" or "NOCLIP: OFF" ClipButton.BackgroundColor3 = noclipEnabled and Color3.fromRGB(255, 100, 0) or Color3.fromRGB(35, 35, 35) if not noclipEnabled and LocalPlayer.Character then for _, v in pairs(LocalPlayer.Character:GetDescendants()) do if v:IsA("BasePart") then v.CanCollide = true end end end end) TPButton.MouseButton1Click:Connect(function() local tool = Instance.new("Tool", LocalPlayer.Backpack) tool.Name = "TP Tool"; tool.RequiresHandle = false tool.Activated:Connect(function() local pos = LocalPlayer:GetMouse().Hit.p + Vector3.new(0,3,0) LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(pos) end) end)