local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local plr = Players.LocalPlayer local pg = plr:WaitForChild("PlayerGui", 5) if not pg then return end local old = pg:FindFirstChild("DarkHUD_ScreenGui") if old then old:Destroy() end local Theme = { bg = Color3.fromRGB(12,12,14), sidebar = Color3.fromRGB(8,8,10), panel = Color3.fromRGB(17,17,21), panel2 = Color3.fromRGB(23,23,28), accent = Color3.fromRGB(130,120,255), text = Color3.fromRGB(232,232,238), muted = Color3.fromRGB(112,112,124), off = Color3.fromRGB(60,60,70), } local themed, accentRefreshers = {}, {} local function reg(o, prop, key) table.insert(themed, {o, prop, key}) end local function applyTheme() for _, t in ipairs(themed) do t[1][t[2]] = Theme[t[3]] end end local function applyAccent() for _, f in ipairs(accentRefreshers) do f() end end local function onAccent(f) table.insert(accentRefreshers, f) end local function C(p, r) local c = Instance.new("UICorner"); c.CornerRadius = UDim.new(0, r or 6); c.Parent = p; return c end local function S(p, col, th) local s = Instance.new("UIStroke"); s.Color = col or Color3.fromRGB(38,38,48); s.Thickness = th or 1; s.Parent = p; return s end local function new(cls, props, parent) local i = Instance.new(cls) for k, v in pairs(props) do i[k] = v end if parent then i.Parent = parent end return i end local function kp(t, v) return NumberSequenceKeypoint.new(t, v) end local function makeDraggable(frame, handle) handle = handle or frame local dragging, dragInput, dragStart, startPos handle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true; dragStart = input.Position; startPos = frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) handle.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local d = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end end) end local HEADSHOT = ("rbxthumb://type=AvatarHeadShot&id=%d&w=150&h=150"):format(plr.UserId) -- four-corner selection brackets; pulses outward/inward while hovered local function makeSwatchCorners(sw) local sel = Instance.new("Frame") sel.Name = "SelBox" sel.BackgroundTransparency = 1 sel.Size = UDim2.new(1,0,1,0) sel.AnchorPoint = Vector2.new(0.5,0.5) sel.Position = UDim2.new(0.5,0,0.5,0) sel.Visible = false sel.ZIndex = 5 sel.Parent = sw for _, c in ipairs({{0,0},{1,0},{0,1},{1,1}}) do local cx, cy = c[1], c[2] local h = Instance.new("Frame") h.Size = UDim2.new(0,5,0,2) h.BackgroundColor3 = Color3.new(1,1,1) h.BorderSizePixel = 0 h.Position = UDim2.new(cx,0,cy,0) h.AnchorPoint = Vector2.new(cx,cy) h.ZIndex = 6 h.Parent = sel local v = Instance.new("Frame") v.Size = UDim2.new(0,2,0,5) v.BackgroundColor3 = Color3.new(1,1,1) v.BorderSizePixel = 0 v.Position = UDim2.new(cx,0,cy,0) v.AnchorPoint = Vector2.new(cx,cy) v.ZIndex = 6 v.Parent = sel end local hovering = false sw.MouseEnter:Connect(function() if hovering then return end hovering = true sel.Visible = true task.spawn(function() while hovering do local t1 = TweenService:Create(sel, TweenInfo.new(0.35, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = UDim2.new(1.45,0,1.45,0)}) t1:Play(); t1.Completed:Wait() if not hovering then break end local t2 = TweenService:Create(sel, TweenInfo.new(0.35, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {Size = UDim2.new(1,0,1,0)}) t2:Play(); t2.Completed:Wait() end sel.Size = UDim2.new(1,0,1,0) if not sel:GetAttribute("Selected") then sel.Visible = false end end) end) sw.MouseLeave:Connect(function() hovering = false end) return sel end local addonState = { step = {enabled=false, color=Color3.fromRGB(180,220,255)}, glass = {enabled=false, color=Color3.fromRGB(180,210,255)}, wings = {enabled=false, color=Color3.fromRGB(90,150,255)}, crown = {enabled=false, color=Color3.fromRGB(255,200,60)}, aura = {enabled=false, color=Color3.fromRGB(200,200,255)}, } local glassParts = {} local modelAttachments = {} local auraEmitters = {} local auraBaseHue = 0 local crownParts = {} local crownSpring = {pos = Vector3.new(), vel = Vector3.new(), tilt = 0, tiltVel = 0} local emitters = {} local effectsFolder local stepSide = 1 local stepDistance = 0 local STEP_DIST = 3.2 local FOOT_OFFSET = 0.6 local function newEmitter(props) local p = Instance.new("ParticleEmitter") for k, v in pairs(props) do p[k] = v end return p end local function clearEffects() if effectsFolder then effectsFolder:Destroy(); effectsFolder = nil end emitters = {} glassParts = {} for _, m in pairs(modelAttachments) do if m.Parent then m:Destroy() end end modelAttachments = {} crownParts = {} crownSpring = {pos = Vector3.new(), vel = Vector3.new(), tilt = 0, tiltVel = 0} auraEmitters = {} end local applyGlass local applyModel local antiFlingOn = false local partCheckerOn = false local partVelLimit = 150 local partRestoreTime = 0 local function setAntiFling(on) antiFlingOn = on for _, p in ipairs(Players:GetPlayers()) do if p ~= plr and p.Character then for _, d in ipairs(p.Character:GetDescendants()) do if d:IsA("BasePart") then d.CanCollide = not on end end end end end local function buildEffects(char) clearEffects() local hrp = char:WaitForChild("HumanoidRootPart", 5) if not hrp then return end local folder = Instance.new("Folder"); folder.Name = "DarkHUD_Effects"; folder.Parent = char effectsFolder = folder if addonState.glass.enabled then applyGlass(true, addonState.glass.color) end if addonState.wings.enabled then applyModel("wings", true, addonState.wings.color) end if addonState.crown.enabled then applyModel("crown", true, addonState.crown.color) end if addonState.aura.enabled then applyModel("aura", true, addonState.aura.color) end end local function setAddonEnabled(key, on) addonState[key].enabled = on if key == "glass" then applyGlass(on, addonState.glass.color); return end if key == "wings" or key == "crown" or key == "aura" then applyModel(key, on, addonState[key].color); return end for _, em in ipairs(emitters[key] or {}) do em.Enabled = on end end local function setTexEnabled(char, on) for _, d in ipairs(char:GetDescendants()) do if d:IsA("SurfaceAppearance") then pcall(function() d.Enabled = on end) elseif d:IsA("Decal") or d:IsA("Texture") then if on then if d:GetAttribute("GlassT") ~= nil then pcall(function() d.Transparency = d:GetAttribute("GlassT") end) end else if d:GetAttribute("GlassT") == nil then d:SetAttribute("GlassT", d.Transparency) end pcall(function() d.Transparency = 1 end) end elseif d:IsA("Shirt") then if on then if d:GetAttribute("GlassTex") ~= nil then pcall(function() d.ShirtTemplate = d:GetAttribute("GlassTex") end) end else if d:GetAttribute("GlassTex") == nil then d:SetAttribute("GlassTex", d.ShirtTemplate) end pcall(function() d.ShirtTemplate = "" end) end elseif d:IsA("Pants") then if on then if d:GetAttribute("GlassTex") ~= nil then pcall(function() d.PantsTemplate = d:GetAttribute("GlassTex") end) end else if d:GetAttribute("GlassTex") == nil then d:SetAttribute("GlassTex", d.PantsTemplate) end pcall(function() d.PantsTemplate = "" end) end elseif d:IsA("ShirtGraphic") then if on then if d:GetAttribute("GlassTex") ~= nil then pcall(function() d.Graphic = d:GetAttribute("GlassTex") end) end else if d:GetAttribute("GlassTex") == nil then d:SetAttribute("GlassTex", d.Graphic) end pcall(function() d.Graphic = "" end) end end end end applyGlass = function(on, col) local char = plr.Character if not char then return end for _, d in ipairs(char:GetDescendants()) do if d:IsA("BasePart") and d.Name ~= "HumanoidRootPart" and d.Transparency < 1 and not d:FindFirstChild("DarkHUD_Glass") then local store = Instance.new("Folder"); store.Name = "DarkHUD_Glass"; store.Parent = d store:SetAttribute("Mat", d.Material.Name) store:SetAttribute("Color", d.Color) store:SetAttribute("Transp", d.Transparency) store:SetAttribute("Refl", d.Reflectance) if d:IsA("MeshPart") then store:SetAttribute("Tex", d.TextureID) end table.insert(glassParts, d) end end setTexEnabled(char, not on) for _, d in ipairs(glassParts) do if d.Parent then local store = d:FindFirstChild("DarkHUD_Glass") if on then d.Material = Enum.Material.Glass d.Color = col d.Transparency = 0.5 d.Reflectance = 0.1 if d:IsA("MeshPart") then pcall(function() d.TextureID = "" end) end elseif store then d.Material = Enum.Material[store:GetAttribute("Mat")] or Enum.Material.Plastic d.Color = store:GetAttribute("Color") or d.Color d.Transparency = store:GetAttribute("Transp") or 0 d.Reflectance = store:GetAttribute("Refl") or 0 if d:IsA("MeshPart") then pcall(function() d.TextureID = store:GetAttribute("Tex") or "" end) end end end end end applyModel = function(key, on, col) if modelAttachments[key] then modelAttachments[key]:Destroy(); modelAttachments[key] = nil end if not on then return end local char = plr.Character if not char then return end local tmplFolder = game:GetService("ReplicatedStorage"):FindFirstChild("DarkHUD_Addons") local tmplName = (key == "wings" and "Wings") or (key == "crown" and "Crown") or (key == "aura" and "Aura") local tmpl = tmplFolder and tmplName and tmplFolder:FindFirstChild(tmplName) if not tmpl then return end local anchor if key == "wings" then anchor = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso") elseif key == "aura" then anchor = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") else anchor = char:FindFirstChild("Head") end if not anchor then return end local model = tmpl:Clone() local folder = Instance.new("Folder") folder.Name = "DarkHUD_" .. key folder.Parent = char modelAttachments[key] = folder local parts = {} if model:IsA("BasePart") then table.insert(parts, model) end for _, d in ipairs(model:GetDescendants()) do if d:IsA("BasePart") then table.insert(parts, d) end end for _, d in ipairs(parts) do d.Anchored = false d.CanCollide = false d.Massless = true d.CastShadow = false d.Color = col d.Material = Enum.Material.Neon d.Transparency = 0 d.LocalTransparencyModifier = 0 if d:IsA("MeshPart") then pcall(function() d.TextureID = "" end) end local tex = d:FindFirstChildOfClass("Texture") if tex then tex.Texture = "" end end model.Parent = folder if key == "aura" then local map = { ["Torso"] = {"UpperTorso", "Torso"}, ["Head"] = {"Head"}, ["Left Arm"] = {"LeftUpperArm", "Left Arm"}, ["Right Arm"] = {"RightUpperArm", "Right Arm"}, ["Left Leg"] = {"LeftUpperLeg", "Left Leg"}, ["Right Leg"] = {"RightUpperLeg", "Right Leg"}, } for _, d in ipairs(parts) do d.Transparency = 1 local names = map[d.Name] or {d.Name} local target for _, n in ipairs(names) do local t = char:FindFirstChild(n) if t and t:IsA("BasePart") then target = t break end end if target then d.CFrame = target.CFrame local w = Instance.new("WeldConstraint") w.Part0 = target w.Part1 = d w.Parent = d end end for _, d in ipairs(model:GetDescendants()) do if d:IsA("ParticleEmitter") then local kps = {} for _, k in ipairs(d.Color.Keypoints) do table.insert(kps, {t = k.Time, v = k.Value}) end table.insert(auraEmitters, {em = d, kps = kps}) end end setAuraHue(addonState.aura.color) return end if key == "crown" then local mp = parts[1] if mp then mp.Anchored = true local topY = anchor.Position.Y + anchor.Size.Y/2 for _, d in ipairs(char:GetChildren()) do if d:IsA("Accessory") then local h = d:FindFirstChild("Handle") if h then local t = h.Position.Y + h.Size.Y/2; if t > topY then topY = t end end end end local baseY = (topY - anchor.Position.Y) + mp.Size.Y/2 + 0.15 mp.CFrame = anchor.CFrame * CFrame.new(0, baseY, 0) table.insert(crownParts, {part = mp, anchor = anchor, baseY = baseY}) end return end local offsets = { wings = CFrame.new(0, 1.6, 1.4), } local off = offsets[key] or CFrame.new() for _, d in ipairs(parts) do d.CFrame = anchor.CFrame * off local w = Instance.new("WeldConstraint") w.Part0 = anchor w.Part1 = d w.Parent = d end end local function setAddonColor(key, col) addonState[key].color = col if key == "glass" then if addonState.glass.enabled then applyGlass(true, col) end return end if key == "wings" or key == "crown" or key == "aura" then if addonState[key].enabled then applyModel(key, true, col) end return end for _, em in ipairs(emitters[key] or {}) do em.Color = ColorSequence.new(col) end end setAuraHue = function(col) for _, e in ipairs(auraEmitters) do if e.em.Parent then e.em.Color = ColorSequence.new(col) end end end local function spawnFootPart(origin, dir, side, col) local rp = RaycastParams.new() rp.FilterType = Enum.RaycastFilterType.Exclude rp.FilterDescendantsInstances = {plr.Character} local hit = workspace:Raycast(origin + Vector3.new(0,3,0), Vector3.new(0,-9,0), rp) local groundPos, normal if hit then groundPos = hit.Position normal = hit.Normal else groundPos = origin - Vector3.new(0,2.6,0) normal = Vector3.new(0,1,0) end local part = Instance.new("Part") part.Anchored = true part.CanCollide = false part.CanQuery = false part.CanTouch = false part.Massless = true part.CastShadow = false part.Size = Vector3.new(1.0, 0.1, 1.7) part.Color = col part.Material = Enum.Material.Neon part.Transparency = 0.35 local look = dir.Magnitude > 0.1 and dir.Unit or Vector3.new(0,0,1) part.CFrame = CFrame.lookAt(groundPos + normal*0.06, groundPos + normal*0.06 + Vector3.new(look.X,0,look.Z)) part.Parent = workspace task.spawn(function() local t = 0.35 while t < 1 do t = t + 0.09 if not part.Parent then return end part.Transparency = math.min(1, t) task.wait(0.05) end if part.Parent then part:Destroy() end end) end plr.CharacterAdded:Connect(function(char) task.wait(0.2); buildEffects(char) end) if plr.Character then buildEffects(plr.Character) end -- anti-fling: keep other players' parts non-collidable while enabled RunService.Heartbeat:Connect(function() if not antiFlingOn then return end for _, p in ipairs(Players:GetPlayers()) do if p ~= plr and p.Character then for _, d in ipairs(p.Character:GetDescendants()) do if d:IsA("BasePart") and d.CanCollide then d.CanCollide = false end end end end end) -- part velocity checker: disable client collision on fast-moving loose parts local disabledByChecker = {} RunService.Heartbeat:Connect(function() if not partCheckerOn then return end local now = tick() for _, d in ipairs(workspace:GetDescendants()) do if d:IsA("BasePart") and not d.Anchored and not d:IsDescendantOf(plr.Character) then local v = d.AssemblyLinearVelocity if v.Magnitude > partVelLimit then if d.CanCollide then d.CanCollide = false d:SetAttribute("DarkHUD_Fast", true) end d:SetAttribute("DarkHUD_FastTime", now) end end end if partRestoreTime > 0 then for _, d in ipairs(workspace:GetDescendants()) do if d:IsA("BasePart") and d:GetAttribute("DarkHUD_Fast") then local t = d:GetAttribute("DarkHUD_FastTime") or 0 if now - t > partRestoreTime then d.CanCollide = true d:SetAttribute("DarkHUD_Fast", nil) d:SetAttribute("DarkHUD_FastTime", nil) end end end end end) local sg = new("ScreenGui", {Name="DarkHUD_ScreenGui", ResetOnSpawn=false, IgnoreGuiInset=true, ZIndexBehavior=Enum.ZIndexBehavior.Sibling}, pg) local main = new("Frame", {Name="MainFrame", Size=UDim2.new(0,600,0,430), Position=UDim2.new(0.5,-410,0.5,-215), BackgroundColor3=Theme.bg, BorderSizePixel=0, Active=true}, sg) C(main,12); S(main); reg(main,"BackgroundColor3","bg") local menuScale = new("UIScale", {Scale=0.72}, main) local dragBar = new("Frame", {Name="DragBar", Size=UDim2.new(1,-206,0,34), Position=UDim2.new(0,132,0,0), BackgroundTransparency=1, Active=true}, main) makeDraggable(main, dragBar) TweenService:Create(menuScale, TweenInfo.new(0.45, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Scale=1}):Play() local side = new("Frame", {Name="Sidebar", Size=UDim2.new(0,132,1,0), BackgroundColor3=Theme.sidebar, BorderSizePixel=0}, main) C(side,10); reg(side,"BackgroundColor3","sidebar") local iconF = new("Frame", {Name="Icon", Size=UDim2.new(0,40,0,40), Position=UDim2.new(0,12,0,12), BackgroundColor3=Theme.panel2, BorderSizePixel=0}, side) C(iconF,8); reg(iconF,"BackgroundColor3","panel2") local iconImg = new("ImageLabel", {Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Image=HEADSHOT}, iconF) C(iconImg,8) new("TextLabel", {Size=UDim2.new(0,70,0,40), Position=UDim2.new(0,58,0,12), BackgroundTransparency=1, Text="slop menu", TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=13, TextXAlignment=Enum.TextXAlignment.Left}, side) local nav = new("ScrollingFrame", {Name="NavScroll", Size=UDim2.new(1,0,1,-64), Position=UDim2.new(0,0,0,64), BackgroundTransparency=1, ScrollBarThickness=0, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y}, side) new("UIListLayout", {Padding=UDim.new(0,2), SortOrder=Enum.SortOrder.LayoutOrder}, nav) new("UIPadding", {PaddingLeft=UDim.new(0,12), PaddingRight=UDim.new(0,12), PaddingTop=UDim.new(0,4), PaddingBottom=UDim.new(0,8)}, nav) local content = new("Frame", {Name="Content", Size=UDim2.new(1,-132,1,0), Position=UDim2.new(0,132,0,0), BackgroundTransparency=1}, main) local preview = new("Frame", {Name="Preview", Size=UDim2.new(0,200,0,330), Position=UDim2.new(0.5,230,0.5,-165), BackgroundColor3=Theme.panel, BorderSizePixel=0}, sg) C(preview,12); S(preview); reg(preview,"BackgroundColor3","panel") makeDraggable(preview) new("TextLabel", {Size=UDim2.new(1,-24,0,16), Position=UDim2.new(0,14,0,12), BackgroundTransparency=1, Text="AVATAR PREVIEW", TextColor3=Theme.muted, Font=Enum.Font.GothamBold, TextSize=10, TextXAlignment=Enum.TextXAlignment.Left}, preview) local vp = new("ViewportFrame", {Name="AvatarPreview", Size=UDim2.new(1,-24,1,-48), Position=UDim2.new(0,12,0,34), BackgroundColor3=Theme.panel2, BorderSizePixel=0, Ambient=Color3.fromRGB(130,130,140), LightColor=Color3.fromRGB(255,255,255)}, preview) C(vp,10); reg(vp,"BackgroundColor3","panel2") local cam = Instance.new("Camera"); cam.Parent = vp; vp.CurrentCamera = cam cam.CFrame = CFrame.new(Vector3.new(0,0.2,12), Vector3.new(0,-0.6,0)) local clone pcall(function() local char = plr.Character or plr.CharacterAdded:Wait() local prev = char.Archivable; char.Archivable = true local c = char:Clone(); char.Archivable = prev for _, d in ipairs(c:GetDescendants()) do if d:IsA("BaseScript") then d:Destroy() end end c.Parent = vp; clone = c end) if clone then local spin = 0 RunService.RenderStepped:Connect(function(dt) if not clone.Parent then return end spin = spin + dt * 0.8 clone:PivotTo(CFrame.new(0,0,0) * CFrame.Angles(0, spin, 0)) end) end local winBtns = new("Frame", {Name="WinBtns", Size=UDim2.new(0,64,0,24), Position=UDim2.new(1,-74,0,8), BackgroundTransparency=1}, main) new("UIListLayout", {FillDirection=Enum.FillDirection.Horizontal, Padding=UDim.new(0,6), HorizontalAlignment=Enum.HorizontalAlignment.Right, SortOrder=Enum.SortOrder.LayoutOrder}, winBtns) local minBtn = new("TextButton", {Name="MinBtn", Size=UDim2.new(0,26,0,24), BackgroundColor3=Theme.panel2, Text="-", TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=14, BorderSizePixel=0, AutoButtonColor=false, LayoutOrder=1}, winBtns) C(minBtn,6); reg(minBtn,"BackgroundColor3","panel2") local closeBtn = new("TextButton", {Name="CloseBtn", Size=UDim2.new(0,26,0,24), BackgroundColor3=Theme.panel2, Text="X", TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=12, BorderSizePixel=0, AutoButtonColor=false, LayoutOrder=2}, winBtns) C(closeBtn,6); reg(closeBtn,"BackgroundColor3","panel2") local mb = new("Frame", {Name="MinimizedIcon", Size=UDim2.new(0,46,0,46), Position=UDim2.new(0.5,-23,0.5,-23), BackgroundColor3=Theme.panel, BorderSizePixel=0, Visible=false}, sg) C(mb,12); S(mb, Theme.accent, 2); reg(mb,"BackgroundColor3","panel") local mbImg = new("ImageLabel", {Size=UDim2.new(1,-8,1,-8), Position=UDim2.new(0,4,0,4), BackgroundTransparency=1, Image=HEADSHOT}, mb) C(mbImg,10) onAccent(function() local st = mb:FindFirstChildOfClass("UIStroke"); if st then st.Color = Theme.accent end end) local mbdrag, mbmoved, mbdragStart, mbStartPos mb.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then mbdrag = true; mbmoved = false; mbdragStart = i.Position; mbStartPos = mb.Position i.Changed:Connect(function() if i.UserInputState == Enum.UserInputState.End then mbdrag = false end end) end end) mb.InputChanged:Connect(function(i) if mbdrag and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local d = i.Position - mbdragStart if math.abs(d.X) + math.abs(d.Y) > 4 then mbmoved = true end mb.Position = UDim2.new(mbStartPos.X.Scale, mbStartPos.X.Offset + d.X, mbStartPos.Y.Scale, mbStartPos.Y.Offset + d.Y) end end) mb.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then if not mbmoved then main.Visible = true; preview.Visible = true; mb.Visible = false end mbdrag = false end end) minBtn.MouseButton1Click:Connect(function() mb.Position = main.Position; main.Visible = false; preview.Visible = false; mb.Visible = true end) closeBtn.MouseButton1Click:Connect(function() sg:Destroy() end) local stats = new("Frame", {Name="Stats", Size=UDim2.new(0,0,0,26), AutomaticSize=Enum.AutomaticSize.X, AnchorPoint=Vector2.new(0.5,0), Position=UDim2.new(0.5,0,0,10), BackgroundColor3=Theme.panel, BackgroundTransparency=0.1, BorderSizePixel=0}, sg) C(stats,8); S(stats); reg(stats,"BackgroundColor3","panel") new("UIPadding", {PaddingLeft=UDim.new(0,12), PaddingRight=UDim.new(0,12)}, stats) local statLbl = new("TextLabel", {Size=UDim2.new(0,0,1,0), AutomaticSize=Enum.AutomaticSize.X, BackgroundTransparency=1, Text="FPS: --", TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=12, TextXAlignment=Enum.TextXAlignment.Center, TextYAlignment=Enum.TextYAlignment.Center}, stats) reg(statLbl,"TextColor3","text") makeDraggable(stats) local xyz = new("Frame", {Name="Coords", Size=UDim2.new(0,152,0,52), Position=UDim2.new(0,16,1,-152), BackgroundColor3=Theme.panel, BackgroundTransparency=0.1, BorderSizePixel=0}, sg) C(xyz,8); S(xyz); reg(xyz,"BackgroundColor3","panel") new("TextLabel", {Size=UDim2.new(1,-16,0,14), Position=UDim2.new(0,10,0,5), BackgroundTransparency=1, Text="POSITION", TextColor3=Theme.muted, Font=Enum.Font.GothamBold, TextSize=9, TextXAlignment=Enum.TextXAlignment.Left}, xyz) local xyzLbl = new("TextLabel", {Size=UDim2.new(1,-16,0,24), Position=UDim2.new(0,10,0,20), BackgroundTransparency=1, Text="X 0 Y 0 Z 0", TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=12, TextXAlignment=Enum.TextXAlignment.Left}, xyz) reg(xyzLbl,"TextColor3","text") makeDraggable(xyz) local spd = new("Frame", {Name="Speed", Size=UDim2.new(0,130,0,30), Position=UDim2.new(0,16,1,-46), BackgroundColor3=Theme.panel, BackgroundTransparency=0.1, BorderSizePixel=0}, sg) C(spd,8); S(spd); reg(spd,"BackgroundColor3","panel") local spdLbl = new("TextLabel", {Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Text="Speed: 0", TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=12}, spd) reg(spdLbl,"TextColor3","text") makeDraggable(spd) local wm = new("Frame", {Name="Watermark", Size=UDim2.new(0,160,0,38), Position=UDim2.new(0,16,1,-92), BackgroundColor3=Theme.panel, BackgroundTransparency=0.05, BorderSizePixel=0}, sg) C(wm,8); S(wm); reg(wm,"BackgroundColor3","panel") local wmImg = new("ImageLabel", {Size=UDim2.new(0,26,0,26), Position=UDim2.new(0,6,0.5,-13), BackgroundTransparency=1, Image=HEADSHOT}, wm) C(wmImg,6) new("TextLabel", {Size=UDim2.new(1,-42,0,14), Position=UDim2.new(0,38,0,6), BackgroundTransparency=1, Text=plr.DisplayName, TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left}, wm) new("TextLabel", {Size=UDim2.new(1,-42,0,12), Position=UDim2.new(0,38,0,20), BackgroundTransparency=1, Text="@"..plr.Name, TextColor3=Theme.muted, Font=Enum.Font.GothamMedium, TextSize=10, TextXAlignment=Enum.TextXAlignment.Left}, wm) makeDraggable(wm) local fontEls = {} local function checkbox(parent, on, cb) local b = new("TextButton", {Size=UDim2.new(0,34,0,18), Position=UDim2.new(1,-46,0.5,-9), BackgroundColor3=on and Theme.accent or Theme.off, Text="", BorderSizePixel=0, AutoButtonColor=false, ClipsDescendants=true}, parent) C(b,9); S(b, Color3.fromRGB(255,255,255), 0) local knob = new("Frame", {Size=UDim2.new(0,14,0,14), Position=on and UDim2.new(1,-16,0.5,-7) or UDim2.new(0,2,0.5,-7), BackgroundColor3=Color3.fromRGB(245,245,245), BorderSizePixel=0}, b) C(knob,7) local state = on local function refresh() TweenService:Create(b, TweenInfo.new(0.15, Enum.EasingStyle.Quad), {BackgroundColor3 = state and Theme.accent or Theme.off}):Play() TweenService:Create(knob, TweenInfo.new(0.15, Enum.EasingStyle.Quad), {Position = state and UDim2.new(1,-16,0.5,-7) or UDim2.new(0,2,0.5,-7)}):Play() end refresh(); onAccent(refresh) b.MouseButton1Click:Connect(function() state = not state; refresh(); if cb then cb(state) end end) return b end local pagesHolder = new("Frame", {Name="Pages", Size=UDim2.new(1,-20,1,-48), Position=UDim2.new(0,10,0,38), BackgroundTransparency=1}, content) local tabs = {"World","Screen","Addons","MISC","Emotes","Animations","Helpers","Menu","Music"} local pages = {} for _, t in ipairs(tabs) do pages[t] = new("Frame", {Name=t.."Page", Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Visible=false}, pagesHolder) end local menuPage = pages["Menu"] local function makeColumn(xScale, xOff, widthOff) local col = new("ScrollingFrame", {Size=UDim2.new(0.5,widthOff,1,0), Position=UDim2.new(xScale,xOff,0,0), BackgroundTransparency=1, ScrollBarThickness=0, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y}, menuPage) new("UIListLayout", {Padding=UDim.new(0,8), SortOrder=Enum.SortOrder.LayoutOrder}, col) new("UIPadding", {PaddingTop=UDim.new(0,2), PaddingBottom=UDim.new(0,10)}, col) return col end local colA = makeColumn(0, 0, -5) local colB = makeColumn(0.5, 5, -5) local groupCounter = 0 local function bodyOrder(body) local n = (body:GetAttribute("Order") or 0) + 1 body:SetAttribute("Order", n) return n end local function makeGroup(parent, title) groupCounter = groupCounter + 1 local g = new("Frame", {Name="Group"..groupCounter, Size=UDim2.new(1,0,0,30), BackgroundColor3=Theme.panel, BorderSizePixel=0, LayoutOrder=groupCounter, ClipsDescendants=true}, parent) C(g,8); S(g); reg(g,"BackgroundColor3","panel") local head = new("TextButton", {Name="Head", Size=UDim2.new(1,0,0,30), BackgroundTransparency=1, Text="", AutoButtonColor=false}, g) local chev = new("TextLabel", {Name="Chev", Size=UDim2.new(0,12,0,30), Position=UDim2.new(0,12,0,0), BackgroundTransparency=1, Text="v", TextColor3=Theme.muted, Font=Enum.Font.GothamBold, TextSize=11}, g) new("TextLabel", {Size=UDim2.new(1,-44,0,30), Position=UDim2.new(0,30,0,0), BackgroundTransparency=1, Text=title, TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left}, g) local body = new("Frame", {Name="Body", Size=UDim2.new(1,-24,0,0), Position=UDim2.new(0,12,0,32), BackgroundTransparency=1, AutomaticSize=Enum.AutomaticSize.Y}, g) new("UIListLayout", {Padding=UDim.new(0,6), SortOrder=Enum.SortOrder.LayoutOrder}, body) local open = true local lastH = 0 local function updateSize() if open then g.Size = UDim2.new(1,0,0, 40 + lastH) else g.Size = UDim2.new(1,0,0,30) end end body:GetPropertyChangedSignal("AbsoluteSize"):Connect(function() if body.AbsoluteSize.Y > 0 then lastH = body.AbsoluteSize.Y end updateSize() end) head.MouseButton1Click:Connect(function() open = not open body.Visible = open chev.Text = open and "v" or ">" updateSize() end) return body end local function rowFrame(body, h) local f = new("Frame", {Size=UDim2.new(1,0,0,h), BackgroundColor3=Theme.panel2, BorderSizePixel=0, LayoutOrder=bodyOrder(body)}, body) C(f,6); reg(f,"BackgroundColor3","panel2") return f end local function groupToggle(body, label, on, cb) local f = rowFrame(body, 30) new("TextLabel", {Size=UDim2.new(1,-60,1,0), Position=UDim2.new(0,12,0,0), BackgroundTransparency=1, Text=label, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left}, f) checkbox(f, on, cb) return f end local function groupKeybind(body, label, default) local f = rowFrame(body, 30) new("TextLabel", {Size=UDim2.new(1,-80,1,0), Position=UDim2.new(0,12,0,0), BackgroundTransparency=1, Text=label, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left}, f) local kb = new("TextButton", {Size=UDim2.new(0,54,0,22), Position=UDim2.new(1,-64,0.5,-11), BackgroundColor3=Theme.panel, Text=default, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=10, BorderSizePixel=0, AutoButtonColor=false}, f) C(kb,5); S(kb); reg(kb,"BackgroundColor3","panel") return f end local function groupSlider(body, label, min, max, init, cb, fmt) local f = new("Frame", {Size=UDim2.new(1,0,0,46), BackgroundColor3=Theme.panel2, BorderSizePixel=0, LayoutOrder=bodyOrder(body)}, body) C(f,6); reg(f,"BackgroundColor3","panel2") new("TextLabel", {Size=UDim2.new(1,-84,0,14), Position=UDim2.new(0,12,0,7), BackgroundTransparency=1, Text=label, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left}, f) local valBox = new("Frame", {Size=UDim2.new(0,52,0,18), Position=UDim2.new(1,-64,0,5), BackgroundColor3=Theme.panel, BorderSizePixel=0}, f) C(valBox,4); S(valBox) local val = new("TextLabel", {Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Text=fmt and fmt(init) or tostring(init), TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=10}, valBox) local track = new("Frame", {Size=UDim2.new(1,-24,0,4), Position=UDim2.new(0,12,0,34), BackgroundColor3=Color3.fromRGB(45,45,55), BorderSizePixel=0}, f) C(track,2) local frac = (init-min)/(max-min) local fill = new("Frame", {Size=UDim2.new(frac,0,1,0), BackgroundColor3=Theme.accent, BorderSizePixel=0}, track) C(fill,2) local handle = new("Frame", {Size=UDim2.new(0,12,0,12), AnchorPoint=Vector2.new(0.5,0.5), Position=UDim2.new(frac,0,0.5,0), BackgroundColor3=Color3.fromRGB(245,245,245), BorderSizePixel=0, ZIndex=2}, track) C(handle,6); S(handle, Theme.accent, 2) onAccent(function() fill.BackgroundColor3 = Theme.accent; local st = handle:FindFirstChildOfClass("UIStroke"); if st then st.Color = Theme.accent end end) local dragging = false local function setFromX(x) local rel = math.clamp((x - track.AbsolutePosition.X) / math.max(track.AbsoluteSize.X, 1), 0, 1) local v = min + (max-min)*rel fill.Size = UDim2.new(rel,0,1,0) handle.Position = UDim2.new(rel,0,0.5,0) val.Text = fmt and fmt(v) or string.format("%.2f", v) cb(v) end track.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = true; setFromX(i.Position.X) end end) track.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then setFromX(i.Position.X) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end) return f end local function groupSwatch(body, label, colors, getCurrent, onPick) local f = new("Frame", {Size=UDim2.new(1,0,0,48), BackgroundColor3=Theme.panel2, BorderSizePixel=0, LayoutOrder=bodyOrder(body)}, body) C(f,6); reg(f,"BackgroundColor3","panel2") new("TextLabel", {Size=UDim2.new(1,-20,0,14), Position=UDim2.new(0,12,0,7), BackgroundTransparency=1, Text=label, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left}, f) local row = new("Frame", {Size=UDim2.new(1,-24,0,22), Position=UDim2.new(0,12,0,24), BackgroundTransparency=1}, f) new("UIListLayout", {FillDirection=Enum.FillDirection.Horizontal, Padding=UDim.new(0,6)}, row) local swatches = {} for i, col in ipairs(colors) do local sw = new("TextButton", {Size=UDim2.new(0,20,0,20), BackgroundColor3=col, Text="", BorderSizePixel=0, AutoButtonColor=false, LayoutOrder=i}, row) C(sw,5) swatches[i] = makeSwatchCorners(sw) sw.MouseButton1Click:Connect(function() onPick(i, col) for j, s in ipairs(swatches) do s.Visible = (j == i) s:SetAttribute("Selected", j == i) end end) end for j, s in ipairs(swatches) do local on = (j == getCurrent()) s.Visible = on s:SetAttribute("Selected", on) end return f end local function groupButton(body, label, col, txtcol, cb) local b = new("TextButton", {Size=UDim2.new(1,0,0,30), BackgroundColor3=col, Text=label, TextColor3=txtcol, Font=Enum.Font.GothamMedium, TextSize=11, BorderSizePixel=0, AutoButtonColor=false, LayoutOrder=bodyOrder(body)}, body) C(b,6) b.MouseButton1Click:Connect(cb) return b end local function groupTextBox(body, label, default, cb) local f = new("Frame", {Size=UDim2.new(1,0,0,46), BackgroundColor3=Theme.panel2, BorderSizePixel=0, LayoutOrder=bodyOrder(body)}, body) C(f,6); reg(f,"BackgroundColor3","panel2") new("TextLabel", {Size=UDim2.new(1,-84,0,14), Position=UDim2.new(0,12,0,7), BackgroundTransparency=1, Text=label, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left}, f) local box = new("TextBox", {Size=UDim2.new(0,60,0,22), Position=UDim2.new(1,-72,0,5), BackgroundColor3=Theme.panel, Text=default, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=11, BorderSizePixel=0, ClearTextOnFocus=false, PlaceholderText="number"}, f) C(box,5); S(box); reg(box,"BackgroundColor3","panel") local hint = new("TextLabel", {Size=UDim2.new(1,-24,0,12), Position=UDim2.new(0,12,0,30), BackgroundTransparency=1, Text="", TextColor3=Theme.muted, Font=Enum.Font.GothamMedium, TextSize=9, TextXAlignment=Enum.TextXAlignment.Left}, f) local function commit() local n = tonumber(box.Text) if n then hint.Text = "" cb(n) else hint.Text = "enter a number" end end box.FocusLost:Connect(commit) cb(tonumber(default) or 0) return f end local themeList = { {name="Dark", bg=Color3.fromRGB(12,12,14), sidebar=Color3.fromRGB(8,8,10), panel=Color3.fromRGB(17,17,21), panel2=Color3.fromRGB(23,23,28)}, {name="Midnight", bg=Color3.fromRGB(10,13,24), sidebar=Color3.fromRGB(7,9,18), panel=Color3.fromRGB(15,19,32), panel2=Color3.fromRGB(22,27,44)}, {name="Purple", bg=Color3.fromRGB(18,12,22), sidebar=Color3.fromRGB(13,8,17), panel=Color3.fromRGB(24,17,30), panel2=Color3.fromRGB(33,24,41)}, {name="Gray", bg=Color3.fromRGB(20,20,20), sidebar=Color3.fromRGB(14,14,14), panel=Color3.fromRGB(26,26,26), panel2=Color3.fromRGB(34,34,34)}, } local curTheme = 1 local accentList = {Color3.fromRGB(130,120,255), Color3.fromRGB(90,160,255), Color3.fromRGB(255,120,160), Color3.fromRGB(120,220,150), Color3.fromRGB(255,180,90)} local curAccent = 1 local gMenu = makeGroup(colA, "MENU") groupKeybind(gMenu, "Keybind", "PgDn") groupSlider(gMenu, "Menu Size", 0.7, 1.3, 1, function(v) menuScale.Scale = v end, function(v) return string.format("%d%%", math.floor(v*100+0.5)) end) groupSlider(gMenu, "Font Size", 0.8, 1.6, 1, function(v) for _, e in ipairs(fontEls) do e[1].TextSize = math.max(6, math.floor(e[2]*v + 0.5)) end end, function(v) return string.format("%d%%", math.floor(v*100+0.5)) end) local gOverlay = makeGroup(colA, "OVERLAYS") groupToggle(gOverlay, "Watermark", true, function(on) wm.Visible = on end) groupToggle(gOverlay, "Stats Panel", true, function(on) stats.Visible = on end) groupToggle(gOverlay, "Speed Display", true, function(on) spd.Visible = on end) groupToggle(gOverlay, "Coords (XYZ)", true, function(on) xyz.Visible = on end) groupToggle(gOverlay, "Autoload Config", false, nil) local gAppear = makeGroup(colB, "APPEARANCE") groupSwatch(gAppear, "Theme", {themeList[1].panel, themeList[2].panel, themeList[3].panel, themeList[4].panel}, function() return curTheme end, function(i) curTheme = i local t = themeList[i] Theme.bg = t.bg; Theme.sidebar = t.sidebar; Theme.panel = t.panel; Theme.panel2 = t.panel2 applyTheme() end) groupSwatch(gAppear, "Accent", accentList, function() return curAccent end, function(i, col) curAccent = i; Theme.accent = col; applyAccent() end) groupButton(gAppear, "Unload", Color3.fromRGB(60,30,40), Color3.fromRGB(240,180,190), function() sg:Destroy() end) local configs = makeGroup(colB, "CONFIGS") local folderRow = new("Frame", {Size=UDim2.new(1,0,0,28), BackgroundTransparency=1, LayoutOrder=bodyOrder(configs)}, configs) new("UIListLayout", {FillDirection=Enum.FillDirection.Horizontal, Padding=UDim.new(0,6)}, folderRow) local folderBtns = {} for i, fn in ipairs({"default", "ou shi"}) do local b = new("TextButton", {Size=UDim2.new(0,0.5,-4,1,0), BackgroundColor3=Theme.panel2, Text=fn, TextColor3=(i==1) and Theme.text or Theme.muted, Font=Enum.Font.GothamMedium, TextSize=10, BorderSizePixel=0, AutoButtonColor=false, LayoutOrder=i}, folderRow) C(b,6); reg(b,"BackgroundColor3","panel2") folderBtns[i] = b b.MouseButton1Click:Connect(function() for j, fb in ipairs(folderBtns) do fb.TextColor3 = (j == i) and Theme.text or Theme.muted end end) end for _, n in ipairs({"ou shi", "legit", "rage"}) do local b = new("TextButton", {Size=UDim2.new(1,0,0,28), BackgroundColor3=Theme.panel2, Text=" "..n, TextColor3=Theme.text, Font=Enum.Font.GothamMedium, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left, BorderSizePixel=0, LayoutOrder=bodyOrder(configs)}, configs) C(b,6); reg(b,"BackgroundColor3","panel2") end local addonsPage = pages["Addons"] local aScroll = new("ScrollingFrame", {Name="AddonsScroll", Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, ScrollBarThickness=0, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y}, addonsPage) new("UIListLayout", {Padding=UDim.new(0,8), SortOrder=Enum.SortOrder.LayoutOrder}, aScroll) new("UIPadding", {PaddingRight=UDim.new(0,10), PaddingTop=UDim.new(0,2), PaddingBottom=UDim.new(0,8)}, aScroll) local palette = {Color3.fromRGB(255,255,255), Color3.fromRGB(120,170,255), Color3.fromRGB(255,120,160), Color3.fromRGB(120,220,150), Color3.fromRGB(255,200,90), Color3.fromRGB(190,120,255)} local addonDefs = { {key="step", label="Step Footprints"}, {key="wings", label="Wings"}, {key="crown", label="Crown"}, {key="aura", label="Aura"}, {key="glass", label="Glass Body"}, } for _, def in ipairs(addonDefs) do local card = new("Frame", {Size=UDim2.new(1,0,0,80), BackgroundColor3=Theme.panel, BorderSizePixel=0}, aScroll) C(card,8); S(card); reg(card,"BackgroundColor3","panel") new("TextLabel", {Size=UDim2.new(1,-70,0,16), Position=UDim2.new(0,12,0,8), BackgroundTransparency=1, Text=def.label, TextColor3=Theme.text, Font=Enum.Font.GothamBold, TextSize=12, TextXAlignment=Enum.TextXAlignment.Left}, card) local cb = checkbox(card, addonState[def.key].enabled, function(on) setAddonEnabled(def.key, on) end) cb.Position = UDim2.new(1,-42,0,8) new("TextLabel", {Size=UDim2.new(1,-24,0,12), Position=UDim2.new(0,12,0,28), BackgroundTransparency=1, Text="Color", TextColor3=Theme.muted, Font=Enum.Font.GothamMedium, TextSize=10, TextXAlignment=Enum.TextXAlignment.Left}, card) local row = new("Frame", {Size=UDim2.new(1,-24,0,22), Position=UDim2.new(0,12,0,44), BackgroundTransparency=1}, card) new("UIListLayout", {FillDirection=Enum.FillDirection.Horizontal, Padding=UDim.new(0,6)}, row) local swatches = {} for i, col in ipairs(palette) do local sw = new("TextButton", {Size=UDim2.new(0,22,0,22), BackgroundColor3=col, Text="", BorderSizePixel=0, AutoButtonColor=false, LayoutOrder=i}, row) C(sw,5) local sel = makeSwatchCorners(sw) if i == 1 then sel.Visible = true; sel:SetAttribute("Selected", true) end swatches[i] = sel sw.MouseButton1Click:Connect(function() setAddonColor(def.key, col) for j, s in ipairs(swatches) do s.Visible = (j == i) s:SetAttribute("Selected", j == i) end end) end end local startBhop, stopBhop local miscPage = pages["MISC"] local mScroll = new("ScrollingFrame", {Name="MiscScroll", Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, ScrollBarThickness=0, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y}, miscPage) new("UIListLayout", {Padding=UDim.new(0,8), SortOrder=Enum.SortOrder.LayoutOrder}, mScroll) new("UIPadding", {PaddingRight=UDim.new(0,10), PaddingTop=UDim.new(0,2), PaddingBottom=UDim.new(0,8)}, mScroll) local bhopGroup = makeGroup(mScroll, "MOVEMENT") groupToggle(bhopGroup, "Bhop", false, function(on) if on then startBhop() else stopBhop() end end) local helpersPage = pages["Helpers"] local hScroll = new("ScrollingFrame", {Name="HelpersScroll", Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, ScrollBarThickness=0, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y}, helpersPage) new("UIListLayout", {Padding=UDim.new(0,8), SortOrder=Enum.SortOrder.LayoutOrder}, hScroll) new("UIPadding", {PaddingRight=UDim.new(0,10), PaddingTop=UDim.new(0,2), PaddingBottom=UDim.new(0,8)}, hScroll) local hGroup = makeGroup(hScroll, "PROTECTION") groupToggle(hGroup, "Anti-Fling (No Collision)", false, function(on) setAntiFling(on) end) groupToggle(hGroup, "Part Velocity Checker", false, function(on) partCheckerOn = on end) groupTextBox(hGroup, "Velocity Limit (studs/s)", "150", function(n) partVelLimit = n end) groupTextBox(hGroup, "Auto Restore (sec)", "0", function(n) partRestoreTime = n end) local swordLockOn = false local swordLockHeartbeat = nil local swordLockHumanoid = nil local swordTargetRange = 100 local swordLockShake = 0 local swordLockSpeed = 0.35 local swordAutoLunge = false local swordJumpTarget = false local swordTargetWasJumping = false local swordAutoWalk = false local swordAutoWalkHeartbeat = nil local swordNearestOpponent local bhopOn = false local bhopHeartbeat = nil local bhopCharacter = nil local bhopOriginalWalkSpeed = nil local BHOP_WALK_SPEED = 26 local BHOP_HANDOFF_DISTANCE = 20 local function stopSwordAutoWalk() swordAutoWalk = false RunService:UnbindFromRenderStep("SwordAutoWalk") swordAutoWalkHeartbeat = nil local char = plr.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then hum:Move(Vector3.zero, false) end end local function startSwordAutoWalk() RunService:UnbindFromRenderStep("SwordAutoWalk") swordAutoWalk = true swordAutoWalkHeartbeat = true RunService:BindToRenderStep("SwordAutoWalk", Enum.RenderPriority.Character.Value + 1, function() if not swordAutoWalk then return end local char = plr.Character local root = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") if not root or not hum or hum.Health <= 0 then stopSwordAutoWalk() return end local target = swordNearestOpponent(root.Position) if not target or not target.Parent then return end -- Prefer the target's left side while also positioning behind them. local targetCF = target.CFrame local behindLeft = target.Position - targetCF.LookVector * 3.5 - targetCF.RightVector * 2.5 local flatGoal = Vector3.new(behindLeft.X, root.Position.Y, behindLeft.Z) local offset = flatGoal - root.Position if offset.Magnitude > 1.5 then hum:Move(Vector3.new(offset.X, 0, offset.Z).Unit, false) else hum:Move(Vector3.zero, false) end end) end local swordNextLunge = 0 local swordLungeBusy = false local swordRigsFolder = workspace:FindFirstChild("TestRigs") function swordNearestOpponent(rootPos) local best, bestDist = nil, swordTargetRange local checked = {} local function checkCharacter(character) if not character or character == plr.Character or checked[character] then return end checked[character] = true local hum = character:FindFirstChildOfClass("Humanoid") local hrp = character:FindFirstChild("HumanoidRootPart") if hum and hrp and hum.Health > 0 then local d = (hrp.Position - rootPos).Magnitude if d < bestDist then bestDist = d best = hrp end end end for _, otherPlayer in ipairs(Players:GetPlayers()) do if otherPlayer ~= plr then checkCharacter(otherPlayer.Character) end end for _, d in ipairs(workspace:GetDescendants()) do if d:IsA("Model") and d ~= plr.Character and not Players:GetPlayerFromCharacter(d) then if d:FindFirstChildOfClass("Humanoid") and d:FindFirstChild("HumanoidRootPart") then checkCharacter(d) end end end return best end function stopBhop() bhopOn = false if bhopHeartbeat then bhopHeartbeat:Disconnect() bhopHeartbeat = nil end local char = plr.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then if char == bhopCharacter and bhopOriginalWalkSpeed ~= nil then hum.WalkSpeed = bhopOriginalWalkSpeed end hum.Jump = false end bhopCharacter = nil bhopOriginalWalkSpeed = nil end function startBhop() if bhopHeartbeat then bhopHeartbeat:Disconnect() bhopHeartbeat = nil end bhopOn = true bhopCharacter = nil bhopOriginalWalkSpeed = nil bhopHeartbeat = RunService.Heartbeat:Connect(function() if not bhopOn then return end local char = plr.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") if not char or not hum or not root or hum.Health <= 0 then return end if char ~= bhopCharacter then bhopCharacter = char bhopOriginalWalkSpeed = hum.WalkSpeed end hum.WalkSpeed = BHOP_WALK_SPEED local handoff = false if swordJumpTarget and swordNearestOpponent then local target = swordNearestOpponent(root.Position) if target and target.Parent then local delta = target.Position - root.Position local flatDistance = Vector3.new(delta.X, 0, delta.Z).Magnitude handoff = flatDistance <= BHOP_HANDOFF_DISTANCE end end if not handoff and hum.FloorMaterial ~= Enum.Material.Air then hum.Jump = true hum:ChangeState(Enum.HumanoidStateType.Jumping) end end) end local function swordGetEquippedTool(character) local fallback = nil for _, child in ipairs(character:GetChildren()) do if child:IsA("Tool") then if child.Name:lower():find("sword") then return child end fallback = fallback or child end end return fallback end local function swordDoubleClickTool(character) if swordLungeBusy or not swordAutoLunge then return end local tool = swordGetEquippedTool(character) if not tool then return end swordLungeBusy = true task.spawn(function() tool:Activate() task.wait(0.05) if swordAutoLunge and tool.Parent == character then tool:Activate() end task.wait(0.3) swordLungeBusy = false end) end local function stopSwordLock() swordLockOn = false swordTargetWasJumping = false if swordLockHeartbeat then swordLockHeartbeat:Disconnect() swordLockHeartbeat = nil end if swordLockHumanoid then swordLockHumanoid.AutoRotate = true swordLockHumanoid = nil end end local function startSwordLock() if swordLockHeartbeat then swordLockHeartbeat:Disconnect() swordLockHeartbeat = nil end swordLockOn = true swordTargetWasJumping = false local char = plr.Character if not char then stopSwordLock() return end swordLockHumanoid = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") if not swordLockHumanoid or not root or swordLockHumanoid.Health <= 0 then stopSwordLock() return end swordLockHumanoid.AutoRotate = false swordLockHeartbeat = RunService.Heartbeat:Connect(function() local c = plr.Character local r = c and c:FindFirstChild("HumanoidRootPart") local h = c and c:FindFirstChildOfClass("Humanoid") if not r or not h or h.Health <= 0 then stopSwordLock() return end local target = swordNearestOpponent(r.Position) if not target or not target.Parent then h.AutoRotate = true swordTargetWasJumping = false return end h.AutoRotate = false local targetHumanoid = target.Parent:FindFirstChildOfClass("Humanoid") if swordJumpTarget and targetHumanoid then local targetState = targetHumanoid:GetState() local jumping = targetState == Enum.HumanoidStateType.Jumping or targetState == Enum.HumanoidStateType.Freefall if jumping and not swordTargetWasJumping and h.FloorMaterial ~= Enum.Material.Air then h.Jump = true end swordTargetWasJumping = jumping else swordTargetWasJumping = false end local dir = target.Position - r.Position local flat = Vector3.new(dir.X, 0, dir.Z) local distance = flat.Magnitude if distance > 0.001 then local theta = math.asin(math.clamp(1 / distance, -1, 1)) local directGoal = CFrame.lookAt(r.Position, r.Position + flat) local correctedGoal = directGoal * CFrame.Angles(0, theta, 0) if swordLockShake > 0 then local t = os.clock() * 18 local shake = math.rad(swordLockShake) -- Horizontal camera-like shake only: yaw left/right, no pitch or roll. correctedGoal = correctedGoal * CFrame.Angles(0, math.noise(t, 0, 0) * shake, 0) end r.CFrame = r.CFrame:Lerp(correctedGoal, swordLockSpeed) end if swordAutoLunge and distance <= 7 and os.clock() >= swordNextLunge then swordNextLunge = os.clock() + 0.4 swordDoubleClickTool(c) end end) end local swordGroup = makeGroup(hScroll, "SWORD LOCK-ON") groupToggle(swordGroup, "Lock-On", false, function(on) if on then startSwordLock() else stopSwordLock() end end) groupTextBox(swordGroup, "Target Range (studs)", "100", function(n) swordTargetRange = math.max(1, n) end) groupSlider(swordGroup, "Shake", 0, 15, 0, function(v) swordLockShake = v end, function(v) return string.format("%.1f°", v) end) groupSlider(swordGroup, "Lock Speed", 0.05, 1, 0.35, function(v) swordLockSpeed = v end, function(v) return string.format("%.2f", v) end) groupToggle(swordGroup, "Auto Lunge", false, function(on) swordAutoLunge = on end) groupToggle(swordGroup, "Jump Target", false, function(on) swordJumpTarget = on swordTargetWasJumping = false end) groupToggle(swordGroup, "Auto Walk Behind-Left", false, function(on) if on then startSwordAutoWalk() else stopSwordAutoWalk() end end) local swordOrbitOn = false local swordOrbitToken = 0 local function swordGetTarget(rootPos) local target = swordNearestOpponent(rootPos) if target and target.Parent then local hum = target.Parent:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then return target, hum end end return nil, nil end local function stopSwordOrbit() swordOrbitOn = false swordOrbitToken = swordOrbitToken + 1 end local function startSwordOrbit() swordOrbitOn = true swordOrbitToken = swordOrbitToken + 1 local myToken = swordOrbitToken task.spawn(function() local teleports = 0 while swordOrbitOn and myToken == swordOrbitToken do local char = plr.Character local root = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") if not root or not hum or hum.Health <= 0 then stopSwordOrbit() break end swordRigsFolder = swordRigsFolder or workspace:FindFirstChild("TestRigs") local target, targetHum = swordGetTarget(root.Position) if not target or not targetHum then task.wait(0.1) continue end local angle = math.random() * math.pi * 2 local offset = Vector3.new(math.cos(angle) * 4, 0, math.sin(angle) * 4) local destination = target.Position + offset root.CFrame = CFrame.lookAt(destination, target.Position) teleports = teleports + 1 task.wait(0.1) if not swordOrbitOn or myToken ~= swordOrbitToken then break end if targetHum.Health <= 0 or not target.Parent then stopSwordOrbit() break end if teleports % 2 == 0 then local outAngle = math.random() * math.pi * 2 local outOffset = Vector3.new(math.cos(outAngle) * 7, 0, math.sin(outAngle) * 7) local outDestination = target.Position + outOffset root.CFrame = CFrame.lookAt(outDestination, target.Position) task.wait(0.1) if not swordOrbitOn or myToken ~= swordOrbitToken then break end if targetHum.Health <= 0 or not target.Parent then stopSwordOrbit() break end root.CFrame = CFrame.lookAt(target.Position + offset, target.Position) end task.wait(0.1) end end) end groupToggle(swordGroup, "Orbit Teleport", false, function(on) if on then startSwordOrbit() else stopSwordOrbit() end end) for name, p in pairs(pages) do if name ~= "Menu" and name ~= "Addons" and name ~= "Helpers" then new("TextLabel", {Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Text=name, TextColor3=Theme.muted, Font=Enum.Font.GothamBold, TextSize=16}, p) end end local btns = {} local function selectTab(name) for n, p in pairs(pages) do p.Visible = (n == name) end for n, b in pairs(btns) do b.TextColor3 = (n == name) and Theme.text or Theme.muted end end for _, t in ipairs(tabs) do local b = new("TextButton", {Name=t.."Btn", Size=UDim2.new(1,0,0,24), BackgroundTransparency=1, Text=t, TextColor3=Theme.muted, Font=Enum.Font.GothamMedium, TextSize=11, TextXAlignment=Enum.TextXAlignment.Left, AutoButtonColor=false}, nav) btns[t] = b b.MouseButton1Click:Connect(function() selectTab(t) end) end selectTab("Menu") for _, d in ipairs(sg:GetDescendants()) do if d:IsA("TextLabel") or d:IsA("TextButton") or d:IsA("TextBox") then table.insert(fontEls, {d, d.TextSize}) end end local frames, accum, spdAccum, sessionTime = 0, 0, 0, 0 RunService.RenderStepped:Connect(function(dt) frames = frames + 1; accum = accum + dt; sessionTime = sessionTime + dt if accum >= 0.5 then local mins = math.floor(sessionTime / 60) local secs = math.floor(sessionTime % 60) statLbl.Text = "FPS: " .. math.floor(frames/accum + 0.5) .. " | Time: " .. string.format("%02d:%02d", mins, secs) .. " | Players: " .. #Players:GetPlayers() frames = 0; accum = 0 end spdAccum = spdAccum + dt if spdAccum >= 0.1 then spdAccum = 0 local char = plr.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") local v = hrp and hrp.AssemblyLinearVelocity or Vector3.zero spdLbl.Text = "Speed: " .. math.floor(math.sqrt(v.X*v.X + v.Z*v.Z) + 0.5) local pos = hrp and hrp.Position or Vector3.zero xyzLbl.Text = string.format("X %d Y %d Z %d", math.floor(pos.X), math.floor(pos.Y), math.floor(pos.Z)) end if #crownParts > 0 then local k, damp = 45, 9 for _, cp in ipairs(crownParts) do local head, part = cp.anchor, cp.part if head and part and head.Parent and part.Parent then local hrp = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") local worldVel = hrp and hrp.AssemblyLinearVelocity or Vector3.zero local localVel = head.CFrame:VectorToObjectSpace(worldVel) local desired = Vector3.new(0, cp.baseY or 1.1, math.clamp(-localVel.Z * 0.05, 0, 0.9)) local targetTilt = math.clamp(-localVel.Z * 0.045, 0, 0.55) local pos = cp.pos or desired local vel = cp.vel or Vector3.zero local a = (desired - pos) * k - vel * damp vel = vel + a * dt pos = pos + vel * dt cp.pos = pos cp.vel = vel local t = cp.tilt or 0 local tv = cp.tiltVel or 0 local ta = (targetTilt - t) * k - tv * damp tv = tv + ta * dt t = t + tv * dt cp.tilt = t cp.tiltVel = tv part.CFrame = head.CFrame * CFrame.new(pos) * CFrame.Angles(t, 0, 0) end end end if addonState.step.enabled then local char = plr.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if hrp then local v = hrp.AssemblyLinearVelocity local flat = Vector3.new(v.X, 0, v.Z) local hspeed = flat.Magnitude if hspeed > 2 then stepDistance = stepDistance + hspeed * dt if stepDistance >= STEP_DIST then stepDistance = 0 stepSide = -stepSide local right = flat.Unit:Cross(Vector3.new(0,1,0)) local origin = hrp.Position + right * (FOOT_OFFSET * stepSide) spawnFootPart(origin, flat, stepSide, addonState.step.color) end else stepDistance = 0 end end end end)