-- [[ 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 RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local RAINBOW_SPEED = 0.5 local HEALTH_BG_COLOR = Color3.fromRGB(50, 0, 0) local HEALTH_GOOD_COLOR = Color3.fromRGB(0, 255, 0) local HEALTH_LOW_COLOR = Color3.fromRGB(255, 0, 0) local R15_BONE_PAIRS = { {"Head", "UpperTorso"}, {"UpperTorso", "LowerTorso"}, {"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"}, {"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"}, {"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"}, {"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"} } local R6_BONE_PAIRS = { {"Head", "Torso"}, {"Torso", "Left Arm"}, {"Torso", "Right Arm"}, {"Torso", "Left Leg"}, {"Torso", "Right Leg"} } local function getCharacterBounds(character) local minX, minY = math.huge, math.huge local maxX, maxY = -math.huge, -math.huge local onScreenAny = false for _, part in ipairs(character:GetChildren()) do if part:IsA("BasePart") then local cframe, size = part.CFrame, part.Size local halfSize = size / 2 local vertices = { cframe * Vector3.new(-halfSize.X, -halfSize.Y, -halfSize.Z), cframe * Vector3.new(halfSize.X, -halfSize.Y, -halfSize.Z), cframe * Vector3.new(-halfSize.X, halfSize.Y, -halfSize.Z), cframe * Vector3.new(halfSize.X, halfSize.Y, -halfSize.Z), cframe * Vector3.new(-halfSize.X, -halfSize.Y, halfSize.Z), cframe * Vector3.new(halfSize.X, -halfSize.Y, halfSize.Z), cframe * Vector3.new(-halfSize.X, halfSize.Y, halfSize.Z), cframe * Vector3.new(halfSize.X, halfSize.Y, halfSize.Z) } for _, vertex in ipairs(vertices) do local screenPos, onScreen = Camera:WorldToViewportPoint(vertex) if onScreen then onScreenAny = true if screenPos.X < minX then minX = screenPos.X end if screenPos.X > maxX then maxX = screenPos.X end if screenPos.Y < minY then minY = screenPos.Y end if screenPos.Y > maxY then maxY = screenPos.Y end end end end end return onScreenAny, Vector2.new(minX, minY), Vector2.new(maxX, maxY) end local function createESP(player) if player == LocalPlayer then return end local tracer = Drawing.new("Line") local box = Drawing.new("Square") local healthBarBg = Drawing.new("Line") local healthBar = Drawing.new("Line") tracer.Thickness = 1 box.Thickness = 1 box.Filled = false healthBarBg.Thickness = 2 healthBarBg.Color = HEALTH_BG_COLOR healthBar.Thickness = 2 local skeletonLines = {} for i = 1, #R15_BONE_PAIRS do local line = Drawing.new("Line") line.Thickness = 1 line.Visible = false table.insert(skeletonLines, line) end local function setAllVisibility(visible) tracer.Visible = visible box.Visible = visible healthBarBg.Visible = visible healthBar.Visible = visible for _, line in ipairs(skeletonLines) do line.Visible = visible end end local connection connection = RunService.RenderStepped:Connect(function() local character = player.Character if not character or not character:IsDescendantOf(workspace) or not LocalPlayer.Character then setAllVisibility(false) if not player:IsDescendantOf(Players) then tracer:Remove() box:Remove() healthBarBg:Remove() healthBar:Remove() for _, line in ipairs(skeletonLines) do line:Remove() end connection:Disconnect() end return end local rootPart = character:FindFirstChild("HumanoidRootPart") local humanoid = character:FindFirstChildOfClass("Humanoid") if rootPart and humanoid and humanoid.Health > 0 then local isValid, topLeft, bottomRight = getCharacterBounds(character) if isValid then local hue = (tick() * RAINBOW_SPEED) % 1 local rainbowColor = Color3.fromHSV(hue, 1, 1) box.Color = rainbowColor tracer.Color = rainbowColor local boxWidth = bottomRight.X - topLeft.X local boxHeight = bottomRight.Y - topLeft.Y box.Size = Vector2.new(boxWidth + 4, boxHeight + 4) box.Position = Vector2.new(topLeft.X - 2, topLeft.Y - 2) box.Visible = true tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y) tracer.To = Vector2.new(topLeft.X + (boxWidth / 2), bottomRight.Y + 2) tracer.Visible = true local healthPercentage = humanoid.Health / humanoid.MaxHealth local healthBarX = topLeft.X - 6 healthBarBg.From = Vector2.new(healthBarX, bottomRight.Y + 2) healthBarBg.To = Vector2.new(healthBarX, topLeft.Y - 2) healthBarBg.Visible = true local healthHeight = (boxHeight + 4) * healthPercentage healthBar.From = Vector2.new(healthBarX, bottomRight.Y + 2) healthBar.To = Vector2.new(healthBarX, (bottomRight.Y + 2) - healthHeight) healthBar.Color = HEALTH_LOW_COLOR:Lerp(HEALTH_GOOD_COLOR, healthPercentage) healthBar.Visible = true local isR15 = (humanoid.RigType == Enum.HumanoidRigType.R15) local activeBones = isR15 and R15_BONE_PAIRS or R6_BONE_PAIRS for i, bonePair in ipairs(activeBones) do local p1 = character:FindFirstChild(bonePair[1]) local p2 = character:FindFirstChild(bonePair[2]) local line = skeletonLines[i] if p1 and p2 and line then line.Color = rainbowColor local pos1, os1 = Camera:WorldToViewportPoint(p1.Position) local pos2, os2 = Camera:WorldToViewportPoint(p2.Position) if os1 and os2 then line.From = Vector2.new(pos1.X, pos1.Y) line.To = Vector2.new(pos2.X, pos2.Y) line.Visible = true else line.Visible = false end elseif line then line.Visible = false end end if not isR15 then for i = #R6_BONE_PAIRS + 1, #skeletonLines do skeletonLines[i].Visible = false end end else setAllVisibility(false) end else setAllVisibility(false) end end) end for _, player in ipairs(Players:GetPlayers()) do createESP(player) end Players.PlayerAdded:Connect(createESP) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local VirtualInputManager = game:GetService("VirtualInputManager") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function() Camera = workspace.CurrentCamera end) local Settings = { Enabled = true, FOVRadius = 450, WallCheck = true, AutoShoot = true, FireRate = 0.05, } local FOVCircle = Drawing.new("Circle") FOVCircle.Visible = true FOVCircle.Thickness = 1 FOVCircle.Radius = Settings.FOVRadius FOVCircle.Transparency = 0.7 FOVCircle.Color = Color3.fromRGB(255, 255, 255) FOVCircle.Filled = false FOVCircle.NumSides = 64 local EntityService = require(ReplicatedStorage.Remote.EntityService) local ClientShootableComponent = require(ReplicatedStorage.Client.CombatController.ClientComponent.ClientShootableComponent) local function IsInMatch() local char = LocalPlayer.Character if not char then return false end local hum = char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then return false end local LocalEntity = EntityService.GetLocalEntity() if not LocalEntity or not LocalEntity:IsAlive() then return false end if UserInputService.MouseBehavior ~= Enum.MouseBehavior.LockCenter then return false end return true end local function IsVisible(TargetPart) if not Camera or not TargetPart then return false end local LocalChar = LocalPlayer.Character if not LocalChar then return false end local RaycastParamsInstance = RaycastParams.new() RaycastParamsInstance.FilterType = Enum.RaycastFilterType.Exclude RaycastParamsInstance.FilterDescendantsInstances = {LocalChar, TargetPart.Parent} RaycastParamsInstance.IgnoreWater = true local Origin = Camera.CFrame.Position local Direction = TargetPart.Position - Origin local Result = workspace:Raycast(Origin, Direction, RaycastParamsInstance) return Result == nil end local function GetEntityPosition(EntityModel) local TargetPart = EntityModel:FindFirstChild("Head") or EntityModel:FindFirstChild("HumanoidRootPart") if TargetPart and TargetPart:IsA("BasePart") then return TargetPart, TargetPart.Position end return nil, nil end local function IsInFOV(WorldPosition) if not Camera then return false, math.huge end local ScreenPos, OnScreen = Camera:WorldToViewportPoint(WorldPosition) if not OnScreen then return false, math.huge end local MousePos = UserInputService:GetMouseLocation() local Distance = (Vector2.new(ScreenPos.X, ScreenPos.Y) - MousePos).Magnitude return Distance <= Settings.FOVRadius, Distance end local function GetClosestEnemyInFOV() local LocalEntity = EntityService.GetLocalEntity() if not LocalEntity or not LocalEntity.World or not LocalEntity.World.EntitiesByTeam then return nil end local ClosestTarget = nil local ClosestDistance = math.huge for _, TeamDict in pairs(LocalEntity.World.EntitiesByTeam) do local Items = TeamDict._items or TeamDict for _, Entity in pairs(Items) do if not EntityService.IsLocalEntity(Entity) and Entity:IsAlive() then local Inst = Entity.Instance local Character = (Inst and Inst:IsA("Player")) and Inst.Character or Inst if Character then local Humanoid = Character:FindFirstChildOfClass("Humanoid") if Humanoid and Humanoid.Health > 0 then local Part, Position = GetEntityPosition(Character) if Position then local InFOV, Distance = IsInFOV(Position) if InFOV and Distance < ClosestDistance then if not Settings.WallCheck or IsVisible(Part) then ClosestTarget = { Part = Part, Position = Position } ClosestDistance = Distance end end end end end end end end return ClosestTarget end local SilentTarget = nil RunService.RenderStepped:Connect(function() FOVCircle.Position = UserInputService:GetMouseLocation() FOVCircle.Radius = Settings.FOVRadius FOVCircle.Visible = Settings.Enabled end) task.spawn(function() while true do task.wait(Settings.FireRate) if Settings.Enabled and Settings.AutoShoot and IsInMatch() then local Target = GetClosestEnemyInFOV() if Target then local MousePos = UserInputService:GetMouseLocation() VirtualInputManager:SendMouseButtonEvent(MousePos.X, MousePos.Y, 0, true, game, 0) task.wait(0.01) VirtualInputManager:SendMouseButtonEvent(MousePos.X, MousePos.Y, 0, false, game, 0) end end end end) local OrigLocalShoot = ClientShootableComponent.LocalShoot local OrigOriginFn, OrigTargetFn for i = 1, 20 do local success, val = pcall(debug.getupvalue, OrigLocalShoot, i) if success and type(val) == "function" then local testSuccess, ret1, ret2, ret3 = pcall(val) if testSuccess then if typeof(ret1) == "CFrame" and typeof(ret3) == "table" then OrigOriginFn = val elseif typeof(ret1) == "Vector3" and typeof(ret2) == "Instance" then OrigTargetFn = val end end end end if OrigOriginFn then local OldOriginFn OldOriginFn = hookfunction(OrigOriginFn, function(...) local cf, pos, meta = OldOriginFn(...) if SilentTarget and Settings.Enabled then return CFrame.lookAt(cf.Position, SilentTarget.Position), pos, meta end return cf, pos, meta end) end if OrigTargetFn then local OldTargetFn OldTargetFn = hookfunction(OrigTargetFn, function(...) if SilentTarget and Settings.Enabled then return SilentTarget.Position, SilentTarget.Part end return OldTargetFn(...) end) end local OldLocalShoot OldLocalShoot = hookfunction(ClientShootableComponent.LocalShoot, function(Self, ...) if Settings.Enabled then SilentTarget = GetClosestEnemyInFOV() end local Result = OldLocalShoot(Self, ...) SilentTarget = nil return Result end)