THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More - Verified script for THE RAKOOF KILL TEST
Key Required

THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More

THE RAKOOF KILL TESTrechellemae3rechellemae3 797 views 751 executesUpdated Oct 21, 2026
Unrated
00
Lua Script•1435 lines (48117 chars)
-- gui rebuild v10 (rakoof hitbox expander)
-- toggle: RightShift, the "-" button, or the round button on the left

local env = (getgenv and getgenv()) or _G
if env.EvaCleanup then pcall(env.EvaCleanup) end

local conns = {}
local alive = true
local function track(c) table.insert(conns, c) return c end

local Players    = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS        = game:GetService("UserInputService")
local RS         = game:GetService("ReplicatedStorage")
local WS         = game:GetService("Workspace")
local TS         = game:GetService("TweenService")
local LP         = Players.LocalPlayer

-- shared state (declared up top so every section and cleanup can reach it)
local aiPauseUntil = 0
local standDist = 7
local dropsOn, tpDrop, aiOn, pickupOn, candyOn, speedOn, aimOn =
    false, false, false, false, false, false, false
local stopFly = function() end
local removePlatform = function() end
local stopAim = function() end
local restoreHitbox = function() end

-- runs a block safely so one broken feature can't stop the gui
local function section(name, fn)
    local ok, err = pcall(fn)
    if not ok then warn("[gui] '" .. name .. "' failed: " .. tostring(err)) end
end

-- ============ THEME ============
local C = {
    bg     = Color3.fromRGB(14, 14, 20),
    panel  = Color3.fromRGB(20, 20, 29),
    row    = Color3.fromRGB(26, 26, 38),
    rowHi  = Color3.fromRGB(36, 36, 52),
    off    = Color3.fromRGB(48, 48, 66),
    text   = Color3.fromRGB(230, 230, 245),
    dim    = Color3.fromRGB(130, 130, 160),
    a1     = Color3.fromRGB(150, 100, 255),
    a2     = Color3.fromRGB(70, 180, 255),
    red    = Color3.fromRGB(255, 90, 110),
}

local function new(class, props, parent)
    local o = Instance.new(class)
    for k, v in pairs(props) do o[k] = v end
    if parent then o.Parent = parent end
    return o
end
local function corner(o, r)
    return new("UICorner", {CornerRadius = UDim.new(0, r)}, o)
end
local function gradient(o, rot)
    return new("UIGradient", {
        Color = ColorSequence.new(C.a1, C.a2),
        Rotation = rot or 0,
    }, o)
end
local function tween(o, t, props)
    TS:Create(o, TweenInfo.new(t, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), props):Play()
end

-- ============ SAFE MOUNT ============
local function mount(g)
    if syn and syn.protect_gui then pcall(syn.protect_gui, g) end
    local targets = {}
    if gethui then table.insert(targets, function() return gethui() end) end
    table.insert(targets, function() return game:GetService("CoreGui") end)
    table.insert(targets, function() return LP:WaitForChild("PlayerGui", 5) end)
    for _, fn in ipairs(targets) do
        local ok, p = pcall(fn)
        if ok and p then
            local ok2 = pcall(function() g.Parent = p end)
            if ok2 and g.Parent == p then return p end
        end
    end
    return nil
end

-- ============ DRAG ============
local function drag(frame, grip)
    grip.Active = true
    local dragging, start, startPos = false, nil, nil
    track(grip.InputBegan:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1
        or i.UserInputType == Enum.UserInputType.Touch then
            dragging, start, startPos = true, i.Position, frame.Position
        end
    end))
    track(UIS.InputChanged:Connect(function(i)
        if not dragging then return end
        if i.UserInputType == Enum.UserInputType.MouseMovement
        or i.UserInputType == Enum.UserInputType.Touch then
            local d = i.Position - start
            frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X,
                                       startPos.Y.Scale, startPos.Y.Offset + d.Y)
        end
    end))
    track(UIS.InputEnded:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1
        or i.UserInputType == Enum.UserInputType.Touch then
            dragging = false
        end
    end))
end

-- ============ WINDOW ============
local gui = new("ScreenGui", {
    Name = tostring(math.random(100000, 999999)),
    ResetOnSpawn = false,
    IgnoreGuiInset = true,
    Enabled = true,
    ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
    DisplayOrder = 999,
})
local mountedIn = mount(gui)
if not mountedIn then
    warn("[gui] could not find a place to parent the gui")
    return
end
print("[gui] mounted in: " .. mountedIn:GetFullName())
env.EvaGui = gui

-- size the window to the screen so it can never end up off screen
local cam = WS.CurrentCamera
local vp = cam and cam.ViewportSize or Vector2.new(800, 600)
if vp.X < 100 or vp.Y < 100 then vp = Vector2.new(800, 600) end
local WIN_W = math.floor(math.min(320, vp.X - 24))
local WIN_H = math.floor(math.min(460, vp.Y - 40))

local main = new("Frame", {
    AnchorPoint = Vector2.new(0.5, 0.5),
    Size = UDim2.new(0, WIN_W, 0, WIN_H),
    Position = UDim2.new(0.5, 0, 0.5, 0),
    BackgroundColor3 = C.bg,
    BorderSizePixel = 0,
    Visible = true,
}, gui)
corner(main, 14)
local scale = new("UIScale", {Scale = 1}, main)
local outline = new("UIStroke", {Thickness = 1.5, Color = Color3.new(1, 1, 1)}, main)
gradient(outline, 45)

-- header (drag area, no title text)
local header = new("Frame", {
    Size = UDim2.new(1, 0, 0, 40),
    BackgroundColor3 = C.panel,
    BorderSizePixel = 0,
}, main)
corner(header, 14)
new("Frame", { -- squares off the bottom corners of the header
    Size = UDim2.new(1, 0, 0, 14),
    Position = UDim2.new(0, 0, 1, -14),
    BackgroundColor3 = C.panel,
    BorderSizePixel = 0,
}, header)
local line = new("Frame", {
    Size = UDim2.new(1, 0, 0, 2),
    Position = UDim2.new(0, 0, 1, -2),
    BackgroundColor3 = Color3.new(1, 1, 1),
    BorderSizePixel = 0,
}, header)
gradient(line, 0)
drag(main, header)

-- decorative dots
for n = 1, 3 do
    local d = new("Frame", {
        Size = UDim2.new(0, 8, 0, 8),
        Position = UDim2.new(0, 14 + (n - 1) * 14, 0.5, -4),
        BackgroundColor3 = Color3.new(1, 1, 1),
        BorderSizePixel = 0,
    }, header)
    corner(d, 4)
    gradient(d, 45 * n)
end

local closeBtn = new("TextButton", {
    Size = UDim2.new(0, 26, 0, 26),
    Position = UDim2.new(1, -34, 0.5, -13),
    BackgroundColor3 = C.row,
    Text = "x",
    TextColor3 = C.red,
    Font = Enum.Font.GothamBold,
    TextSize = 14,
    AutoButtonColor = false,
    BorderSizePixel = 0,
}, header)
corner(closeBtn, 8)

local hideBtn = new("TextButton", {
    Size = UDim2.new(0, 26, 0, 26),
    Position = UDim2.new(1, -66, 0.5, -13),
    BackgroundColor3 = C.row,
    Text = "-",
    TextColor3 = C.text,
    Font = Enum.Font.GothamBold,
    TextSize = 16,
    AutoButtonColor = false,
    BorderSizePixel = 0,
}, header)
corner(hideBtn, 8)

-- hp bar
local hpFrame = new("Frame", {
    Size = UDim2.new(1, -24, 0, 18),
    Position = UDim2.new(0, 12, 0, 50),
    BackgroundColor3 = C.row,
    BorderSizePixel = 0,
}, main)
corner(hpFrame, 9)
local hpFill = new("Frame", {
    Size = UDim2.new(1, 0, 1, 0),
    BackgroundColor3 = Color3.fromRGB(80, 220, 140),
    BorderSizePixel = 0,
}, hpFrame)
corner(hpFill, 9)
local hpText = new("TextLabel", {
    Size = UDim2.new(1, 0, 1, 0),
    BackgroundTransparency = 1,
    Text = "-- / --",
    TextColor3 = Color3.new(1, 1, 1),
    Font = Enum.Font.GothamBold,
    TextSize = 11,
    ZIndex = 3,
}, hpFrame)

track(RunService.Heartbeat:Connect(function()
    local char = LP.Character
    local hum = char and char:FindFirstChildOfClass("Humanoid")
    if not hum or hum.MaxHealth <= 0 then return end
    local pct = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
    hpFill.Size = UDim2.new(pct, 0, 1, 0)
    hpFill.BackgroundColor3 = Color3.fromRGB(math.floor(255 * (1 - pct)), math.floor(220 * pct), 120)
    hpText.Text = math.floor(hum.Health) .. " / " .. math.floor(hum.MaxHealth)
end))

-- ============ TOAST (small pop-up messages) ============
local toast = new("TextLabel", {
    AnchorPoint = Vector2.new(0.5, 1),
    Position = UDim2.new(0.5, 0, 1, -10),
    Size = UDim2.new(1, -40, 0, 28),
    BackgroundColor3 = C.panel,
    BackgroundTransparency = 1,
    TextTransparency = 1,
    Text = "",
    TextColor3 = C.text,
    Font = Enum.Font.GothamMedium,
    TextSize = 11,
    BorderSizePixel = 0,
    ZIndex = 8,
}, main)
corner(toast, 8)
local toastId = 0
local function notify(msg)
    toastId = toastId + 1
    local id = toastId
    toast.Text = msg
    tween(toast, 0.15, {BackgroundTransparency = 0.05, TextTransparency = 0})
    task.delay(2.2, function()
        if toastId == id then
            tween(toast, 0.3, {BackgroundTransparency = 1, TextTransparency = 1})
        end
    end)
end

-- ============ TABS ============
local tabBar = new("Frame", {
    Size = UDim2.new(1, -24, 0, 30),
    Position = UDim2.new(0, 12, 0, 76),
    BackgroundTransparency = 1,
}, main)
new("UIListLayout", {
    FillDirection = Enum.FillDirection.Horizontal,
    Padding = UDim.new(0, 6),
}, tabBar)

local content = new("Frame", {
    Size = UDim2.new(1, -24, 1, -120),
    Position = UDim2.new(0, 12, 0, 112),
    BackgroundTransparency = 1,
}, main)

local tabs, pages = {}, {}
local function selectTab(name)
    for n, page in pairs(pages) do
        page.Visible = (n == name)
        local b = tabs[n]
        tween(b, 0.15, {BackgroundColor3 = (n == name) and C.rowHi or C.row,
                        TextColor3 = (n == name) and C.text or C.dim})
    end
end

local function addTab(name, count)
    local b = new("TextButton", {
        Size = UDim2.new(1 / count, -4, 1, 0),
        BackgroundColor3 = C.row,
        Text = name,
        TextColor3 = C.dim,
        Font = Enum.Font.GothamBold,
        TextSize = 12,
        AutoButtonColor = false,
        BorderSizePixel = 0,
    }, tabBar)
    corner(b, 8)
    local page = new("ScrollingFrame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        ScrollBarThickness = 3,
        ScrollBarImageColor3 = C.a1,
        CanvasSize = UDim2.new(0, 0, 0, 0),
        AutomaticCanvasSize = Enum.AutomaticSize.Y,
        Visible = false,
    }, content)
    new("UIListLayout", {Padding = UDim.new(0, 6)}, page)
    new("UIPadding", {PaddingRight = UDim.new(0, 6), PaddingBottom = UDim.new(0, 34)}, page)
    tabs[name], pages[name] = b, page
    track(b.MouseButton1Click:Connect(function() selectTab(name) end))
    return page
end

-- ============ WIDGETS ============
local function hover(b, base, hi)
    track(b.MouseEnter:Connect(function() tween(b, 0.12, {BackgroundColor3 = hi}) end))
    track(b.MouseLeave:Connect(function() tween(b, 0.12, {BackgroundColor3 = base}) end))
end

hover(closeBtn, C.row, C.rowHi)
hover(hideBtn, C.row, C.rowHi)

local function label(page, text)
    new("TextLabel", {
        Size = UDim2.new(1, 0, 0, 18),
        BackgroundTransparency = 1,
        Text = string.upper(text),
        TextColor3 = C.dim,
        Font = Enum.Font.GothamBold,
        TextSize = 10,
        TextXAlignment = Enum.TextXAlignment.Left,
    }, page)
end

local function button(page, text, cb)
    local b = new("TextButton", {
        Size = UDim2.new(1, 0, 0, 36),
        BackgroundColor3 = C.row,
        Text = text,
        TextColor3 = C.text,
        Font = Enum.Font.GothamMedium,
        TextSize = 12,
        AutoButtonColor = false,
        BorderSizePixel = 0,
    }, page)
    corner(b, 8)
    hover(b, C.row, C.rowHi)
    track(b.MouseButton1Click:Connect(function()
        local ok, err = pcall(cb)
        if not ok then warn("[gui] " .. tostring(err)) end
    end))
    return b
end

local function toggle(page, text, cb)
    local row = new("TextButton", {
        Size = UDim2.new(1, 0, 0, 36),
        BackgroundColor3 = C.row,
        Text = "",
        AutoButtonColor = false,
        BorderSizePixel = 0,
    }, page)
    corner(row, 8)
    hover(row, C.row, C.rowHi)
    local rowStroke = new("UIStroke", {Thickness = 1, Color = C.a1, Transparency = 1}, row)
    new("TextLabel", {
        Size = UDim2.new(1, -64, 1, 0),
        Position = UDim2.new(0, 12, 0, 0),
        BackgroundTransparency = 1,
        Text = text,
        TextColor3 = C.text,
        Font = Enum.Font.GothamMedium,
        TextSize = 12,
        TextXAlignment = Enum.TextXAlignment.Left,
    }, row)
    local sw = new("Frame", {
        Size = UDim2.new(0, 38, 0, 20),
        Position = UDim2.new(1, -50, 0.5, -10),
        BackgroundColor3 = C.off,
        BorderSizePixel = 0,
    }, row)
    corner(sw, 10)
    local sg = gradient(sw, 0)
    sg.Enabled = false
    local knob = new("Frame", {
        Size = UDim2.new(0, 14, 0, 14),
        Position = UDim2.new(0, 3, 0.5, -7),
        BackgroundColor3 = Color3.new(1, 1, 1),
        BorderSizePixel = 0,
    }, sw)
    corner(knob, 7)

    local state = false
    local function set(v, silent)
        state = v
        sg.Enabled = v
        if not v then tween(sw, 0.15, {BackgroundColor3 = C.off})
        else sw.BackgroundColor3 = Color3.new(1, 1, 1) end
        tween(rowStroke, 0.15, {Transparency = v and 0.3 or 1})
        tween(knob, 0.15, {Position = v and UDim2.new(1, -17, 0.5, -7) or UDim2.new(0, 3, 0.5, -7)})
        if not silent then
            local ok, err = pcall(cb, v)
            if not ok then warn("[gui] " .. tostring(err)) end
        end
    end
    track(row.MouseButton1Click:Connect(function() set(not state) end))
    return set
end

local function slider(page, text, mn, mx, def, cb)
    local f = new("Frame", {
        Size = UDim2.new(1, 0, 0, 50),
        BackgroundColor3 = C.row,
        BorderSizePixel = 0,
    }, page)
    corner(f, 8)
    new("TextLabel", {
        Size = UDim2.new(1, -70, 0, 18),
        Position = UDim2.new(0, 12, 0, 6),
        BackgroundTransparency = 1,
        Text = text,
        TextColor3 = C.text,
        Font = Enum.Font.GothamMedium,
        TextSize = 12,
        TextXAlignment = Enum.TextXAlignment.Left,
    }, f)
    local val = new("TextLabel", {
        Size = UDim2.new(0, 50, 0, 18),
        Position = UDim2.new(1, -62, 0, 6),
        BackgroundTransparency = 1,
        Text = tostring(def),
        TextColor3 = C.a2,
        Font = Enum.Font.GothamBold,
        TextSize = 12,
        TextXAlignment = Enum.TextXAlignment.Right,
    }, f)
    local bar = new("Frame", {
        Size = UDim2.new(1, -24, 0, 6),
        Position = UDim2.new(0, 12, 0, 34),
        BackgroundColor3 = C.off,
        BorderSizePixel = 0,
    }, f)
    corner(bar, 3)
    local startA = (def - mn) / (mx - mn)
    local fill = new("Frame", {
        Size = UDim2.new(startA, 0, 1, 0),
        BackgroundColor3 = Color3.new(1, 1, 1),
        BorderSizePixel = 0,
    }, bar)
    corner(fill, 3)
    gradient(fill, 0)
    local knob = new("Frame", {
        AnchorPoint = Vector2.new(0.5, 0.5),
        Position = UDim2.new(startA, 0, 0.5, 0),
        Size = UDim2.new(0, 12, 0, 12),
        BackgroundColor3 = Color3.new(1, 1, 1),
        BorderSizePixel = 0,
        ZIndex = 2,
    }, bar)
    corner(knob, 6)
    local hit = new("TextButton", {
        Size = UDim2.new(1, 0, 0, 26),
        Position = UDim2.new(0, 0, 0.5, -13),
        BackgroundTransparency = 1,
        Text = "",
    }, bar)

    local dragging = false
    local function setFromX(x)
        local a = math.clamp((x - bar.AbsolutePosition.X) / math.max(bar.AbsoluteSize.X, 1), 0, 1)
        local v = math.floor(mn + (mx - mn) * a + 0.5)
        fill.Size = UDim2.new(a, 0, 1, 0)
        knob.Position = UDim2.new(a, 0, 0.5, 0)
        val.Text = tostring(v)
        pcall(cb, v)
    end
    track(hit.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(UIS.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))
    track(UIS.InputEnded:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1
        or i.UserInputType == Enum.UserInputType.Touch then
            dragging = false
        end
    end))
end

-- ============ HELPERS ============
local function getRoot()
    local c = LP.Character
    return c and c:FindFirstChild("HumanoidRootPart"), c and c:FindFirstChildOfClass("Humanoid")
end

local function isRemote(d)
    return d:IsA("RemoteEvent") or d:IsA("RemoteFunction") or d:IsA("BindableEvent")
end

local function findRemote(names)
    local pool = {}
    for _, n in ipairs(names) do
        local hit = RS:FindFirstChild(n, true) or WS:FindFirstChild(n, true)
        if hit then table.insert(pool, hit) end
    end
    local rake = WS:FindFirstChild("the_rake", true)
    if rake then
        for _, d in ipairs(rake:GetDescendants()) do
            if isRemote(d) then table.insert(pool, d) end
        end
    end
    for _, d in ipairs(RS:GetDescendants()) do
        if isRemote(d) and d.Name:lower():find("startmode") then
            table.insert(pool, d)
        end
    end
    return pool
end

-- ============ PAGES ============
local pMove   = addTab("Move", 3)
local pCombat = addTab("Combat", 3)
local pMisc   = addTab("Misc", 3)
selectTab("Move")

-- ============ REMOVE CONFIRM (are you sure?) ============
local confirm = new("Frame", {
    Size = UDim2.new(1, 0, 1, 0),
    BackgroundColor3 = Color3.new(0, 0, 0),
    BackgroundTransparency = 0.4,
    Visible = false,
    ZIndex = 50,
    Active = true,
}, main)
corner(confirm, 14)

local card = new("Frame", {
    AnchorPoint = Vector2.new(0.5, 0.5),
    Position = UDim2.new(0.5, 0, 0.5, 0),
    Size = UDim2.new(1, -48, 0, 138),
    BackgroundColor3 = C.panel,
    BorderSizePixel = 0,
}, confirm)
corner(card, 12)
gradient(new("UIStroke", {Thickness = 1.5, Color = Color3.new(1, 1, 1)}, card), 45)
local cardScale = new("UIScale", {Scale = 1}, card)

new("TextLabel", {
    Size = UDim2.new(1, -24, 0, 24),
    Position = UDim2.new(0, 12, 0, 14),
    BackgroundTransparency = 1,
    Text = "Remove script?",
    TextColor3 = C.text,
    Font = Enum.Font.GothamBold,
    TextSize = 15,
}, card)
new("TextLabel", {
    Size = UDim2.new(1, -24, 0, 36),
    Position = UDim2.new(0, 12, 0, 42),
    BackgroundTransparency = 1,
    Text = "Are you sure you want to remove it?",
    TextColor3 = C.dim,
    Font = Enum.Font.GothamMedium,
    TextSize = 12,
    TextWrapped = true,
}, card)

local noBtn = new("TextButton", {
    Size = UDim2.new(0.5, -18, 0, 34),
    Position = UDim2.new(0, 12, 1, -46),
    BackgroundColor3 = C.row,
    Text = "Cancel",
    TextColor3 = C.text,
    Font = Enum.Font.GothamBold,
    TextSize = 12,
    AutoButtonColor = false,
    BorderSizePixel = 0,
}, card)
corner(noBtn, 8)
hover(noBtn, C.row, C.rowHi)

local yesBtn = new("TextButton", {
    Size = UDim2.new(0.5, -18, 0, 34),
    Position = UDim2.new(0.5, 6, 1, -46),
    BackgroundColor3 = C.red,
    Text = "Yes, remove",
    TextColor3 = Color3.new(1, 1, 1),
    Font = Enum.Font.GothamBold,
    TextSize = 12,
    AutoButtonColor = false,
    BorderSizePixel = 0,
}, card)
corner(yesBtn, 8)

local function askRemove()
    confirm.Visible = true
    cardScale.Scale = 0.9
    tween(cardScale, 0.15, {Scale = 1})
end
track(noBtn.MouseButton1Click:Connect(function() confirm.Visible = false end))
track(yesBtn.MouseButton1Click:Connect(function()
    if env.EvaCleanup then env.EvaCleanup() end
end))

-- ============ TOGGLE (pill + RightShift) - built early so the gui is always usable ============
local pill = new("TextButton", {
    Size = UDim2.new(0, 42, 0, 42),
    Position = UDim2.new(0, 16, 0.5, -21),
    BackgroundColor3 = C.panel,
    Text = "",
    AutoButtonColor = false,
    BorderSizePixel = 0,
    ZIndex = 5,
}, gui)
corner(pill, 21)
local ps = new("UIStroke", {Thickness = 2, Color = Color3.new(1, 1, 1)}, pill)
gradient(ps, 45)
local pd = new("Frame", {
    Size = UDim2.new(0, 14, 0, 14),
    Position = UDim2.new(0.5, -7, 0.5, -7),
    BackgroundColor3 = Color3.new(1, 1, 1),
    BorderSizePixel = 0,
    ZIndex = 6,
}, pill)
corner(pd, 7)
gradient(pd, 45)

-- separate dragging so a drag doesn't also count as a click
local pillMoved = false
do
    local dragging, start, startPos = false, nil, nil
    track(pill.InputBegan:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1
        or i.UserInputType == Enum.UserInputType.Touch then
            dragging, start, startPos = true, i.Position, pill.Position
            pillMoved = false
        end
    end))
    track(UIS.InputChanged:Connect(function(i)
        if not dragging then return end
        if i.UserInputType == Enum.UserInputType.MouseMovement
        or i.UserInputType == Enum.UserInputType.Touch then
            local d = i.Position - start
            if d.Magnitude > 5 then pillMoved = true end
            if pillMoved then
                pill.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X,
                                          startPos.Y.Scale, startPos.Y.Offset + d.Y)
            end
        end
    end))
    track(UIS.InputEnded:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1
        or i.UserInputType == Enum.UserInputType.Touch then
            dragging = false
        end
    end))
end

local isVisible = true
local function setVisible(v)
    isVisible = v
    if v then
        main.Visible = true
        scale.Scale = 0.9
        tween(scale, 0.18, {Scale = 1})
    else
        tween(scale, 0.15, {Scale = 0.9})
        task.delay(0.16, function()
            if not isVisible and main.Parent then main.Visible = false end
        end)
    end
end

track(pill.MouseButton1Click:Connect(function()
    if pillMoved then return end
    setVisible(not isVisible)
end))
track(hideBtn.MouseButton1Click:Connect(function() setVisible(false) end))
track(closeBtn.MouseButton1Click:Connect(askRemove)) -- X now asks first

track(UIS.InputBegan:Connect(function(i)
    if i.KeyCode ~= Enum.KeyCode.RightShift then return end
    if UIS:GetFocusedTextBox() then return end
    setVisible(not isVisible)
end))

-- ============ CLEANUP (also built early) ============
env.EvaCleanup = function()
    alive = false
    pickupOn = false
    candyOn = false
    speedOn = false
    dropsOn = false
    tpDrop = false
    aiOn = false
    pcall(stopFly)
    pcall(stopAim)
    pcall(restoreHitbox)
    pcall(removePlatform)
    for _, c in ipairs(conns) do
        pcall(function() c:Disconnect() end)
    end
    pcall(function() gui:Destroy() end)
    env.EvaCleanup = nil
end

-- watchdog: if the game removes the gui, put it back
task.spawn(function()
    while alive do
        task.wait(2)
        if alive and not gui.Parent then mount(gui) end
    end
end)

-- ============ MOVE TAB ============
section("move", function()
    -- ---- FLY ----
    local flyOn, flyCon, flyBV, flyBG = false, nil, nil, nil
    stopFly = function()
        flyOn = false
        if flyCon then flyCon:Disconnect(); flyCon = nil end
        if flyBV then flyBV:Destroy(); flyBV = nil end
        if flyBG then flyBG:Destroy(); flyBG = nil end
    end

    local setFlyUI
    local function startFly()
        local root = getRoot()
        if not root then return false end
        flyOn = true
        flyBV = new("BodyVelocity", {MaxForce = Vector3.new(1e5, 1e5, 1e5), Velocity = Vector3.zero}, root)
        flyBG = new("BodyGyro", {MaxTorque = Vector3.new(1e5, 1e5, 1e5), P = 1000, CFrame = root.CFrame}, root)
        flyCon = RunService.Heartbeat:Connect(function()
            local r = getRoot()
            local cm = WS.CurrentCamera
            if not r or not cm or not flyOn then return end
            local dir = Vector3.zero
            if UIS:IsKeyDown(Enum.KeyCode.W) then dir = dir + cm.CFrame.LookVector end
            if UIS:IsKeyDown(Enum.KeyCode.S) then dir = dir - cm.CFrame.LookVector end
            if UIS:IsKeyDown(Enum.KeyCode.A) then dir = dir - cm.CFrame.RightVector end
            if UIS:IsKeyDown(Enum.KeyCode.D) then dir = dir + cm.CFrame.RightVector end
            if UIS:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
            if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0, 1, 0) end
            if dir.Magnitude > 0 then dir = dir.Unit * 60 end
            if flyBV then flyBV.Velocity = dir end
            if flyBG then flyBG.CFrame = cm.CFrame end
        end)
        track(flyCon)
        return true
    end

    label(pMove, "Movement")
    setFlyUI = toggle(pMove, "Fly  (WASD / Space / Shift)", function(v)
        if v then
            if not startFly() then setFlyUI(false, true) end
        else
            stopFly()
        end
    end)
    track(LP.CharacterAdded:Connect(function()
        stopFly()
        setFlyUI(false, true)
    end))

    -- ---- SPEED ----
    local speedVal = 50
    toggle(pMove, "Walk Speed", function(v)
        speedOn = v
        if not v then
            local _, hum = getRoot()
            if hum then hum.WalkSpeed = 16 end
        end
    end)
    slider(pMove, "Speed Amount", 16, 200, speedVal, function(v) speedVal = v end)
    track(RunService.Heartbeat:Connect(function()
        if not speedOn then return end
        local _, hum = getRoot()
        if hum then hum.WalkSpeed = speedVal end
    end))

    -- ---- INFINITE STAMINA ----
    label(pMove, "Player")
    local staminaCon = nil

    local function getStaminaRemote()
        local pr = RS:FindFirstChild("PlayerRemotes")
        return pr and pr:FindFirstChild("SetStaminaValues")
    end

    local function fireStamina()
        local Event = getStaminaRemote()
        if not Event then return false end
        firesignal(Event.OnClientEvent,
            100,
            15,
            42,
            999999
        )
        return true
    end

    local setStaminaUI
    setStaminaUI = toggle(pMove, "Infinite Stamina", function(v)
        if not v then
            if staminaCon then staminaCon:Disconnect(); staminaCon = nil end
            return
        end
        if not firesignal then
            notify("Your executor has no firesignal")
            setStaminaUI(false, true)
            return
        end
        if not getStaminaRemote() then
            notify("SetStaminaValues not loaded yet")
            setStaminaUI(false, true)
            return
        end
        staminaCon = RunService.RenderStepped:Connect(function()
            pcall(fireStamina)
        end)
        track(staminaCon)
    end)

    button(pMove, "Refill Stamina (once)", function()
        if not firesignal then notify("Your executor has no firesignal") return end
        if not fireStamina() then notify("SetStaminaValues not loaded yet") end
    end)
end)

-- ============ SKY PLATFORM ============
section("sky", function()
    label(pMove, "Sky")
    local skyHeight   = 500
    local skyPlatform = nil
    local skyReturnCF = nil

    removePlatform = function()
        if skyPlatform then
            pcall(function() skyPlatform:Destroy() end)
            skyPlatform = nil
        end
    end

    local function makePlatform(cf)
        removePlatform()
        local p = new("Part", {
            Name = tostring(math.random(100000, 999999)),
            Size = Vector3.new(60, 2, 60),
            Anchored = true,
            CanCollide = true,
            Material = Enum.Material.Neon,
            Color = C.a1,
            Transparency = 0.35,
            TopSurface = Enum.SurfaceType.Smooth,
            BottomSurface = Enum.SurfaceType.Smooth,
            CFrame = cf,
        }, WS)
        new("SelectionBox", {
            Adornee = p,
            LineThickness = 0.08,
            Color3 = C.a2,
            SurfaceTransparency = 1,
        }, p)
        new("PointLight", {Color = C.a2, Range = 30, Brightness = 2}, p)
        -- slow pulse so it looks alive
        TS:Create(p, TweenInfo.new(1.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true),
            {Transparency = 0.6}):Play()
        skyPlatform = p
    end

    slider(pMove, "Sky Height", 50, 2000, skyHeight, function(v) skyHeight = v end)

    button(pMove, "Teleport to Sky", function()
        local root = getRoot()
        if not root then return end
        if not skyReturnCF then skyReturnCF = root.CFrame end
        local base = skyReturnCF.Position
        local pos = Vector3.new(base.X, base.Y + skyHeight, base.Z)
        makePlatform(CFrame.new(pos - Vector3.new(0, 4, 0)))
        root.CFrame = CFrame.new(pos)
        root.AssemblyLinearVelocity = Vector3.zero
    end)

    button(pMove, "Return From Sky", function()
        local root = getRoot()
        if root and skyReturnCF then
            root.CFrame = skyReturnCF + Vector3.new(0, 3, 0)
            root.AssemblyLinearVelocity = Vector3.zero
        end
        skyReturnCF = nil
        removePlatform()
    end)
end)

-- ============ COMBAT TAB ============
section("combat", function()
    -- ---- DROPS DATA ----
    -- add more drops here. "id" is the debug id from your snippet; debug ids
    -- change between sessions, so if the exact id isn't found it falls back
    -- to the first nil instance with that name.
    local DROPS = {
        {name = "Coin",       id = "1_200886"},
        {name = "TrainerCap", id = "1_239393"},
    }
    local dropChance = 25

    local function getNil(name, debugId)
        if not getnilinstances then return nil end
        for _, o in ipairs(getnilinstances()) do
            if o.Name == name then
                if not debugId or o:GetDebugId() == debugId then
                    return o
                end
            end
        end
    end

    local nilCache = {}
    local function resolveDrop(d)
        if nilCache[d.name] then return nilCache[d.name] end
        local inst = getNil(d.name, d.id) or getNil(d.name)
        nilCache[d.name] = inst
        return inst
    end

    local function posOf(o)
        if typeof(o) ~= "Instance" then return nil end
        local ok, p = pcall(function()
            if o:IsA("BasePart") then return o.Position end
            if o:IsA("Model") then return o:GetPivot().Position end
            if o:IsA("Tool") then
                local h = o:FindFirstChild("Handle")
                return h and h.Position
            end
        end)
        return ok and p or nil
    end

    local function tpTo(p, fromDrop)
        local root = getRoot()
        if root and p then
            root.CFrame = CFrame.new(p + Vector3.new(0, 3, 0))
            if fromDrop then aiPauseUntil = tick() + 1.5 end
        end
    end

    -- fires the SpawnDrop signal with the nil instance, like your snippets
    local function spawnDrop(d)
        local ev = RS:FindFirstChild("SpawnDrop")
        if not ev then notify("SpawnDrop remote not found") return false end
        if not firesignal then notify("Your executor has no firesignal") return false end
        local inst = resolveDrop(d)
        if not inst then
            notify("Couldn't find '" .. d.name .. "' (needs getnilinstances)")
            return false
        end
        firesignal(ev.OnClientEvent, inst)
        return true
    end

    -- picks a random drop, fires it, then teleports to where it appeared
    local function rollDrop(fallbackPos)
        local d = DROPS[math.random(#DROPS)]
        local found
        local c = WS.DescendantAdded:Connect(function(o)
            if o.Name == d.name then found = o end
        end)
        local ok = spawnDrop(d)
        task.wait(0.3)
        c:Disconnect()
        if ok and tpDrop then
            tpTo(posOf(found) or fallbackPos, true)
        end
    end

    -- teleport to drops the game spawns by itself
    local dropConn = nil
    local function bindDropListener()
        if dropConn then return true end
        local ev = RS:FindFirstChild("SpawnDrop")
        if not ev then return false end
        dropConn = ev.OnClientEvent:Connect(function(obj)
            if not tpDrop then return end
            if typeof(obj) ~= "Instance" or not obj:IsDescendantOf(WS) then return end
            task.wait(0.1)
            tpTo(posOf(obj), true)
        end)
        track(dropConn)
        return true
    end

    -- watches enemies and rolls a drop when one dies
    local hooked = setmetatable({}, {__mode = "k"})
    local function hookEnemy(m, hum)
        if hooked[m] then return end
        hooked[m] = true
        if hum.Health <= 0 then return end
        track(hum.Died:Connect(function()
            if not dropsOn then return end
            if math.random() * 100 > dropChance then return end
            local ok, pos = pcall(function() return m:GetPivot().Position end)
            task.spawn(rollDrop, ok and pos or nil)
        end))
    end

    task.spawn(function()
        while alive do
            task.wait(1)
            if dropsOn then
                for _, m in ipairs(WS:GetChildren()) do
                    if m:IsA("Model") and m ~= LP.Character
                    and Players:GetPlayerFromCharacter(m) == nil then
                        local mh = m:FindFirstChildOfClass("Humanoid")
                        if mh then hookEnemy(m, mh) end
                    end
                end
            end
        end
    end)

    -- ---- TARGETING (shared by Auto Rakoof, Aim Lock, Hitbox, Teleport to Rakoof) ----
    local aiTeleport, limitRange, hitRange, preferRakoof = true, false, 60, true

    local function validTarget(m)
        if not m or not m.Parent then return false end
        local h = m:FindFirstChildOfClass("Humanoid")
        if h and h.Health <= 0 then return false end
        return true
    end

    local function partOf(m)
        return m:FindFirstChild("HumanoidRootPart")
            or m.PrimaryPart
            or m:FindFirstChildWhichIsA("BasePart", true)
    end

    -- looks through a list for a model named like "rakoof"
    -- (falls back to a living "rake" model with a Humanoid, e.g. the_rake)
    local function scan(list)
        local fallback
        for _, d in ipairs(list) do
            if d:IsA("Model") and not Players:GetPlayerFromCharacter(d) then
                local h = d:FindFirstChildOfClass("Humanoid")
                if not h or h.Health > 0 then
                    local n = d.Name:lower()
                    if n:find("rakoof") then
                        return d
                    elseif not fallback and h and n:find("rake") then
                        fallback = d
                    end
                end
            end
        end
        return fallback
    end

    local rakoofCache, lastDeep = nil, 0
    local function getRakoof()
        if validTarget(rakoofCache) then return rakoofCache end
        rakoofCache = scan(WS:GetChildren())
        if not rakoofCache and tick() - lastDeep > 2 then
            lastDeep = tick()
            rakoofCache = scan(WS:GetDescendants())
        end
        return rakoofCache
    end

    local function nearestEnemy(root, useLimit)
        local best, bestPart, bestD = nil, nil, math.huge
        for _, m in ipairs(WS:GetChildren()) do
            if m:IsA("Model") and m ~= LP.Character then
                local mh = m:FindFirstChildOfClass("Humanoid")
                local mr = m:FindFirstChild("HumanoidRootPart")
                if mh and mr and mh.Health > 0 and Players:GetPlayerFromCharacter(m) == nil then
                    local d = (mr.Position - root.Position).Magnitude
                    if (not useLimit or d <= hitRange) and d < bestD then
                        bestD, best, bestPart = d, m, mr
                    end
                end
            end
        end
        return best, bestPart
    end

    local function pickTarget(root, useLimit)
        if preferRakoof then
            local rk = getRakoof()
            local rp = rk and partOf(rk)
            if rp and (not useLimit or (rp.Position - root.Position).Magnitude <= hitRange) then
                return rk, rp
            end
        end
        return nearestEnemy(root, useLimit)
    end

    -- ---- AUTO RAKOOF ----
    label(pCombat, "Auto Rakoof")
    local aiCon = nil

    toggle(pCombat, "Auto Rakoof", function(v)
        aiOn = v
        if aiCon then aiCon:Disconnect(); aiCon = nil end
        if not v then return end
        aiCon = RunService.RenderStepped:Connect(function()
            if tick() < aiPauseUntil then return end
            local char = LP.Character
            local root = char and char:FindFirstChild("HumanoidRootPart")
            if not root then return end

            local m, mr = pickTarget(root, limitRange)
            if not m or not mr then return end

            if aiTeleport then
                local target = mr.Position + (mr.CFrame.LookVector * -1) * standDist + Vector3.new(0, 2, 0)
                root.CFrame = CFrame.new(target, mr.Position)
            end
            local tool = char:FindFirstChildOfClass("Tool")
            if tool then pcall(function() tool:Activate() end) end
        end)
        track(aiCon)
    end)

    local setRF = toggle(pCombat, "Rakoof First", function(v) preferRakoof = v end)
    setRF(true)
    local setTPEnemy = toggle(pCombat, "Teleport to Enemy", function(v) aiTeleport = v end)
    setTPEnemy(true)
    toggle(pCombat, "Limit Hit Range", function(v) limitRange = v end)
    slider(pCombat, "Hit Range (studs)", 5, 500, hitRange, function(v) hitRange = v end)
    slider(pCombat, "Stand Distance", 3, 20, standDist, function(v) standDist = v end)

    -- ---- RAKOOF HITBOX ----
    label(pCombat, "Rakoof Hitbox")
    local hbOn, hbAll, hbShow, hbSize = false, false, true, 25
    local hbOriginal = {}   -- [part] = original properties
    local hbModel = nil

    local function hbRestore()
        for part, o in pairs(hbOriginal) do
            if part and part.Parent then
                pcall(function()
                    part.Size = o.Size
                    part.Transparency = o.Transparency
                    part.CanCollide = o.CanCollide
                    part.Massless = o.Massless
                end)
            end
        end
        hbOriginal = {}
        hbModel = nil
    end
    restoreHitbox = hbRestore

    local function hbApply(part)
        if not hbOriginal[part] then
            hbOriginal[part] = {
                Size = part.Size,
                Transparency = part.Transparency,
                CanCollide = part.CanCollide,
                Massless = part.Massless,
            }
        end
        local o = hbOriginal[part]
        local want = o.Size + Vector3.new(hbSize, hbSize, hbSize)
        if part.Size ~= want then part.Size = want end
        part.CanCollide = false
        part.Massless = true
        part.Transparency = hbShow and math.max(0.55, o.Transparency) or o.Transparency
    end

    task.spawn(function()
        while alive do
            task.wait(0.25)
            if hbOn then
                local m = getRakoof()
                if m then
                    if hbModel ~= m then
                        hbRestore()
                        hbModel = m
                    end
                    if hbAll then
                        for _, p in ipairs(m:GetDescendants()) do
                            if p:IsA("BasePart") then pcall(hbApply, p) end
                        end
                    else
                        local rp = partOf(m)
                        if rp then pcall(hbApply, rp) end
                    end
                elseif hbModel then
                    hbRestore() -- Rakoof is gone
                end
            end
        end
    end)

    toggle(pCombat, "Expand Rakoof Hitbox", function(v)
        hbOn = v
        if not v then
            hbRestore()
            return
        end
        if not getRakoof() then
            notify("Rakoof not found yet - will apply when he spawns")
        end
    end)
    slider(pCombat, "Hitbox Size", 1, 100, hbSize, function(v) hbSize = v end)
    local setHbShow = toggle(pCombat, "Show Hitbox", function(v)
        hbShow = v
        if hbOn then hbRestore() end -- reapplies with the new look next tick
    end)
    setHbShow(true)
    toggle(pCombat, "All Parts", function(v)
        hbAll = v
        if hbOn then hbRestore() end -- reapplies for the new mode next tick
    end)

    -- ---- AIM LOCK ----
    label(pCombat, "Aim Lock")
    local aimStrength, aimHead = 100, false
    local aimTarget, aimPart, aimAt = nil, nil, 0
    local AIM_BIND = "eva_aim_" .. tostring(math.random(1000, 9999))

    local function aimStep()
        local cm = WS.CurrentCamera
        local root = getRoot()
        if not cm or not root then return end
        -- re-pick the target a few times a second instead of every frame
        if tick() - aimAt > 0.25 or not (aimPart and aimPart.Parent) then
            aimAt = tick()
            aimTarget, aimPart = pickTarget(root, false)
        end
        if not aimPart then return end
        local pos = aimPart.Position
        if aimHead and aimTarget then
            local h = aimTarget:FindFirstChild("Head")
            if h and h:IsA("BasePart") then pos = h.Position end
        end
        local goal = CFrame.new(cm.CFrame.Position, pos)
        local a = aimStrength / 100
        cm.CFrame = (a >= 1) and goal or cm.CFrame:Lerp(goal, a)
    end

    stopAim = function()
        aimOn = false
        pcall(function() RunService:UnbindFromRenderStep(AIM_BIND) end)
    end

    toggle(pCombat, "Aim Lock (Rakoof)", function(v)
        stopAim()
        if not v then return end
        aimOn = true
        aimAt = 0
        local ok = pcall(function()
            RunService:BindToRenderStep(AIM_BIND, Enum.RenderPriority.Camera.Value + 1, aimStep)
        end)
        if ok then
            notify("Aim lock on")
        else
            aimOn = false
            notify("Aim lock failed to start")
        end
    end)
    slider(pCombat, "Lock Strength", 5, 100, aimStrength, function(v) aimStrength = v end)
    toggle(pCombat, "Aim at Head", function(v) aimHead = v end)

    -- ---- TELEPORT ----
    label(pCombat, "Teleport")
    button(pCombat, "Teleport to Rakoof", function()
        local m = getRakoof()
        if not m then notify("Rakoof not found") return end
        local root = getRoot()
        if not root then return end
        local ok, cf = pcall(function() return m:GetPivot() end)
        if not ok then notify("Couldn't read Rakoof's position") return end
        local target = cf.Position + (cf.LookVector * -1) * standDist + Vector3.new(0, 2, 0)
        root.CFrame = CFrame.new(target, cf.Position)
        root.AssemblyLinearVelocity = Vector3.zero
        aiPauseUntil = tick() + 1.5
    end)

    -- ---- DROPS UI ----
    label(pCombat, "Drops")
    toggle(pCombat, "Enemy Drops", function(v) dropsOn = v end)
    slider(pCombat, "Drop Chance %", 0, 100, dropChance, function(v) dropChance = v end)

    toggle(pCombat, "Teleport to Drops", function(v)
        tpDrop = v
        if v and not bindDropListener() then
            notify("SpawnDrop not found - only enemy drops teleport")
        end
    end)

    button(pCombat, "Spawn Random Drop Now", function()
        local root = getRoot()
        task.spawn(rollDrop, root and root.Position or nil)
    end)

    -- ---- AUTO PICKUP + AUTO CANDY ----
    label(pCombat, "Automation")

    local function touch(root, part)
        if firetouchinterest then
            pcall(firetouchinterest, root, part, 0)
            pcall(firetouchinterest, root, part, 1)
        elseif not part.Anchored then
            pcall(function() part.CFrame = root.CFrame end)
        end
    end

    -- picks up tools plus parts named drop / coin / item
    toggle(pCombat, "Auto Pickup", function(v)
        pickupOn = v
        if not v then return end
        task.spawn(function()
            while pickupOn and alive do
                local root = getRoot()
                if root then
                    for _, o in ipairs(WS:GetDescendants()) do
                        if not pickupOn then break end
                        local part
                        if o:IsA("Tool") then
                            part = o:FindFirstChild("Handle")
                        elseif o:IsA("BasePart") then
                            local n = o.Name:lower()
                            if n:find("drop") or n:find("coin") or n:find("item") then
                                part = o
                            end
                        end
                        if part and part:IsA("BasePart")
                        and (part.Position - root.Position).Magnitude < 60 then
                            touch(root, part)
                        end
                    end
                end
                task.wait(0.4)
            end
        end)
    end)

    -- teleports to candy corn / buckets / packs and touches them
    toggle(pCombat, "Auto Candy", function(v)
        candyOn = v
        if not v then return end
        task.spawn(function()
            while candyOn and alive do
                local root = getRoot()
                if root then
                    for _, o in ipairs(WS:GetDescendants()) do
                        if not candyOn then break end
                        local n = o.Name:lower()
                        if n:find("candycorn") or n:find("candybucket") or n:find("candypack") then
                            local part = o:IsA("BasePart") and o
                                or o:FindFirstChild("Handle")
                                or o:FindFirstChildWhichIsA("BasePart")
                            if part then
                                aiPauseUntil = tick() + 0.6 -- keep Auto Rakoof from pulling you away
                                root.CFrame = part.CFrame + Vector3.new(0, 2, 0)
                                touch(root, part)
                                task.wait(0.3)
                            end
                        end
                    end
                end
                task.wait(0.5)
            end
        end)
    end)

    -- ---- ACTIONS ----
    label(pCombat, "Actions")
    button(pCombat, "Trigger StartMode", function()
        local hits = findRemote({"StartMode", "startmode", "StartModeRemote"})
        if #hits == 0 then notify("No StartMode remote found") return end
        for _, r in ipairs(hits) do
            pcall(function()
                if r:IsA("RemoteEvent") then
                    r:FireServer("HellsAwakening")
                    r:FireServer("HellsAwakeningMain")
                elseif r:IsA("RemoteFunction") then
                    r:InvokeServer("HellsAwakening")
                elseif r:IsA("BindableEvent") then
                    r:Fire("HellsAwakening")
                end
            end)
        end
    end)

    button(pCombat, "Force Drop Item", function()
        local hits = findRemote({"SpawnItem", "spawnitem", "SpawnItemRemote"})
        if #hits == 0 then notify("No SpawnItem remote found") return end
        local char = LP.Character
        local tool = char and char:FindFirstChildOfClass("Tool")
        local root = char and char:FindFirstChild("HumanoidRootPart")
        if not tool or not root then notify("Equip a tool first") return end
        for _, r in ipairs(hits) do
            pcall(function()
                if r:IsA("RemoteEvent") then
                    r:FireServer(tool.Name, root.Position)
                elseif r:IsA("RemoteFunction") then
                    r:InvokeServer(tool.Name, root.Position)
                end
            end)
        end
    end)
end)

-- ============ MISC TAB ============
section("misc", function()
    label(pMisc, "Window")
    button(pMisc, "Hide Window  (RightShift)", function() setVisible(false) end)
    button(pMisc, "Remove Script", askRemove)
end)

print("[gui] loaded - RightShift, the '-' button, or the round button toggles the window")

How to Execute THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join THE RAKOOF KILL TEST.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

rechellemae3
rechellemae3
Script Creator
View Author Profile

Roblox Experience

Active Players:110
Play on Roblox

Features & Information

Execute THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More. Key system required, created by rechellemae3, updated Oct 21, 2026. Tested and working on supported executors.

Script Changelog (1)

@rechellemae3Oct 21, 2026

Create script

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More in Roblox?

To run THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More, copy the Lua loadstring from the code viewer above, launch Roblox and join THE RAKOOF KILL TEST, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More keyless or does it require an access key?

THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is THE RAKOOF KILL TEST Script – Auto Kill Rakoof or More currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.