local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera local Window = Rayfield:CreateWindow({ Name = "Prison Life | Made by MR.Balls", LoadingTitle = "Prison Life", LoadingSubtitle = "Made by MR.Balls", ConfigurationSaving = { Enabled = true, FolderName = "MRBallsPrisonLife", FileName = "Config" }, KeySystem = false }) local CombatTab = Window:CreateTab("Combat", 4483362458) local VisualsTab = Window:CreateTab("Visuals", 4483362458) local MovementTab = Window:CreateTab("Movement", 4483362458) local MiscTab = Window:CreateTab("Misc", 4483362458) -- ========== FLAGS ========== local Flags = { Aimbot = false, AimbotTeamCheck = true, AimbotWallCheck = true, AimbotFOV = 140, AimbotSmooth = 0.16, AimbotPart = "Head", ShowFOV = true, ESP = false, ESPName = true, ESPDistance = true, ESPChams = true, ESPTeamCheck = true, WalkSpeed = 16, JumpPower = 50, InfJump = false, Fly = false, FlySpeed = 55, Noclip = false, HitboxExpander = false, HitboxSize = 5, Fullbright = false, } local Aiming = false local ButtonUnlocked = false -- true = can move the button local TapCount = 0 local LastTap = 0 -- ========== AIM BUTTON ========== local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "MRBallsAimGui" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = game.CoreGui local AimButton = Instance.new("TextButton") AimButton.Size = UDim2.new(0, 115, 0, 115) AimButton.Position = UDim2.new(1, -135, 0.62, 0) AimButton.BackgroundColor3 = Color3.fromRGB(25, 25, 25) AimButton.BackgroundTransparency = 0.2 AimButton.Text = "AIM" AimButton.TextColor3 = Color3.fromRGB(255, 255, 255) AimButton.TextSize = 24 AimButton.Font = Enum.Font.GothamBold AimButton.Parent = ScreenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 12) corner.Parent = AimButton local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(255, 50, 50) stroke.Thickness = 2 stroke.Parent = AimButton -- Dragging variables local dragging = false local dragStart, startPos local function onInputBegan(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then -- 4 tap unlock system local now = tick() if now - LastTap < 0.45 then TapCount = TapCount + 1 else TapCount = 1 end LastTap = now if TapCount >= 4 then ButtonUnlocked = not ButtonUnlocked TapCount = 0 if ButtonUnlocked then AimButton.Text = "MOVE" stroke.Color = Color3.fromRGB(0, 255, 100) Rayfield:Notify({Title = "Button", Content = "Unlocked - You can move it now", Duration = 3}) else AimButton.Text = "AIM" stroke.Color = Color3.fromRGB(255, 50, 50) Rayfield:Notify({Title = "Button", Content = "Locked in place", Duration = 3}) end return end -- Normal aim hold if not ButtonUnlocked then Aiming = true AimButton.BackgroundColor3 = Color3.fromRGB(180, 30, 30) AimButton.Text = "LOCK" else -- Start dragging dragging = true dragStart = input.Position startPos = AimButton.Position end end end local function onInputEnded(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then Aiming = false dragging = false if not ButtonUnlocked then AimButton.BackgroundColor3 = Color3.fromRGB(25, 25, 25) AimButton.Text = "AIM" end end end AimButton.InputBegan:Connect(onInputBegan) AimButton.InputEnded:Connect(onInputEnded) UIS.InputChanged:Connect(function(input) if dragging and ButtonUnlocked and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart AimButton.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) -- ========== COMBAT ========== CombatTab:CreateSection("Aimbot") CombatTab:CreateToggle({ Name = "Aimbot", CurrentValue = false, Flag = "Aimbot", Callback = function(v) Flags.Aimbot = v end }) CombatTab:CreateToggle({ Name = "Show FOV Circle", CurrentValue = true, Flag = "ShowFOV", Callback = function(v) Flags.ShowFOV = v end }) CombatTab:CreateToggle({ Name = "Team Check", CurrentValue = true, Flag = "AimTeam", Callback = function(v) Flags.AimbotTeamCheck = v end }) CombatTab:CreateToggle({ Name = "Wall Check", CurrentValue = true, Flag = "AimWall", Callback = function(v) Flags.AimbotWallCheck = v end }) CombatTab:CreateSlider({ Name = "Aimbot FOV", Range = {50, 350}, Increment = 5, CurrentValue = 140, Flag = "AimFOV", Callback = function(v) Flags.AimbotFOV = v end }) CombatTab:CreateSlider({ Name = "Smoothness (0 = Instant)", Range = {0, 1}, Increment = 0.01, CurrentValue = 0.16, Flag = "AimSmooth", Callback = function(v) Flags.AimbotSmooth = v end }) CombatTab:CreateDropdown({ Name = "Aim Part", Options = {"Head", "HumanoidRootPart", "Torso", "UpperTorso"}, CurrentOption = "Head", Flag = "AimPart", Callback = function(v) Flags.AimbotPart = v end }) CombatTab:CreateToggle({ Name = "Hitbox Expander", CurrentValue = false, Flag = "Hitbox", Callback = function(v) Flags.HitboxExpander = v end }) CombatTab:CreateSlider({ Name = "Hitbox Size", Range = {2, 15}, Increment = 0.5, CurrentValue = 5, Flag = "HitSize", Callback = function(v) Flags.HitboxSize = v end }) -- ========== VISUALS ========== VisualsTab:CreateToggle({Name = "ESP", CurrentValue = false, Flag = "ESP", Callback = function(v) Flags.ESP = v end}) VisualsTab:CreateToggle({Name = "Name ESP", CurrentValue = true, Flag = "ESPName", Callback = function(v) Flags.ESPName = v end}) VisualsTab:CreateToggle({Name = "Distance ESP", CurrentValue = true, Flag = "ESPDist", Callback = function(v) Flags.ESPDistance = v end}) VisualsTab:CreateToggle({Name = "Chams", CurrentValue = true, Flag = "ESPChams", Callback = function(v) Flags.ESPChams = v end}) VisualsTab:CreateToggle({Name = "Team Check", CurrentValue = true, Flag = "ESPTeam", Callback = function(v) Flags.ESPTeamCheck = v end}) VisualsTab:CreateToggle({Name = "Fullbright", CurrentValue = false, Flag = "Fullbright", Callback = function(v) Flags.Fullbright = v if v then Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.FogEnd = 100000 Lighting.GlobalShadows = false end end}) -- ========== MOVEMENT ========== MovementTab:CreateSlider({Name = "WalkSpeed", Range = {16, 120}, Increment = 1, CurrentValue = 16, Flag = "Speed", Callback = function(v) Flags.WalkSpeed = v local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = v end end}) MovementTab:CreateSlider({Name = "JumpPower", Range = {50, 150}, Increment = 1, CurrentValue = 50, Flag = "Jump", Callback = function(v) Flags.JumpPower = v local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum.JumpPower = v end end}) MovementTab:CreateToggle({Name = "Infinite Jump", CurrentValue = false, Flag = "InfJump", Callback = function(v) Flags.InfJump = v end}) MovementTab:CreateToggle({Name = "Fly", CurrentValue = false, Flag = "Fly", Callback = function(v) Flags.Fly = v end}) MovementTab:CreateSlider({Name = "Fly Speed", Range = {20, 120}, Increment = 5, CurrentValue = 55, Flag = "FlySpeed", Callback = function(v) Flags.FlySpeed = v end}) MovementTab:CreateToggle({Name = "Noclip", CurrentValue = false, Flag = "Noclip", Callback = function(v) Flags.Noclip = v end}) -- ========== MISC ========== MiscTab:CreateButton({Name = "Unlock FPS", Callback = function() setfpscap(999) end}) MiscTab:CreateButton({Name = "Rejoin", Callback = function() game:GetService("TeleportService"):Teleport(game.PlaceId, LocalPlayer) end}) -- ========== FOV CIRCLE ========== local FOVCircle = Drawing.new("Circle") FOVCircle.Thickness = 2 FOVCircle.NumSides = 64 FOVCircle.Filled = false FOVCircle.Color = Color3.fromRGB(255, 70, 70) FOVCircle.Visibility = false FOVCircle.ZIndex = 999 -- ========== AIMBOT ========== local function isVisible(part) if not Flags.AimbotWallCheck then return true end local origin = Camera.CFrame.Position local ray = Ray.new(origin, part.Position - origin) local hit = workspace:FindPartOnRayWithIgnoreList(ray, {LocalPlayer.Character, part.Parent}) return hit == nil or hit:IsDescendantOf(part.Parent) end local function getClosest() local closest = nil local shortest = Flags.AimbotFOV local center = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2) for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then if Flags.AimbotTeamCheck and player.Team and LocalPlayer.Team and player.Team == LocalPlayer.Team then continue end local char = player.Character local hum = char:FindFirstChildOfClass("Humanoid") local part = char:FindFirstChild(Flags.AimbotPart) or char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") if hum and hum.Health > 0 and part then local pos, onScreen = Camera:WorldToViewportPoint(part.Position) if onScreen then local dist = (Vector2.new(pos.X, pos.Y) - center).Magnitude if dist < shortest and isVisible(part) then shortest = dist closest = part end end end end end return closest end -- ========== MAIN LOOP ========== local ESPFolder = Instance.new("Folder", game.CoreGui) ESPFolder.Name = "MRBallsESP" RunService.RenderStepped:Connect(function() -- FOV Circle (always update) FOVCircle.Position = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2) FOVCircle.Radius = Flags.AimbotFOV FOVCircle.Visibility = Flags.ShowFOV and Flags.Aimbot -- Aimbot if Flags.Aimbot and Aiming and not ButtonUnlocked then local target = getClosest() if target then local newCF = CFrame.new(Camera.CFrame.Position, target.Position) if Flags.AimbotSmooth <= 0 then Camera.CFrame = newCF else Camera.CFrame = Camera.CFrame:Lerp(newCF, 1 - Flags.AimbotSmooth) end end end -- ESP ESPFolder:ClearAllChildren() if Flags.ESP then for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then if not (Flags.ESPTeamCheck and player.Team and LocalPlayer.Team and player.Team == LocalPlayer.Team) then local char = player.Character local root = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") local hum = char:FindFirstChildOfClass("Humanoid") local head = char:FindFirstChild("Head") if root and hum and hum.Health > 0 then if Flags.ESPChams then local hl = Instance.new("Highlight") hl.Adornee = char hl.FillColor = Color3.fromRGB(255, 40, 40) hl.OutlineColor = Color3.fromRGB(255, 255, 255) hl.FillTransparency = 0.55 hl.Parent = ESPFolder end if Flags.ESPName or Flags.ESPDistance then local bill = Instance.new("BillboardGui") bill.Adornee = head or root bill.Size = UDim2.new(0, 200, 0, 40) bill.StudsOffset = Vector3.new(0, 2.5, 0) bill.AlwaysOnTop = true bill.Parent = ESPFolder local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.TextColor3 = Color3.fromRGB(255, 255, 255) label.TextStrokeTransparency = 0 label.Font = Enum.Font.GothamBold label.TextSize = 13 label.Parent = bill local dist = (Camera.CFrame.Position - root.Position).Magnitude local text = Flags.ESPName and player.Name or "" if Flags.ESPDistance then text = text .. string.format(" [%.0fm]", dist) end label.Text = text end end end end end end -- Movement local char = LocalPlayer.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then if Flags.WalkSpeed ~= 16 then hum.WalkSpeed = Flags.WalkSpeed end if Flags.JumpPower ~= 50 then hum.JumpPower = Flags.JumpPower end end if Flags.Noclip and char then for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end if Flags.HitboxExpander then for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then local root = player.Character:FindFirstChild("HumanoidRootPart") or player.Character:FindFirstChild("Torso") if root then root.Size = Vector3.new(Flags.HitboxSize, Flags.HitboxSize, Flags.HitboxSize) root.Transparency = 0.6 root.CanCollide = false end end end end end) UIS.JumpRequest:Connect(function() if Flags.InfJump and LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end) Rayfield:Notify({ Title = "Prison Life", Content = "Tap AIM 4x to move button | FOV visible | Made by MR.Balls", Duration = 6 }) print("Prison Life | FOV + Movable Button | Made by MR.Balls")