-- QWEN GOAT local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local workspace = game:GetService("Workspace") local TOGGLE_KEY = Enum.KeyCode.RightShift local WALK_KEY = Enum.KeyCode.F local BALL_NAME = "Ball" local DEFAULT_SIZE = 2 local MAX_SIZE = 10 local MIN_SIZE = 0.5 local DEFAULT_FLOOR_SIZE = 8 local MAX_FLOOR_SIZE = 30 local MIN_FLOOR_SIZE = 1 local FLOOR_TRANSPARENCY = 0.35 local FLOOR_HEIGHT = 0.5 local FLOOR_OFFSET = 0.2 local WALK_SPEED = 32 local enabled = false local floorEnabled = true local currentSize = DEFAULT_SIZE local currentFloorSize = DEFAULT_FLOOR_SIZE local guiVisible = true local trackedBalls = {} local mouseHoldingWalk = false local keyHoldingWalk = false local holdingWalk = false local savedWalkSpeed = nil local function getHumanoid() local character = player.Character if character then return character:FindFirstChildOfClass("Humanoid") end return nil end local screenGui = Instance.new("ScreenGui") screenGui.Name = "HitboxGui" screenGui.ResetOnSpawn = false screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.Parent = player:WaitForChild("PlayerGui") local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 300, 0, 345) mainFrame.Position = UDim2.new(0.5, -150, 0.5, -172) mainFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 10) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = mainFrame local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(40, 40, 40) stroke.Thickness = 2 stroke.Parent = mainFrame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 35) title.BackgroundColor3 = Color3.fromRGB(20, 20, 20) title.Text = "touchline" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextSize = 18 title.Font = Enum.Font.GothamBold title.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 10) titleCorner.Parent = title local toggleBtn = Instance.new("TextButton") toggleBtn.Name = "ToggleBtn" toggleBtn.Size = UDim2.new(0.9, 0, 0, 40) toggleBtn.Position = UDim2.new(0.05, 0, 0, 45) toggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) toggleBtn.Text = "ENABLE: OFF" toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) toggleBtn.TextSize = 16 toggleBtn.Font = Enum.Font.GothamBold toggleBtn.Parent = mainFrame local toggleCorner = Instance.new("UICorner") toggleCorner.CornerRadius = UDim.new(0, 8) toggleCorner.Parent = toggleBtn local floorToggleBtn = Instance.new("TextButton") floorToggleBtn.Name = "FloorToggleBtn" floorToggleBtn.Size = UDim2.new(0.9, 0, 0, 35) floorToggleBtn.Position = UDim2.new(0.05, 0, 0, 95) floorToggleBtn.BackgroundColor3 = Color3.fromRGB(0, 100, 0) floorToggleBtn.Text = "FLOOR: ON" floorToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) floorToggleBtn.TextSize = 16 floorToggleBtn.Font = Enum.Font.GothamBold floorToggleBtn.Parent = mainFrame local floorToggleCorner = Instance.new("UICorner") floorToggleCorner.CornerRadius = UDim.new(0, 8) floorToggleCorner.Parent = floorToggleBtn local function createSlider(parent, yPos, labelText, min, max, initialValue, onChanged) local textLabel = Instance.new("TextLabel") textLabel.Size = UDim2.new(0.9, 0, 0, 20) textLabel.Position = UDim2.new(0.05, 0, 0, yPos) textLabel.BackgroundTransparency = 1 textLabel.Text = labelText .. string.format("%.1f", initialValue) textLabel.TextColor3 = Color3.fromRGB(180, 180, 180) textLabel.TextSize = 14 textLabel.Font = Enum.Font.Gotham textLabel.TextXAlignment = Enum.TextXAlignment.Left textLabel.Parent = parent local bg = Instance.new("Frame") bg.Size = UDim2.new(0.9, 0, 0, 20) bg.Position = UDim2.new(0.05, 0, 0, yPos + 25) bg.BackgroundColor3 = Color3.fromRGB(25, 25, 25) bg.Parent = parent local bgCorner = Instance.new("UICorner") bgCorner.CornerRadius = UDim.new(0, 10) bgCorner.Parent = bg local percent = math.clamp((initialValue - min) / (max - min), 0, 1) local fill = Instance.new("Frame") fill.Size = UDim2.new(percent, 0, 1, 0) fill.BackgroundColor3 = Color3.fromRGB(60, 60, 60) fill.Parent = bg local fillCorner = Instance.new("UICorner") fillCorner.CornerRadius = UDim.new(0, 10) fillCorner.Parent = fill local knob = Instance.new("Frame") knob.Size = UDim2.new(0, 22, 0, 22) knob.Position = UDim2.new(percent, -11, 0.5, -11) knob.BackgroundColor3 = Color3.fromRGB(200, 200, 200) knob.Parent = bg local knobCorner = Instance.new("UICorner") knobCorner.CornerRadius = UDim.new(1, 0) knobCorner.Parent = knob local dragging = false local function updateFromX(x) local sliderAbsPos = bg.AbsolutePosition.X local sliderAbsSize = bg.AbsoluteSize.X local p = math.clamp((x - sliderAbsPos) / sliderAbsSize, 0, 1) local value = min + p * (max - min) fill.Size = UDim2.new(p, 0, 1, 0) knob.Position = UDim2.new(p, -11, 0.5, -11) textLabel.Text = labelText .. string.format("%.1f", value) onChanged(value) end bg.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true updateFromX(input.Position.X) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateFromX(input.Position.X) end end) end createSlider(mainFrame, 140, "Ball Size: ", MIN_SIZE, MAX_SIZE, currentSize, function(value) currentSize = value end) createSlider(mainFrame, 195, "Floor Size: ", MIN_FLOOR_SIZE, MAX_FLOOR_SIZE, currentFloorSize, function(value) currentFloorSize = value end) local walkBtn = Instance.new("TextButton") walkBtn.Name = "Walkspeed" walkBtn.Size = UDim2.new(0.9, 0, 0, 40) walkBtn.Position = UDim2.new(0.05, 0, 0, 250) walkBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) walkBtn.Text = "Walkspeed (F)" walkBtn.TextColor3 = Color3.fromRGB(255, 255, 255) walkBtn.TextSize = 16 walkBtn.Font = Enum.Font.GothamBold walkBtn.Parent = mainFrame local walkCorner = Instance.new("UICorner") walkCorner.CornerRadius = UDim.new(0, 8) walkCorner.Parent = walkBtn local infoLabel = Instance.new("TextLabel") infoLabel.Size = UDim2.new(0.9, 0, 0, 25) infoLabel.Position = UDim2.new(0.05, 0, 0, 300) infoLabel.BackgroundTransparency = 1 infoLabel.Text = "GUI: " .. TOGGLE_KEY.Name .. " | Walk: " .. WALK_KEY.Name infoLabel.TextColor3 = Color3.fromRGB(100, 100, 100) infoLabel.TextSize = 12 infoLabel.Font = Enum.Font.Gotham infoLabel.Parent = mainFrame local floorFolder = workspace:FindFirstChild("BallFloorFolder") if not floorFolder then floorFolder = Instance.new("Folder") floorFolder.Name = "BallFloorFolder" floorFolder.Parent = workspace else floorFolder:ClearAllChildren() end local function createFloorForBall(ball) local floor = Instance.new("Part") floor.Name = "BallFloor" floor.Anchored = true floor.Material = Enum.Material.Neon floor.Color = Color3.fromRGB(255, 35, 35) floor.Transparency = FLOOR_TRANSPARENCY floor.CanCollide = true floor.CanQuery = false floor.CanTouch = false floor.Size = Vector3.new(currentFloorSize, FLOOR_HEIGHT, currentFloorSize) floor.CFrame = CFrame.new(ball.Position - Vector3.new(0, ball.Size.Y / 2 + floor.Size.Y / 2 + FLOOR_OFFSET, 0)) floor.Parent = floorFolder return floor end local function addBall(part) if part:IsA("BasePart") and not trackedBalls[part] then trackedBalls[part] = { Size = part.Size, Transparency = part.Transparency, CanCollide = part.CanCollide, Floor = nil } part.AncestryChanged:Connect(function() if part.Parent == nil then local data = trackedBalls[part] if data and data.Floor then data.Floor:Destroy() data.Floor = nil end trackedBalls[part] = nil end end) end end workspace.DescendantAdded:Connect(function(descendant) if descendant.Name == BALL_NAME then addBall(descendant) end end) for _, descendant in pairs(workspace:GetDescendants()) do if descendant.Name == BALL_NAME then addBall(descendant) end end player.CharacterAdded:Connect(function() savedWalkSpeed = nil end) local function updateWalkVisual() holdingWalk = mouseHoldingWalk or keyHoldingWalk if holdingWalk then walkBtn.BackgroundColor3 = Color3.fromRGB(0, 100, 0) else walkBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) end end local function setMouseWalk(state) mouseHoldingWalk = state updateWalkVisual() end local function setKeyWalk(state) keyHoldingWalk = state updateWalkVisual() end walkBtn.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then setMouseWalk(true) end end) walkBtn.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then setMouseWalk(false) end end) walkBtn.MouseLeave:Connect(function() if mouseHoldingWalk then setMouseWalk(false) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then if mouseHoldingWalk then setMouseWalk(false) end end if input.KeyCode == WALK_KEY then if keyHoldingWalk then setKeyWalk(false) end end end) floorToggleBtn.MouseButton1Click:Connect(function() floorEnabled = not floorEnabled if floorEnabled then floorToggleBtn.Text = "FLOOR: ON" floorToggleBtn.BackgroundColor3 = Color3.fromRGB(0, 100, 0) else floorToggleBtn.Text = "FLOOR: OFF" floorToggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) end end) toggleBtn.MouseButton1Click:Connect(function() enabled = not enabled if enabled then toggleBtn.Text = "ENABLE: ON" toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 100, 0) else toggleBtn.Text = "ENABLE: OFF" toggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) for part, originalProps in pairs(trackedBalls) do if part and part.Parent then part.Size = originalProps.Size part.Transparency = originalProps.Transparency part.CanCollide = originalProps.CanCollide end end end end) RunService.Heartbeat:Connect(function() local wantWalk = mouseHoldingWalk or keyHoldingWalk holdingWalk = wantWalk if wantWalk then local hum = getHumanoid() if hum then if savedWalkSpeed == nil then savedWalkSpeed = hum.WalkSpeed end if hum.WalkSpeed ~= WALK_SPEED then hum.WalkSpeed = WALK_SPEED end end else if savedWalkSpeed ~= nil then local hum = getHumanoid() if hum then hum.WalkSpeed = savedWalkSpeed end savedWalkSpeed = nil end end for part, data in pairs(trackedBalls) do if part and part.Parent then if enabled then local newSize = Vector3.new( data.Size.X * currentSize, data.Size.Y * currentSize, data.Size.Z * currentSize ) if part.Size ~= newSize then part.Size = newSize end if part.Transparency ~= 0.5 then part.Transparency = 0.5 end if part.CanCollide ~= false then part.CanCollide = false end end if floorEnabled then if not data.Floor or not data.Floor.Parent then data.Floor = createFloorForBall(part) end local floor = data.Floor local floorSize = Vector3.new(currentFloorSize, FLOOR_HEIGHT, currentFloorSize) if floor.Size ~= floorSize then floor.Size = floorSize end floor.Material = Enum.Material.Neon floor.Color = Color3.fromRGB(255, 35, 35) floor.Transparency = FLOOR_TRANSPARENCY floor.Anchored = true floor.CanCollide = true local yOffset = part.Size.Y / 2 + floor.Size.Y / 2 + FLOOR_OFFSET floor.CFrame = CFrame.new(part.Position - Vector3.new(0, yOffset, 0)) else if data.Floor then data.Floor:Destroy() data.Floor = nil end end else if data.Floor then data.Floor:Destroy() data.Floor = nil end trackedBalls[part] = nil end end end) UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == TOGGLE_KEY then guiVisible = not guiVisible mainFrame.Visible = guiVisible elseif input.KeyCode == WALK_KEY then setKeyWalk(true) end end)