1suvi7
Key RequiredUniversal

1suvi7

Universal Scriptgermgerm 767 views 2.3K executesUpdated Sep 18, 2026
Unrated
00
Lua Script•1332 lines (57304 chars)
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)

Features & Information

has some stuff is coded with ai made public to save, will be priv
#sword

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts