-- [[ 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 ]] local Players = game:GetService("Players") local CoreGui = game:GetService("CoreGui") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local HttpService = game:GetService("HttpService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local hasCoreGui, CoreGuiRef = pcall(function() return game:GetService("CoreGui") end) local GUI_NAME = "Monolith" if hasCoreGui and CoreGuiRef and CoreGuiRef:FindFirstChild(GUI_NAME) then CoreGuiRef[GUI_NAME]:Destroy() end if PlayerGui:FindFirstChild(GUI_NAME) then PlayerGui[GUI_NAME]:Destroy() end local configName = "Monolith_Config.json" local teamCheckEnabled = true local wallCheckEnabled = false local espModes = {"Cham", "Box", "Outline"} local currentModeIndex = 3 local currentMultiplier = 1.0 local function LoadSettings() if isfile and isfile(configName) and readfile then local success, result = pcall(function() return HttpService:JSONDecode(readfile(configName)) end) if success and type(result) == "table" then if result.teamCheck ~= nil then teamCheckEnabled = result.teamCheck end if result.wallCheck ~= nil then wallCheckEnabled = result.wallCheck end if result.espMode ~= nil then currentModeIndex = math.clamp(result.espMode, 1, #espModes) end if result.multiplier ~= nil then currentMultiplier = result.multiplier end end end end local function SaveSettings() if writefile then local settings = { teamCheck = teamCheckEnabled, wallCheck = wallCheckEnabled, espMode = currentModeIndex, multiplier = currentMultiplier } pcall(function() writefile(configName, HttpService:JSONEncode(settings)) end) end end LoadSettings() local screenGui = Instance.new("ScreenGui") screenGui.Name = GUI_NAME screenGui.ResetOnSpawn = false screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Global screenGui.DisplayOrder = 999999 local parentSuccess = false if hasCoreGui and CoreGuiRef then parentSuccess, _ = pcall(function() screenGui.Parent = CoreGuiRef end) end if not parentSuccess then screenGui.Parent = PlayerGui end local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 210, 0, 150) mainFrame.Position = UDim2.new(0, 15, 1, -165) mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Parent = screenGui local mainStroke = Instance.new("UIStroke") mainStroke.Color = Color3.fromRGB(240, 240, 240) mainStroke.Thickness = 1 mainStroke.Parent = mainFrame local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, -35, 0, 24) titleLabel.Position = UDim2.new(0, 5, 0, 4) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "[ MONOLITH ]" titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.TextSize = 11 titleLabel.Font = Enum.Font.Code titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Parent = mainFrame local minimizeBtn = Instance.new("TextButton") minimizeBtn.Size = UDim2.new(0, 24, 0, 20) minimizeBtn.Position = UDim2.new(1, -28, 0, 6) minimizeBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) minimizeBtn.BorderSizePixel = 0 minimizeBtn.Text = "_" minimizeBtn.TextColor3 = Color3.fromRGB(240, 240, 240) minimizeBtn.TextSize = 12 minimizeBtn.Font = Enum.Font.Code minimizeBtn.Parent = mainFrame local minStroke = Instance.new("UIStroke") minStroke.Color = Color3.fromRGB(100, 100, 100) minStroke.Thickness = 1 minStroke.Parent = minimizeBtn local containerFrame = Instance.new("Frame") containerFrame.Name = "Container" containerFrame.Size = UDim2.new(1, 0, 1, -28) containerFrame.Position = UDim2.new(0, 0, 0, 28) containerFrame.BackgroundTransparency = 1 containerFrame.Parent = mainFrame local teamCheckBtn = Instance.new("TextButton") teamCheckBtn.Size = UDim2.new(1, -10, 0, 22) teamCheckBtn.Position = UDim2.new(0, 5, 0, 5) teamCheckBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 25) teamCheckBtn.BorderSizePixel = 0 teamCheckBtn.Text = " TEAMCHECK (BUGGY, NOT RECOMMENDED)" teamCheckBtn.TextColor3 = Color3.fromRGB(200, 200, 200) teamCheckBtn.TextSize = 9 teamCheckBtn.Font = Enum.Font.Code teamCheckBtn.TextXAlignment = Enum.TextXAlignment.Left teamCheckBtn.Parent = containerFrame local teamStroke = Instance.new("UIStroke") teamStroke.Color = Color3.fromRGB(100, 100, 100) teamStroke.Thickness = 1 teamStroke.Parent = teamCheckBtn local teamIndicator = Instance.new("Frame") teamIndicator.Size = UDim2.new(0, 4, 0, 14) teamIndicator.AnchorPoint = Vector2.new(1, 0.5) teamIndicator.Position = UDim2.new(1, -5, 0.5, 0) teamIndicator.BorderSizePixel = 0 teamIndicator.Parent = teamCheckBtn local wallCheckBtn = Instance.new("TextButton") wallCheckBtn.Size = UDim2.new(1, -10, 0, 22) wallCheckBtn.Position = UDim2.new(0, 5, 0, 31) wallCheckBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 25) wallCheckBtn.BorderSizePixel = 0 wallCheckBtn.Text = " WALLCHECK" wallCheckBtn.TextColor3 = Color3.fromRGB(200, 200, 200) wallCheckBtn.TextSize = 10 wallCheckBtn.Font = Enum.Font.Code wallCheckBtn.TextXAlignment = Enum.TextXAlignment.Left wallCheckBtn.Parent = containerFrame local wallStroke = Instance.new("UIStroke") wallStroke.Color = Color3.fromRGB(100, 100, 100) wallStroke.Thickness = 1 wallStroke.Parent = wallCheckBtn local wallIndicator = Instance.new("Frame") wallIndicator.Size = UDim2.new(0, 4, 0, 14) wallIndicator.AnchorPoint = Vector2.new(1, 0.5) wallIndicator.Position = UDim2.new(1, -5, 0.5, 0) wallIndicator.BorderSizePixel = 0 wallIndicator.Parent = wallCheckBtn local modeBtn = Instance.new("TextButton") modeBtn.Size = UDim2.new(1, -10, 0, 22) modeBtn.Position = UDim2.new(0, 5, 0, 57) modeBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 25) modeBtn.BorderSizePixel = 0 modeBtn.Text = " ESP MODE: [OUTLINE]" modeBtn.TextColor3 = Color3.fromRGB(200, 200, 200) modeBtn.TextSize = 10 modeBtn.Font = Enum.Font.Code modeBtn.TextXAlignment = Enum.TextXAlignment.Left modeBtn.Parent = containerFrame local modeStroke = Instance.new("UIStroke") modeStroke.Color = Color3.fromRGB(100, 100, 100) modeStroke.Thickness = 1 modeStroke.Parent = modeBtn local headLabel = Instance.new("TextLabel") headLabel.Size = UDim2.new(1, -50, 0, 18) headLabel.Position = UDim2.new(0, 5, 0, 85) headLabel.BackgroundTransparency = 1 headLabel.Text = " HEAD SCALER:" headLabel.TextColor3 = Color3.fromRGB(180, 180, 180) headLabel.TextSize = 10 headLabel.Font = Enum.Font.Code headLabel.TextXAlignment = Enum.TextXAlignment.Left headLabel.Parent = containerFrame local valueLabel = Instance.new("TextLabel") valueLabel.Size = UDim2.new(0, 40, 0, 18) valueLabel.Position = UDim2.new(1, -45, 0, 85) valueLabel.BackgroundTransparency = 1 valueLabel.Text = "1.0X" valueLabel.TextColor3 = Color3.fromRGB(255, 255, 255) valueLabel.TextSize = 10 valueLabel.Font = Enum.Font.Code valueLabel.TextXAlignment = Enum.TextXAlignment.Right valueLabel.Parent = containerFrame local sliderTrack = Instance.new("Frame") sliderTrack.Size = UDim2.new(1, -10, 0, 6) sliderTrack.Position = UDim2.new(0, 5, 0, 109) sliderTrack.BackgroundColor3 = Color3.fromRGB(20, 20, 20) sliderTrack.BorderSizePixel = 0 sliderTrack.Parent = containerFrame local trackStroke = Instance.new("UIStroke") trackStroke.Color = Color3.fromRGB(80, 80, 80) trackStroke.Thickness = 1 trackStroke.Parent = sliderTrack local sliderFill = Instance.new("Frame") sliderFill.Size = UDim2.new(0, 0, 1, 0) sliderFill.BackgroundColor3 = Color3.fromRGB(240, 240, 240) sliderFill.BorderSizePixel = 0 sliderFill.Parent = sliderTrack local sliderButton = Instance.new("TextButton") sliderButton.Size = UDim2.new(0, 8, 0, 14) sliderButton.AnchorPoint = Vector2.new(0.5, 0.5) sliderButton.Position = UDim2.new(0, 0, 0.5, 0) sliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255) sliderButton.BorderSizePixel = 0 sliderButton.Text = "" sliderButton.Parent = sliderTrack local function applySettingsToUI() teamIndicator.BackgroundColor3 = teamCheckEnabled and Color3.fromRGB(80, 220, 80) or Color3.fromRGB(220, 80, 80) wallIndicator.BackgroundColor3 = wallCheckEnabled and Color3.fromRGB(80, 220, 80) or Color3.fromRGB(220, 80, 80) modeBtn.Text = " ESP MODE: [" .. string.upper(espModes[currentModeIndex]) .. "]" valueLabel.Text = string.format("%.1fX", currentMultiplier) local scale = math.clamp((currentMultiplier - 1) / 4, 0, 1) sliderButton.Position = UDim2.new(scale, 0, 0.5, 0) sliderFill.Size = UDim2.new(scale, 0, 1, 0) end applySettingsToUI() local MAX_DISTANCE = 500 local WSP = workspace local CharFolder = WSP:WaitForChild("characters") local Ignore = WSP:FindFirstChild("ignore") local ESPCache = {} local OriginalHeadSizes = {} local CachedIndicators = {} local throttleTick = 0 local localPlayerFolderID = tostring(LocalPlayer.UserId) local function ScanFriendlyIndicators() table.clear(CachedIndicators) if not teamCheckEnabled then return end local pGui = LocalPlayer:FindFirstChild("PlayerGui") if not pGui then return end local count = 0 local descendants = pGui:GetDescendants() for i = 1, #descendants do if count >= 40 then break end local gui = descendants[i] if not gui:IsA("GuiObject") or not gui.Visible then continue end local size = gui.AbsoluteSize if size.X <= 0 or size.Y <= 0 or size.X >= 20 or size.Y >= 20 then continue end local isIndicator = false if gui:IsA("Frame") and gui.BackgroundTransparency < 0.9 then local col = gui.BackgroundColor3 if col.G > 0.5 or col.B > 0.5 then isIndicator = true end elseif gui:IsA("ImageLabel") and gui.ImageTransparency < 0.5 and gui.Image ~= "" then isIndicator = true end if isIndicator then local pos = gui.AbsolutePosition count = count + 1 CachedIndicators[count] = Vector2.new(pos.X + size.X/2, pos.Y + size.Y/2) end end end local function isVisible(targetPart) if not wallCheckEnabled then return true end local origin = Camera.CFrame.Position local direction = (targetPart.Position - origin) local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Exclude raycastParams.IgnoreWater = true local filterList = {} if LocalPlayer.Character then table.insert(filterList, LocalPlayer.Character) end raycastParams.FilterDescendantsInstances = filterList local result = workspace:Raycast(origin, direction, raycastParams) if result and not result.Instance:IsDescendantOf(targetPart.Parent) then return false end return true end local function Cleanup(m) if ESPCache[m] then if ESPCache[m].Highlight then ESPCache[m].Highlight:Destroy() end if ESPCache[m].Box then ESPCache[m].Box:Remove() end ESPCache[m] = nil end end local function SetupESP(m) if not m:IsA("Model") then return end if m.Name == localPlayerFolderID or (LocalPlayer.Character and m == LocalPlayer.Character) then return end if Ignore and m:IsDescendantOf(Ignore) then return end if not m:WaitForChild("humanoid_root_part", 1) then return end if not ESPCache[m] then local H = Instance.new("Highlight") H.Name = "AnalogESP" H.Adornee = m H.FillColor = Color3.new(1, 1, 1) H.FillTransparency = 0.5 H.OutlineTransparency = 0 H.Parent = m local Box = Drawing.new("Square") Box.Thickness = 1.5 Box.Filled = false Box.Color = Color3.fromRGB(240, 240, 240) Box.Visible = false ESPCache[m] = { Highlight = H, Box = Box } end m.AncestryChanged:Connect(function(_, p) if not p then Cleanup(m) end end) end CharFolder.ChildAdded:Connect(function(c) task.wait(0.1) SetupESP(c) end) CharFolder.ChildRemoved:Connect(Cleanup) for _, c in ipairs(CharFolder:GetChildren()) do SetupESP(c) end RunService.RenderStepped:Connect(function() throttleTick = throttleTick + 1 if throttleTick % 15 == 0 then ScanFriendlyIndicators() end local mode = espModes[currentModeIndex] local camPos = Camera.CFrame.Position for m, espData in pairs(ESPCache) do if m and m.Parent then local hrp = m:FindFirstChild("humanoid_root_part") if hrp then local screenPos, onScreen = Camera:WorldToViewportPoint(hrp.Position) local distance = (hrp.Position - camPos).Magnitude local isFriendly = false if teamCheckEnabled then local targetPlayer = Players:FindFirstChild(m.Name) if targetPlayer and LocalPlayer.Team and targetPlayer.Team == LocalPlayer.Team then isFriendly = true elseif onScreen and screenPos.Z > 0 then local sPos2D = Vector2.new(screenPos.X, screenPos.Y) for i = 1, #CachedIndicators do if (CachedIndicators[i] - sPos2D).Magnitude < 120 then isFriendly = true break end end end end if isFriendly or distance > MAX_DISTANCE or not onScreen or screenPos.Z <= 0 then espData.Highlight.Enabled = false espData.Box.Visible = false else local visible = isVisible(hrp) local baseColor = visible and Color3.fromRGB(240, 240, 240) or Color3.fromRGB(80, 80, 80) if mode == "Box" then espData.Highlight.Enabled = false local baseHeight = 1200 / math.max(screenPos.Z, 1) local boxH = math.clamp(baseHeight, 20, 600) local boxW = boxH * 0.55 espData.Box.Size = Vector2.new(boxW, boxH) espData.Box.Position = Vector2.new(screenPos.X - boxW/2, screenPos.Y - boxH/2) espData.Box.Color = baseColor espData.Box.Visible = true else espData.Box.Visible = false espData.Highlight.Enabled = true espData.Highlight.FillColor = baseColor if mode == "Cham" then espData.Highlight.FillTransparency = 0.5 espData.Highlight.OutlineTransparency = 0 elseif mode == "Outline" then espData.Highlight.FillTransparency = 1.0 espData.Highlight.OutlineTransparency = 0 end end end end else Cleanup(m) end end if throttleTick % 3 == 0 then for m, espData in pairs(ESPCache) do if m and m.Parent and (espData.Highlight.Enabled or espData.Box.Visible) then for _, descendant in ipairs(m:GetDescendants()) do if descendant:IsA("BasePart") and descendant.Name:lower() == "head" then if not OriginalHeadSizes[descendant] then OriginalHeadSizes[descendant] = descendant.Size end pcall(function() descendant.Size = OriginalHeadSizes[descendant] * currentMultiplier end) end end end end end end) local isMinimized = false minimizeBtn.MouseButton1Click:Connect(function() isMinimized = not isMinimized if isMinimized then containerFrame.Visible = false minimizeBtn.Text = "+" TweenService:Create(mainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), { Size = UDim2.new(0, 210, 0, 28), Position = UDim2.new(0, 15, 1, -43) }):Play() else containerFrame.Visible = true minimizeBtn.Text = "_" TweenService:Create(mainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), { Size = UDim2.new(0, 210, 0, 150), Position = UDim2.new(0, 15, 1, -165) }):Play() end end) teamCheckBtn.MouseButton1Click:Connect(function() teamCheckEnabled = not teamCheckEnabled teamIndicator.BackgroundColor3 = teamCheckEnabled and Color3.fromRGB(80, 220, 80) or Color3.fromRGB(220, 80, 80) SaveSettings() end) wallCheckBtn.MouseButton1Click:Connect(function() wallCheckEnabled = not wallCheckEnabled wallIndicator.BackgroundColor3 = wallCheckEnabled and Color3.fromRGB(80, 220, 80) or Color3.fromRGB(220, 80, 80) SaveSettings() end) modeBtn.MouseButton1Click:Connect(function() currentModeIndex = currentModeIndex % #espModes + 1 modeBtn.Text = " ESP MODE: [" .. string.upper(espModes[currentModeIndex]) .. "]" SaveSettings() end) local function updateScale(multiplier) currentMultiplier = math.floor(multiplier * 10 + 0.5) / 10 valueLabel.Text = string.format("%.1fX", currentMultiplier) end local dragging = false sliderButton.MouseButton1Down:Connect(function() dragging = true end) sliderTrack.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true local scale = math.clamp((input.Position.X - sliderTrack.AbsolutePosition.X) / sliderTrack.AbsoluteSize.X, 0, 1) sliderButton.Position = UDim2.new(scale, 0, 0.5, 0) sliderFill.Size = UDim2.new(scale, 0, 1, 0) updateScale(1 + (scale * 4)) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false SaveSettings() end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local scale = math.clamp((input.Position.X - sliderTrack.AbsolutePosition.X) / sliderTrack.AbsoluteSize.X, 0, 1) sliderButton.Position = UDim2.new(scale, 0, 0.5, 0) sliderFill.Size = UDim2.new(scale, 0, 1, 0) updateScale(1 + (scale * 4)) end end)