Roblox BEAR Script (October 2026)

PUBLISHEDUPDATED
What changed
  • 2026-10-27 — Added Script #2: Updated for Halloween Update.
1 Available ScriptFree

Skipping the slow grind in BEAR script is pretty much the only way to keep your sanity intact while playing.

Out of nowhere, a giant monster showed up and changed everything. You either try to survive the horror or end up playing as the beast yourself, running around collecting quidz and candy during spooky events.

If you want to grab all those items without burning out, you need the right setup. Let’s look at the working script right now.

BEAR Script – BEAR ALPHA GHOST/CANDY AUTO FARM INSANE! & More

BEAR ALPHA GHOST/CANDY AUTO FARM INSANE! & MoreFree
BEAR ALPHA GHOST/CANDY AUTO FARM INSANE!
--[[
    L.M Scripts | Bear Alpha
    Auto Candy (Candy_1 / Candy_5 / Candy_10 / Candy_25)
    Auto Ghost (Green / Pink / Orange)
]]

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

local lp = Players.LocalPlayer

-- evita abrir duas vezes
local guiParent do
    local ok, core = pcall(function() return game:GetService("CoreGui") end)
    guiParent = (gethui and gethui()) or (ok and core) or lp:WaitForChild("PlayerGui")
end
if guiParent:FindFirstChild("LMScripts_UI") then
    guiParent.LMScripts_UI:Destroy()
end

----------------------------------------------------------------
-- CONFIG
----------------------------------------------------------------
local CANDY_VALUES = { ["1"] = true, ["5"] = true, ["10"] = true, ["25"] = true }
local GHOST_NAMES  = { green = true, pink = true, orange = true }
local HEIGHT_OFFSET = Vector3.new(0, 2, 0)
local TP_DELAY = 0.15 -- segundos entre cada teleporte (menor = mais rápido)

local state = { candy = false, ghost = false }
local tracked = { candy = {}, ghost = {} } -- [objeto] = true

----------------------------------------------------------------
-- RASTREAMENTO DE OBJETOS (rápido, sem varrer o mapa toda hora)
----------------------------------------------------------------
local function classify(obj)
    if not (obj:IsA("BasePart") or obj:IsA("Model")) then return nil end
    local n = obj.Name:lower()
    local num = n:match("^candy_(%d+)$")
    if num and CANDY_VALUES[num] then return "candy" end
    if GHOST_NAMES[n] then return "ghost" end
    return nil
end

local function register(obj)
    local kind = classify(obj)
    if kind then tracked[kind][obj] = true end
end

local function unregister(obj)
    tracked.candy[obj] = nil
    tracked.ghost[obj] = nil
end

for _, d in ipairs(workspace:GetDescendants()) do register(d) end
workspace.DescendantAdded:Connect(register)
workspace.DescendantRemoving:Connect(unregister)

local function count(t)
    local c = 0
    for obj in pairs(t) do
        if obj.Parent then c += 1 end
    end
    return c
end

----------------------------------------------------------------
-- DETECÇÃO DE PARTIDA
-- A HUD da partida mostra "Sobreviventes: x/y", o timer e "Quebra-cabeças".
-- Se esse texto estiver visível na tela, estamos em partida.
----------------------------------------------------------------
local matchActive = false
local hudLabel = nil
local HUD_KEYWORDS = { "sobreviventes", "survivors", "quebra-cabeças", "quebra-cabecas", "puzzles" }

local function labelVisible(l)
    if not (l and l.Parent) then return false end
    if not l.Visible then return false end
    local sg = l:FindFirstAncestorOfClass("ScreenGui")
    if sg and not sg.Enabled then return false end
    return l.Text ~= ""
end

local function isHudText(l)
    local t = l.Text:lower()
    for _, k in ipairs(HUD_KEYWORDS) do
        if t:find(k, 1, true) then return true end
    end
    return false
end

local function checkMatch()
    -- reaproveita a label já encontrada
    if hudLabel and labelVisible(hudLabel) and isHudText(hudLabel) then
        return true
    end
    hudLabel = nil
    local pg = lp:FindFirstChildOfClass("PlayerGui")
    if not pg then return false end
    for _, d in ipairs(pg:GetDescendants()) do
        if d:IsA("TextLabel") and labelVisible(d) and isHudText(d)
            and not d:FindFirstAncestor("LMScripts_UI") then -- ignora o nosso menu
            hudLabel = d
            return true
        end
    end
    return false
end

task.spawn(function()
    while true do
        matchActive = checkMatch()
        task.wait(0.5)
    end
end)

----------------------------------------------------------------
-- TELEPORTE
----------------------------------------------------------------
local function getRoot()
    local char = lp.Character
    return char and char:FindFirstChild("HumanoidRootPart"), char
end

local function getPart(obj)
    if obj:IsA("BasePart") then return obj end
    if obj:IsA("Model") then
        return obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart", true)
    end
end

local function touch(root, part)
    pcall(function()
        if firetouchinterest then
            firetouchinterest(root, part, 0)
            firetouchinterest(root, part, 1)
        end
    end)
    pcall(function()
        if fireproximityprompt then
            local pp = part:FindFirstChildWhichIsA("ProximityPrompt", true)
                or (part.Parent and part.Parent:FindFirstChildWhichIsA("ProximityPrompt", true))
            if pp then fireproximityprompt(pp) end
        end
    end)
end

local function tpTo(obj)
    local root = getRoot()
    local part = getPart(obj)
    if not (root and part and part.Parent) then return end
    root.AssemblyLinearVelocity = Vector3.zero
    root.AssemblyAngularVelocity = Vector3.zero
    root.CFrame = CFrame.new(part.Position + HEIGHT_OFFSET)
    touch(root, part)
end

local origin = {} -- posição original ao ligar
local function runLoop(kind)
    task.spawn(function()
        local root = getRoot()
        origin[kind] = root and root.CFrame
        while state[kind] do
            -- Ghost só funciona durante a partida
            if kind == "ghost" and not matchActive then
                origin[kind] = nil -- não volta pra posição antiga do lobby
                task.wait(0.5)
                continue
            end
            if not origin[kind] then
                local r = getRoot()
                origin[kind] = r and r.CFrame
            end
            local snapshot = {}
            for obj in pairs(tracked[kind]) do
                if obj.Parent then snapshot[#snapshot + 1] = obj end
            end
            if #snapshot == 0 then
                task.wait(0.5)
            else
                for _, obj in ipairs(snapshot) do
                    if not state[kind] then break end
                    if kind == "ghost" and not matchActive then break end
                    if obj.Parent then
                        pcall(tpTo, obj)
                        task.wait(TP_DELAY)
                    end
                end
            end
        end
        -- volta pra onde estava ao desligar
        local r = getRoot()
        if r and origin[kind] then r.CFrame = origin[kind] end
    end)
end

local function setState(kind, value)
    if state[kind] == value then return end
    state[kind] = value
    if value then runLoop(kind) end
end

----------------------------------------------------------------
-- UI
----------------------------------------------------------------
local C = {
    bg     = Color3.fromRGB(14, 14, 20),
    panel  = Color3.fromRGB(22, 22, 32),
    item   = Color3.fromRGB(30, 30, 44),
    accent = Color3.fromRGB(150, 80, 255),
    accent2= Color3.fromRGB(80, 160, 255),
    text   = Color3.fromRGB(235, 235, 245),
    dim    = Color3.fromRGB(140, 140, 160),
    on     = Color3.fromRGB(70, 210, 120),
    off    = Color3.fromRGB(70, 70, 90),
}

local function new(class, props, parent)
    local o = Instance.new(class)
    for k, v in pairs(props) do o[k] = v end
    o.Parent = parent
    return o
end

local function corner(p, r) new("UICorner", { CornerRadius = UDim.new(0, r or 8) }, p) end

local gui = new("ScreenGui", {
    Name = "LMScripts_UI", ResetOnSpawn = false,
    ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
}, guiParent)

local main = new("Frame", {
    Size = UDim2.fromOffset(440, 300),
    Position = UDim2.new(0.5, -220, 0.5, -150),
    BackgroundColor3 = C.bg, BorderSizePixel = 0,
}, gui)
corner(main, 12)
local stroke = new("UIStroke", { Color = C.accent, Thickness = 1.5, Transparency = 0.3 }, main)
new("UIGradient", {
    Color = ColorSequence.new(C.accent, C.accent2), Rotation = 45,
}, stroke)

-- barra de título
local top = new("Frame", {
    Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = C.panel, BorderSizePixel = 0,
}, main)
corner(top, 12)
new("Frame", { -- cobre cantos de baixo da barra
    Size = UDim2.new(1, 0, 0, 12), Position = UDim2.new(0, 0, 1, -12),
    BackgroundColor3 = C.panel, BorderSizePixel = 0,
}, top)

local title = new("TextLabel", {
    Size = UDim2.new(1, -90, 1, 0), Position = UDim2.fromOffset(14, 0),
    BackgroundTransparency = 1, Text = "L.M Scripts",
    TextColor3 = C.text, Font = Enum.Font.GothamBold, TextSize = 17,
    TextXAlignment = Enum.TextXAlignment.Left,
}, top)
new("UIGradient", { Color = ColorSequence.new(C.accent, C.accent2) }, title)

new("TextLabel", {
    Size = UDim2.fromOffset(120, 38), Position = UDim2.new(0, 105, 0, 0),
    BackgroundTransparency = 1, Text = "• Bear Alpha",
    TextColor3 = C.dim, Font = Enum.Font.Gotham, TextSize = 12,
    TextXAlignment = Enum.TextXAlignment.Left,
}, top)

local function topBtn(text, xOff, color)
    local b = new("TextButton", {
        Size = UDim2.fromOffset(26, 26), Position = UDim2.new(1, xOff, 0, 6),
        BackgroundColor3 = color, Text = text, TextColor3 = C.text,
        Font = Enum.Font.GothamBold, TextSize = 14, AutoButtonColor = true,
    }, top)
    corner(b, 6)
    return b
end
local closeBtn = topBtn("X", -34, Color3.fromRGB(200, 60, 70))
local minBtn   = topBtn("-", -66, C.item)

-- arrastar
do
    local dragging, dragStart, startPos
    top.InputBegan:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1
        or i.UserInputType == Enum.UserInputType.Touch then
            dragging, dragStart, startPos = true, i.Position, main.Position
            i.Changed:Connect(function()
                if i.UserInputState == Enum.UserInputState.End then dragging = false end
            end)
        end
    end)
    UIS.InputChanged:Connect(function(i)
        if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement
        or i.UserInputType == Enum.UserInputType.Touch) then
            local d = i.Position - dragStart
            main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X,
                                      startPos.Y.Scale, startPos.Y.Offset + d.Y)
        end
    end)
end

-- menu lateral
local side = new("Frame", {
    Size = UDim2.new(0, 110, 1, -50), Position = UDim2.fromOffset(8, 44),
    BackgroundColor3 = C.panel, BorderSizePixel = 0,
}, main)
corner(side, 10)
new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder }, side)
new("UIPadding", { PaddingTop = UDim.new(0, 8), PaddingLeft = UDim.new(0, 8), PaddingRight = UDim.new(0, 8) }, side)

local content = new("Frame", {
    Size = UDim2.new(1, -134, 1, -50), Position = UDim2.fromOffset(126, 44),
    BackgroundTransparency = 1,
}, main)

local pages, tabButtons = {}, {}

local function selectTab(name)
    for n, p in pairs(pages) do p.Visible = (n == name) end
    for n, b in pairs(tabButtons) do
        TweenService:Create(b, TweenInfo.new(0.15), {
            BackgroundColor3 = (n == name) and C.accent or C.item,
        }):Play()
    end
end

local function addTab(name, order)
    local b = new("TextButton", {
        Size = UDim2.new(1, 0, 0, 32), BackgroundColor3 = C.item,
        Text = name, TextColor3 = C.text, Font = Enum.Font.GothamMedium,
        TextSize = 14, LayoutOrder = order, AutoButtonColor = false,
    }, side)
    corner(b, 8)
    tabButtons[name] = b
    local page = new("Frame", {
        Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, Visible = false,
    }, content)
    new("UIListLayout", { Padding = UDim.new(0, 8), SortOrder = Enum.SortOrder.LayoutOrder }, page)
    pages[name] = page
    b.MouseButton1Click:Connect(function() selectTab(name) end)
    return page
end

local function label(page, text, order, color, size)
    return new("TextLabel", {
        Size = UDim2.new(1, 0, 0, size and size + 6 or 20), BackgroundTransparency = 1,
        Text = text, TextColor3 = color or C.dim, Font = Enum.Font.Gotham,
        TextSize = size or 13, TextXAlignment = Enum.TextXAlignment.Left,
        TextWrapped = true, LayoutOrder = order,
    }, page)
end

local function toggle(page, text, order, onChange)
    local row = new("Frame", {
        Size = UDim2.new(1, 0, 0, 44), BackgroundColor3 = C.item,
        BorderSizePixel = 0, LayoutOrder = order,
    }, page)
    corner(row, 10)
    new("TextLabel", {
        Size = UDim2.new(1, -70, 1, 0), Position = UDim2.fromOffset(12, 0),
        BackgroundTransparency = 1, Text = text, TextColor3 = C.text,
        Font = Enum.Font.GothamMedium, TextSize = 14,
        TextXAlignment = Enum.TextXAlignment.Left,
    }, row)
    local track = new("TextButton", {
        Size = UDim2.fromOffset(46, 24), Position = UDim2.new(1, -58, 0.5, -12),
        BackgroundColor3 = C.off, Text = "", AutoButtonColor = false,
    }, row)
    corner(track, 12)
    local knob = new("Frame", {
        Size = UDim2.fromOffset(18, 18), Position = UDim2.fromOffset(3, 3),
        BackgroundColor3 = C.text, BorderSizePixel = 0,
    }, track)
    corner(knob, 9)

    local on = false
    local function set(v)
        on = v
        TweenService:Create(track, TweenInfo.new(0.15), { BackgroundColor3 = on and C.on or C.off }):Play()
        TweenService:Create(knob, TweenInfo.new(0.15), {
            Position = on and UDim2.fromOffset(25, 3) or UDim2.fromOffset(3, 3),
        }):Play()
        onChange(on)
    end
    track.MouseButton1Click:Connect(function() set(not on) end)
    return set
end

local function button(page, text, order, cb)
    local b = new("TextButton", {
        Size = UDim2.new(1, 0, 0, 34), BackgroundColor3 = C.item,
        Text = text, TextColor3 = C.text, Font = Enum.Font.GothamMedium,
        TextSize = 13, LayoutOrder = order,
    }, page)
    corner(b, 10)
    b.MouseButton1Click:Connect(cb)
    return b
end

-- Página Candy
local candyPage = addTab("Candy", 1)
label(candyPage, "Auto Candy", 1, C.text, 16)
local setCandy = toggle(candyPage, "Teleportar p/ Candies", 2, function(v) setState("candy", v) end)
local candyCount = label(candyPage, "Candies encontradas: 0", 3, C.dim, 13)
button(candyPage, "Teleportar uma vez (todas)", 4, function()
    task.spawn(function()
        local root = getRoot()
        local back = root and root.CFrame
        for obj in pairs(tracked.candy) do
            if obj.Parent then pcall(tpTo, obj); task.wait(TP_DELAY) end
        end
        local r = getRoot()
        if r and back then r.CFrame = back end
    end)
end)

-- Página Ghost
local ghostPage = addTab("Ghost", 2)
label(ghostPage, "Auto Ghost", 1, C.text, 16)
local setGhost = toggle(ghostPage, "Teleportar p/ Ghosts", 2, function(v) setState("ghost", v) end)
local ghostCount = label(ghostPage, "Objetos encontrados: 0", 3, C.dim, 13)
local ghostStatus = label(ghostPage, "Status: aguardando partida...", 4, C.dim, 13)
label(ghostPage, "Green • Orange • Pink (só funciona na partida)", 5, C.dim, 12)

-- Página Config (velocidade)
local cfgPage = addTab("Config", 3)
label(cfgPage, "Velocidade do TP", 1, C.text, 16)
local speedLabel = label(cfgPage, "Atual: Médio (0.15s)", 2, C.dim, 13)
local function setSpeed(name, delay)
    TP_DELAY = delay
    speedLabel.Text = ("Atual: %s (%.2fs)"):format(name, delay)
end
button(cfgPage, "Rápido (0.08s)", 3, function() setSpeed("Rápido", 0.08) end)
button(cfgPage, "Médio (0.15s)", 4, function() setSpeed("Médio", 0.15) end)
button(cfgPage, "Seguro (0.30s)", 5, function() setSpeed("Seguro", 0.30) end)

-- Página Info
local infoPage = addTab("Info", 4)
label(infoPage, "L.M Scripts", 1, C.text, 16)
label(infoPage, "Auto Candy: Candy_1, Candy_5, Candy_10 e Candy_25.", 2)
label(infoPage, "Auto Ghost: Green, Pink e Orange.", 3)
label(infoPage, "Tecla RightShift: esconder/mostrar o menu.", 4)

selectTab("Candy")

-- contadores ao vivo
task.spawn(function()
    while gui.Parent do
        candyCount.Text = "Candies encontradas: " .. count(tracked.candy)
        ghostCount.Text = "Objetos encontrados: " .. count(tracked.ghost)
        ghostStatus.Text = matchActive and "Status: EM PARTIDA ✔" or "Status: aguardando partida..."
        ghostStatus.TextColor3 = matchActive and C.on or C.dim
        task.wait(0.5)
    end
end)

-- minimizar / fechar / atalho
local minimized = false
minBtn.MouseButton1Click:Connect(function()
    minimized = not minimized
    side.Visible = not minimized
    content.Visible = not minimized
    main.Size = minimized and UDim2.fromOffset(440, 38) or UDim2.fromOffset(440, 300)
end)

closeBtn.MouseButton1Click:Connect(function()
    state.candy, state.ghost = false, false
    task.wait(0.1)
    gui:Destroy()
end)

UIS.InputBegan:Connect(function(i, gp)
    if not gp and i.KeyCode == Enum.KeyCode.RightShift then
        main.Visible = not main.Visible
    end
end)
Executor compatibility changes over time. Check current reports before testing.

Script #2 Must use on maps that have the specific or both ghosts! & More (Halloween Update)

Script #2 · Must use on maps that have the specific or both ghosts! & MoreFree
Must use on maps that have the specific or both ghosts!FeaturesOld Obby Farm (Slow)Ghost Farm (Farms Both Ghosts)Quidz Ghost (Filter for Ghost Farm)Candy Ghost (Filter for Ghost Farm)
loadstring(game:HttpGet("https://pastebin.com/raw/KS5514fF"))()
Executor compatibility changes over time. Check current reports before testing.

Updated and tested for the latest Halloween Update, this script automates the newest event tasks so you can keep up without the extra grind.

Copy the code above into a compatible Roblox script executor if you choose to test it.

BEAR Script Status

✓AvailabilityFree
$Price$0
◫CompatibilityDesktop & Mobile
★SafetyVerified

Roblox and game updates can affect compatibility, so the script’s status should be treated as temporary rather than guaranteed.

Frequently Asked Questions

What is a BEAR script?

A BEAR script is third-party Lua code intended to run alongside the Roblox game through a compatible script executor.

What features does this BEAR script include?

Different scripts contain different code. This version includes: Auto Farm, Teleport, Must use on maps that have the specific or both ghosts!, Features, Old Obby Farm (Slow), Ghost Farm (Farms Both Ghosts), Quidz Ghost (Filter for Ghost Farm), Candy Ghost (Filter for Ghost Farm), Best Maps:, Lone House | Both Ghosts, Undead Coming || Both Ghosts, Haunted Mansion | Both Ghosts.

How do you use the BEAR script?

Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex, launch Roblox and join the game, copy the complete Lua code from the script card above, paste it into the executor’s editor, and click Run or Execute. Compatibility changes over time, so a name here doesn’t guarantee current support.

Can a BEAR script get your Roblox account banned?

Yes. Third-party scripts can violate Roblox rules and may put an account at risk. Only use code from a source you trust, never enter your Roblox password into a script or executor, and test on an alternate account first.

Does the BEAR script work on mobile?

Check whether both the executor and the script support your device and the current Roblox version. Mobile executor support does not guarantee that every script will work.

Check out our Roblox Scripts hub and Roblox Games Directory for more.

Leave a Comment