--// 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)
Keyless
Keyless
Keyless