-- [[ 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 UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local VirtualInputManager = game:GetService("VirtualInputManager") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer shared.AimbotSettings = { Enabled = true, HitChance = 100, Hitscan = "Head", UseFOV = false, FOVRadius = 300, AutoClick = true, WallCheck = true } shared.CurrentTarget = nil shared.CurrentTargetPart = nil local HitboxMapping = { Head = "Head", Torso = "HumanoidRootPart" } local function IsPlayerAlive(player) return player.Character and player.Character:FindFirstChild("Head") and player.Character:FindFirstChild("HumanoidRootPart") and player.Character:FindFirstChild("Humanoid") and player:GetAttribute("Health") and player:GetAttribute("Health") > 0 end local function IsVisible(targetPart, character) if not shared.AimbotSettings.WallCheck then return true end local origin = Camera.CFrame.Position local direction = targetPart.Position - origin local raycastParams = RaycastParams.new() raycastParams.FilterDescendantsInstances = {LocalPlayer.Character, character, Camera} raycastParams.FilterType = Enum.RaycastFilterType.Exclude raycastParams.IgnoreWater = true local result = workspace:Raycast(origin, direction, raycastParams) return result == nil end local function GetClosestTarget() local shortestDistance = math.huge local selectedPlayer = nil local mouseLocation = UserInputService:GetMouseLocation() for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer or not IsPlayerAlive(player) then continue end if player:GetAttribute("Team") == LocalPlayer:GetAttribute("Team") then continue end local targetPartName = HitboxMapping[shared.AimbotSettings.Hitscan] or "Head" local targetPartInstance = player.Character:FindFirstChild(targetPartName) if targetPartInstance then local screenPos, onScreen = Camera:WorldToViewportPoint(targetPartInstance.Position) if onScreen then if not IsVisible(targetPartInstance, player.Character) then continue end local distance = (Vector2.new(screenPos.X, screenPos.Y) - mouseLocation).Magnitude if shared.AimbotSettings.UseFOV and distance > shared.AimbotSettings.FOVRadius then continue end if distance < shortestDistance then shortestDistance = distance selectedPlayer = player end end end end return selectedPlayer end local function TriggerClick() if pcall(function() mouse1click() end) then return else local mouseLoc = UserInputService:GetMouseLocation() VirtualInputManager:SendMouseButtonEvent(mouseLoc.X, mouseLoc.Y, 0, true, game, 0) task.wait(0.01) VirtualInputManager:SendMouseButtonEvent(mouseLoc.X, mouseLoc.Y, 0, false, game, 0) end end RunService.PreRender:Connect(function() if IsPlayerAlive(LocalPlayer) and shared.AimbotSettings.Enabled then shared.CurrentTarget = GetClosestTarget() if shared.CurrentTarget and shared.CurrentTarget.Character then local partName = HitboxMapping[shared.AimbotSettings.Hitscan] or "Head" shared.CurrentTargetPart = shared.CurrentTarget.Character:FindFirstChild(partName) if shared.AimbotSettings.AutoClick and shared.CurrentTargetPart then TriggerClick() end else shared.CurrentTargetPart = nil end else shared.CurrentTarget = nil shared.CurrentTargetPart = nil end end) local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", newcclosure(function(self, ...) local method = getnamecallmethod() local args = {...} if method == "Raycast" and self == workspace then if shared.AimbotSettings.Enabled and shared.CurrentTargetPart ~= nil then if shared.AimbotSettings.HitChance >= math.random(1, 100) then local origin = args[1] local originalDirection = args[2] args[2] = (shared.CurrentTargetPart.Position - origin).Unit * originalDirection.Magnitude return oldNamecall(self, unpack(args)) end end end return oldNamecall(self, ...) end)) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local ESP = true local espList = {} local ENEMY_RED = Color3.fromRGB(255, 0, 50) local HEALTH_GOOD = Color3.fromRGB(0, 255, 100) local HEALTH_EMPTY = Color3.fromRGB(255, 50, 50) local BG_DARK = Color3.fromRGB(20, 20, 20) local function getColor(plr) local character = plr.Character return character and character:GetAttribute("TeamColor") end local function myColor() local character = LocalPlayer.Character return character and character:GetAttribute("TeamColor") end local function isEnemy(plr) if plr == LocalPlayer then return false end local myTeamColor = myColor() local targetTeamColor = getColor(plr) return myTeamColor and targetTeamColor and myTeamColor ~= targetTeamColor end local function addESP(plr) if espList[plr] then return end if not isEnemy(plr) or not plr.Character then return end local rootPart = plr.Character:FindFirstChild("HumanoidRootPart") if not rootPart then return end local hl = Instance.new("Highlight") hl.Name = "ESP_Highlight" hl.Parent = plr.Character hl.FillColor = ENEMY_RED hl.OutlineColor = ENEMY_RED hl.FillTransparency = 0.5 hl.OutlineTransparency = 0.1 hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop local bg = Instance.new("BillboardGui") bg.Name = "ESP_Container" bg.Parent = plr.Character bg.Size = UDim2.new(4.5, 0, 6, 0) bg.AlwaysOnTop = true bg.Adornee = rootPart local boxOutline = Instance.new("Frame") boxOutline.Parent = bg boxOutline.Size = UDim2.new(1, 0, 1, 0) boxOutline.BackgroundTransparency = 1 boxOutline.BorderColor3 = ENEMY_RED boxOutline.BorderSizePixel = 2 local barBackground = Instance.new("Frame") barBackground.Parent = bg barBackground.Size = UDim2.new(0, 4, 1, 0) barBackground.Position = UDim2.new(0, -10, 0, 0) barBackground.BackgroundColor3 = BG_DARK barBackground.BorderSizePixel = 0 local barFill = Instance.new("Frame") barFill.Parent = barBackground barFill.Size = UDim2.new(1, 0, 1, 0) barFill.BackgroundColor3 = HEALTH_GOOD barFill.BorderSizePixel = 0 local n = Instance.new("TextLabel") n.Parent = bg n.Size = UDim2.new(1, 0, 0, 14) n.Position = UDim2.new(0, 0, 0, -18) n.BackgroundTransparency = 1 n.TextColor3 = Color3.fromRGB(255, 255, 255) n.TextStrokeTransparency = 0 n.Text = plr.Name n.Font = Enum.Font.SourceSansBold n.TextSize = 13 local statsLabel = Instance.new("TextLabel") statsLabel.Parent = bg statsLabel.Size = UDim2.new(1, 0, 0, 14) statsLabel.Position = UDim2.new(0, 0, 1, 4) statsLabel.BackgroundTransparency = 1 statsLabel.TextColor3 = Color3.fromRGB(235, 235, 235) statsLabel.TextStrokeTransparency = 0 statsLabel.Text = "HP: ? | ?m" statsLabel.Font = Enum.Font.SourceSans statsLabel.TextSize = 11 espList[plr] = { Highlight = hl, Container = bg, BarFill = barFill, StatsLabel = statsLabel } end local function delESP(plr) if not espList[plr] then return end pcall(function() if espList[plr].Highlight then espList[plr].Highlight:Destroy() end if espList[plr].Container then espList[plr].Container:Destroy() end end) espList[plr] = nil end local function updESP() local localChar = LocalPlayer.Character local localRoot = localChar and localChar:FindFirstChild("HumanoidRootPart") for _, player in pairs(Players:GetPlayers()) do if isEnemy(player) then if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then if not espList[player] then addESP(player) end local assets = espList[player] if assets and localRoot then local humanoid = player.Character:FindFirstChildOfClass("Humanoid") local targetRoot = player.Character:FindFirstChild("HumanoidRootPart") local health = humanoid and humanoid.Health or 100 local maxHealth = humanoid and humanoid.MaxHealth or 100 local healthPercent = math.clamp(health / maxHealth, 0, 1) local distance = targetRoot and math.floor((localRoot.Position - targetRoot.Position).Magnitude) or 0 if distance < 2000 then assets.BarFill.Size = UDim2.new(1, 0, healthPercent, 0) assets.BarFill.Position = UDim2.new(0, 0, 1 - healthPercent, 0) assets.BarFill.BackgroundColor3 = HEALTH_EMPTY:Lerp(HEALTH_GOOD, healthPercent) assets.StatsLabel.Text = "HP: " .. math.floor(health) .. " | " .. distance .. "m" end end else delESP(player) end else delESP(player) end end end Players.PlayerRemoving:Connect(delESP) Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function() task.wait(0.3) if ESP and isEnemy(player) then addESP(player) end end) end) for _, player in pairs(Players:GetPlayers()) do if isEnemy(player) and player.Character then addESP(player) end end RunService.RenderStepped:Connect(function() if ESP then updESP() end end)