-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[ MEDVED MONO V2 RightShift — скрыть / показать меню F6 — автофарм страниц F7 — автофарм крейтов Если горячие клавиши не работают: используй кнопки в меню или попробуй Fn + F6/F7. Фармы страниц и крейтов не работают одновременно. При остановке фарма персонаж возвращается назад, если он всё ещё жив и не сменился. ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local env = getgenv and getgenv() or _G -- Убираем старые версии. for _, key in ipairs({ "MedvedMonoCleanup", "MedvedCrateFarmCleanup", "MedvedMonoV2Cleanup" }) do if type(env[key]) == "function" then pcall(env[key]) env[key] = nil end end for _, name in ipairs({ "MedvedMonoV1", "MedvedCrateFarmGui", "MedvedMonoV2" }) do local old = playerGui:FindFirstChild(name) if old then old:Destroy() end end local alive = true local connections = {} local visuals = {} local settings = { bearESP = true, friendlyESP = true, trackers = true, range = 700 } local colors = { background = Color3.fromRGB(13, 15, 19), panel = Color3.fromRGB(23, 27, 34), button = Color3.fromRGB(34, 39, 48), hover = Color3.fromRGB(48, 55, 66), text = Color3.fromRGB(240, 244, 250), muted = Color3.fromRGB(155, 165, 180), hostile = Color3.fromRGB(255, 115, 115), friendly = Color3.fromRGB(125, 235, 160), accent = Color3.fromRGB(115, 185, 255), warning = Color3.fromRGB(255, 195, 105) } local function connect(signal, callback) local connection = signal:Connect(callback) table.insert(connections, connection) return connection end local function corner(parent, radius) local item = Instance.new("UICorner") item.CornerRadius = UDim.new(0, radius or 8) item.Parent = parent end local function stroke(parent, color, transparency) local item = Instance.new("UIStroke") item.Color = color item.Transparency = transparency or 0 item.Thickness = 1 item.Parent = parent end local function toggleText(name, value) return name .. ": " .. (value and "ВКЛ" or "ВЫКЛ") end -- ========================================== -- ИНТЕРФЕЙС -- ========================================== local screen = Instance.new("ScreenGui") screen.Name = "MedvedMonoV2" screen.ResetOnSpawn = false screen.IgnoreGuiInset = true screen.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screen.Parent = playerGui local visualFolder = Instance.new("Folder") visualFolder.Name = "BearVisuals" visualFolder.Parent = screen local lineFolder = Instance.new("Folder") lineFolder.Name = "TrackerLines" lineFolder.Parent = screen local main = Instance.new("Frame") main.Name = "Main" main.Size = UDim2.fromOffset(340, 450) main.Position = UDim2.new(0, 35, 0.5, -225) main.BackgroundColor3 = colors.background main.BorderSizePixel = 0 main.ClipsDescendants = true main.Parent = screen corner(main, 12) stroke(main, colors.accent, 0.55) local header = Instance.new("Frame") header.Size = UDim2.new(1, 0, 0, 58) header.BackgroundColor3 = colors.panel header.BorderSizePixel = 0 header.Active = true header.Parent = main local title = Instance.new("TextLabel") title.Position = UDim2.fromOffset(12, 5) title.Size = UDim2.new(1, -70, 0, 25) title.BackgroundTransparency = 1 title.Text = "MEDVED / MONO V2" title.TextColor3 = colors.text title.TextSize = 16 title.Font = Enum.Font.GothamBold title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = header local subtitle = Instance.new("TextLabel") subtitle.Position = UDim2.fromOffset(12, 30) subtitle.Size = UDim2.new(1, -70, 0, 18) subtitle.BackgroundTransparency = 1 subtitle.Text = "F6: страницы • F7: крейты" subtitle.TextColor3 = colors.muted subtitle.TextSize = 10 subtitle.Font = Enum.Font.Gotham subtitle.TextXAlignment = Enum.TextXAlignment.Left subtitle.Parent = header local hideButton = Instance.new("TextButton") hideButton.Position = UDim2.new(1, -42, 0, 10) hideButton.Size = UDim2.fromOffset(30, 30) hideButton.BackgroundColor3 = colors.button hideButton.BorderSizePixel = 0 hideButton.Text = "−" hideButton.TextColor3 = colors.text hideButton.TextSize = 20 hideButton.Font = Enum.Font.GothamBold hideButton.Parent = header corner(hideButton, 7) local showButton = Instance.new("TextButton") showButton.Name = "ShowMenu" showButton.Position = UDim2.fromOffset(15, 120) showButton.Size = UDim2.fromOffset(72, 34) showButton.BackgroundColor3 = colors.panel showButton.BorderSizePixel = 0 showButton.Text = "MONO" showButton.TextColor3 = colors.accent showButton.TextSize = 12 showButton.Font = Enum.Font.GothamBold showButton.Visible = false showButton.Parent = screen corner(showButton, 8) stroke(showButton, colors.accent, 0.45) connect(hideButton.MouseButton1Click, function() main.Visible = false showButton.Visible = true end) connect(showButton.MouseButton1Click, function() main.Visible = true showButton.Visible = false end) local scroll = Instance.new("ScrollingFrame") scroll.Name = "Content" scroll.Position = UDim2.fromOffset(10, 66) scroll.Size = UDim2.new(1, -20, 1, -76) scroll.BackgroundTransparency = 1 scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 3 scroll.ScrollBarImageColor3 = colors.accent scroll.CanvasSize = UDim2.fromOffset(0, 0) scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y scroll.Parent = main local layout = Instance.new("UIListLayout") layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Padding = UDim.new(0, 6) layout.Parent = scroll local padding = Instance.new("UIPadding") padding.PaddingRight = UDim.new(0, 5) padding.PaddingBottom = UDim.new(0, 8) padding.Parent = scroll local order = 0 local function nextOrder() order += 1 return order end local function makeLabel(text, color) local label = Instance.new("TextLabel") label.LayoutOrder = nextOrder() label.Size = UDim2.new(1, 0, 0, 30) label.BackgroundColor3 = colors.panel label.BorderSizePixel = 0 label.Text = text label.TextColor3 = color or colors.muted label.TextSize = 11 label.Font = Enum.Font.GothamMedium label.TextWrapped = true label.Parent = scroll corner(label, 7) return label end local function makeButton(text, callback) local button = Instance.new("TextButton") button.LayoutOrder = nextOrder() button.Size = UDim2.new(1, 0, 0, 32) button.BackgroundColor3 = colors.button button.BorderSizePixel = 0 button.Text = text button.TextColor3 = colors.text button.TextSize = 12 button.Font = Enum.Font.GothamMedium button.AutoButtonColor = false button.Parent = scroll corner(button, 7) connect(button.MouseEnter, function() button.BackgroundColor3 = colors.hover end) connect(button.MouseLeave, function() button.BackgroundColor3 = colors.button end) connect(button.MouseButton1Click, function() if alive then callback(button) end end) return button end local bearStatus = makeLabel("Медведи: поиск...") local farmStatus = makeLabel("Фарм: выключен") makeButton(toggleText("ESP медведей", settings.bearESP), function(button) settings.bearESP = not settings.bearESP button.Text = toggleText("ESP медведей", settings.bearESP) end) makeButton(toggleText("Дружелюбные медведи", settings.friendlyESP), function(button) settings.friendlyESP = not settings.friendlyESP button.Text = toggleText("Дружелюбные медведи", settings.friendlyESP) end) makeButton(toggleText("Линии-трекеры", settings.trackers), function(button) settings.trackers = not settings.trackers button.Text = toggleText("Линии-трекеры", settings.trackers) end) local rangeRow = Instance.new("Frame") rangeRow.LayoutOrder = nextOrder() rangeRow.Size = UDim2.new(1, 0, 0, 32) rangeRow.BackgroundTransparency = 1 rangeRow.Parent = scroll local function rangeButton(text, position) local button = Instance.new("TextButton") button.Size = UDim2.fromOffset(38, 32) button.Position = position button.BackgroundColor3 = colors.button button.BorderSizePixel = 0 button.Text = text button.TextColor3 = colors.text button.TextSize = 16 button.Font = Enum.Font.GothamBold button.Parent = rangeRow corner(button, 7) return button end local minus = rangeButton("−", UDim2.fromOffset(0, 0)) local plus = rangeButton("+", UDim2.new(1, -38, 0, 0)) local rangeLabel = Instance.new("TextLabel") rangeLabel.Position = UDim2.fromOffset(44, 0) rangeLabel.Size = UDim2.new(1, -88, 1, 0) rangeLabel.BackgroundColor3 = colors.panel rangeLabel.BorderSizePixel = 0 rangeLabel.TextColor3 = colors.text rangeLabel.TextSize = 11 rangeLabel.Font = Enum.Font.GothamMedium rangeLabel.Parent = rangeRow corner(rangeLabel, 7) local function refreshRange() rangeLabel.Text = "Дальность: " .. settings.range .. " / 700 studs" end refreshRange() connect(minus.MouseButton1Click, function() settings.range = math.clamp(settings.range - 100, 100, 700) refreshRange() end) connect(plus.MouseButton1Click, function() settings.range = math.clamp(settings.range + 100, 100, 700) refreshRange() end) local pageButton local crateButton local toggleFarm local cleanup pageButton = makeButton("Автофарм страниц [F6]: ВЫКЛ", function() toggleFarm("pages") end) crateButton = makeButton("Автофарм крейтов [F7]: ВЫКЛ", function() toggleFarm("crates") end) local hint = makeLabel( "Фармы работают по одному. Остановка — той же кнопкой.", colors.warning ) hint.TextSize = 10 local stopButton = makeButton("ВЫКЛЮЧИТЬ СКРИПТ", function() cleanup() end) stopButton.TextColor3 = colors.hostile -- Перетаскивание меню. local dragging = false local dragInput local dragStart local startPosition connect(header.InputBegan, function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPosition = main.Position if input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end end) connect(header.InputChanged, function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) connect(UIS.InputChanged, function(input) if dragging and input == dragInput and dragStart and startPosition then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) connect(UIS.InputEnded, function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) -- ========================================== -- ESP -- ========================================== local function getRoot(model) if not model or not model:IsA("Model") then return nil end local root = model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("RootPart") or model.PrimaryPart if root and root:IsA("BasePart") then return root end return nil end local function destroyVisual(visual) if visual.billboard then visual.billboard:Destroy() end if visual.line then visual.line:Destroy() end end local function clearVisuals() for model, visual in pairs(visuals) do destroyVisual(visual) visuals[model] = nil end end local function createVisual(root, color) local billboard = Instance.new("BillboardGui") billboard.Name = "BearLabel" billboard.Adornee = root billboard.Size = UDim2.fromOffset(180, 44) billboard.StudsOffset = Vector3.new(0, 3, 0) billboard.AlwaysOnTop = true billboard.MaxDistance = 700 billboard.Parent = visualFolder local label = Instance.new("TextLabel") label.Size = UDim2.fromScale(1, 1) label.BackgroundTransparency = 1 label.TextColor3 = color label.TextStrokeColor3 = Color3.new(0, 0, 0) label.TextStrokeTransparency = 0 label.TextSize = 13 label.Font = Enum.Font.GothamBold label.TextWrapped = true label.Parent = billboard local line = Instance.new("Frame") line.Name = "BearTracker" line.AnchorPoint = Vector2.new(0.5, 0.5) line.BorderSizePixel = 0 line.BackgroundColor3 = color line.Visible = false line.Parent = lineFolder return { root = root, billboard = billboard, label = label, line = line } end local function updateBears() local myRoot = getRoot(player.Character) if not myRoot then clearVisuals() bearStatus.Text = "Медведи: ожидание персонажа" return end local wanted = {} local hostileCount = 0 local friendlyCount = 0 local function scan(folderName, enabled, friendly) if not enabled then return end local folder = Workspace:FindFirstChild(folderName) if not folder then return end for _, model in ipairs(folder:GetChildren()) do if model:IsA("Model") and model ~= player.Character then local root = getRoot(model) local humanoid = model:FindFirstChildOfClass("Humanoid") -- У некоторых типов Humanoid отсутствует. if root and (not humanoid or humanoid.Health > 0) then local distance = (root.Position - myRoot.Position).Magnitude if distance <= settings.range then wanted[model] = true if friendly then friendlyCount += 1 else hostileCount += 1 end local color = friendly and colors.friendly or colors.hostile local visual = visuals[model] if visual and visual.root ~= root then destroyVisual(visual) visuals[model] = nil visual = nil end if not visual then visual = createVisual(root, color) visuals[model] = visual end visual.label.TextColor3 = color visual.line.BackgroundColor3 = color visual.billboard.MaxDistance = settings.range local name = model.Name local bearId = model:GetAttribute("BearID") if type(bearId) == "string" and bearId ~= "" and bearId ~= name then name = name .. " [" .. bearId .. "]" end if friendly then name = "ДРУЖЕЛЮБНЫЙ: " .. name end visual.label.Text = name .. "\n" .. math.floor(distance) .. " studs" end end end end end scan("Bears", settings.bearESP, false) scan("FriendlyBears", settings.friendlyESP, true) for model, visual in pairs(visuals) do if not wanted[model] then destroyVisual(visual) visuals[model] = nil end end bearStatus.Text = "Медведи: " .. hostileCount .. " | Дружелюбные: " .. friendlyCount end local function updateLines() local camera = Workspace.CurrentCamera for _, visual in pairs(visuals) do local line = visual.line line.Visible = false if settings.trackers and camera and visual.root and visual.root:IsDescendantOf(Workspace) then local point, onScreen = camera:WorldToViewportPoint( visual.root.Position ) if onScreen and point.Z > 0 then local viewport = camera.ViewportSize local startPoint = Vector2.new(viewport.X / 2, viewport.Y - 20) local endPoint = Vector2.new(point.X, point.Y) local delta = endPoint - startPoint local middle = (startPoint + endPoint) / 2 line.Size = UDim2.fromOffset(delta.Magnitude, 2) line.Position = UDim2.fromOffset(middle.X, middle.Y) line.Rotation = math.deg(math.atan2(delta.Y, delta.X)) line.Visible = true end end end end -- ========================================== -- ОБЩЕЕ УПРАВЛЕНИЕ ФАРМОМ -- ========================================== local farmMode = nil local farmBusy = false local farmToken = 0 local farmContext = nil local function validCharacter(character, humanoid, root) return character and humanoid and root and player.Character == character and character:IsDescendantOf(Workspace) and humanoid.Parent ~= nil and humanoid.Health > 0 and root:IsDescendantOf(character) end local function returnToStart(context) if not context or context.returned then return end context.returned = true if validCharacter(context.character, context.humanoid, context.root) then local ok, err = pcall(function() context.character:PivotTo(context.original) end) if not ok then warn("[MEDVED] Ошибка возврата:", err) end else print("[MEDVED] Возврат пропущен: персонаж умер или сменился") end end local function isActive(token) return alive and farmMode ~= nil and farmToken == token end local function waitActive(seconds, token) local deadline = os.clock() + seconds while isActive(token) and os.clock() < deadline do task.wait(0.05) end return isActive(token) end local function refreshFarmButtons() pageButton.Text = toggleText("Автофарм страниц [F6]", farmMode == "pages") crateButton.Text = toggleText("Автофарм крейтов [F7]", farmMode == "crates") end local function getNearestPage(root, attempted) local folder = Workspace:FindFirstChild("Pages") if not folder then return nil, nil, "Папка Pages не найдена" end local selected, selectedPrompt, nearestDistance for _, page in ipairs(folder:GetChildren()) do if page:IsA("BasePart") and not attempted[page] then local prompt = page:FindFirstChildWhichIsA("ProximityPrompt", true) if prompt and prompt.Enabled then local distance = (page.Position - root.Position).Magnitude if not nearestDistance or distance < nearestDistance then selected = page selectedPrompt = prompt nearestDistance = distance end end end end return selected, selectedPrompt end local function getNearestCrate(root, attempted) local interactables = Workspace:FindFirstChild("Interactables") local folder = interactables and interactables:FindFirstChild("Crates") if not folder then return nil, nil, nil, "Папка Crates не найдена" end local selected, selectedPart, selectedPrompt, nearestDistance for _, model in ipairs(folder:GetChildren()) do if model:IsA("Model") and not attempted[model] and model:GetAttribute("Collected") ~= true then local part = model:FindFirstChild("Crate") local prompt = part and part:FindFirstChild("CratePrompt") if part and part:IsA("BasePart") and prompt and prompt:IsA("ProximityPrompt") and prompt.Enabled then local distance = (part.Position - root.Position).Magnitude if not nearestDistance or distance < nearestDistance then selected = model selectedPart = part selectedPrompt = prompt nearestDistance = distance end end end end return selected, selectedPart, selectedPrompt end local function runPages(context, token) local attempted = {} local attempts = 0 local confirmed = 0 local reason = "доступных страниц больше нет" while isActive(token) do if not validCharacter(context.character, context.humanoid, context.root) then reason = "персонаж умер или сменился" break end local page, prompt, err = getNearestPage(context.root, attempted) if err then reason = err break end if not page then break end attempted[page] = true attempts += 1 farmStatus.Text = "Страница: " .. page.Name .. " | попытка " .. attempts local ok, teleportError = pcall(function() context.character:PivotTo(page.CFrame * CFrame.new(0, 3, 0)) end) if not ok then warn("[MEDVED] Телепорт к странице:", teleportError) elseif waitActive(1, token) and validCharacter(context.character, context.humanoid, context.root) and page:IsDescendantOf(Workspace) and prompt.Parent and prompt.Enabled then local fired, fireError = pcall(function() fireproximityprompt(prompt) end) if not fired then warn("[MEDVED] Сбор страницы:", fireError) end if not waitActive(1.5, token) then reason = "остановлен" break end if not page:IsDescendantOf(Workspace) or not prompt.Parent or not prompt.Enabled then confirmed += 1 end end end return reason, "Страницы: " .. confirmed .. "/" .. attempts end local function runCrates(context, token) local attempted = {} local attempts = 0 local opened = 0 local itemAttempts = 0 local reason = "доступных крейтов больше нет" while isActive(token) do if not validCharacter(context.character, context.humanoid, context.root) then reason = "персонаж умер или сменился" break end local crate, cratePart, prompt, err = getNearestCrate(context.root, attempted) if err then reason = err break end if not crate then break end attempted[crate] = true attempts += 1 farmStatus.Text = "Крейт: " .. crate.Name .. " | попытка " .. attempts local ok, teleportError = pcall(function() context.character:PivotTo(cratePart.CFrame * CFrame.new(0, 3, 0)) end) if not ok then warn("[MEDVED] Телепорт к крейту:", teleportError) elseif waitActive(0.7, token) and validCharacter(context.character, context.humanoid, context.root) and crate:IsDescendantOf(Workspace) and prompt.Parent and prompt.Enabled then local fired, fireError = pcall(function() fireproximityprompt(prompt) end) if not fired then warn("[MEDVED] Открытие крейта:", fireError) end if not waitActive(1.5, token) then reason = "остановлен" break end if crate:GetAttribute("Collected") == true or not prompt.Parent or not prompt.Enabled then opened += 1 end if crate:IsDescendantOf(Workspace) then for _, obj in ipairs(crate:GetDescendants()) do if not isActive(token) or not validCharacter( context.character, context.humanoid, context.root ) then break end if obj:IsA("ProximityPrompt") and obj.Name == "ItemPrompt" and obj.Enabled then itemAttempts += 1 print("[MEDVED] Предмет:", obj.ObjectText) local itemOk, itemError = pcall(function() fireproximityprompt(obj) end) if not itemOk then warn("[MEDVED] Сбор предмета:", itemError) end if not waitActive(0.35, token) then reason = "остановлен" break end end end end end end return reason, "Крейты: " .. opened .. "/" .. attempts .. " | предметы: " .. itemAttempts .. " попыток" end local function runFarm(mode, token) local character = player.Character local root = character and character:FindFirstChild("HumanoidRootPart") local humanoid = character and character:FindFirstChildOfClass("Humanoid") if not validCharacter(character, humanoid, root) then farmBusy = false farmMode = nil if alive then refreshFarmButtons() farmStatus.Text = "Фарм: живой персонаж не найден" end return end local context = { character = character, root = root, humanoid = humanoid, original = character:GetPivot(), returned = false } farmContext = context local ok, reason, result = xpcall(function() if mode == "pages" then return runPages(context, token) else return runCrates(context, token) end end, debug.traceback) returnToStart(context) if farmContext == context then farmContext = nil end farmBusy = false if farmToken == token then farmMode = nil end if not ok then warn("[MEDVED] Ошибка фарма:", reason) result = "Фарм: ошибка, смотри консоль" else print("[MEDVED] Фарм завершён:", reason, result) end if alive then refreshFarmButtons() farmStatus.Text = result or "Фарм завершён" end end toggleFarm = function(mode) if farmMode == mode then farmMode = nil farmToken += 1 refreshFarmButtons() farmStatus.Text = "Остановка и возврат..." return end if farmBusy or farmMode ~= nil then farmStatus.Text = "Сначала останови текущий фарм" return end if type(fireproximityprompt) ~= "function" then farmStatus.Text = "fireproximityprompt недоступен" return end farmMode = mode farmBusy = true farmToken += 1 refreshFarmButtons() farmStatus.Text = "Фарм: запуск..." task.spawn(runFarm, mode, farmToken) end -- ========================================== -- КЛАВИШИ И ОБНОВЛЕНИЕ -- ========================================== -- Не используем processed: игра могла помечать клавиши -- обработанными. При вводе текста горячие клавиши на паузе. connect(UIS.InputBegan, function(input) if UIS:GetFocusedTextBox() then return end if input.KeyCode == Enum.KeyCode.RightShift then main.Visible = not main.Visible showButton.Visible = not main.Visible elseif input.KeyCode == Enum.KeyCode.F6 then toggleFarm("pages") elseif input.KeyCode == Enum.KeyCode.F7 then toggleFarm("crates") end end) local elapsed = 0 connect(RunService.Heartbeat, function(dt) if not alive then return end elapsed += dt if elapsed >= 0.5 then elapsed = 0 updateBears() end end) connect(RunService.RenderStepped, function() if alive then updateLines() end end) -- ========================================== -- ОЧИСТКА -- ========================================== cleanup = function() if not alive then return end farmMode = nil farmToken += 1 -- Возвращаем персонажа сразу, если фарм активен. returnToStart(farmContext) farmContext = nil alive = false for _, connection in ipairs(connections) do connection:Disconnect() end clearVisuals() screen:Destroy() if env.MedvedMonoV2Cleanup == cleanup then env.MedvedMonoV2Cleanup = nil end print("[MEDVED V2] Скрипт выключен.") end env.MedvedMonoV2Cleanup = cleanup updateBears() print("[MEDVED V2] Загружен.") print("[MEDVED V2] RightShift — меню | F6 — страницы | F7 — крейты.") print("[MEDVED V2] Если F-клавиши не срабатывают, попробуй Fn + F6/F7.")