local API = loadstring(game:HttpGet("https://raw.githubusercontent.com/overthcode2011-stack/HHB/refs/heads/main/API"))()
API.Config.SupportedGames = { 17625359962, 117398147513099 } ---queue added xddddd finally dude
API.Config.KeySystem.Enabled = false
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VirtualUser = game:GetService("VirtualUser")
local Stats = game:GetService("Stats")
local LocalPlayer = Players.LocalPlayer
local mousemoverel = mousemoverel or MouseMoveRel or (syn and syn.mousemoverel) or (fluxus and fluxus.mousemoverel)
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
local AimbotSettings = {
Enabled = false, SilentAim = false, FOV = 150, Smoothing = 0.35,
WallCheck = false, MaxDistance = 300, Target = "Head", ShowFOV = false,
TeamCheck = false, TriggerBot = false, TriggerRange = 150,
}
local VisualSettings = { RivalsESP = false, NameTags = false, Tracers = false, Skeleton = true, HealthBar = true, Distance = true, MaxRenderDistance = 500 }
local MiscSettings = { InfJump = false, AntiAFK = false, FullOptimized = false, ShowStats = true, SpeedEnabled = false, SpeedValue = 100 }
local MovementSettings = { Noclip = false, God = false, Fly = false, FlySpeed = 60 }
local ESP_RATE = 1 / 20
local AIM_RATE = 1 / 60
local ACTIVE_FIGHTER_TIMEOUT = 300
local RESPAWN_CLEAR_WINDOW = 3
local PROXIMITY_BUFFER = 200
local fovCircle = nil
local noclipConn, godConn, antiAFKConn, flyConn = nil, nil, nil, nil
local flyState = { enabled = false, speed = 60 }
local activeFighters = {}
local lastMatchSignal = os.clock()
local endMatch = nil
local leaveDuelRemote, respawnNowRemote = nil, nil
local function isTooFarFromPlayer(hrp)
if not hrp then return false end
local myChar = LocalPlayer.Character
local myHRP = myChar and myChar:FindFirstChild("HumanoidRootPart")
if not myHRP then return false end
return (hrp.Position - myHRP.Position).Magnitude > (VisualSettings.MaxRenderDistance + PROXIMITY_BUFFER)
end
local function markActive(name)
if typeof(name) ~= "string" or #name == 0 then return end
local p = Players:FindFirstChild(name)
if not p or p == LocalPlayer then return end
local char = p.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if hrp and isTooFarFromPlayer(hrp) then return end
activeFighters[name] = os.clock()
end
local function walkForPlayers(value, depth)
depth = depth or 0
if depth > 5 then return end
local t = typeof(value)
if t == "Instance" then
if value:IsA("Player") then markActive(value.Name) end
elseif t == "string" then
local p = Players:FindFirstChild(value)
if p then markActive(p.Name) end
elseif t == "table" then
for k, v in pairs(value) do
walkForPlayers(k, depth + 1)
walkForPlayers(v, depth + 1)
end
end
end
pcall(function()
local rep = ReplicatedStorage:FindFirstChild("Remotes")
rep = rep and rep:FindFirstChild("Replication")
if not rep then return end
local duel = rep:FindFirstChild("Duel")
if duel then
local ev = duel:FindFirstChild("Replicate")
if ev then
ev.OnClientEvent:Connect(function(...)
lastMatchSignal = os.clock()
for _, a in ipairs({...}) do walkForPlayers(a) end
end)
end
end
local fighter = rep:FindFirstChild("Fighter")
if fighter then
local ev = fighter:FindFirstChild("UpdateCameraRotations")
if ev then
ev.OnClientEvent:Connect(function(...)
lastMatchSignal = os.clock()
for _, a in ipairs({...}) do walkForPlayers(a) end
end)
end
end
end)
local function isActiveFighter(p)
if not p then return false end
local t = activeFighters[p.Name]
if not t then return false end
if os.clock() - t > ACTIVE_FIGHTER_TIMEOUT then activeFighters[p.Name] = nil; return false end
return true
end
local function isInMatch()
for _, t in pairs(activeFighters) do
if os.clock() - t < ACTIVE_FIGHTER_TIMEOUT then return true end
end
return false
end
local function isCombatant(plr)
if not plr or plr == LocalPlayer then return false end
if not isActiveFighter(plr) then return false end
local char = plr.Character
if not char or char.Parent ~= workspace then return false end
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return false end
if isTooFarFromPlayer(hrp) then return false end
activeFighters[plr.Name] = os.clock()
return true
end
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Exclude
rayParams.FilterDescendantsInstances = {}
local function getHRP()
local c = LocalPlayer.Character
return c and c:FindFirstChild("HumanoidRootPart")
end
local function getHumanoid()
local c = LocalPlayer.Character
return c and c:FindFirstChildOfClass("Humanoid")
end
local function rebuildRayFilter()
local l = {}
if LocalPlayer.Character then l[#l + 1] = LocalPlayer.Character end
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then l[#l + 1] = p.Character end
end
rayParams.FilterDescendantsInstances = l
end
local function hasLineOfSight(part)
local cam = workspace.CurrentCamera
if not part or not cam then return false end
local cp = cam.CFrame.Position
local off = part.Position - cp
local d = off.Magnitude
if d <= 0 then return false end
local hit = workspace:Raycast(cp, off.Unit * d, rayParams)
if not hit then return true end
return hit.Instance and (hit.Instance:IsDescendantOf(part.Parent) or hit.Instance == part)
end
local function getTargetPart(character)
if not character then return nil end
if AimbotSettings.Target == "Head" then return character:FindFirstChild("Head")
elseif AimbotSettings.Target == "Torso" then
return character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("UpperTorso") or character:FindFirstChild("Torso")
elseif AimbotSettings.Target == "Random" then
if math.random(1, 2) == 1 then return character:FindFirstChild("Head") or character:FindFirstChild("HumanoidRootPart")
else return character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Head") end
end
return character:FindFirstChild("Head")
end
local teamCache, teamCacheTime = {}, {}
local function normalizeTeam(v)
if v == nil then return nil end
local t = typeof(v)
if t == "Instance" then return v end
if t == "Color3" then return string.format("c:%.2f:%.2f:%.2f", v.R, v.G, v.B) end
if t == "BrickColor" then return "b:" .. v.Name end
if t == "string" then return v == "" and nil or "s:" .. v end
if t == "number" then return "n:" .. tostring(v) end
return nil
end
local function isTeamName(n)
if typeof(n) ~= "string" then return false end
local l = string.gsub(string.lower(n), "[%s_%-]", "")
return l == "team" or l == "teamid" or l == "teamindex" or l == "teamcolor"
end
local function getTeamAttr(c)
if not c then return nil end
for n, v in pairs(c:GetAttributes()) do
if isTeamName(n) then local r = normalizeTeam(v); if r then return r end end
end
end
local function getTeamVal(c)
if not c then return nil end
for _, o in ipairs(c:GetChildren()) do
if isTeamName(o.Name) then local r = normalizeTeam(o.Value); if r then return r end end
end
end
local function getTeamSig(p)
if not p then return nil end
local now = os.clock()
if teamCache[p] ~= nil and teamCacheTime[p] and now - teamCacheTime[p] < 0.5 then return teamCache[p] end
local s = p.Team or getTeamAttr(p) or getTeamVal(p)
or (p.Character and getTeamAttr(p.Character)) or (p.Character and getTeamVal(p.Character))
if not s and p.TeamColor then
local n = p.TeamColor.Name
if n and n ~= "Medium stone grey" then s = "b:" .. n end
end
teamCache[p] = s
teamCacheTime[p] = now
return s
end
local function isTeammate(p)
if not p or p == LocalPlayer then return true end
if p.Team and LocalPlayer.Team then return p.Team == LocalPlayer.Team end
local ls, ts = getTeamSig(LocalPlayer), getTeamSig(p)
if ls ~= nil and ts ~= nil then
if typeof(ls) == "Instance" and typeof(ts) == "Instance" then return ls == ts end
return tostring(ls) == tostring(ts)
end
return false
end
local function isEnemy(p)
if not p or p == LocalPlayer then return false end
if AimbotSettings.TeamCheck and isTeammate(p) then return false end
return true
end
local enemyCache, enemyCacheTime = {}, 0
local function getAliveEnemies()
local now = os.clock()
if now - enemyCacheTime < 0.2 then return enemyCache end
enemyCacheTime = now
local l = {}
for _, p in ipairs(Players:GetPlayers()) do
if isEnemy(p) then
local char = p.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum and hum.Health > 0 and isCombatant(p) then
l[#l + 1] = p
end
end
end
enemyCache = l
return l
end
local function findNearest3D()
local myRoot = getHRP()
if not myRoot then return nil end
local best, bestDist = nil, AimbotSettings.MaxDistance
for _, p in ipairs(getAliveEnemies()) do
local char = p.Character
local part = char and getTargetPart(char)
if part then
local d = (myRoot.Position - part.Position).Magnitude
if d <= bestDist then
if not AimbotSettings.WallCheck or hasLineOfSight(part) then
bestDist = d
best = part
end
end
end
end
return best
end
local function findNearestScreen(maxDist)
local cam = workspace.CurrentCamera
if not cam then return nil end
local vp = cam.ViewportSize
local cx, cy = vp.X * 0.5, vp.Y * 0.5
local best, bestD = nil, maxDist
for _, p in ipairs(getAliveEnemies()) do
local char = p.Character
local part = char and getTargetPart(char)
if part then
local sp, on = cam:WorldToViewportPoint(part.Position)
if on and sp.Z > 0 then
local dx, dy = sp.X - cx, sp.Y - cy
local d = math.sqrt(dx * dx + dy * dy)
if d <= bestD then
if not AimbotSettings.WallCheck or hasLineOfSight(part) then
bestD = d
best = part
end
end
end
end
end
return best
end
local function getRedirectTarget()
if AimbotSettings.SilentAim then
local t = findNearest3D()
if t then return t end
end
if AimbotSettings.TriggerBot then
local t = findNearestScreen(AimbotSettings.TriggerRange)
if t then return t end
end
return nil
end
local _rsRemotes = ReplicatedStorage:FindFirstChild("Remotes")
leaveDuelRemote = _rsRemotes and _rsRemotes:FindFirstChild("LeaveDuel")
respawnNowRemote = _rsRemotes and _rsRemotes:FindFirstChild("RespawnNow")
pcall(function()
local mt = getrawmetatable and getrawmetatable(game)
if mt and setreadonly and hookmetamethod then
setreadonly(mt, false)
local oldNamecall = mt.__namecall
mt.__namecall = hookmetamethod(game, "__namecall", function(self, ...)
if self == leaveDuelRemote then
if endMatch then pcall(endMatch) end
elseif self == respawnNowRemote then
if endMatch and (os.clock() - lastMatchSignal > RESPAWN_CLEAR_WINDOW) then
pcall(endMatch)
end
end
if self == workspace and (AimbotSettings.SilentAim or AimbotSettings.TriggerBot) then
local method = getnamecallmethod()
if method == "Raycast" then
local origin, direction, params = ...
if typeof(origin) == "Vector3" and typeof(direction) == "Vector3" then
local cam = workspace.CurrentCamera
local camPos = cam and cam.CFrame.Position
if camPos and (origin - camPos).Magnitude < 15 then
local target = getRedirectTarget()
if target then
local newDir = target.Position - origin
if newDir.Magnitude > 0 then
return oldNamecall(self, origin, newDir.Unit * direction.Magnitude, params)
end
end
end
end
elseif method == "FindPartOnRay" or method == "FindPartOnRayWithIgnoreList" or method == "FindPartOnRayWithWhitelist" then
local target = getRedirectTarget()
if target then
local cam = workspace.CurrentCamera
if cam then
local args = table.pack(...)
args[1] = Ray.new(cam.CFrame.Position, (target.Position - cam.CFrame.Position).Unit * 1000)
return oldNamecall(self, table.unpack(args, 1, args.n))
end
end
end
end
return oldNamecall(self, ...)
end)
setreadonly(mt, true)
end
end)
pcall(function()
if Drawing then
fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 1
fovCircle.Color = Color3.fromRGB(255, 255, 255)
fovCircle.Filled = false
fovCircle.Visible = false
fovCircle.NumSides = 32
end
end)
local function rotateRigTowards(part)
if not part or not part.Parent then return end
local char = LocalPlayer.Character
if not char then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local dx = part.Position.X - hrp.Position.X
local dz = part.Position.Z - hrp.Position.Z
local desiredYaw = math.atan2(-dx, -dz)
local currentYaw = math.atan2(-hrp.CFrame.LookVector.X, -hrp.CFrame.LookVector.Z)
local diff = math.atan2(math.sin(desiredYaw - currentYaw), math.cos(desiredYaw - currentYaw))
local newYaw = currentYaw + diff * math.clamp(AimbotSettings.Smoothing * 1.5, 0, 1)
local look = Vector3.new(-math.sin(newYaw), 0, -math.cos(newYaw))
local right = Vector3.new(math.cos(newYaw), 0, -math.sin(newYaw))
hrp.CFrame = CFrame.fromMatrix(hrp.CFrame.Position, right, Vector3.new(0, 1, 0), -look)
end
local function aimViaMouse(part)
if not part or not part.Parent then return end
if not mousemoverel then return end
local cam = workspace.CurrentCamera
if not cam then return end
local screenPos = cam:WorldToViewportPoint(part.Position)
if not screenPos then return end
local vp = cam.ViewportSize
local dX = screenPos.X - vp.X * 0.5
local dY = screenPos.Y - vp.Y * 0.5
local dist = math.sqrt(dX * dX + dY * dY)
if dist < 1 then return end
local smooth = AimbotSettings.Smoothing
if smooth <= 0 then smooth = 1 end
local moveX = dX * smooth
local moveY = dY * smooth
if dist > 200 then moveX = moveX * 0.7; moveY = moveY * 0.7 end
rotateRigTowards(part)
pcall(mousemoverel, moveX, moveY)
end
local function healthColor(ratio)
ratio = math.clamp(ratio, 0, 1)
if ratio > 0.5 then return Color3.new(2 - ratio * 2, 1, 0)
else return Color3.new(1, ratio * 2, 0) end
end
local R15_BONES = {
{"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_BONES = {
{"Head","Torso"},
{"Torso","Left Arm"},
{"Torso","Right Arm"},
{"Torso","Left Leg"},
{"Torso","Right Leg"},
}
local ESP = { active = false, boxes = {}, skeletons = {}, tracers = {}, names = {}, hpbars = {}, dists = {} }
local function newLine(color, thickness, transparency)
local l = Drawing.new("Line")
l.Color = color or Color3.new(1, 1, 1)
l.Thickness = thickness or 1
l.Transparency = transparency or 1
l.Visible = false
return l
end
local function safeRemove(obj)
if obj and obj.Remove then pcall(obj.Remove, obj) end
end
local function createBox(plr)
if plr == LocalPlayer or ESP.boxes[plr] then return end
ESP.boxes[plr] = {
top = newLine(Color3.new(1, 1, 1), 1, 1),
right = newLine(Color3.new(1, 1, 1), 1, 1),
bottom = newLine(Color3.new(1, 1, 1), 1, 1),
left = newLine(Color3.new(1, 1, 1), 1, 1),
}
end
local function destroyBox(plr)
local box = ESP.boxes[plr]
if not box then return end
safeRemove(box.top); safeRemove(box.right); safeRemove(box.bottom); safeRemove(box.left)
ESP.boxes[plr] = nil
end
local function updateBox(plr, cam)
local box = ESP.boxes[plr]
if not box then return end
local char = plr.Character
if not char then
if box.top.Visible then box.top.Visible = false; box.right.Visible = false; box.bottom.Visible = false; box.left.Visible = false end
return
end
local root = char:FindFirstChild("HumanoidRootPart")
if not root then
if box.top.Visible then box.top.Visible = false; box.right.Visible = false; box.bottom.Visible = false; box.left.Visible = false end
return
end
local screen, onScreen = cam:WorldToViewportPoint(root.Position)
if not onScreen or screen.Z <= 0 then
if box.top.Visible then box.top.Visible = false; box.right.Visible = false; box.bottom.Visible = false; box.left.Visible = false end
return
end
local dist = (root.Position - cam.CFrame.Position).Magnitude
if dist < 1 then dist = 1 end
local ppS = (cam.ViewportSize.Y * 0.5) / (dist * math.tan(math.rad(cam.FieldOfView) * 0.5))
local w = 3 * ppS
local h = 5.2 * ppS
local x = screen.X - w * 0.5
local y = screen.Y - h * 0.5
box.top.From = Vector2.new(x, y); box.top.To = Vector2.new(x + w, y)
box.right.From = Vector2.new(x + w, y); box.right.To = Vector2.new(x + w, y + h)
box.bottom.From = Vector2.new(x + w, y + h); box.bottom.To = Vector2.new(x, y + h)
box.left.From = Vector2.new(x, y + h); box.left.To = Vector2.new(x, y)
box.top.Visible = true; box.right.Visible = true; box.bottom.Visible = true; box.left.Visible = true
end
local function createSkeleton(plr)
if plr == LocalPlayer or ESP.skeletons[plr] then return end
local char = plr.Character
if not char then return end
local bones = char:FindFirstChild("UpperTorso") and R15_BONES
or char:FindFirstChild("Torso") and R6_BONES
if not bones then return end
local lines = {}
for i, bone in ipairs(bones) do
lines[i] = {
line = newLine(Color3.new(1, 1, 1), 1, 1),
pa = char:FindFirstChild(bone[1]),
pb = char:FindFirstChild(bone[2]),
}
end
ESP.skeletons[plr] = lines
end
local function destroySkeleton(plr)
local lines = ESP.skeletons[plr]
if not lines then return end
for _, l in ipairs(lines) do safeRemove(l.line) end
ESP.skeletons[plr] = nil
end
local function updateSkeleton(plr, cam)
local lines = ESP.skeletons[plr]
if not lines then return end
for _, l in ipairs(lines) do
local pa, pb = l.pa, l.pb
if pa and pa.Parent and pb and pb.Parent then
local sa, onA = cam:WorldToViewportPoint(pa.Position)
if onA and sa.Z > 0 then
local sb, onB = cam:WorldToViewportPoint(pb.Position)
if onB and sb.Z > 0 then
l.line.From = Vector2.new(sa.X, sa.Y)
l.line.To = Vector2.new(sb.X, sb.Y)
l.line.Visible = true
else
l.line.Visible = false
end
else
l.line.Visible = false
end
else
l.line.Visible = false
end
end
end
local function createTracer(plr)
if plr == LocalPlayer or ESP.tracers[plr] then return end
ESP.tracers[plr] = newLine(Color3.new(1, 1, 1), 1, 1)
end
local function destroyTracer(plr)
safeRemove(ESP.tracers[plr])
ESP.tracers[plr] = nil
end
local function updateTracer(plr, cam)
local g = ESP.tracers[plr]
if not g then return end
local char = plr.Character
if not char then g.Visible = false; return end
local root = char:FindFirstChild("HumanoidRootPart")
if not root then g.Visible = false; return end
local sp, on = cam:WorldToViewportPoint(root.Position)
if not on or sp.Z <= 0 then g.Visible = false; return end
g.From = Vector2.new(cam.ViewportSize.X * 0.5, cam.ViewportSize.Y)
g.To = Vector2.new(sp.X, sp.Y)
g.Visible = true
end
local function createNameTag(plr)
if plr == LocalPlayer or ESP.names[plr] then return end
local txt = Drawing.new("Text")
txt.Color = Color3.new(1, 1, 1)
txt.Size = 14
txt.Center = true
txt.Outline = true
txt.OutlineColor = Color3.new(0, 0, 0)
txt.Visible = false
ESP.names[plr] = txt
end
local function destroyNameTag(plr)
safeRemove(ESP.names[plr])
ESP.names[plr] = nil
end
local function updateNameTag(plr, cam)
local txt = ESP.names[plr]
if not txt then return end
local char = plr.Character
if not char then if txt.Visible then txt.Visible = false end return end
local head = char:FindFirstChild("Head")
if not head then if txt.Visible then txt.Visible = false end return end
local sp, on = cam:WorldToViewportPoint(head.Position)
if not on or sp.Z <= 0 then if txt.Visible then txt.Visible = false end return end
txt.Position = Vector2.new(sp.X, sp.Y - 22)
txt.Text = plr.DisplayName
txt.Visible = true
end
local function createDistanceTag(plr)
if plr == LocalPlayer or ESP.dists[plr] then return end
local txt = Drawing.new("Text")
txt.Color = Color3.fromRGB(200, 200, 200)
txt.Size = 12
txt.Center = true
txt.Outline = true
txt.OutlineColor = Color3.new(0, 0, 0)
txt.Visible = false
ESP.dists[plr] = txt
end
local function destroyDistanceTag(plr)
safeRemove(ESP.dists[plr])
ESP.dists[plr] = nil
end
local function updateDistanceTag(plr, cam, myPos)
local txt = ESP.dists[plr]
if not txt then return end
local char = plr.Character
if not char then if txt.Visible then txt.Visible = false end return end
local root = char:FindFirstChild("HumanoidRootPart")
if not root then if txt.Visible then txt.Visible = false end return end
local sp, on = cam:WorldToViewportPoint(root.Position)
if not on or sp.Z <= 0 then if txt.Visible then txt.Visible = false end return end
local d = myPos and math.floor((myPos - root.Position).Magnitude) or 0
txt.Position = Vector2.new(sp.X, sp.Y + 40)
txt.Text = d .. "m"
txt.Visible = true
end
local function createHealthBar(plr)
if plr == LocalPlayer or ESP.hpbars[plr] then return end
ESP.hpbars[plr] = {
bg = newLine(Color3.fromRGB(20, 20, 20), 3, 0.5),
fill = newLine(Color3.fromRGB(0, 255, 100), 3, 1),
}
end
local function destroyHealthBar(plr)
local hb = ESP.hpbars[plr]
if hb then safeRemove(hb.bg); safeRemove(hb.fill); ESP.hpbars[plr] = nil end
end
local function updateHealthBar(plr, cam)
local hb = ESP.hpbars[plr]
if not hb then return end
local char = plr.Character
if not char then
if hb.bg.Visible then hb.bg.Visible = false; hb.fill.Visible = false end
return
end
local root = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if not root or not hum or hum.MaxHealth <= 0 then
if hb.bg.Visible then hb.bg.Visible = false; hb.fill.Visible = false end
return
end
local screen, on = cam:WorldToViewportPoint(root.Position)
if not on or screen.Z <= 0 then
if hb.bg.Visible then hb.bg.Visible = false; hb.fill.Visible = false end
return
end
local dist = (root.Position - cam.CFrame.Position).Magnitude
if dist < 1 then dist = 1 end
local ppS = (cam.ViewportSize.Y * 0.5) / (dist * math.tan(math.rad(cam.FieldOfView) * 0.5))
local barH = 5.2 * ppS * 0.7
local x = screen.X - (3 * ppS) * 0.5 - 8
local yTop = screen.Y - barH * 0.5
local yBot = screen.Y + barH * 0.5
hb.bg.From = Vector2.new(x, yTop)
hb.bg.To = Vector2.new(x, yBot)
hb.bg.Visible = true
local ratio = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
local yFill = yBot - (yBot - yTop) * ratio
hb.fill.From = Vector2.new(x, yFill)
hb.fill.To = Vector2.new(x, yBot)
hb.fill.Color = healthColor(ratio)
hb.fill.Visible = true
end
local function clearAllESP()
for plr in pairs(ESP.boxes) do destroyBox(plr) end
for plr in pairs(ESP.skeletons) do destroySkeleton(plr) end
for plr in pairs(ESP.tracers) do destroyTracer(plr) end
for plr in pairs(ESP.names) do destroyNameTag(plr) end
for plr in pairs(ESP.hpbars) do destroyHealthBar(plr) end
for plr in pairs(ESP.dists) do destroyDistanceTag(plr) end
ESP.boxes = {}; ESP.skeletons = {}; ESP.tracers = {}; ESP.names = {}; ESP.hpbars = {}; ESP.dists = {}
end
endMatch = function()
activeFighters = {}
enemyCache = {}
enemyCacheTime = 0
teamCache = {}
teamCacheTime = {}
lastMatchSignal = 0
clearAllESP()
end
local function shouldRender(plr, myPos)
if plr == LocalPlayer then return false end
local char = plr.Character
if not char or char.Parent ~= workspace then return false end
local hum = char:FindFirstChildOfClass("Humanoid")
if not hum or hum.Health <= 0 then return false end
if not isCombatant(plr) then return false end
if myPos then
local root = char:FindFirstChild("HumanoidRootPart")
if not root then return false end
if (root.Position - myPos).Magnitude > VisualSettings.MaxRenderDistance then return false end
end
return true
end
local function syncESP()
if not ESP.active then return end
local cam = workspace.CurrentCamera
if not cam then return end
local myHRP = getHRP()
local myPos = myHRP and myHRP.Position
local seen = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer then
local render = shouldRender(plr, myPos)
seen[plr] = true
if render then
if VisualSettings.RivalsESP then
if not ESP.boxes[plr] then createBox(plr) end
else if ESP.boxes[plr] then destroyBox(plr) end end
if VisualSettings.Skeleton then
if not ESP.skeletons[plr] then createSkeleton(plr) end
else if ESP.skeletons[plr] then destroySkeleton(plr) end end
if VisualSettings.Tracers then
if not ESP.tracers[plr] then createTracer(plr) end
else if ESP.tracers[plr] then destroyTracer(plr) end end
if VisualSettings.NameTags then
if not ESP.names[plr] then createNameTag(plr) end
else if ESP.names[plr] then destroyNameTag(plr) end end
if VisualSettings.HealthBar then
if not ESP.hpbars[plr] then createHealthBar(plr) end
else if ESP.hpbars[plr] then destroyHealthBar(plr) end end
if VisualSettings.Distance then
if not ESP.dists[plr] then createDistanceTag(plr) end
else if ESP.dists[plr] then destroyDistanceTag(plr) end end
else
if ESP.boxes[plr] then destroyBox(plr) end
if ESP.skeletons[plr] then destroySkeleton(plr) end
if ESP.tracers[plr] then destroyTracer(plr) end
if ESP.names[plr] then destroyNameTag(plr) end
if ESP.hpbars[plr] then destroyHealthBar(plr) end
if ESP.dists[plr] then destroyDistanceTag(plr) end
end
end
end
for plr in pairs(ESP.boxes) do if not seen[plr] then destroyBox(plr) end end
for plr in pairs(ESP.skeletons) do if not seen[plr] then destroySkeleton(plr) end end
for plr in pairs(ESP.tracers) do if not seen[plr] then destroyTracer(plr) end end
for plr in pairs(ESP.names) do if not seen[plr] then destroyNameTag(plr) end end
for plr in pairs(ESP.hpbars) do if not seen[plr] then destroyHealthBar(plr) end end
for plr in pairs(ESP.dists) do if not seen[plr] then destroyDistanceTag(plr) end end
end
local function startESP()
if ESP.active then return end
ESP.active = true
syncESP()
end
local function stopESP()
ESP.active = false
clearAllESP()
end
local function anyVisualOn()
return VisualSettings.RivalsESP or VisualSettings.Skeleton
or VisualSettings.Tracers or VisualSettings.NameTags
or VisualSettings.HealthBar or VisualSettings.Distance
end
local function refreshESPState()
if anyVisualOn() then
if not ESP.active then startESP() end
else
if ESP.active then stopESP() end
end
end
local FF = {
["DFIntTaskSchedulerTargetFps"] = "240",
["FFlagTaskSchedulerLimitTargetFpsTo2402"] = "False",
["DFIntDebugFRMQualityLevelOverride"] = "1",
["FFlagDebugSkyGray"] = "True",
["FFlagDebugGraphicsPreferD3D11"] = "True",
["DFFlagDebugRenderForceTechnologyVoxel"] = "True",
["FIntRenderShadowIntensity"] = "0",
["DFIntCSGLevelOfDetailSwitchingDistance"] = "0",
["DFIntCSGLevelOfDetailSwitchingDistanceL12"] = "0",
["DFIntCSGLevelOfDetailSwitchingDistanceL23"] = "0",
["DFIntCSGLevelOfDetailSwitchingDistanceL34"] = "0",
["FFlagDisablePostFx"] = "True",
["FIntDebugForceMSAASamples"] = "0",
["FIntFRMMinGrassDistance"] = "0",
["FIntFRMMaxGrassDistance"] = "0",
["FIntRenderGrassDetailStrands"] = "0",
["FIntRenderGrassHeightScaler"] = "0",
["DFFlagTextureQualityOverrideEnabled"] = "True",
["DFIntTextureQualityOverride"] = "0",
["FIntDebugTextureManagerSkipMips"] = "8",
["DFIntTextureCompositorActiveJobs"] = "0",
["FFlagDebugDisableTelemetryEventIngest"] = "True",
["FFlagDebugDisableTelemetryPoint"] = "True",
["FFlagDebugDisableTelemetryEphemeralCounter"] = "True",
["FFlagDebugDisableTelemetryV2Stat"] = "True",
["FFlagDebugDisableTelemetryV2Counter"] = "True",
["DFStringTelemetryV2Url"] = "null",
["DFStringTelegrafHTTPTransportUrl"] = "null",
["DFStringRobloxAnalyticsURL"] = "null",
["FLogNetwork"] = "7",
["FFlagDebugDisableShadows"] = "True",
["FFlagDebugDisableShadowsUGC"] = "True",
["FIntRenderLocalLightUpdatesMax"] = "0",
["FIntRenderLocalLightUpdatesMin"] = "0",
["FIntRenderLocalLightFadeInMs"] = "0",
["FFlagDisableRenderLocalLights"] = "True",
["FFlagDisableParticleLighting"] = "True",
["FFlagDisableDynamicLighting"] = "True",
["FFlagDebugDisableSky"] = "True",
["FFlagDisableTerrainDetails"] = "True",
["FIntTerrainDetailLevelOverride"] = "0",
["FFlagDebugDisablePostProcessing"] = "True",
["FFlagDisableBloom"] = "True",
["FFlagDisableDepthOfField"] = "True",
["FFlagDisableSunRays"] = "True",
["FFlagDisableVignette"] = "True",
["FFlagDisableAtmosphere"] = "True",
["FFlagDisableClouds"] = "True",
["FFlagFastGPULightCulling3"] = "True",
["FFlagDisableClothSimulation"] = "True",
["FFlagDisableCharacterShadows"] = "True",
["FFlagPlayerShadows"] = "False",
["FFlagDebugGraphicsDisableShadows"] = "True",
["DFIntMaxParticleCount"] = "0",
["DFIntParticleEmissionRateScale"] = "0",
["FFlagParticleEmitterUseLighting"] = "False",
["DFIntRenderShadowMapSize"] = "0",
["FFlagDisableRenderOcclusionCulling"] = "True",
["DFIntTerrainLODMax"] = "0",
["FFlagDebugDisableWater"] = "True",
["FFlagDebugDisableWaterReflection"] = "True",
["FFlagDebugDisableReflections"] = "True",
["FFlagDisableAllPostEffects"] = "True",
["FFlagDisableGrass"] = "True",
["FFlagDebugDisableGrass"] = "True",
["FFlagRenderGuiInBackground"] = "False",
["FFlagDisableTelemetry"] = "True",
["FFlagDisableAnalytics"] = "True",
["FFlagDisableGamepadController"] = "True",
["FFlagDebugDisableAudio"] = "True",
["FFlagDisableAudio"] = "True",
}
local function applyFullOptimized()
if not setfflag then
API:Notify("setfflag no disponible")
return false
end
local ok, total = 0, 0
for flag, value in pairs(FF) do
total = total + 1
local s = pcall(setfflag, flag, value)
if s then ok = ok + 1 end
end
API:Notify(string.format("FFlags aplicadas (%d/%d)", ok, total))
return true
end
local function startFly()
if flyConn then flyConn:Disconnect(); flyConn = nil end
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
for _, o in ipairs(hrp:GetChildren()) do
if o.Name == "RS_Fly" then o:Destroy() end
end
local bv = Instance.new("BodyVelocity")
bv.Name = "RS_Fly"
bv.MaxForce = Vector3.new(1e9, 1e9, 1e9)
bv.Velocity = Vector3.zero
bv.Parent = hrp
local bg = Instance.new("BodyGyro")
bg.Name = "RS_Fly"
bg.MaxTorque = Vector3.new(1e9, 1e9, 1e9)
bg.P = 9000
bg.Parent = hrp
flyState.enabled = true
flyConn = RunService.RenderStepped:Connect(function()
if not flyState.enabled then return end
local c = LocalPlayer.Character
local root = c and c:FindFirstChild("HumanoidRootPart")
if not root or not bv.Parent then return end
local cam = workspace.CurrentCamera
local dir = Vector3.zero
if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir += cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir -= cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir -= cam.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir += cam.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir += Vector3.new(0, 1, 0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then dir -= Vector3.new(0, 1, 0) end
if dir.Magnitude > 0 then dir = dir.Unit end
bv.Velocity = dir * flyState.speed
bg.CFrame = cam.CFrame
end)
end
local function stopFly()
flyState.enabled = false
if flyConn then flyConn:Disconnect(); flyConn = nil end
local char = LocalPlayer.Character
if char then
local hrp = char:FindFirstChild("HumanoidRootPart")
if hrp then
for _, o in ipairs(hrp:GetChildren()) do
if o.Name == "RS_Fly" then o:Destroy() end
end
end
local h = char:FindFirstChildOfClass("Humanoid")
if h then h.PlatformStand = false end
end
end
local statsGui = Instance.new("ScreenGui")
statsGui.Name = "RS_Stats"
statsGui.ResetOnSpawn = false
statsGui.IgnoreGuiInset = true
pcall(function() statsGui.Parent = game:GetService("CoreGui") end)
if not statsGui.Parent then
statsGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end
local statsFrame = Instance.new("Frame")
statsFrame.Size = UDim2.new(0, 160, 0, 56)
statsFrame.Position = UDim2.new(0, 10, 0, 10)
statsFrame.BackgroundColor3 = Color3.new(0, 0, 0)
statsFrame.BackgroundTransparency = 0.45
statsFrame.BorderSizePixel = 0
statsFrame.Parent = statsGui
local sc = Instance.new("UICorner")
sc.CornerRadius = UDim.new(0, 6)
sc.Parent = statsFrame
local statsText = Instance.new("TextLabel")
statsText.Size = UDim2.new(1, -10, 1, -10)
statsText.Position = UDim2.new(0, 5, 0, 5)
statsText.BackgroundTransparency = 1
statsText.TextColor3 = Color3.new(1, 1, 1)
statsText.Font = Enum.Font.Code
statsText.TextSize = 14
statsText.TextXAlignment = Enum.TextXAlignment.Left
statsText.TextYAlignment = Enum.TextYAlignment.Top
statsText.RichText = true
statsText.Text = "FPS: 0\nPING: 0ms"
statsText.Parent = statsFrame
local fpsCounter, fpsValue = 0, 0
task.spawn(function()
while task.wait(0.5) do
if MiscSettings.ShowStats then
local ping = 0
pcall(function()
ping = math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue())
end)
statsText.Text = string.format("FPS: %d\nPING: %dms", fpsValue, ping)
statsFrame.Visible = true
else
statsFrame.Visible = false
end
end
end)
local deathKeywords = { "you died", "you were", "eliminated", "game over", "defeated", "respawning", "you lost", "you have died", "died", "respawning in" }
local hookedTexts = {}
local function checkDeathText(v)
if not v or not (v:IsA("TextLabel") or v:IsA("TextButton")) then return end
pcall(function()
local txt = string.lower(v.Text)
if #txt == 0 then return end
for _, kw in ipairs(deathKeywords) do
if txt:find(kw, 1, true) then
v.Text = "replicatedscripts.net"
return
end
end
end)
end
local function hookText(v)
if hookedTexts[v] then return end
hookedTexts[v] = true
checkDeathText(v)
pcall(function()
v:GetPropertyChangedSignal("Text"):Connect(function() checkDeathText(v) end)
end)
end
local function scanDeathGuis()
local pGui = LocalPlayer:FindFirstChild("PlayerGui")
local containers = {}
if pGui then table.insert(containers, pGui) end
pcall(function() table.insert(containers, game:GetService("CoreGui")) end)
for _, container in ipairs(containers) do
pcall(function()
for _, v in ipairs(container:GetDescendants()) do
if v:IsA("TextLabel") or v:IsA("TextButton") then
hookText(v)
end
end
end)
end
end
task.spawn(function()
while task.wait(1.5) do
pcall(scanDeathGuis)
end
end)
local espAcc, aimAcc, fpsAcc = 0, 0, 0
RunService.RenderStepped:Connect(function(dt)
fpsCounter = fpsCounter + 1
fpsAcc = fpsAcc + dt
if fpsAcc >= 1 then
fpsValue = fpsCounter
fpsCounter = 0
fpsAcc = 0
end
local cam = workspace.CurrentCamera
if not cam then return end
if fovCircle then
if AimbotSettings.ShowFOV and AimbotSettings.Enabled then
fovCircle.Position = Vector2.new(cam.ViewportSize.X * 0.5, cam.ViewportSize.Y * 0.5)
fovCircle.Radius = AimbotSettings.FOV * 0.5
fovCircle.Visible = true
elseif fovCircle.Visible then
fovCircle.Visible = false
end
end
if MiscSettings.SpeedEnabled then
local hum = getHumanoid()
if hum then hum.WalkSpeed = MiscSettings.SpeedValue end
end
aimAcc = aimAcc + dt
if aimAcc >= AIM_RATE and AimbotSettings.Enabled and not AimbotSettings.SilentAim then
aimAcc = 0
if isInMatch() then
local target = findNearestScreen(AimbotSettings.FOV)
if target then aimViaMouse(target) end
end
end
espAcc = espAcc + dt
if espAcc >= ESP_RATE and ESP.active then
espAcc = 0
local myHRP = getHRP()
local myPos = myHRP and myHRP.Position
for plr in pairs(ESP.boxes) do updateBox(plr, cam) end
for plr in pairs(ESP.skeletons) do updateSkeleton(plr, cam) end
for plr in pairs(ESP.tracers) do updateTracer(plr, cam) end
for plr in pairs(ESP.names) do updateNameTag(plr, cam) end
for plr in pairs(ESP.hpbars) do updateHealthBar(plr, cam) end
for plr in pairs(ESP.dists) do updateDistanceTag(plr, cam, myPos) end
end
end)
task.spawn(function()
while true do
task.wait(0.5)
if AimbotSettings.SilentAim or AimbotSettings.TriggerBot then
rebuildRayFilter()
end
end
end)
task.spawn(function()
while true do
task.wait(2)
if ESP.active then syncESP() end
end
end)
task.spawn(function()
while true do
task.wait(0.3)
if AimbotSettings.SilentAim or AimbotSettings.TriggerBot then
getAliveEnemies()
end
end
end)
local win = API:CreateWindow("Happy Hub", "Rivals · Keyless · replicatedscripts.net")
if not win then return end
local homeTab = win:CreateTab("Home", API.Icons.Home or "rbxassetid://109951566071454")
local aimbotTab = win:CreateTab("Aimbot", API.Icons.Combat or "rbxassetid://93310349660228")
local visualsTab = win:CreateTab("Visuals", "rbxassetid://13321848320")
local miscTab = win:CreateTab("Misc", API.Icons.Misc or "rbxassetid://109962716823639")
local aimbotToggleRef, espToggleRef, speedToggleRef
win:CreateImageCard(homeTab, {
Image = "rbxthumb://type=Asset&id=" .. game.PlaceId .. "&w=420&h=420",
Title = "Keyless · free hub",
Subtitle = "replicatedscripts.net",
Description = "Enjoy the free features.",
Height = 140,
ImageWidth = 120,
})
win:CreateLabel(aimbotTab, "Aimbot Settings")
aimbotToggleRef = win:CreateToggle(aimbotTab, "Enabled [T]", AimbotSettings.Enabled, function(v)
AimbotSettings.Enabled = v
local hum = getHumanoid()
if not v then
if hum then hum.AutoRotate = true end
else
if hum then hum.AutoRotate = false end
end
API:Notify(v and "Aimbot enabled" or "Aimbot disabled")
end)
win:CreateToggle(aimbotTab, "Silent Aim", AimbotSettings.SilentAim, function(v)
AimbotSettings.SilentAim = v
if v then rebuildRayFilter() end
API:Notify(v and "Silent Aim on" or "Silent Aim off")
end)
win:CreateSlider(aimbotTab, "FOV", 20, 800, AimbotSettings.FOV, function(v) AimbotSettings.FOV = v end)
win:CreateSlider(aimbotTab, "Smoothing", 0.05, 1, AimbotSettings.Smoothing, function(v) AimbotSettings.Smoothing = v end)
win:CreateSlider(aimbotTab, "Max Distance", 50, 2000, AimbotSettings.MaxDistance, function(v) AimbotSettings.MaxDistance = v end)
win:CreateToggle(aimbotTab, "Wall Check", AimbotSettings.WallCheck, function(v) AimbotSettings.WallCheck = v end)
win:CreateToggle(aimbotTab, "Team Check", AimbotSettings.TeamCheck, function(v) AimbotSettings.TeamCheck = v end)
win:CreateToggle(aimbotTab, "Show FOV Circle", AimbotSettings.ShowFOV, function(v) AimbotSettings.ShowFOV = v end)
win:CreateDropdown(aimbotTab, "Target", { "Head", "Torso", "Random" }, "Head", function(sel)
AimbotSettings.Target = sel
end)
win:CreateLabel(aimbotTab, "Trigger Bot")
win:CreateToggle(aimbotTab, "Trigger Bot", AimbotSettings.TriggerBot, function(v)
AimbotSettings.TriggerBot = v
if v then rebuildRayFilter() end
API:Notify(v and "Trigger Bot on" or "Trigger Bot off")
end)
win:CreateSlider(aimbotTab, "Trigger Range", 20, 400, AimbotSettings.TriggerRange, function(v) AimbotSettings.TriggerRange = v end)
win:CreateLabel(visualsTab, "Visual Settings")
espToggleRef = win:CreateToggle(visualsTab, "Rivals ESP [O]", VisualSettings.RivalsESP, function(v)
VisualSettings.RivalsESP = v
refreshESPState()
end)
win:CreateToggle(visualsTab, "Name Tags", VisualSettings.NameTags, function(v)
VisualSettings.NameTags = v
refreshESPState()
end)
win:CreateToggle(visualsTab, "Tracers", VisualSettings.Tracers, function(v)
VisualSettings.Tracers = v
refreshESPState()
end)
win:CreateToggle(visualsTab, "Skeleton", VisualSettings.Skeleton, function(v)
VisualSettings.Skeleton = v
refreshESPState()
end)
win:CreateToggle(visualsTab, "Health Bar", VisualSettings.HealthBar, function(v)
VisualSettings.HealthBar = v
refreshESPState()
end)
win:CreateToggle(visualsTab, "Distance", VisualSettings.Distance, function(v)
VisualSettings.Distance = v
refreshESPState()
end)
win:CreateSlider(visualsTab, "Max Render Distance", 50, 2000, VisualSettings.MaxRenderDistance, function(v)
VisualSettings.MaxRenderDistance = v
end)
win:CreateLabel(miscTab, "Movement")
speedToggleRef = win:CreateToggle(miscTab, "Speedhack", MiscSettings.SpeedEnabled, function(v)
MiscSettings.SpeedEnabled = v
local hum = getHumanoid()
if not v and hum then hum.WalkSpeed = 16 end
end)
win:CreateSlider(miscTab, "Speed", 16, 500, MiscSettings.SpeedValue, function(v)
MiscSettings.SpeedValue = v
local hum = getHumanoid()
if MiscSettings.SpeedEnabled and hum then hum.WalkSpeed = v end
end)
win:CreateToggle(miscTab, "Fly", MovementSettings.Fly, function(v)
MovementSettings.Fly = v
if v then startFly() else stopFly() end
end)
win:CreateSlider(miscTab, "Fly Speed", 10, 500, MovementSettings.FlySpeed, function(v)
MovementSettings.FlySpeed = v
flyState.speed = v
end)
win:CreateToggle(miscTab, "Infinite Jump", MiscSettings.InfJump, function(v)
MiscSettings.InfJump = v
end)
win:CreateToggle(miscTab, "Noclip", MovementSettings.Noclip, function(v)
MovementSettings.Noclip = v
if noclipConn then noclipConn:Disconnect(); noclipConn = nil end
if v then
noclipConn = RunService.Stepped:Connect(function()
local c = LocalPlayer.Character
if c then
for _, p in ipairs(c:GetDescendants()) do
if p:IsA("BasePart") then p.CanCollide = false end
end
end
end)
end
end)
win:CreateToggle(miscTab, "God Mode", MovementSettings.God, function(v)
MovementSettings.God = v
if godConn then godConn:Disconnect(); godConn = nil end
if v then
godConn = RunService.Heartbeat:Connect(function()
local hum = getHumanoid()
if hum then hum.Health = hum.MaxHealth end
end)
end
end)
win:CreateToggle(miscTab, "Anti-AFK", MiscSettings.AntiAFK, function(v)
MiscSettings.AntiAFK = v
if antiAFKConn then antiAFKConn:Disconnect(); antiAFKConn = nil end
if v then
antiAFKConn = LocalPlayer.Idled:Connect(function()
VirtualUser:Button2Down(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
task.wait(1)
VirtualUser:Button2Up(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
end)
end
end)
win:CreateToggle(miscTab, "Show FPS / Ping", MiscSettings.ShowStats, function(v)
MiscSettings.ShowStats = v
statsFrame.Visible = v
end)
win:CreateLabel(miscTab, "Performance")
win:CreateToggle(miscTab, "FFlags Optimizer", false, function(v)
MiscSettings.FullOptimized = v
if v then applyFullOptimized() else API:Notify("Reinicia el cliente para revertir") end
end)
UserInputService.JumpRequest:Connect(function()
if MiscSettings.InfJump then
local c = LocalPlayer.Character
if c then
local h = c:FindFirstChildOfClass("Humanoid")
if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end
end
end
end)
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if UserInputService:GetFocusedTextBox() then return end
if input.KeyCode == Enum.KeyCode.T then
if aimbotToggleRef then aimbotToggleRef:SetState(not AimbotSettings.Enabled) end
elseif input.KeyCode == Enum.KeyCode.O then
if espToggleRef then espToggleRef:SetState(not VisualSettings.RivalsESP) end
end
end)
if isMobile then
win:AddMobileButton({
Icon = "rbxassetid://93310349660228",
Tooltip = "Toggle Aimbot",
OnClick = function() if aimbotToggleRef then aimbotToggleRef:SetState(not AimbotSettings.Enabled) end end,
})
win:AddMobileButton({
Icon = "rbxassetid://13321848320",
Tooltip = "Toggle ESP",
OnClick = function() if espToggleRef then espToggleRef:SetState(not VisualSettings.RivalsESP) end end,
})
win:AddMobileButton({
Icon = "rbxassetid://115558082558028",
Tooltip = "Toggle UI",
OnClick = function() win:ToggleUI() end,
})
end
local function handleCharacterAdded(plr)
if activeFighters[plr.Name] then
activeFighters[plr.Name] = os.clock()
end
task.spawn(function()
task.wait(0.5)
if ESP.skeletons[plr] then
destroySkeleton(plr)
end
if ESP.active and VisualSettings.Skeleton and activeFighters[plr.Name] then
local char = plr.Character
if char and char.Parent == workspace then
createSkeleton(plr)
end
end
end)
end
LocalPlayer.CharacterAdded:Connect(function(char)
rayParams.FilterDescendantsInstances = {}
local hum = char:WaitForChild("Humanoid", 3)
if hum and AimbotSettings.Enabled then hum.AutoRotate = false end
task.wait(0.1)
rebuildRayFilter()
if hum and MiscSettings.SpeedEnabled then hum.WalkSpeed = MiscSettings.SpeedValue end
end)
LocalPlayer.CharacterRemoving:Connect(function()
rayParams.FilterDescendantsInstances = {}
stopFly()
end)
Players.PlayerAdded:Connect(function(plr)
if plr ~= LocalPlayer then
plr.CharacterAdded:Connect(function() handleCharacterAdded(plr) end)
end
end)
Players.PlayerRemoving:Connect(function(plr)
destroyBox(plr); destroySkeleton(plr); destroyTracer(plr)
destroyNameTag(plr); destroyHealthBar(plr); destroyDistanceTag(plr)
activeFighters[plr.Name] = nil
enemyCache = {}
enemyCacheTime = 0
end)
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer then
plr.CharacterAdded:Connect(function() handleCharacterAdded(plr) end)
end
end