-- [[ 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 ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/client.lua?s=6a89e16f48050435fc2a52b7"))() end) end) --[[rscripts:analytics:end]] local t1 = {} local t2 = { value1 = cloneref(game) } t2.value1:IsLoaded() repeat task.wait() t1.value1 = t2.value1:IsLoaded() until t1.value1 t1.value1 = cloneref(t2.value1:GetService("Players")) t2.value2 = cloneref(t2.value1:GetService("HttpService")) t2.value3 = cloneref(t2.value1:GetService("UserInputService")) t2.value4 = cloneref(t2.value1:GetService("TweenService")) t2.value5 = cloneref(t2.value1:GetService("CoreGui")) t2.value6 = t1.value1.LocalPlayer or t1.value1.PlayerAdded:Wait() function t2.value7(p1) local v15 = math.max(1, tonumber(p1) or 16) local t3 = table.create(v15) local v17 = math.random(1, 52) t3[1] = string.sub("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", v17, v17) for i = 2, v15 do local v19 = math.random(1, 62) t3[i] = string.sub("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", v19, v19) end return table.concat(t3) end t2.value8 = "https://sportsclub.fun" t2.value9 = "https://sportsclub.fun" t2.value10 = "https://sportsclub.fun" t2.value11 = "https://getpolsec.com" t2.value12 = "https://sportsclub.fun" t2.value13 = "https://discord.gg" t2.value14 = "sportsclub" t2.value15 = t2.value14 .. "/license_key.json" t2.value16 = 7264587281 local t4 = { [7094518649] = true, [6035872082] = true, [7529591378] = true, [66654135] = true } t2.value17 = { [4293374620] = "https://getv3.lol", [4777817887] = "https://getv3.lol", [4931927012] = "https://getv3.lol", [7883776681] = "https://getv3.lol", [7849427635] = "https://getv3.lol", [7884563721] = "https://getv3.lol", [6216285188] = "https://getv3.lol", [6260656796] = "https://getv3.lol", [73885730] = "https://getv3.lol", [7094518649] = "https://getv3.lol", [184199275] = "https://getv3.lol", [6035872082] = "https://getv3.lol", [7529591378] = "https://getv3.lol", [6931042565] = "https://getv3.lol", [9908641400] = "https://getv3.lol", [9112256336] = "https://getv3.lol", [7264587281] = "https://getv3.lol", [4949420752] = "https://getv3.lol", [9641502068] = "https://getv3.lol", [10563114921] = "https://getv3.lol", [10144280947] = "https://getv3.lol", [2459091562] = "https://getv3.lol", [6061766680] = "https://getv3.lol", [5995470825] = "https://getv3.lol", [113491250] = "https://getv3.lol", [8795154789] = "https://getv3.lol", [383310974] = "https://getv3.lol", [66654135] = "https://getv3.lol" } local color3 = Color3.fromRGB(0, 85, 255) local color3_2 = Color3.fromRGB(20, 20, 20) local color3_3 = Color3.fromRGB(28, 28, 28) local color3_4 = Color3.fromRGB(255, 255, 255) local color3_5 = Color3.fromRGB(160, 160, 160) local color3_6 = Color3.fromRGB(50, 50, 50) local color3_7 = Color3.fromRGB(220, 70, 70) local color3_8 = Color3.fromRGB(70, 190, 120) t2.value18 = { accent = color3, window = color3_2, section = color3_3, text = color3_4, muted = color3_5, outline = color3_6, danger = color3_7, success = color3_8 } function t2.value19() if typeof(gethui) == "function" then local ok, result = pcall(gethui) if ok then ok = typeof(result) == "Instance" end if ok then return result end end return t2.value5 end function t2.value20() if typeof(request) == "function" then return request end if typeof(http_request) == "function" then return http_request end local v24 = typeof(http) == "table" if v24 then v24 = typeof(http.request) == "function" end if v24 then return http.request end return nil end t2.value21 = nil t2.value22 = nil function t2.value21(p2) if typeof(p2) ~= "string" then return p2 end return p2:gsub("https://sportsclub%.fun/", "https://sportsclub.fun"):gsub("http://sportsclub%.fun/", "https://sportsclub.fun") end function t2.value23(p3) pcall(function() if typeof(setclipboard) == "function" then setclipboard(p3) return end if typeof(toclipboard) == "function" then toclipboard(p3) end end) end local function v12() if typeof(gethwid) == "function" then local ok, result = pcall(gethwid) if ok then ok = typeof(result) == "string" and result ~= "" end if ok then return result end end if typeof(githwid) == "function" then local ok, result = pcall(githwid) if ok then ok = typeof(result) == "string" and result ~= "" end if ok then return result end end return nil end function t2.value24(p4, p5) local v37 = t2.value20() if typeof(v37) ~= "function" then return false, "HTTP request unsupported on this executor" end local _pcall = pcall local v39 = t2.value21(p4) local t5 = { ["Content-Type"] = "application/json" } local json = t2.value2:JSONEncode(p5) local v42, v43 = _pcall(v37, { Url = v39, Method = "POST", Headers = t5, Body = json }) local v44 = not v42 if not v44 then v44 = typeof(v43) ~= "table" if not v44 then v44 = typeof(v43.Body) ~= "string" end end if v44 then return false, "Could not reach license server" end local ok, result = pcall(t2.value2.JSONDecode, t2.value2, v43.Body) local v47 = not ok if not v47 then v47 = typeof(result) ~= "table" end if v47 then return false, "Bad license response" end return true, result end function t2.value25() if typeof(makefolder) ~= "function" then return end if typeof(isfolder) == "function" then if not isfolder(t2.value14) then pcall(makefolder, t2.value14) return end else pcall(makefolder, t2.value14) end end function t2.value26() local v25 = typeof(isfile) ~= "function" if not v25 then v25 = typeof(readfile) ~= "function" end if v25 then return nil end if not isfile(t2.value15) then return nil end local ok, result = pcall(readfile, t2.value15) local v28 = not ok if not v28 then v28 = typeof(result) ~= "string" or result == "" end if v28 then return nil end local ok2, result2 = pcall(t2.value2.JSONDecode, t2.value2, result) local v31 = not ok2 if not v31 then v31 = typeof(result2) ~= "table" end if v31 then return nil end local v32 = typeof(result2.key) ~= "string" if not v32 then v32 = result2.key == "" end if v32 then return nil end local num = tonumber(result2.expires_at) if num then local v34 = num > 0 if v34 then v34 = num < os.time() end num = v34 end if num then if typeof(delfile) == "function" then pcall(delfile, t2.value15) end return nil end return result2 end function t2.value27(p6, p7) t2.value25() if typeof(writefile) ~= "function" then return end local _pcall = pcall local _writefile = writefile local value15 = t2.value15 local value2 = t2.value2 local v74 = p7 and p7.note or nil local v75 = p7 and p7.discord_id or nil local v76 = p7 and p7.expires_at or nil local timestamp = os.time() _pcall(_writefile, value15, value2:JSONEncode({ key = p6, note = v74, discord_id = v75, expires_at = v76, saved_at = timestamp })) end function t2.value28(p8) if typeof(p8) ~= "string" then return "N/A" end local v58 = p8:gsub("^%s+", ""):gsub("%s+$", "") if v58 == "" then return "N/A" end local v59, v60 = t2.value24(t2.value10, { script_key = v58 }) local v61 = not v59 if not v61 then v61 = typeof(v60) ~= "table" end if v61 then return "N/A" end local time_left_label = v60.time_left_label if typeof(time_left_label) == "string" and time_left_label ~= "" then return time_left_label end return "N/A" end function t2.value29(p9) if typeof(p9) ~= "string" or p9 == "" then return false, "Enter a key" end local v82 = p9:gsub("^%s+", ""):gsub("%s+$", "") local value6 = t2.value6 if value6 then value6 = t2.value6.UserId end local v84 = value6 or nil local v85 = v12() local t6 = { script_key = v82, roblox_user_id = v84, hwid = v85 } local v87, v88 = t2.value24(t2.value9, t6) if not v87 then return false, v88 end if v88.valid ~= true or v88.redeemed ~= true then return false, tostring(v88.reason or "Failed to redeem key") end local t7, v90 = t2.value24(t2.value8, t6) if not t7 then return false, v90 end if v90.valid ~= true then return false, tostring(v90.reason or "Invalid license key") end return true, v90, v82 end function t2.value30(p10, p11) script_key = p10 local v80 = getgenv() v80.script_key = p10 v80.PolSec_Note = p11 and p11.note or nil v80.PolSec_Expiry = p11 and p11.expires_at or nil -- Fix for function t2.value30 v80.PolSec_UserId = p11 and p11.discord_id or nil t2.value27(p10, p11) end -- Fix for function t2.value31 function t2.value31() local v48 = t2.value17[t2.value1.GameId] if not v48 then return false, "This game is not supported." end for _ = 1, 3 do local ok, result = pcall(t2.value1.HttpGet, t2.value1, v48) if ok then ok = typeof(result) == "string" and #result > 0 end if ok then local v52 = loadstring(result) if typeof(v52) == "function" and pcall(v52) then return true end end task.wait(1) end end local target = nil local IsPlayerFriendly = filtergc("function", {Name = "IsPlayerFriendly"}, true) local function isVisible(target) local origin = game.workspace.CurrentCamera.CFrame local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = {game.Players.LocalPlayer.Character} params.IgnoreWater = true local direction = (target.Position - origin.Position) local result = workspace:Raycast(origin.Position, direction, params) if result then return game.Players:GetPlayerFromCharacter(result.Instance:FindFirstAncestorOfClass("Model")) ~= nil else return true end end local function GetClosestPlayer() local closestDistance = math.huge local closest = nil local camera = workspace.CurrentCamera for _, v in pairs(game.Players:GetPlayers()) do if v == game.Players.LocalPlayer then continue end if IsPlayerFriendly(v) then continue end local char = v.Character if not char then continue end local hrp = char:FindFirstChild("HumanoidRootPart") if not hrp then continue end local hum = char:FindFirstChild("Humanoid") if not hum or hum.Health <= 0 then continue end local head = char:FindFirstChild("Head") if not head then continue end local screenPos, onScreen = camera:WorldToViewportPoint(hrp.Position) if onScreen then local distance = (Vector2.new(screenPos.X, screenPos.Y) - camera.ViewportSize / 2).Magnitude if distance < closestDistance then if not isVisible(head) then continue end closestDistance = distance closest = head end end end return closest end game:GetService("RunService").RenderStepped:Connect(function() target = GetClosestPlayer() end) local ReplicatedStorage = game:GetService("ReplicatedStorage") local MultiRaycast = require(ReplicatedStorage.Modules.Misc.MultiRaycast) local old old = hookfunction(MultiRaycast, function(p1,p2,p3,p4,p5,p6) if target then p2 = target.Position - p1 end return old(p1,p2,p3,p4,p5,p6) end) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local MAX_DISTANCE = 300 local TRACER_COLOR = Color3.fromRGB(255, 255, 255) local BOX_COLOR = Color3.fromRGB(255, 255, 255) local SKELETON_COLOR = Color3.fromRGB(255, 255, 255) 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 TEXT_COLOR = Color3.fromRGB(255, 255, 255) local 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") local distanceText = Drawing.new("Text") local headCircle = Drawing.new("Circle") tracer.Color = TRACER_COLOR; tracer.Thickness = 1 box.Color = BOX_COLOR; box.Thickness = 1; box.Filled = false healthBarBg.Thickness = 2; healthBarBg.Color = HEALTH_BG_COLOR healthBar.Thickness = 2 distanceText.Color = TEXT_COLOR; distanceText.Size = 14; distanceText.Center = true; distanceText.Outline = true headCircle.Color = SKELETON_COLOR; headCircle.Thickness = 1; headCircle.Filled = false; headCircle.NumSides = 12 local skeletonLines = {} for i = 1, #BONE_PAIRS do local line = Drawing.new("Line") line.Color = SKELETON_COLOR; 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 distanceText.Visible = visible; headCircle.Visible = visible for _, line in ipairs(skeletonLines) do line.Visible = visible end end local connection connection = RunService.RenderStepped:Connect(function() local character = player.Character local myCharacter = LocalPlayer.Character if not character or not character:IsDescendantOf(workspace) or not myCharacter then setAllVisibility(false) if not player:IsDescendantOf(Players) then tracer:Remove(); box:Remove(); healthBarBg:Remove(); healthBar:Remove() distanceText:Remove(); headCircle:Remove() for _, line in ipairs(skeletonLines) do line:Remove() end connection:Disconnect() end return end local rootPart = character:FindFirstChild("HumanoidRootPart") local myRootPart = myCharacter:FindFirstChild("HumanoidRootPart") local humanoid = character:FindFirstChildOfClass("Humanoid") if rootPart and myRootPart and humanoid and humanoid.Health > 0 then local distance = (myRootPart.Position - rootPart.Position).Magnitude if distance > MAX_DISTANCE then setAllVisibility(false) return end local isValid, topLeft, bottomRight = getCharacterBounds(character) if isValid then 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 distanceText.Text = string.format("[%d Studs]", math.floor(distance)) distanceText.Position = Vector2.new(topLeft.X + (boxWidth / 2), bottomRight.Y + 6) distanceText.Visible = true local isR15 = (humanoid.RigType == Enum.HumanoidRigType.R15) local activeBones = isR15 and 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 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 local headPart = character:FindFirstChild("Head") if headPart then local headPos, headOnScreen = Camera:WorldToViewportPoint(headPart.Position) if headOnScreen then headCircle.Position = Vector2.new(headPos.X, headPos.Y) headCircle.Radius = math.clamp(boxWidth / 7, 2, 15) headCircle.Visible = true else headCircle.Visible = false end else headCircle.Visible = false 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)