-- auto win (end) - HairWorld StageX12 local env = (getgenv and getgenv()) or _G if env.AutoWinCleanup then pcall(env.AutoWinCleanup) end local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local TS = game:GetService("TweenService") local WS = game:GetService("Workspace") local LP = Players.LocalPlayer local alive, loopOn = true, false local conns = {} local function track(c) table.insert(conns, c) return c end -- ===== finding the pad ===== local function findPad() local o = WS for _, name in ipairs({"HairWorld", "StageX12", "WinPads", "WinPad"}) do o = o and o:FindFirstChild(name) end return o end local function padPart(pad) if pad:IsA("BasePart") then return pad end return pad:FindFirstChildWhichIsA("BasePart", true) end local function autoWin() local pad = findPad() if not pad then warn("[autowin] pad not found at workspace.HairWorld.StageX12.WinPads.WinPad") return false end local part = padPart(pad) local char = LP.Character local root = char and char:FindFirstChild("HumanoidRootPart") if not part or not root then return false end root.CFrame = part.CFrame + Vector3.new(0, part.Size.Y / 2 + 3, 0) root.AssemblyLinearVelocity = Vector3.zero if firetouchinterest then for _, p in ipairs(pad:IsA("BasePart") and {pad} or pad:GetDescendants()) do if p:IsA("BasePart") then pcall(firetouchinterest, root, p, 0) pcall(firetouchinterest, root, p, 1) end end end return true end -- ===== gui ===== local C = { bg = Color3.fromRGB(14, 14, 20), panel = Color3.fromRGB(20, 20, 29), row = Color3.fromRGB(26, 26, 38), rowHi = Color3.fromRGB(36, 36, 52), off = Color3.fromRGB(48, 48, 66), text = Color3.fromRGB(230, 230, 245), a1 = Color3.fromRGB(150, 100, 255), a2 = Color3.fromRGB(70, 180, 255), red = Color3.fromRGB(255, 90, 110), } local function new(class, props, parent) local o = Instance.new(class) for k, v in pairs(props) do o[k] = v end if parent then o.Parent = parent end return o end local function corner(o, r) return new("UICorner", {CornerRadius = UDim.new(0, r)}, o) end local function gradient(o, rot) return new("UIGradient", {Color = ColorSequence.new(C.a1, C.a2), Rotation = rot or 0}, o) end local gui = new("ScreenGui", { Name = tostring(math.random(100000, 999999)), ResetOnSpawn = false, DisplayOrder = 999, ZIndexBehavior = Enum.ZIndexBehavior.Sibling, }) local mounted = false for _, fn in ipairs({ function() return gethui and gethui() end, function() return game:GetService("CoreGui") end, function() return LP:WaitForChild("PlayerGui", 5) end, }) do local ok, p = pcall(fn) if ok and p then local ok2 = pcall(function() gui.Parent = p end) if ok2 and gui.Parent == p then mounted = true break end end end if not mounted then warn("[autowin] couldn't mount gui") return end local main = new("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.new(0, 260, 0, 170), Position = UDim2.new(0.5, 0, 0.5, 0), BackgroundColor3 = C.bg, BorderSizePixel = 0, }, gui) corner(main, 14) gradient(new("UIStroke", {Thickness = 1.5, Color = Color3.new(1, 1, 1)}, main), 45) local header = new("Frame", { Size = UDim2.new(1, 0, 0, 36), BackgroundColor3 = C.panel, BorderSizePixel = 0, }, main) corner(header, 14) new("Frame", { Size = UDim2.new(1, 0, 0, 14), Position = UDim2.new(0, 0, 1, -14), BackgroundColor3 = C.panel, BorderSizePixel = 0, }, header) for n = 1, 3 do local d = new("Frame", { Size = UDim2.new(0, 8, 0, 8), Position = UDim2.new(0, 14 + (n - 1) * 14, 0.5, -4), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, }, header) corner(d, 4) gradient(d, 45 * n) end -- drag do header.Active = true local dragging, start, startPos track(header.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging, start, startPos = true, i.Position, main.Position end end)) track(UIS.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local d = i.Position - start main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end end)) track(UIS.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end)) end local list = new("Frame", { Size = UDim2.new(1, -24, 1, -50), Position = UDim2.new(0, 12, 0, 44), BackgroundTransparency = 1, }, main) new("UIListLayout", {Padding = UDim.new(0, 8)}, list) -- Auto Win (end) button local winBtn = new("TextButton", { Size = UDim2.new(1, 0, 0, 40), BackgroundColor3 = C.row, Text = "Auto Win (end)", TextColor3 = C.text, Font = Enum.Font.GothamBold, TextSize = 13, AutoButtonColor = false, BorderSizePixel = 0, }, list) corner(winBtn, 8) gradient(new("UIStroke", {Thickness = 1.5, Color = Color3.new(1, 1, 1)}, winBtn), 0) track(winBtn.MouseEnter:Connect(function() winBtn.BackgroundColor3 = C.rowHi end)) track(winBtn.MouseLeave:Connect(function() winBtn.BackgroundColor3 = C.row end)) track(winBtn.MouseButton1Click:Connect(function() local ok = autoWin() winBtn.Text = ok and "Teleported!" or "Pad not found" task.delay(1.5, function() winBtn.Text = "Auto Win (end)" end) end)) -- Loop toggle local row = new("TextButton", { Size = UDim2.new(1, 0, 0, 36), BackgroundColor3 = C.row, Text = "", AutoButtonColor = false, BorderSizePixel = 0, }, list) corner(row, 8) new("TextLabel", { Size = UDim2.new(1, -64, 1, 0), Position = UDim2.new(0, 12, 0, 0), BackgroundTransparency = 1, Text = "Loop Auto Win", TextColor3 = C.text, Font = Enum.Font.GothamMedium, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, row) local sw = new("Frame", { Size = UDim2.new(0, 38, 0, 20), Position = UDim2.new(1, -50, 0.5, -10), BackgroundColor3 = C.off, BorderSizePixel = 0, }, row) corner(sw, 10) local sg = gradient(sw, 0) sg.Enabled = false local knob = new("Frame", { Size = UDim2.new(0, 14, 0, 14), Position = UDim2.new(0, 3, 0.5, -7), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, }, sw) corner(knob, 7) track(row.MouseButton1Click:Connect(function() loopOn = not loopOn sg.Enabled = loopOn sw.BackgroundColor3 = loopOn and Color3.new(1, 1, 1) or C.off TS:Create(knob, TweenInfo.new(0.15), { Position = loopOn and UDim2.new(1, -17, 0.5, -7) or UDim2.new(0, 3, 0.5, -7) }):Play() end)) task.spawn(function() while alive do task.wait(1) if loopOn then pcall(autoWin) end end end) -- RightShift to hide/show track(UIS.InputBegan:Connect(function(i) if i.KeyCode == Enum.KeyCode.RightShift and not UIS:GetFocusedTextBox() then main.Visible = not main.Visible end end)) env.AutoWinCleanup = function() alive, loopOn = false, false for _, c in ipairs(conns) do pcall(function() c:Disconnect() end) end pcall(function() gui:Destroy() end) env.AutoWinCleanup = nil end print("[autowin] loaded - RightShift hides/shows")