--[[ 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)