skiddingly
Key RequiredUniversal

skiddingly

Universal ScriptXxscripterxxXxscripterxx 118 views 5 executesUpdated Mar 5, 2026
Unrated
00
Lua Script•1323 lines (54104 chars)
-- ╔══════════════════════════════════════════════════╗
-- ║  Skiddingly | Beta  — loadstring compatible      ║
-- ║  Usage: loadstring(game:HttpGet("URL"))()         ║
-- ║  END to toggle GUI                               ║
-- ╚══════════════════════════════════════════════════╝

local Players      = game:GetService("Players")
local RunService   = game:GetService("RunService")
local UIS          = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Lighting     = game:GetService("Lighting")

local player    = Players.LocalPlayer
-- loadstring-safe: poll for PlayerGui instead of WaitForChild at module scope
local playerGui = player.PlayerGui or player:FindFirstChildOfClass("PlayerGui")
if not playerGui then
    local ok, pg = pcall(function() return player:WaitForChild("PlayerGui", 10) end)
    playerGui = ok and pg or player.PlayerGui
end

-- Clean up old instance
pcall(function()
    if playerGui:FindFirstChild("SKIDDINGLY") then
        playerGui.SKIDDINGLY:Destroy()
    end
end)

local mouse = player:GetMouse()

-- ══════════════════════════════════════════════════
-- THEME
-- ══════════════════════════════════════════════════
local T = {
    BG          = Color3.fromRGB(18,  20,  30),
    BGDeep      = Color3.fromRGB(12,  13,  20),
    Panel       = Color3.fromRGB(22,  25,  38),
    PanelBorder = Color3.fromRGB(40,  45,  70),
    TabBar      = Color3.fromRGB(15,  17,  26),
    TabActive   = Color3.fromRGB(30,  80,  180),
    TabInactive = Color3.fromRGB(22,  25,  38),
    Accent      = Color3.fromRGB(50,  120, 255),
    AccentDim   = Color3.fromRGB(30,  70,  160),
    CheckOff    = Color3.fromRGB(30,  33,  50),
    CheckOn     = Color3.fromRGB(50,  120, 255),
    SliderFill  = Color3.fromRGB(50,  120, 255),
    SliderTrack = Color3.fromRGB(25,  28,  42),
    Text        = Color3.fromRGB(210, 215, 230),
    SubText     = Color3.fromRGB(120, 130, 160),
    Dim         = Color3.fromRGB(60,  68,  100),
    TitleText   = Color3.fromRGB(180, 195, 255),
    KeyBg       = Color3.fromRGB(25,  28,  44),
    DropBg      = Color3.fromRGB(20,  22,  34),
}

-- ══════════════════════════════════════════════════
-- STATE
-- ══════════════════════════════════════════════════
-- Character
local speedActive     = false;  local walkSpeed   = 150
local flyActive       = false;  local flySpeed    = 80
local noclipActive    = false
local infJumpActive   = false
local lowGravActive   = false
-- Desync (character tab)
local desyncActive    = false
local desyncAngle     = 0
local desyncRadius    = 80
local desyncHeight    = 600
local desyncSpeed     = 25
local desyncSavedCF   = nil
local desyncConn      = nil
-- Ragebot
local ragebotActive   = false
local ragebotSpeed    = 20        -- orbits per second
local ragebotRadius   = 40        -- studs around current position
local ragebotTarget   = nil       -- current locked player
local ragebotAngle    = 0
local ragebotConn     = nil
local ragebotFire     = false     -- whether to auto-fire
local ragebotDelay    = 0.15      -- seconds between shots
local lastShotTime    = 0
-- Silent aim (shared by ragebot)
local silentActive    = false
local silentFOV       = 300
-- ESP
local espActive       = false
local espMaxDist      = 500
local espShowName     = true
local highlights      = {}
-- World / visuals
local motionBlurEffect = nil
local colorCorrection  = nil
-- Hit effects
local hitSoundActive   = false
local hitEffectActive  = false
local hitFlashActive   = false
local hitSoundId       = "rbxassetid://131057186"
-- Glow
local glowObj = nil
-- Wings
local wingParts    = {}
local wingFlapConn = nil
-- Emote
local emoteId     = ""
local emoteActive = false
local emoteConn   = nil
-- Connections to clean up
local flyConn, noclipConn = nil, nil

-- ══════════════════════════════════════════════════
-- HELPERS
-- ══════════════════════════════════════════════════
local function getChar()  return player.Character end
local function getHum()   local c=getChar(); return c and c:FindFirstChildOfClass("Humanoid") end
local function getRoot()  local c=getChar(); return c and c:FindFirstChild("HumanoidRootPart") end

local function ensureCC()
    if not colorCorrection or not colorCorrection.Parent then
        colorCorrection = Instance.new("ColorCorrectionEffect")
        colorCorrection.Parent = Lighting
    end
    return colorCorrection
end

-- Highlight folder in workspace (survives respawn)
local hlFolder = workspace:FindFirstChild("_SKD_HL") or Instance.new("Folder")
hlFolder.Name   = "_SKD_HL"
hlFolder.Parent = workspace

-- ══════════════════════════════════════════════════
-- SCREEN GUI
-- ══════════════════════════════════════════════════
local SG = Instance.new("ScreenGui")
SG.Name           = "SKIDDINGLY"
SG.ResetOnSpawn   = false
SG.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
SG.DisplayOrder   = 999
SG.Parent         = playerGui

local WIN_W, WIN_H = 640, 440
local Main = Instance.new("Frame")
Main.Size             = UDim2.new(0, WIN_W, 0, WIN_H)
Main.Position         = UDim2.new(0.5, -WIN_W/2, 0.5, -WIN_H/2)
Main.BackgroundColor3 = T.BG
Main.BorderSizePixel  = 0
Main.ClipsDescendants = false
Main.Parent           = SG
Instance.new("UICorner", Main).CornerRadius = UDim.new(0,4)
local mainStroke = Instance.new("UIStroke")
mainStroke.Color = T.PanelBorder; mainStroke.Thickness = 1; mainStroke.Parent = Main

-- ── Title bar ──
local TBar = Instance.new("Frame")
TBar.Size             = UDim2.new(1,0,0,26)
TBar.BackgroundColor3 = T.BGDeep
TBar.BorderSizePixel  = 0
TBar.ZIndex           = 5
TBar.Parent           = Main
Instance.new("UICorner", TBar).CornerRadius = UDim.new(0,4)
-- fill bottom rounded edge
local TBarFill = Instance.new("Frame")
TBarFill.Size             = UDim2.new(1,0,0,8)
TBarFill.Position         = UDim2.new(0,0,1,-8)
TBarFill.BackgroundColor3 = T.BGDeep
TBarFill.BorderSizePixel  = 0
TBarFill.ZIndex           = 4
TBarFill.Parent           = TBar

local TTitle = Instance.new("TextLabel")
TTitle.Size           = UDim2.new(1,-130,1,0)
TTitle.Position       = UDim2.new(0,10,0,0)
TTitle.BackgroundTransparency = 1
TTitle.Text           = "Skiddingly  |  Beta  |  " .. os.date("%B %d, %Y")
TTitle.TextColor3     = T.TitleText
TTitle.TextSize       = 10
TTitle.Font           = Enum.Font.Gotham
TTitle.TextXAlignment = Enum.TextXAlignment.Left
TTitle.ZIndex         = 6
TTitle.Parent         = TBar

local function makeTBarBtn(lbl, xOff, col, par)
    local b = Instance.new("TextButton")
    b.Size             = UDim2.new(0,28,0,18)
    b.Position         = UDim2.new(1,xOff,0.5,-9)
    b.BackgroundColor3 = col or T.AccentDim
    b.BorderSizePixel  = 0
    b.Text             = lbl
    b.TextColor3       = Color3.fromRGB(220,220,220)
    b.TextSize         = 9
    b.Font             = Enum.Font.GothamBold
    b.AutoButtonColor  = false
    b.ZIndex           = 6
    b.Parent           = par or TBar
    Instance.new("UICorner",b).CornerRadius = UDim.new(0,2)
    return b
end

local SettingsBtn = makeTBarBtn("cfg",  -66, T.AccentDim)
local MinBtn      = makeTBarBtn("─",   -34, Color3.fromRGB(60,60,80))
local CloseBtn    = makeTBarBtn("✕",   -2,  Color3.fromRGB(160,30,30))

CloseBtn.MouseButton1Click:Connect(function() SG:Destroy() end)
local minimized = false
MinBtn.MouseButton1Click:Connect(function()
    minimized = not minimized
    for _,c in ipairs(Main:GetChildren()) do
        if c ~= TBar then c.Visible = not minimized end
    end
end)

UIS.InputBegan:Connect(function(inp,gpe)
    if gpe then return end
    if inp.KeyCode == Enum.KeyCode.End then Main.Visible = not Main.Visible end
end)

-- Window drag
local winDrag, dragSt, dragPos
TBar.InputBegan:Connect(function(i)
    if i.UserInputType == Enum.UserInputType.MouseButton1 then
        winDrag=true; dragSt=i.Position; dragPos=Main.Position
    end
end)
TBar.InputEnded:Connect(function(i)
    if i.UserInputType == Enum.UserInputType.MouseButton1 then winDrag=false end
end)
UIS.InputChanged:Connect(function(i)
    if winDrag and i.UserInputType == Enum.UserInputType.MouseMovement then
        local d=i.Position-dragSt
        Main.Position=UDim2.new(dragPos.X.Scale, dragPos.X.Offset+d.X,
                                 dragPos.Y.Scale, dragPos.Y.Offset+d.Y)
    end
end)

-- ── Tab bar ──
local TAB_H = 26
local TabBar = Instance.new("Frame")
TabBar.Size             = UDim2.new(1,0,0,TAB_H)
TabBar.Position         = UDim2.new(0,0,0,26)
TabBar.BackgroundColor3 = T.TabBar
TabBar.BorderSizePixel  = 0
TabBar.ZIndex           = 4
TabBar.Parent           = Main
Instance.new("UIListLayout",TabBar).FillDirection = Enum.FillDirection.Horizontal

local topTabDefs = {"ragebot","character","world","esp","visuals"}
local topTabBtns = {}
local activeTopTab = nil

local ContentHost = Instance.new("Frame")
ContentHost.Size             = UDim2.new(1,0,1,-(26+TAB_H))
ContentHost.Position         = UDim2.new(0,0,0,26+TAB_H)
ContentHost.BackgroundTransparency = 1
ContentHost.ClipsDescendants = true
ContentHost.Parent           = Main

local topTabPages = {}

local function makeTopTabPage()
    local page = Instance.new("Frame")
    page.Size                = UDim2.new(1,0,1,0)
    page.BackgroundTransparency = 1
    page.Visible             = false
    page.Parent              = ContentHost

    local function makePanel(xScale)
        local sf = Instance.new("ScrollingFrame")
        sf.Size                 = UDim2.new(0.5,-1,1,0)
        sf.Position             = UDim2.new(xScale, xScale>0 and 1 or 0, 0,0)
        sf.BackgroundColor3     = T.Panel
        sf.BorderSizePixel      = 0
        sf.ScrollBarThickness   = 2
        sf.ScrollBarImageColor3 = T.Accent
        sf.CanvasSize           = UDim2.new(0,0,0,0)
        sf.AutomaticCanvasSize  = Enum.AutomaticSize.Y
        sf.ScrollingDirection   = Enum.ScrollingDirection.Y
        sf.Parent               = page
        local l = Instance.new("UIListLayout")
        l.Padding = UDim.new(0,3); l.Parent = sf
        local p = Instance.new("UIPadding")
        p.PaddingLeft=UDim.new(0,8); p.PaddingRight=UDim.new(0,8)
        p.PaddingTop=UDim.new(0,6);  p.PaddingBottom=UDim.new(0,8)
        p.Parent = sf
        return sf
    end

    return page, makePanel(0), makePanel(0.5)
end

for _,name in ipairs(topTabDefs) do
    local pg,L,R = makeTopTabPage()
    topTabPages[name] = {page=pg, L=L, R=R}
end

local function switchTab(name)
    for _,n in ipairs(topTabDefs) do
        topTabPages[n].page.Visible = false
        if topTabBtns[n] then
            topTabBtns[n].BackgroundColor3 = T.TabInactive
            topTabBtns[n].TextColor3       = T.SubText
        end
    end
    topTabPages[name].page.Visible = true
    activeTopTab = name
    if topTabBtns[name] then
        topTabBtns[name].BackgroundColor3 = T.TabActive
        topTabBtns[name].TextColor3       = T.Text
    end
end

for i,name in ipairs(topTabDefs) do
    local b = Instance.new("TextButton")
    b.Size             = UDim2.new(0,math.floor(WIN_W/#topTabDefs),1,0)
    b.BackgroundColor3 = T.TabInactive
    b.BorderSizePixel  = 0
    b.Text             = name
    b.TextColor3       = T.SubText
    b.TextSize         = 10
    b.Font             = Enum.Font.GothamBold
    b.AutoButtonColor  = false
    b.LayoutOrder      = i
    b.Parent           = TabBar
    topTabBtns[name]   = b
    b.MouseButton1Click:Connect(function() switchTab(name) end)
    b.MouseEnter:Connect(function() if activeTopTab~=name then b.TextColor3=T.Text end end)
    b.MouseLeave:Connect(function() if activeTopTab~=name then b.TextColor3=T.SubText end end)
end
switchTab("ragebot")

-- ══════════════════════════════════════════════════
-- UI HELPERS
-- ══════════════════════════════════════════════════
local function makeSection(parent,title,order)
    local f=Instance.new("Frame")
    f.Size=UDim2.new(1,0,0,22); f.BackgroundTransparency=1
    f.LayoutOrder=order; f.Parent=parent
    local l=Instance.new("TextLabel")
    l.Size=UDim2.new(1,0,1,0); l.BackgroundTransparency=1
    l.Text=title; l.TextColor3=T.Accent
    l.TextXAlignment=Enum.TextXAlignment.Left
    l.Font=Enum.Font.GothamBold; l.TextSize=11; l.Parent=f
    local line=Instance.new("Frame")
    line.Size=UDim2.new(1,0,0,1); line.Position=UDim2.new(0,0,1,-1)
    line.BackgroundColor3=T.PanelBorder; line.BorderSizePixel=0; line.Parent=f
end

local function makeSpacer(parent,h,order)
    local f=Instance.new("Frame")
    f.Size=UDim2.new(1,0,0,h or 4); f.BackgroundTransparency=1
    f.LayoutOrder=order; f.Parent=parent
end

local function makeCheck(parent,text,order,cb)
    local holder=Instance.new("Frame")
    holder.Size=UDim2.new(1,0,0,20); holder.BackgroundTransparency=1
    holder.LayoutOrder=order; holder.Parent=parent

    local lbl=Instance.new("TextLabel")
    lbl.Size=UDim2.new(1,-28,1,0); lbl.BackgroundTransparency=1
    lbl.Text=text; lbl.TextXAlignment=Enum.TextXAlignment.Left
    lbl.Font=Enum.Font.Gotham; lbl.TextSize=11
    lbl.TextColor3=T.SubText; lbl.Parent=holder

    local box=Instance.new("TextButton")
    box.Size=UDim2.new(0,20,0,14); box.Position=UDim2.new(1,-22,0.5,-7)
    box.BackgroundColor3=T.CheckOff; box.Text=""
    box.BorderSizePixel=0; box.AutoButtonColor=false; box.Parent=holder
    Instance.new("UICorner",box).CornerRadius=UDim.new(0,3)

    local tick=Instance.new("TextLabel")
    tick.Size=UDim2.new(1,0,1,0); tick.BackgroundTransparency=1
    tick.Text="✓"; tick.TextColor3=Color3.new(1,1,1)
    tick.TextSize=10; tick.Font=Enum.Font.GothamBold
    tick.Visible=false; tick.Parent=box

    local listeners={}; local on=false
    local function apply(v)
        on=v; box.BackgroundColor3=v and T.CheckOn or T.CheckOff
        tick.Visible=v; lbl.TextColor3=v and T.Text or T.SubText
        if cb then cb(v) end
        for _,f2 in ipairs(listeners) do f2(v) end
    end
    box.MouseButton1Click:Connect(function() apply(not on) end)
    return function(v) apply(v) end,
           function() return on end,
           function(f2) table.insert(listeners,f2) end
end

local function makeSlider(parent,text,minV,maxV,def,order,cb)
    local holder=Instance.new("Frame")
    holder.Size=UDim2.new(1,0,0,34); holder.BackgroundTransparency=1
    holder.LayoutOrder=order; holder.Parent=parent

    local lbl=Instance.new("TextLabel")
    lbl.Size=UDim2.new(1,0,0,14); lbl.BackgroundTransparency=1
    lbl.Text=text.."   "..tostring(def).."/"..tostring(maxV)
    lbl.TextXAlignment=Enum.TextXAlignment.Left
    lbl.Font=Enum.Font.Gotham; lbl.TextSize=10
    lbl.TextColor3=T.Text; lbl.Parent=holder

    local track=Instance.new("Frame")
    track.Size=UDim2.new(1,0,0,5); track.Position=UDim2.new(0,0,0,22)
    track.BackgroundColor3=T.SliderTrack; track.BorderSizePixel=0; track.Parent=holder
    Instance.new("UICorner",track).CornerRadius=UDim.new(1,0)

    local pct=(def-minV)/(maxV-minV)
    local fill=Instance.new("Frame")
    fill.Size=UDim2.new(pct,0,1,0); fill.BackgroundColor3=T.SliderFill
    fill.BorderSizePixel=0; fill.Parent=track
    Instance.new("UICorner",fill).CornerRadius=UDim.new(1,0)

    local knob=Instance.new("Frame")
    knob.Size=UDim2.new(0,8,0,8); knob.Position=UDim2.new(pct,-4,0.5,-4)
    knob.BackgroundColor3=Color3.fromRGB(220,230,255)
    knob.BorderSizePixel=0; knob.Parent=track
    Instance.new("UICorner",knob).CornerRadius=UDim.new(1,0)

    local sDrag=false
    local function setX(x)
        local rel=math.clamp((x-track.AbsolutePosition.X)/track.AbsoluteSize.X,0,1)
        local val=math.floor(minV+(maxV-minV)*rel+0.5)
        fill.Size=UDim2.new(rel,0,1,0); knob.Position=UDim2.new(rel,-4,0.5,-4)
        lbl.Text=text.."   "..tostring(val).."/"..tostring(maxV)
        if cb then cb(val) end
    end
    track.InputBegan:Connect(function(i)
        if i.UserInputType==Enum.UserInputType.MouseButton1 then sDrag=true; setX(i.Position.X) end
    end)
    UIS.InputEnded:Connect(function(i)
        if i.UserInputType==Enum.UserInputType.MouseButton1 then sDrag=false end
    end)
    UIS.InputChanged:Connect(function(i)
        if sDrag and i.UserInputType==Enum.UserInputType.MouseMovement then setX(i.Position.X) end
    end)
    if cb then cb(def) end
end

local function makeDropdown(parent,text,opts,def,order,cb)
    local holder=Instance.new("Frame")
    holder.Size=UDim2.new(1,0,0,24); holder.BackgroundTransparency=1
    holder.LayoutOrder=order; holder.ClipsDescendants=false; holder.Parent=parent

    local lbl=Instance.new("TextLabel")
    lbl.Size=UDim2.new(0.42,0,1,0); lbl.BackgroundTransparency=1
    lbl.Text=text; lbl.TextXAlignment=Enum.TextXAlignment.Left
    lbl.Font=Enum.Font.Gotham; lbl.TextSize=10
    lbl.TextColor3=T.Text; lbl.Parent=holder

    local drop=Instance.new("TextButton")
    drop.Size=UDim2.new(0.58,0,1,0); drop.Position=UDim2.new(0.42,0,0,0)
    drop.BackgroundColor3=T.DropBg; drop.TextColor3=T.Text
    drop.Text=def.."  ▾"; drop.TextSize=10; drop.Font=Enum.Font.Gotham
    drop.BorderSizePixel=0; drop.AutoButtonColor=false; drop.Parent=holder
    Instance.new("UICorner",drop).CornerRadius=UDim.new(0,3)
    Instance.new("UIStroke",drop).Color=T.PanelBorder

    local open=false; local lf=nil
    local function close() open=false; if lf then lf:Destroy(); lf=nil end end
    local function set(v)
        drop.Text=v.."  ▾"
        if cb then cb(v) end
    end
    set(def)
    drop.MouseButton1Click:Connect(function()
        open=not open
        if open then
            if lf then lf:Destroy() end
            local ap=drop.AbsolutePosition; local as=drop.AbsoluteSize
            lf=Instance.new("Frame")
            lf.Size=UDim2.new(0,as.X,0,#opts*20); lf.Position=UDim2.new(0,ap.X,0,ap.Y+as.Y+2)
            lf.BackgroundColor3=T.DropBg; lf.BorderSizePixel=0; lf.ZIndex=60; lf.Parent=SG
            Instance.new("UICorner",lf).CornerRadius=UDim.new(0,3)
            Instance.new("UIStroke",lf).Color=T.PanelBorder
            Instance.new("UIListLayout",lf)
            for _,opt in ipairs(opts) do
                local ob=Instance.new("TextButton")
                ob.Size=UDim2.new(1,0,0,20); ob.BackgroundTransparency=1
                ob.Text=opt; ob.TextColor3=T.SubText; ob.TextSize=10
                ob.Font=Enum.Font.Gotham; ob.AutoButtonColor=false
                ob.ZIndex=61; ob.Parent=lf
                ob.MouseEnter:Connect(function() ob.TextColor3=T.Text end)
                ob.MouseLeave:Connect(function() ob.TextColor3=T.SubText end)
                ob.MouseButton1Click:Connect(function() set(opt); close() end)
            end
        else close() end
    end)
end

local function makeBtn(parent,text,order,onClick)
    local b=Instance.new("TextButton")
    b.Size=UDim2.new(1,0,0,22); b.BackgroundColor3=T.AccentDim
    b.BorderSizePixel=0; b.Text=text; b.TextColor3=Color3.new(1,1,1)
    b.TextSize=10; b.Font=Enum.Font.GothamBold
    b.AutoButtonColor=false; b.LayoutOrder=order; b.Parent=parent
    Instance.new("UICorner",b).CornerRadius=UDim.new(0,3)
    local s=Instance.new("UIStroke"); s.Color=T.Accent; s.Thickness=1; s.Parent=b
    b.MouseEnter:Connect(function()
        TweenService:Create(b,TweenInfo.new(0.1),{BackgroundColor3=T.Accent}):Play()
    end)
    b.MouseLeave:Connect(function()
        TweenService:Create(b,TweenInfo.new(0.1),{BackgroundColor3=T.AccentDim}):Play()
    end)
    b.MouseButton1Click:Connect(function() if onClick then onClick() end end)
    return b
end

local function makeTextInput(parent,placeholder,order,onChange)
    local holder=Instance.new("Frame")
    holder.Size=UDim2.new(1,0,0,24); holder.BackgroundTransparency=1
    holder.LayoutOrder=order; holder.Parent=parent
    local box=Instance.new("TextBox")
    box.Size=UDim2.new(1,0,1,0); box.BackgroundColor3=T.KeyBg
    box.BorderSizePixel=0; box.Text=""; box.PlaceholderText=placeholder
    box.TextColor3=T.Text; box.PlaceholderColor3=T.Dim
    box.TextSize=10; box.Font=Enum.Font.Gotham
    box.ClearTextOnFocus=false; box.Parent=holder
    Instance.new("UICorner",box).CornerRadius=UDim.new(0,3)
    if onChange then
        box:GetPropertyChangedSignal("Text"):Connect(function() onChange(box.Text) end)
    end
    return box
end

local function makeInfoLabel(parent,text,order)
    local l=Instance.new("TextLabel")
    l.Size=UDim2.new(1,0,0,32); l.BackgroundColor3=Color3.fromRGB(15,17,28)
    l.BorderSizePixel=0; l.Text=text; l.TextColor3=T.SubText
    l.TextSize=9; l.Font=Enum.Font.Gotham
    l.TextXAlignment=Enum.TextXAlignment.Left; l.TextWrapped=true
    l.LayoutOrder=order; l.Parent=parent
    Instance.new("UICorner",l).CornerRadius=UDim.new(0,3)
    local p=Instance.new("UIPadding")
    p.PaddingLeft=UDim.new(0,5); p.PaddingRight=UDim.new(0,5)
    p.PaddingTop=UDim.new(0,3); p.Parent=l
end

-- ══════════════════════════════════════════════════
-- SILENT AIM HELPERS (shared by ragebot + standalone)
-- ══════════════════════════════════════════════════
local function findClosestPlayer(fovPx)
    local cam=workspace.CurrentCamera
    local ctr=Vector2.new(cam.ViewportSize.X/2,cam.ViewportSize.Y/2)
    local bestPart, bestDist = nil, fovPx or math.huge
    for _,p in ipairs(Players:GetPlayers()) do
        if p~=player and p.Character then
            local head=p.Character:FindFirstChild("Head")
                     or p.Character:FindFirstChild("HumanoidRootPart")
            if head then
                local sp,onSc=cam:WorldToViewportPoint(head.Position)
                if onSc then
                    local d=(Vector2.new(sp.X,sp.Y)-ctr).Magnitude
                    if d<bestDist then bestDist=d; bestPart=head end
                end
            end
        end
    end
    return bestPart
end

local function getVelocity(part)
    local vel=Vector3.zero
    pcall(function()
        if part:IsA("BasePart") then vel=part.AssemblyLinearVelocity end
    end)
    return vel
end

-- Redirect mouse.Hit / mouse.Target to the closest player
local silentConn=nil
local function startSilentAim()
    if silentConn then silentConn:Disconnect() end
    silentConn=RunService.RenderStepped:Connect(function()
        if not silentActive then
            local mt=getmetatable(mouse); if mt then mt.__index=nil end
            silentConn:Disconnect(); silentConn=nil; return
        end
        local part=findClosestPlayer(silentFOV)
        if part then
            local vel=getVelocity(part)
            local pred=part.Position+vel*0.08
            local mt=getmetatable(mouse)
            if mt then
                mt.__index=function(_,k)
                    if k=="Hit"    then return CFrame.new(pred) end
                    if k=="Target" then return part end
                end
            end
        end
    end)
end
local function stopSilentAim()
    silentActive=false
    if silentConn then silentConn:Disconnect(); silentConn=nil end
    pcall(function() local mt=getmetatable(mouse); if mt then mt.__index=nil end end)
end

-- ══════════════════════════════════════════════════
-- RAGEBOT ORBIT SYSTEM
-- Orbits your character around its current position
-- at high speed and auto-fires with silent aim every
-- ragebotDelay seconds at the closest player
-- ══════════════════════════════════════════════════
local function stopRagebot()
    ragebotActive=false
    if ragebotConn then ragebotConn:Disconnect(); ragebotConn=nil end
    stopSilentAim()
    -- restore physics
    local r=getRoot()
    if r then
        local bv=r:FindFirstChild("_RB_BV"); if bv then bv:Destroy() end
        local bg=r:FindFirstChild("_RB_BG"); if bg then bg:Destroy() end
    end
    local h=getHum(); if h then h.PlatformStand=false end
end

local function startRagebot()
    stopRagebot()
    ragebotActive=true
    silentActive=true; startSilentAim()

    local root=getRoot(); if not root then return end
    local hum=getHum();   if not hum  then return end

    -- Save orbit center at current position
    local orbitCenter=root.Position

    -- Give body movers so we fully control position
    hum.PlatformStand=true
    local bv=Instance.new("BodyVelocity")
    bv.Name="_RB_BV"; bv.Velocity=Vector3.zero
    bv.MaxForce=Vector3.new(1e5,1e5,1e5); bv.Parent=root
    local bg=Instance.new("BodyGyro")
    bg.Name="_RB_BG"; bg.MaxTorque=Vector3.new(1e5,1e5,1e5)
    bg.P=1e4; bg.Parent=root

    ragebotAngle=0

    ragebotConn=RunService.RenderStepped:Connect(function(dt)
        if not ragebotActive then stopRagebot(); return end
        local r2=getRoot(); if not r2 then stopRagebot(); return end

        -- advance orbit angle
        ragebotAngle=ragebotAngle+(ragebotSpeed*2*math.pi)*dt

        local ox=orbitCenter.X+math.cos(ragebotAngle)*ragebotRadius
        local oz=orbitCenter.Z+math.sin(ragebotAngle)*ragebotRadius
        local oy=orbitCenter.Y+1  -- stay just above ground

        -- face the orbit tangent direction (looks like spinning)
        local tx=-math.sin(ragebotAngle)
        local tz=math.cos(ragebotAngle)
        local targetCF=CFrame.new(Vector3.new(ox,oy,oz),Vector3.new(ox+tx,oy,oz+tz))

        r2.CFrame=targetCF

        -- keep body movers zeroed (position is set by CFrame directly)
        local bv2=r2:FindFirstChild("_RB_BV")
        if bv2 then bv2.Velocity=Vector3.zero end
        local bg2=r2:FindFirstChild("_RB_BG")
        if bg2 then bg2.CFrame=targetCF end

        -- auto fire toward closest player via tool
        if ragebotFire then
            local now=tick()
            if now-lastShotTime>=ragebotDelay then
                lastShotTime=now
                local char=getChar()
                local tool=char and char:FindFirstChildOfClass("Tool")
                if tool then
                    -- fire all remote events on the tool (works for most shooters)
                    for _,v in ipairs(tool:GetDescendants()) do
                        if v:IsA("RemoteEvent") then
                            pcall(function()
                                -- silent aim already redirects mouse.Hit so the
                                -- server receives the redirected hit position
                                v:FireServer(mouse.Hit, mouse.Target)
                            end)
                        end
                    end
                    -- also attempt ClickDetector style
                    local handle=tool:FindFirstChildOfClass("BasePart")
                    if handle then
                        local cd=handle:FindFirstChildOfClass("ClickDetector")
                        if cd then pcall(function() fireClickDetector(cd) end) end
                    end
                end
            end
        end
    end)
end

-- ══════════════════════════════════════════════════
-- DESYNC (character orbit at sky height — server
-- can't track position so damage won't register)
-- ══════════════════════════════════════════════════
local function stopDesync()
    desyncActive=false
    if desyncConn then desyncConn:Disconnect(); desyncConn=nil end
    task.delay(0.05,function()
        local r=getRoot()
        if r and desyncSavedCF then
            pcall(function() r.CFrame=desyncSavedCF end)
        end
    end)
end

local function startDesync()
    stopDesync()
    desyncActive=true
    local r=getRoot(); if not r then return end
    desyncSavedCF=r.CFrame
    desyncAngle=0
    desyncConn=RunService.RenderStepped:Connect(function(dt)
        if not desyncActive then stopDesync(); return end
        local r2=getRoot(); if not r2 then return end
        desyncAngle=desyncAngle+(desyncSpeed*2*math.pi)*dt
        local origin=desyncSavedCF.Position
        local ox=origin.X+math.cos(desyncAngle)*desyncRadius
        local oz=origin.Z+math.sin(desyncAngle)*desyncRadius
        local oy=origin.Y+desyncHeight
        local tx=-math.sin(desyncAngle); local tz=math.cos(desyncAngle)
        r2.CFrame=CFrame.new(Vector3.new(ox,oy,oz),Vector3.new(ox+tx,oy,oz+tz))
    end)
end

-- ══════════════════════════════════════════════════
-- ██ RAGEBOT TAB ██
-- ══════════════════════════════════════════════════
do
    local RL=topTabPages["ragebot"].L
    local RR=topTabPages["ragebot"].R

    makeSection(RL,"orbit ragebot",1)
    makeInfoLabel(RL,"Orbits your character at high speed around its current position. Auto-fires every tool remote with silent aim redirecting every bullet to the closest player.",2)
    makeSpacer(RL,4,3)

    makeCheck(RL,"enabled",4,function(on)
        if on then startRagebot() else stopRagebot() end
    end)
    makeCheck(RL,"auto fire",5,function(on) ragebotFire=on end)
    makeSlider(RL,"orbit speed (rps)",1,60,20,6,function(v) ragebotSpeed=v end)
    makeSlider(RL,"orbit radius (studs)",5,200,40,7,function(v) ragebotRadius=v end)
    makeSlider(RL,"fire delay (ms)",50,1000,150,8,function(v) ragebotDelay=v/1000 end)

    makeSection(RR,"silent aim",1)
    makeInfoLabel(RR,"Silent aim bends every shot to hit the closest player. Works standalone or together with ragebot auto fire.",2)
    makeSpacer(RR,4,3)
    makeCheck(RR,"silent aim standalone",4,function(on)
        silentActive=on
        if on then startSilentAim() else stopSilentAim() end
    end)
    makeSlider(RR,"fov radius (px)",10,800,300,5,function(v) silentFOV=v end)

    makeSpacer(RR,8,6)
    makeSection(RR,"trigger bot",7)
    makeInfoLabel(RR,"Auto-fires when mouse hovers an enemy. Works best paired with silent aim.",8)
    makeSpacer(RR,4,9)
    local trigActive=false; local trigDelay=0.05; local trigConn=nil
    makeCheck(RR,"enabled",10,function(on)
        trigActive=on
        if on then
            if trigConn then trigConn:Disconnect() end
            trigConn=RunService.Heartbeat:Connect(function()
                if not trigActive then trigConn:Disconnect();trigConn=nil;return end
                local tgt=mouse.Target; if not tgt then return end
                for _,p in ipairs(Players:GetPlayers()) do
                    if p~=player and p.Character and tgt:IsDescendantOf(p.Character) then
                        task.wait(trigDelay)
                        local char=getChar()
                        local tool=char and char:FindFirstChildOfClass("Tool")
                        if tool then
                            for _,v in ipairs(tool:GetDescendants()) do
                                if v:IsA("RemoteEvent") then
                                    pcall(function() v:FireServer(mouse.Hit,mouse.Target) end)
                                end
                            end
                        end
                        return
                    end
                end
            end)
        else
            if trigConn then trigConn:Disconnect();trigConn=nil end
        end
    end)
    makeSlider(RR,"trigger delay (ms)",10,500,50,11,function(v) trigDelay=v/1000 end)
end

-- ══════════════════════════════════════════════════
-- ██ CHARACTER TAB ██
-- ══════════════════════════════════════════════════
do
    local CL=topTabPages["character"].L
    local CR=topTabPages["character"].R

    -- Movement
    makeSection(CL,"movement",1)
    makeCheck(CL,"speed hack",2,function(on)
        speedActive=on
        local h=getHum(); if h then h.WalkSpeed=on and walkSpeed or 16 end
    end)
    makeSlider(CL,"walk speed",16,500,150,3,function(v)
        walkSpeed=v
        if speedActive then local h=getHum(); if h then h.WalkSpeed=v end end
    end)

    makeCheck(CL,"fly",4,function(on)
        flyActive=on
        local r=getRoot(); local h=getHum()
        if on and r and h then
            h.PlatformStand=true
            for _,n in ipairs({"_FLY_V","_FLY_G"}) do
                local o=r:FindFirstChild(n); if o then o:Destroy() end
            end
            local bv=Instance.new("BodyVelocity"); bv.Name="_FLY_V"
            bv.Velocity=Vector3.zero; bv.MaxForce=Vector3.new(1e5,1e5,1e5); bv.Parent=r
            local bg=Instance.new("BodyGyro"); bg.Name="_FLY_G"
            bg.MaxTorque=Vector3.new(1e5,1e5,1e5); bg.P=1e4; bg.Parent=r
            if flyConn then flyConn:Disconnect() end
            flyConn=RunService.RenderStepped:Connect(function(dt)
                if not flyActive then
                    flyConn:Disconnect();flyConn=nil
                    local r2=getRoot()
                    if r2 then
                        local v2=r2:FindFirstChild("_FLY_V"); if v2 then v2:Destroy() end
                        local g2=r2:FindFirstChild("_FLY_G"); if g2 then g2:Destroy() end
                    end
                    local h2=getHum(); if h2 then h2.PlatformStand=false end
                    return
                end
                local r3=getRoot(); if not r3 then return end
                local cam=workspace.CurrentCamera; local d=Vector3.zero
                if UIS:IsKeyDown(Enum.KeyCode.W) then d+=cam.CFrame.LookVector end
                if UIS:IsKeyDown(Enum.KeyCode.S) then d-=cam.CFrame.LookVector end
                if UIS:IsKeyDown(Enum.KeyCode.A) then d-=cam.CFrame.RightVector end
                if UIS:IsKeyDown(Enum.KeyCode.D) then d+=cam.CFrame.RightVector end
                if UIS:IsKeyDown(Enum.KeyCode.Space)      then d+=Vector3.new(0,1,0) end
                if UIS:IsKeyDown(Enum.KeyCode.LeftShift)  then d-=Vector3.new(0,1,0) end
                local bv2=r3:FindFirstChild("_FLY_V")
                if bv2 then bv2.Velocity=d.Magnitude>0 and d.Unit*flySpeed or Vector3.zero end
                local bg2=r3:FindFirstChild("_FLY_G")
                if bg2 then bg2.CFrame=cam.CFrame end
            end)
        else
            flyActive=false
        end
    end)
    makeSlider(CL,"fly speed",10,400,80,5,function(v) flySpeed=v end)

    makeCheck(CL,"noclip",6,function(on)
        noclipActive=on
        if on then
            if noclipConn then noclipConn:Disconnect() end
            noclipConn=RunService.Stepped:Connect(function()
                local c=getChar(); if not c then return end
                for _,p in ipairs(c:GetDescendants()) do
                    if p:IsA("BasePart") then p.CanCollide=false end
                end
            end)
        else
            if noclipConn then noclipConn:Disconnect();noclipConn=nil end
        end
    end)

    makeCheck(CL,"infinite jump",7,function(on)
        infJumpActive=on
    end)
    UIS.JumpRequest:Connect(function()
        if infJumpActive then local h=getHum(); if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end end
    end)

    makeSlider(CL,"jump power",0,200,50,8,function(v)
        local h=getHum(); if h then h.JumpHeight=v end
    end)

    makeSpacer(CL,6,9)
    makeSection(CL,"misc",10)
    makeCheck(CL,"invisible",11,function(on)
        local c=getChar(); if not c then return end
        for _,p in ipairs(c:GetDescendants()) do
            if p:IsA("BasePart") and p.Name~="HumanoidRootPart" then
                p.Transparency=on and 1 or 0
            end
        end
    end)
    makeBtn(CL,"reset character",12,function()
        local h=getHum(); if h then h.Health=0 end
    end)

    -- RIGHT: Desync
    makeSection(CR,"desync",1)
    makeInfoLabel(CR,"Orbits your character at extreme sky height. Server cannot track your true position so damage won't register. Returns you when disabled.",2)
    makeSpacer(CR,4,3)

    makeCheck(CR,"enabled",4,function(on)
        if on then startDesync() else stopDesync() end
    end)
    makeSlider(CR,"orbit speed (rps)",1,60,25,5,function(v) desyncSpeed=v end)
    makeSlider(CR,"orbit radius (studs)",10,300,80,6,function(v) desyncRadius=v end)
    makeSlider(CR,"sky height (studs)",100,2000,600,7,function(v) desyncHeight=v end)

    makeSpacer(CR,6,8)
    makeSection(CR,"teleport",9)
    local savedCF=nil
    makeBtn(CR,"save position",10,function()
        local r=getRoot(); if r then savedCF=r.CFrame end
    end)
    makeBtn(CR,"return to saved",11,function()
        local r=getRoot(); if r and savedCF then r.CFrame=savedCF end
    end)
    makeBtn(CR,"return from desync",12,function()
        local r=getRoot(); if r and desyncSavedCF then r.CFrame=desyncSavedCF end
    end)
end

-- ══════════════════════════════════════════════════
-- ██ WORLD TAB ██
-- ══════════════════════════════════════════════════
do
    local WL=topTabPages["world"].L
    local WR=topTabPages["world"].R

    makeSection(WL,"physics",1)
    makeCheck(WL,"low gravity",2,function(on) workspace.Gravity=on and 18 or 196.2 end)
    makeCheck(WL,"zero gravity",3,function(on) workspace.Gravity=on and 0 or 196.2 end)
    makeSlider(WL,"gravity",0,200,196,4,function(v) workspace.Gravity=v end)

    makeSection(WL,"lighting",5)
    makeSlider(WL,"clock time",0,24,14,6,function(v) Lighting.ClockTime=v end)
    makeCheck(WL,"fullbright",7,function(on)
        if on then
            Lighting.Brightness=10; Lighting.ClockTime=14
            Lighting.FogEnd=100000; Lighting.GlobalShadows=false
            for _,ef in ipairs(Lighting:GetChildren()) do
                if ef:IsA("BlurEffect") or ef:IsA("SunRaysEffect") then ef.Enabled=false end
            end
        else
            Lighting.Brightness=1; Lighting.GlobalShadows=true
        end
    end)
    makeSlider(WL,"brightness",0,10,1,8,function(v) Lighting.Brightness=v end)
    makeSlider(WL,"fog end",100,10000,100000,9,function(v) Lighting.FogEnd=v end)

    makeSection(WL,"camera",10)
    makeSlider(WL,"field of view",60,120,70,11,function(v)
        local cam=workspace.CurrentCamera; if cam then cam.FieldOfView=v end
    end)

    -- RIGHT: Screen color / effects
    makeSection(WR,"screen color",1)
    makeInfoLabel(WR,"Enable color correction first, then adjust the sliders.",2)
    makeSpacer(WR,4,3)
    makeCheck(WR,"color correction",4,function(on)
        if on then
            ensureCC()
        else
            if colorCorrection then colorCorrection:Destroy(); colorCorrection=nil end
        end
    end)
    makeSlider(WR,"brightness",-100,100,0,5,function(v) ensureCC().Brightness=v/100 end)
    makeSlider(WR,"saturation",-100,100,0,6,function(v) ensureCC().Saturation=v/100 end)
    makeSlider(WR,"contrast",-100,100,0,7,function(v) ensureCC().Contrast=v/100 end)

    makeDropdown(WR,"tint preset",{"None","Red","Blue","Green","Purple","Pink","Gold"},"None",8,function(v)
        local colors={
            None=Color3.new(1,1,1),         Red=Color3.fromRGB(255,80,80),
            Blue=Color3.fromRGB(80,160,255), Green=Color3.fromRGB(80,255,120),
            Purple=Color3.fromRGB(160,80,255),Pink=Color3.fromRGB(255,120,200),
            Gold=Color3.fromRGB(255,200,50),
        }
        ensureCC().TintColor=colors[v] or Color3.new(1,1,1)
    end)

    makeSpacer(WR,6,9)
    makeSection(WR,"screen effects",10)
    makeCheck(WR,"motion blur",11,function(on)
        if on then
            if not motionBlurEffect then
                motionBlurEffect=Instance.new("BlurEffect")
                motionBlurEffect.Parent=Lighting
            end
            motionBlurEffect.Size=24
        else
            if motionBlurEffect then motionBlurEffect:Destroy(); motionBlurEffect=nil end
        end
    end)
    makeSlider(WR,"blur amount",0,56,24,12,function(v)
        if motionBlurEffect then motionBlurEffect.Size=v end
    end)
    makeCheck(WR,"invert colors",13,function(on)
        local cc=ensureCC()
        cc.Saturation=on and -1 or 0; cc.Contrast=on and 0.3 or 0
    end)
end

-- ══════════════════════════════════════════════════
-- ██ ESP TAB ██
-- ══════════════════════════════════════════════════
local function clearESP()
    for _,hl in pairs(highlights) do pcall(function() hl:Destroy() end) end
    highlights={}
end

do
    local EL=topTabPages["esp"].L
    local ER=topTabPages["esp"].R

    makeSection(EL,"esp",1)
    makeCheck(EL,"enabled",2,function(on)
        espActive=on; if not on then clearESP() end
    end)
    makeCheck(EL,"show names",3,function(on) espShowName=on; clearESP() end)
    makeSlider(EL,"max distance",50,2000,500,4,function(v) espMaxDist=v end)

    local espFillAlpha=70
    local espFillCol=Color3.fromRGB(50,120,255)
    makeSection(ER,"style",1)
    makeDropdown(ER,"fill color",{"Blue","Red","Green","Purple","White"},"Blue",2,function(v)
        local cols={Blue=Color3.fromRGB(50,120,255),Red=Color3.fromRGB(255,60,60),
            Green=Color3.fromRGB(60,255,100),Purple=Color3.fromRGB(160,60,255),White=Color3.fromRGB(255,255,255)}
        espFillCol=cols[v] or cols.Blue
        for _,hl in pairs(highlights) do pcall(function() hl.FillColor=espFillCol end) end
    end)
    makeSlider(ER,"fill transparency",0,100,70,3,function(v)
        espFillAlpha=v
        for _,hl in pairs(highlights) do pcall(function() hl.FillTransparency=v/100 end) end
    end)
end

RunService.RenderStepped:Connect(function()
    if not espActive then clearESP(); return end
    local myRoot=getRoot(); if not myRoot then clearESP(); return end
    for _,p in ipairs(Players:GetPlayers()) do
        if p~=player then
            local char=p.Character
            local root=char and char:FindFirstChild("HumanoidRootPart")
            local hum=char and char:FindFirstChildOfClass("Humanoid")
            if root and hum then
                local dist=(root.Position-myRoot.Position).Magnitude
                local hl=highlights[p]
                -- clean up dead highlights
                if hl and not hl.Parent then hl=nil; highlights[p]=nil end

                if dist<=espMaxDist then
                    if not hl then
                        local newHl=Instance.new("Highlight")
                        newHl.Adornee=char
                        newHl.FillColor=Color3.fromRGB(50,120,255)
                        newHl.OutlineColor=Color3.fromRGB(255,255,255)
                        newHl.FillTransparency=0.7
                        newHl.OutlineTransparency=0
                        newHl.Parent=hlFolder
                        highlights[p]=newHl
                        if espShowName then
                            local head=char:FindFirstChild("Head")
                            if head and not head:FindFirstChild("_SKD_BB") then
                                local bb=Instance.new("BillboardGui")
                                bb.Name="_SKD_BB"; bb.Size=UDim2.new(0,100,0,18)
                                bb.StudsOffset=Vector3.new(0,3,0); bb.AlwaysOnTop=true
                                bb.Parent=head
                                local tx=Instance.new("TextLabel")
                                tx.Size=UDim2.new(1,0,1,0); tx.BackgroundTransparency=1
                                tx.Font=Enum.Font.GothamBold; tx.TextSize=12
                                tx.TextColor3=Color3.new(1,1,1); tx.TextStrokeTransparency=0
                                tx.Text=p.Name; tx.Parent=bb
                            end
                        end
                    else
                        hl.Enabled=true; hl.Adornee=char
                    end
                else
                    if hl then pcall(function() hl.Enabled=false end) end
                end
            else
                local hl=highlights[p]
                if hl then pcall(function() hl.Enabled=false end) end
            end
        end
    end
end)

Players.PlayerRemoving:Connect(function(plr)
    local hl=highlights[plr]
    if hl then pcall(function() hl:Destroy() end); highlights[plr]=nil end
end)

-- ══════════════════════════════════════════════════
-- ██ VISUALS TAB ██
-- ══════════════════════════════════════════════════
do
    local VL=topTabPages["visuals"].L
    local VR=topTabPages["visuals"].R

    -- Body glow
    makeSection(VL,"body glow",1)
    makeCheck(VL,"enabled",2,function(on)
        local r=getRoot()
        if on and r then
            if glowObj then glowObj:Destroy() end
            glowObj=Instance.new("PointLight")
            glowObj.Brightness=3; glowObj.Range=20
            glowObj.Color=Color3.fromRGB(100,160,255)
            glowObj.Parent=r
        else
            if glowObj then glowObj:Destroy(); glowObj=nil end
        end
    end)
    makeSlider(VL,"brightness",1,10,3,3,function(v) if glowObj then glowObj.Brightness=v end end)
    makeSlider(VL,"range",5,50,20,4,function(v) if glowObj then glowObj.Range=v end end)
    makeDropdown(VL,"color",{"Blue","Red","Green","Purple","White","Gold"},"Blue",5,function(v)
        local cols={Blue=Color3.fromRGB(100,160,255),Red=Color3.fromRGB(255,80,80),
            Green=Color3.fromRGB(80,255,120),Purple=Color3.fromRGB(160,80,255),
            White=Color3.fromRGB(255,255,255),Gold=Color3.fromRGB(255,200,50)}
        if glowObj then glowObj.Color=cols[v] or cols.Blue end
    end)

    -- Angel wings
    local function removeWings()
        for _,p in ipairs(wingParts) do pcall(function() p:Destroy() end) end
        wingParts={}
        if wingFlapConn then wingFlapConn:Disconnect(); wingFlapConn=nil end
    end
    local function buildWings()
        removeWings()
        local char=getChar(); if not char then return end
        local torso=char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")
        if not torso then return end
        local function feather(off,sz)
            local p=Instance.new("Part"); p.Size=sz
            p.Material=Enum.Material.SmoothPlastic; p.Color=Color3.fromRGB(240,240,255)
            p.CastShadow=false; p.CanCollide=false; p.Anchored=false; p.Parent=char
            local w=Instance.new("WeldConstraint"); w.Part0=torso; w.Part1=p; w.Parent=p
            p.CFrame=torso.CFrame*off
            local l=Instance.new("PointLight"); l.Brightness=0.3; l.Range=5
            l.Color=Color3.fromRGB(180,200,255); l.Parent=p
            table.insert(wingParts,p)
        end
        local cfg={
            {-1.2,0.5,-0.3,25,15,0.15,1.8,0.5},{-2.0,0.8,-0.2,38,22,0.15,1.5,0.4},
            {-2.7,0.4,-0.1,52,28,0.15,1.3,0.4},{-1.5,1.2,-0.3,15,10,0.15,1.6,0.4},
            {-2.2,1.5,-0.2,22,18,0.15,1.4,0.4},
        }
        for _,c in ipairs(cfg) do
            local off =CFrame.new(c[1],c[2],c[3])*CFrame.Angles(0,math.rad(c[5]), math.rad(c[4]))
            local offR=CFrame.new(-c[1],c[2],c[3])*CFrame.Angles(0,math.rad(-c[5]),math.rad(-c[4]))
            local sz=Vector3.new(c[7],c[6],c[8])
            feather(off,sz); feather(offR,sz)
        end
        local t=0
        wingFlapConn=RunService.RenderStepped:Connect(function(dt)
            t=t+dt*2
            local tor2=getChar() and (getChar():FindFirstChild("UpperTorso") or getChar():FindFirstChild("Torso"))
            if not tor2 then return end
            for i,wp in ipairs(wingParts) do
                if wp and wp.Parent then
                    local side=(i%2==0) and 1 or -1
                    local bx=side*(0.8+(math.ceil(i/2)%3)*0.7)
                    pcall(function() wp.CFrame=tor2.CFrame*CFrame.new(bx,0.5+math.sin(t+i*0.3)*0.12,-0.2) end)
                end
            end
        end)
    end

    makeSpacer(VL,6,6)
    makeSection(VL,"angel wings",7)
    makeCheck(VL,"enabled",8,function(on)
        if on then buildWings() else removeWings() end
    end)
    makeSlider(VL,"opacity",0,100,100,9,function(v)
        for _,p in ipairs(wingParts) do pcall(function() p.Transparency=1-(v/100) end) end
    end)

    -- Hit effects (right panel)
    makeSection(VR,"hit effects",1)
    makeCheck(VR,"hit sound",2,function(on) hitSoundActive=on end)
    makeTextInput(VR,"sound asset ID (numbers only)",3,function(v)
        local n=tonumber(v); if n then hitSoundId="rbxassetid://"..n end
    end)
    makeCheck(VR,"particle effect",4,function(on) hitEffectActive=on end)
    makeCheck(VR,"screen flash",5,function(on) hitFlashActive=on end)

    makeSpacer(VR,8,6)
    makeSection(VR,"animation player",7)
    makeTextInput(VR,"emote / animation ID",8,function(v) emoteId=v end)

    local function playAnim(id)
        local hum=getHum(); if not hum then return end
        local anim=Instance.new("Animation"); anim.AnimationId="rbxassetid://"..id
        local animator=hum.Animator or hum
        local track=animator:LoadAnimation(anim)
        if track then
            emoteActive=true; track:Play()
            if emoteConn then emoteConn:Disconnect() end
            emoteConn=track.Stopped:Connect(function()
                if emoteActive then track:Play() end
            end)
        end
    end

    makeBtn(VR,"▶  play",9,function()
        local id=tonumber(emoteId); if id then playAnim(id) end
    end)
    makeBtn(VR,"■  stop",10,function()
        emoteActive=false
        if emoteConn then emoteConn:Disconnect(); emoteConn=nil end
        local h=getHum()
        if h and h.Animator then
            for _,t in ipairs(h.Animator:GetPlayingAnimationTracks()) do t:Stop() end
        end
    end)

    makeSpacer(VR,4,11)
    makeSection(VR,"quick emotes",12)
    for i,e in ipairs({{"Dance","507770239"},{"Laugh","3337294591"},{"Point","3334392772"},{"Cheer","3333462843"}}) do
        makeBtn(VR,e[1],12+i,function()
            emoteId=e[2]; local id=tonumber(e[2]); if id then playAnim(id) end
        end)
    end
end

-- Hit effects input handler
UIS.InputBegan:Connect(function(input,gpe)
    if gpe then return end
    if input.UserInputType~=Enum.UserInputType.MouseButton1 then return end
    local char=player.Character
    if not (char and char:FindFirstChildOfClass("Tool")) then return end
    local tgt=mouse.Target; if not tgt then return end

    if hitSoundActive then
        local s=Instance.new("Sound"); s.SoundId=hitSoundId; s.Volume=0.8; s.Parent=SG; s:Play()
        task.delay(3,function() pcall(function() s:Destroy() end) end)
    end
    if hitEffectActive then
        local hp=Instance.new("Part"); hp.Size=Vector3.new(0.3,0.3,0.3)
        hp.CFrame=mouse.Hit; hp.Anchored=true; hp.Transparency=1
        hp.CanCollide=false; hp.Parent=workspace
        local pe=Instance.new("ParticleEmitter"); pe.Texture="rbxassetid://241837872"
        pe.Lifetime=NumberRange.new(0.4); pe.Rate=40; pe.Speed=NumberRange.new(5); pe.Parent=hp
        task.delay(0.25,function() pe.Rate=0 end)
        task.delay(0.8,function() pcall(function() hp:Destroy() end) end)
    end
    if hitFlashActive then
        local ov=Instance.new("Frame"); ov.Size=UDim2.new(1,0,1,0)
        ov.BackgroundColor3=Color3.fromRGB(255,240,100); ov.BackgroundTransparency=0.5
        ov.ZIndex=999; ov.BorderSizePixel=0; ov.Parent=SG
        TweenService:Create(ov,TweenInfo.new(0.12),{BackgroundTransparency=1}):Play()
        task.delay(0.15,function() pcall(function() ov:Destroy() end) end)
    end
end)

-- ══════════════════════════════════════════════════
-- SETTINGS PANEL
-- ══════════════════════════════════════════════════
local SPanel=Instance.new("Frame")
SPanel.Size=UDim2.new(1,0,1,-26); SPanel.Position=UDim2.new(0,0,0,26)
SPanel.BackgroundColor3=T.BGDeep; SPanel.BorderSizePixel=0
SPanel.Visible=false; SPanel.ZIndex=40; SPanel.Parent=Main

local SScroll=Instance.new("ScrollingFrame")
SScroll.Size=UDim2.new(1,0,1,0); SScroll.BackgroundTransparency=1
SScroll.BorderSizePixel=0; SScroll.ScrollBarThickness=2
SScroll.ScrollBarImageColor3=T.Accent; SScroll.CanvasSize=UDim2.new(0,0,0,0)
SScroll.AutomaticCanvasSize=Enum.AutomaticSize.Y
SScroll.ScrollingDirection=Enum.ScrollingDirection.Y; SScroll.Parent=SPanel
Instance.new("UIListLayout",SScroll).Padding=UDim.new(0,6)
local sp=Instance.new("UIPadding"); sp.PaddingLeft=UDim.new(0,14); sp.PaddingRight=UDim.new(0,14)
sp.PaddingTop=UDim.new(0,10); sp.PaddingBottom=UDim.new(0,10); sp.Parent=SScroll

local function sLbl(txt,col)
    local l=Instance.new("TextLabel"); l.Size=UDim2.new(1,0,0,16)
    l.BackgroundTransparency=1; l.Text=txt; l.TextColor3=col or T.SubText
    l.TextSize=10; l.Font=Enum.Font.GothamBold
    l.TextXAlignment=Enum.TextXAlignment.Left; l.Parent=SScroll
end

sLbl("color theme",T.Accent)
local themes={
    {"Blue (default)",Color3.fromRGB(50,120,255), Color3.fromRGB(18,20,30)},
    {"Red",           Color3.fromRGB(200,40,40),  Color3.fromRGB(18,10,10)},
    {"Green",         Color3.fromRGB(40,200,80),  Color3.fromRGB(10,18,12)},
    {"Purple",        Color3.fromRGB(140,50,220), Color3.fromRGB(14,10,20)},
    {"Orange",        Color3.fromRGB(220,110,30), Color3.fromRGB(18,12,8)},
    {"Cyan",          Color3.fromRGB(0,190,210),  Color3.fromRGB(8,14,16)},
    {"Dark",          Color3.fromRGB(80,80,80),   Color3.fromRGB(6,6,8)},
}
local function applyTheme(acc,bg)
    T.Accent=acc; T.BG=bg
    T.AccentDim=Color3.new(acc.R*0.6,acc.G*0.6,acc.B*0.6)
    T.TabActive=T.AccentDim; T.CheckOn=acc; T.SliderFill=acc
    Main.BackgroundColor3=bg; mainStroke.Color=Color3.new(acc.R*0.3,acc.G*0.3,acc.B*0.3)
    if activeTopTab then topTabBtns[activeTopTab].BackgroundColor3=T.TabActive end
end
for _,th in ipairs(themes) do
    local pb=Instance.new("TextButton"); pb.Size=UDim2.new(1,0,0,24)
    pb.BackgroundColor3=Color3.new(th[2].R*0.25,th[2].G*0.25,th[2].B*0.25)
    pb.BorderSizePixel=0; pb.Text=th[1]; pb.TextColor3=T.Text
    pb.TextSize=10; pb.Font=Enum.Font.Gotham; pb.AutoButtonColor=false; pb.Parent=SScroll
    Instance.new("UICorner",pb).CornerRadius=UDim.new(0,3)
    Instance.new("UIStroke",pb).Color=th[2]
    pb.MouseButton1Click:Connect(function() applyTheme(th[2],th[3]) end)
end

sLbl("window size",T.SubText)
for _,sz in ipairs({{"Small",520,380},{"Medium",640,440},{"Large",740,500}}) do
    local sb=Instance.new("TextButton"); sb.Size=UDim2.new(1,0,0,24)
    sb.BackgroundColor3=T.Panel; sb.BorderSizePixel=0; sb.Text=sz[1]
    sb.TextColor3=T.SubText; sb.TextSize=10; sb.Font=Enum.Font.Gotham
    sb.AutoButtonColor=false; sb.Parent=SScroll
    Instance.new("UICorner",sb).CornerRadius=UDim.new(0,3)
    Instance.new("UIStroke",sb).Color=T.PanelBorder
    sb.MouseButton1Click:Connect(function() Main.Size=UDim2.new(0,sz[2],0,sz[3]) end)
end

local settingsOpen=false
SettingsBtn.MouseButton1Click:Connect(function()
    settingsOpen=not settingsOpen
    SPanel.Visible=settingsOpen; TabBar.Visible=not settingsOpen
    ContentHost.Visible=not settingsOpen
    SettingsBtn.Text=settingsOpen and "close" or "cfg"
end)

print("[Skiddingly] Loaded — END to toggle")
print("  Tabs: ragebot | character | world | esp | visuals")
print("  Ragebot: orbit auto-fire + silent aim | Desync: character tab | World: screen color fixed")

Features & Information

looks smth like the thumbnail

Community Comments (1)

XxscripterxxXxscripterxxMar 5, 2026

doesnt work for da hood yet im fixing it dw

More Scripts for Universal Scripts