
Key RequiredUniversal

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)No comments yet for this script.



