- 2026-10-27 — Added Script #2: Updated for Halloween Update.
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
--[[
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)Script #2 Must use on maps that have the specific or both ghosts! & More (Halloween Update)
loadstring(game:HttpGet("https://pastebin.com/raw/KS5514fF"))()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
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.