-- This WILL NOT WORK ON LOW UNC EXECUTORS LIKE XENO local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Teams = game:GetService("Teams") local LocalPlayer = Players.LocalPlayer local camera = workspace.CurrentCamera local mousemoverel = mousemoverel or (Input and Input.MouseMove) or nil local Config = { ESP_Enabled = true, ESP_Box = true, ESP_Name = true, ESP_Distance = true, ESP_Tracer = false, ESP_Rainbow = false, ESP_TeamCheck = true, AIM_Enabled = false, AIM_FOVEnabled = true, AIM_FOV = 120, AIM_Smooth = 3.5, SILENT_Enabled = false, SILENT_FOV = 150, SILENT_TeamCheck = true, SILENT_Rage = false, RADAR_Enabled = true, RADAR_Mode = "2D", RADAR_Size = 140, RADAR_Range = 200, RADAR_MoveMode = false, MISC_Watermark = true, MISC_ActiveList = true } local Tuning = { FOVSegments = 50, PanelWidth = 145, PanelHeaderH = 24, ItemHeight = 20, FontSize = 13, SliderHeight = 38, RadarDotSize = 4, RadarArrowSize = 6, CompassWidth = 400, CompassHeight = 28, CompassTickHeight = 8, CompassIndicatorSize = 6 } local Palette = { PanelBg = Color3.fromRGB(18, 18, 20), PanelHeader = Color3.fromRGB(25, 25, 28), PanelBorder = Color3.fromRGB(45, 45, 50), ItemOn = Color3.fromRGB(255, 65, 65), ItemOff = Color3.fromRGB(180, 180, 185), ItemHover = Color3.fromRGB(35, 35, 40), Text = Color3.fromRGB(230, 230, 235), TextDim = Color3.fromRGB(130, 130, 140), Accent = Color3.fromRGB(255, 65, 65), ESP_Enemy = Color3.fromRGB(255, 65, 65), ESP_Visible = Color3.fromRGB(85, 255, 127), FOV_Circle = Color3.fromRGB(255, 255, 255), FOV_Active = Color3.fromRGB(85, 255, 127), RadarBg = Color3.fromRGB(12, 12, 14), RadarBorder = Color3.fromRGB(255, 65, 65), RadarGrid = Color3.fromRGB(35, 35, 40), RadarYou = Color3.fromRGB(255, 65, 65), RadarEnemy = Color3.fromRGB(85, 255, 127), CompassBg = Color3.fromRGB(0, 0, 0), CompassText = Color3.fromRGB(200, 200, 205), CompassCardinal = Color3.fromRGB(255, 255, 255), CompassTick = Color3.fromRGB(80, 80, 90), CompassEnemy = Color3.fromRGB(85, 255, 127) } local State = { Unloaded = false, RainbowHue = 0, Aiming = false, Radar2D_Pos = nil, RadarHUD_Pos = nil, RadarDragging = nil, RadarDragOffset = Vector2.new(0, 0) } local Cache = { Teams = {}, TeamUpdateTime = 0, Visibility = {}, VisUpdateTime = 0, CharactersFolder = nil, LocalChar = nil, LocalCharTime = 0 } local CacheIntervals = { Team = 0.5, Visibility = 0.1, LocalChar = 0.2 } local Connections = {} local espObjects = {} local targetEnemy = nil local function GetPlayerTeamRaw(player) if not player then return nil end if workspace:FindFirstChild("VoiceOrigins") then local vo = workspace.VoiceOrigins if vo:FindFirstChild("ORANGE") and vo.ORANGE:FindFirstChild(player.Name) then return Teams:FindFirstChild("ORANGE") or "ORANGE" elseif vo:FindFirstChild("BLUE") and vo.BLUE:FindFirstChild(player.Name) then return Teams:FindFirstChild("BLUE") or "BLUE" end end return nil end local function GetPlayerTeam(player) if not player then return nil end local now = tick() if now - Cache.TeamUpdateTime > CacheIntervals.Team then Cache.Teams = {} Cache.TeamUpdateTime = now end if Cache.Teams[player] == nil then Cache.Teams[player] = GetPlayerTeamRaw(player) or false end local result = Cache.Teams[player] return result ~= false and result or nil end local function GetCharactersFolder() if not Cache.CharactersFolder then Cache.CharactersFolder = workspace:FindFirstChild("Characters") end return Cache.CharactersFolder end local function GetLocalCharacter() local now = tick() if now - Cache.LocalCharTime > CacheIntervals.LocalChar or not Cache.LocalChar or not Cache.LocalChar.Parent then local chars = GetCharactersFolder() Cache.LocalChar = chars and chars:FindFirstChild(LocalPlayer.Name) Cache.LocalCharTime = now end return Cache.LocalChar end local function GetTargetPart(character) local parts = {"head_only", "Head", "RootPart", "HumanoidRootPart", "helmet", "pelvis"} for _, name in ipairs(parts) do local part = character:FindFirstChild(name) if part then return part end end for _, part in ipairs(character:GetChildren()) do if part:IsA("BasePart") then return part end end return nil end local function IsVisibleRaw(targetPart) local localChar = GetLocalCharacter() if not localChar or not targetPart then return false end local localPart = GetTargetPart(localChar) if not localPart then return false end local targetChar = targetPart:FindFirstAncestorOfClass("Model") local origin = localPart.Position local direction = (targetPart.Position - origin) local params = RaycastParams.new() params.FilterDescendantsInstances = {localChar, targetChar} params.FilterType = Enum.RaycastFilterType.Blacklist local result = workspace:Raycast(origin, direction, params) return result == nil end local function IsVisible(targetPart) if not targetPart then return false end local now = tick() if now - Cache.VisUpdateTime > CacheIntervals.Visibility then Cache.Visibility = {} Cache.VisUpdateTime = now end if Cache.Visibility[targetPart] == nil then Cache.Visibility[targetPart] = IsVisibleRaw(targetPart) end return Cache.Visibility[targetPart] end local function GetDistance(pos) local char = GetLocalCharacter() if not char then return 0 end local root = GetTargetPart(char) if not root then return 0 end return (pos - root.Position).Magnitude end local function GetRainbow() return Color3.fromHSV(State.RainbowHue, 1, 1) end local function GetClosestEnemyScreenPos() camera = workspace.CurrentCamera if not camera then return nil end local localTeam = GetPlayerTeam(LocalPlayer) local closestPos = nil local closestDist = Config.AIM_FOVEnabled and Config.AIM_FOV or math.huge local mousePos = UserInputService:GetMouseLocation() local charsFolder = GetCharactersFolder() for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local character = charsFolder and charsFolder:FindFirstChild(player.Name) if not character then continue end local playerTeam = GetPlayerTeam(player) local isEnemy = true if Config.ESP_TeamCheck and localTeam and playerTeam then isEnemy = localTeam ~= playerTeam end if isEnemy then local part = GetTargetPart(character) if part then local screenPos, onScreen = camera:WorldToViewportPoint(part.Position) if onScreen then local screenVec = Vector2.new(screenPos.X, screenPos.Y) local dist = (mousePos - screenVec).Magnitude if dist < closestDist then closestDist = dist closestPos = screenVec targetEnemy = part end end end end end return closestPos end local function UpdateAimbot() camera = workspace.CurrentCamera if not camera then return end if not Config.AIM_Enabled or not State.Aiming then targetEnemy = nil return end local mousePos = UserInputService:GetMouseLocation() local aimPos = nil if targetEnemy and targetEnemy.Parent then local screenPos, onScreen = camera:WorldToViewportPoint(targetEnemy.Position) if onScreen then aimPos = Vector2.new(screenPos.X, screenPos.Y) else targetEnemy = nil end end if not aimPos then aimPos = GetClosestEnemyScreenPos() end if not aimPos then return end local deltaX = (aimPos.X - mousePos.X) / Config.AIM_Smooth local deltaY = (aimPos.Y - mousePos.Y) / Config.AIM_Smooth if mousemoverel then mousemoverel(deltaX, deltaY) else local currentCFrame = camera.CFrame local worldPos = camera:ViewportPointToRay(aimPos.X, aimPos.Y).Origin local goalCFrame = CFrame.lookAt(currentCFrame.Position, worldPos) camera.CFrame = currentCFrame:Lerp(goalCFrame, 0.1) end end local Silent = { Hooked = false, CurrentTarget = nil, FOVCircle = nil, Remote = nil } local function GetSilentTarget() camera = workspace.CurrentCamera if not camera then return nil end local mousePos = UserInputService:GetMouseLocation() local localTeam = GetPlayerTeam(LocalPlayer) local charsFolder = GetCharactersFolder() local collisions = workspace:FindFirstChild("CharacterCollisions") local bestTarget = nil local bestDist = Config.SILENT_FOV for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local character = charsFolder and charsFolder:FindFirstChild(player.Name) if not character then continue end local playerTeam = GetPlayerTeam(player) local isEnemy = true if Config.SILENT_TeamCheck and localTeam and playerTeam then isEnemy = localTeam ~= playerTeam end if not isEnemy then continue end local targetPart = nil local hitPartName = "Neck" if collisions then local playerHitbox = collisions:FindFirstChild(player.Name) if playerHitbox then targetPart = playerHitbox:FindFirstChild("Neck") or playerHitbox:FindFirstChild("Head") or playerHitbox:FindFirstChild("Chest") or playerHitbox:FindFirstChild("Torso") if targetPart then hitPartName = targetPart.Name end end end if not targetPart then targetPart = character:FindFirstChild("Top") or character:FindFirstChild("Center") or character:FindFirstChild("head_only") or character:FindFirstChild("Head") hitPartName = "Neck" end if not targetPart then continue end local screenPos, onScreen = camera:WorldToViewportPoint(targetPart.Position) if not onScreen or screenPos.Z <= 0 then continue end local screenVec = Vector2.new(screenPos.X, screenPos.Y) local dist = (mousePos - screenVec).Magnitude if dist < bestDist then bestDist = dist bestTarget = { Player = player, Character = character, Head = targetPart, Position = targetPart.Position, HitPartName = hitPartName } end end Silent.CurrentTarget = bestTarget return bestTarget end local function GetSilentTargetDirection(origin) local target = GetSilentTarget() if not target then return nil end return (target.Position - origin).Unit end local function SetupSilentAim() if Silent.Hooked then return end Silent.FOVCircle = Drawing.new("Circle") Silent.FOVCircle.Thickness = 1 Silent.FOVCircle.NumSides = 50 Silent.FOVCircle.Filled = false Silent.FOVCircle.Color = Color3.fromRGB(255, 200, 50) Silent.FOVCircle.Visible = false local Remotes = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes") if Remotes then Silent.Remote = Remotes:GetChildren()[1] end if getgc then pcall(function() for _, v in ipairs(getgc(true)) do if type(v) == "table" then local fireUnsafe = rawget(v, "fireServerUnsafe") if fireUnsafe and type(fireUnsafe) == "function" then local oldFire = v.fireServerUnsafe v.fireServerUnsafe = function(eventName, data, ...) if Config.SILENT_Enabled and not State.Unloaded then if eventName == "sendBullet" and type(data) == "table" and data.direction then local cam = workspace.CurrentCamera if cam then local newDir = GetSilentTargetDirection(cam.CFrame.Position) if newDir then data.direction = newDir end end end end return oldFire(eventName, data, ...) end Silent.Hooked = true end local newFunc = rawget(v, "new") if newFunc and type(newFunc) == "function" and not Silent.Hooked then local info = debug.getinfo and debug.getinfo(newFunc) if info then local src = info.source or "" if src:find("Hitscan") or src:find("Raycasting") then local oldNew = v.new v.new = function(params, ...) if Config.SILENT_Enabled and not State.Unloaded and params and type(params) == "table" then if params.direction and params.position and params.damaging then local newDir = GetSilentTargetDirection(params.position) if newDir then params.direction = newDir end end end return oldNew(params, ...) end Silent.Hooked = true end end end end end end) end if not Silent.Hooked and hookmetamethod and getnamecallmethod then pcall(function() local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) local args = {...} local method = getnamecallmethod() if not State.Unloaded and Config.SILENT_Enabled then if method == "FireServer" and Silent.Remote and self == Silent.Remote then if args[1] == "sendBullet" and type(args[2]) == "table" and args[2].direction then local cam = workspace.CurrentCamera if cam then local newDir = GetSilentTargetDirection(cam.CFrame.Position) if newDir then args[2].direction = newDir end end return oldNamecall(self, unpack(args)) end end if method == "Raycast" and self == workspace then local origin = args[1] local direction = args[2] if origin and direction then local target = GetSilentTarget() if target then local newDir = (target.Position - origin).Unit * direction.Magnitude return oldNamecall(self, origin, newDir, args[3]) end end end end return oldNamecall(self, ...) end) Silent.Hooked = true end) end if not Silent.Hooked and hookfunction then pcall(function() local oldRaycast = workspace.Raycast local newRaycast = function(self, origin, direction, params, ...) if Config.SILENT_Enabled and not State.Unloaded and origin and direction then local target = GetSilentTarget() if target then local newDir = (target.Position - origin).Unit * direction.Magnitude return oldRaycast(self, origin, newDir, params, ...) end end return oldRaycast(self, origin, direction, params, ...) end hookfunction(workspace.Raycast, newRaycast) Silent.Hooked = true end) end end local function UpdateSilentFOV() if not Silent.FOVCircle then return end if Config.SILENT_Enabled then local mousePos = UserInputService:GetMouseLocation() Silent.FOVCircle.Position = mousePos Silent.FOVCircle.Radius = Config.SILENT_FOV Silent.FOVCircle.Color = Silent.CurrentTarget and Color3.fromRGB(50, 255, 50) or Color3.fromRGB(255, 200, 50) Silent.FOVCircle.Visible = true else Silent.FOVCircle.Visible = false end end local WeaponList = { "aa12", "ak74", "cz75", "d870", "g17", "l86", "m107a1", "m1911", "m300", "m4a1", "mp412", "mp9", "odin", "pp2000", "psrl", "rp9", "socom", "spas12", "stinger", "thumper", "ump45", "vulcan", "wa2000" } local function GetEquippedWeapon() local myChar = GetLocalCharacter() if not myChar then return "weapon_m4a1", "weaponEquipSlot_primary", false end local loadoutData = myChar:FindFirstChild("LoadoutData") if loadoutData then for _, child in ipairs(loadoutData:GetChildren()) do if child:IsA("StringValue") or child:IsA("ObjectValue") then local val = tostring(child.Value or child.Name) for _, wep in ipairs(WeaponList) do if val:lower():find(wep:lower()) then return "weapon_" .. wep, "weaponEquipSlot_primary", false end end end end end local weaponRigs = workspace:FindFirstChild("WeaponRigs") if weaponRigs then local myRig = weaponRigs:FindFirstChild(LocalPlayer.Name) if myRig then for _, child in ipairs(myRig:GetDescendants()) do local name = child.Name:lower() for _, wep in ipairs(WeaponList) do if name:find(wep:lower()) then return "weapon_" .. wep, "weaponEquipSlot_primary", false end end end end end local cam = workspace.CurrentCamera if cam then local viewModel = cam:FindFirstChild("ViewModel") if viewModel then for _, child in ipairs(viewModel:GetDescendants()) do local name = child.Name:lower() for _, wep in ipairs(WeaponList) do if name:find(wep:lower()) then return "weapon_" .. wep, "weaponEquipSlot_primary", false end end end end end return "weapon_m4a1", "weaponEquipSlot_primary", false end Silent.LastShotTime = 0 Silent.RaycastHooked = false local function InjectSilentDamage() local target = GetSilentTarget() if not target or not target.Player or not target.Character then return false end Cache.LocalChar = nil Cache.LocalCharTime = 0 local charsFolder = workspace:FindFirstChild("Characters") if not charsFolder then return false end local myChar = charsFolder:FindFirstChild(LocalPlayer.Name) if not myChar or not myChar.Parent then return false end local cam = workspace.CurrentCamera if not cam then return false end local charIdValue = target.Character:FindFirstChild("CharacterId") local myCharIdValue = myChar:FindFirstChild("CharacterId") if not charIdValue or not myCharIdValue then return false end local Remotes = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes") if not Remotes then return false end local Remote = Remotes:GetChildren()[1] if not Remote then return false end local weapon, slot, silenced = GetEquippedWeapon() local hitPart = target.HitPartName or "Neck" local direction = (target.Position - cam.CFrame.Position).Unit local impactCFrame = CFrame.lookAt(target.Position, target.Position + direction) pcall(function() Remote:FireServer("requestHitscanDamage", { hitPartName = hitPart, raycastPos = target.Position, characterId = charIdValue.Value, ownCharacterId = myCharIdValue.Value, camPos = cam.CFrame.Position, damagePlayer = target.Player, silenced = silenced, scoped = false, weaponEquipSlot = slot, weapon = weapon }) end) pcall(function() Remote:FireServer("sendBullet", { direction = direction, hitMaterial = "Flesh", impactCFrame = impactCFrame }) end) pcall(function() local ctc = game:GetService("ReplicatedStorage"):FindFirstChild("clientToClient") if ctc then local hm = ctc:FindFirstChild("hitmarker") if hm then hm:Fire(true) end end end) return true end Silent.IsShooting = false local function SetupSilentRaycastHook() if Silent.RaycastHooked then return end if not hookmetamethod or not getnamecallmethod then return end pcall(function() local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) local method = getnamecallmethod() if method == "Raycast" and self == workspace then if Config.SILENT_Enabled and not Config.SILENT_Rage and not State.Unloaded and Silent.IsShooting then local args = {...} local origin = args[1] local direction = args[2] if origin and direction then local cam = workspace.CurrentCamera if cam then local camPos = cam.CFrame.Position local distFromCam = (origin - camPos).Magnitude if distFromCam < 5 then local now = tick() if now - Silent.LastShotTime > 0.05 then Silent.LastShotTime = now task.spawn(InjectSilentDamage) end end end end end end return oldNamecall(self, ...) end) Silent.RaycastHooked = true end) end local function InjectDamageToAll() local cam = workspace.CurrentCamera if not cam then return end local charsFolder = workspace:FindFirstChild("Characters") if not charsFolder then return end local myChar = charsFolder:FindFirstChild(LocalPlayer.Name) if not myChar or not myChar.Parent then return end local myCharIdValue = myChar:FindFirstChild("CharacterId") if not myCharIdValue then return end local localTeam = GetPlayerTeam(LocalPlayer) local collisions = workspace:FindFirstChild("CharacterCollisions") local Remotes = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes") if not Remotes then return end local Remote = Remotes:GetChildren()[1] if not Remote then return end local weapon, slot, silenced = GetEquippedWeapon() for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local playerTeam = GetPlayerTeam(player) local isEnemy = true if Config.SILENT_TeamCheck and localTeam and playerTeam then isEnemy = localTeam ~= playerTeam end if not isEnemy then continue end local character = charsFolder:FindFirstChild(player.Name) if not character then continue end local charIdValue = character:FindFirstChild("CharacterId") if not charIdValue then continue end local hitPart, hitPartName = nil, "Neck" if collisions then local playerHitbox = collisions:FindFirstChild(player.Name) if playerHitbox then hitPart = playerHitbox:FindFirstChild("Neck") or playerHitbox:FindFirstChild("Head") or playerHitbox:FindFirstChild("Chest") if hitPart then hitPartName = hitPart.Name end end end if not hitPart then hitPart = character:FindFirstChild("Top") or character:FindFirstChild("Center") end if not hitPart then continue end local direction = (hitPart.Position - cam.CFrame.Position).Unit local impactCFrame = CFrame.lookAt(hitPart.Position, hitPart.Position + direction) pcall(function() Remote:FireServer("requestHitscanDamage", { hitPartName = hitPartName, raycastPos = hitPart.Position, characterId = charIdValue.Value, ownCharacterId = myCharIdValue.Value, camPos = cam.CFrame.Position, damagePlayer = player, silenced = silenced, scoped = false, weaponEquipSlot = slot, weapon = weapon }) end) pcall(function() Remote:FireServer("sendBullet", { direction = direction, hitMaterial = "Flesh", impactCFrame = impactCFrame }) end) end pcall(function() local ctc = game:GetService("ReplicatedStorage"):FindFirstChild("clientToClient") if ctc then local hm = ctc:FindFirstChild("hitmarker") if hm then hm:Fire(true) end end end) end local function RageLoop() while not State.Unloaded do if Config.SILENT_Enabled and Config.SILENT_Rage then pcall(InjectDamageToAll) end task.wait(0.03) end end local function OnSilentAimShoot() end local function UpdateSilentSnap() end task.spawn(function() task.wait(1) pcall(SetupSilentAim) pcall(SetupSilentRaycastHook) task.spawn(RageLoop) end) local function ClearAllCaches() Cache.LocalChar = nil Cache.LocalCharTime = 0 Cache.CharactersFolder = nil Cache.CharactersFolderTime = 0 Cache.TeamCache = {} Cache.VisCache = {} Silent.CurrentTarget = nil Silent.IsShooting = false end local function ClearTargetCache() Cache.TeamCache = {} Cache.VisCache = {} Silent.CurrentTarget = nil end LocalPlayer.CharacterAdded:Connect(function() ClearAllCaches() end) if LocalPlayer.Character then LocalPlayer.Character:GetPropertyChangedSignal("Parent"):Connect(function() if not LocalPlayer.Character or not LocalPlayer.Character.Parent then ClearAllCaches() end end) end task.spawn(function() task.wait(2) local charsFolder = workspace:FindFirstChild("Characters") if charsFolder then charsFolder.ChildAdded:Connect(function() ClearTargetCache() end) charsFolder.ChildRemoved:Connect(function() ClearTargetCache() end) end local collisionsFolder = workspace:FindFirstChild("CharacterCollisions") if collisionsFolder then collisionsFolder.ChildAdded:Connect(function() ClearTargetCache() end) collisionsFolder.ChildRemoved:Connect(function() ClearTargetCache() end) end end) local function CreateESP(player) if espObjects[player] then return end local box = Drawing.new("Square") if not box then return end box.Color = Color3.new(1, 0, 0) box.Thickness = 1 box.Filled = false box.Visible = false local name = Drawing.new("Text") if not name then box:Remove() return end name.Text = player.Name name.Color = Color3.new(1, 1, 1) name.Size = 14 name.Center = true name.Outline = true name.Visible = false local tracer = Drawing.new("Line") if not tracer then box:Remove() name:Remove() return end tracer.Color = Color3.new(1, 0, 0) tracer.Thickness = 1 tracer.Visible = false local dist = Drawing.new("Text") if not dist then box:Remove() name:Remove() tracer:Remove() return end dist.Size = 12 dist.Center = true dist.Outline = true dist.OutlineColor = Color3.new(0, 0, 0) dist.Visible = false espObjects[player] = { Box = box, Name = name, Tracer = tracer, Distance = dist } end local function RemoveESP(player) if espObjects[player] then if espObjects[player].Box then espObjects[player].Box:Remove() end if espObjects[player].Name then espObjects[player].Name:Remove() end if espObjects[player].Tracer then espObjects[player].Tracer:Remove() end if espObjects[player].Distance then espObjects[player].Distance:Remove() end espObjects[player] = nil end end local function CleanupAllESP() for player, esp in pairs(espObjects) do if esp.Box then esp.Box:Remove() end if esp.Name then esp.Name:Remove() end if esp.Tracer then esp.Tracer:Remove() end if esp.Distance then esp.Distance:Remove() end end espObjects = {} end local function UpdateESP() camera = workspace.CurrentCamera if not camera then return end if not Config.ESP_Enabled then CleanupAllESP() return end local localTeam = GetPlayerTeam(LocalPlayer) local charsFolder = GetCharactersFolder() for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local character = charsFolder and charsFolder:FindFirstChild(player.Name) local playerTeam = GetPlayerTeam(player) if not character or not playerTeam then if espObjects[player] then RemoveESP(player) end continue end if not espObjects[player] then CreateESP(player) end local esp = espObjects[player] if not esp or not esp.Box or not esp.Name or not esp.Tracer or not esp.Distance then RemoveESP(player) CreateESP(player) esp = espObjects[player] if not esp then continue end end local targetPart = GetTargetPart(character) if not targetPart then esp.Box.Visible = false esp.Name.Visible = false esp.Tracer.Visible = false esp.Distance.Visible = false continue end local rootPos, onScreen = camera:WorldToViewportPoint(targetPart.Position) if not onScreen then esp.Box.Visible = false esp.Name.Visible = false esp.Tracer.Visible = false esp.Distance.Visible = false continue end local distance = GetDistance(targetPart.Position) local isEnemy = true if Config.ESP_TeamCheck and localTeam and playerTeam then isEnemy = localTeam ~= playerTeam end if isEnemy then local visible = IsVisible(targetPart) local col = Config.ESP_Rainbow and GetRainbow() or (visible and Palette.ESP_Visible or Palette.ESP_Enemy) local boxHeight = 1400 / math.max(rootPos.Z, 1) boxHeight = math.clamp(boxHeight, 20, 400) local boxWidth = boxHeight * 0.55 if Config.ESP_Box then esp.Box.Size = Vector2.new(boxWidth, boxHeight) esp.Box.Position = Vector2.new(rootPos.X - boxWidth / 2, rootPos.Y - boxHeight * 0.55) esp.Box.Color = col esp.Box.Visible = true else esp.Box.Visible = false end if Config.ESP_Name then esp.Name.Position = Vector2.new(rootPos.X, rootPos.Y - boxHeight * 0.55 - 16) esp.Name.Visible = true else esp.Name.Visible = false end if Config.ESP_Tracer then esp.Tracer.From = Vector2.new(rootPos.X, rootPos.Y + boxHeight * 0.45) esp.Tracer.To = Vector2.new(rootPos.X, camera.ViewportSize.Y) esp.Tracer.Color = col esp.Tracer.Visible = true else esp.Tracer.Visible = false end if Config.ESP_Distance then esp.Distance.Text = math.floor(distance) .. "m" esp.Distance.Position = Vector2.new(rootPos.X, rootPos.Y + boxHeight * 0.45 + 4) esp.Distance.Color = Color3.new(1, 1, 1) esp.Distance.Visible = true else esp.Distance.Visible = false end else esp.Box.Visible = false esp.Name.Visible = false esp.Tracer.Visible = false esp.Distance.Visible = false end end end local fovCircle = Drawing.new("Circle") fovCircle.Thickness = 1 fovCircle.NumSides = Tuning.FOVSegments fovCircle.Filled = false fovCircle.Visible = false local function UpdateFOV() if Config.AIM_Enabled and Config.AIM_FOVEnabled then local mousePos = UserInputService:GetMouseLocation() fovCircle.Position = mousePos fovCircle.Radius = Config.AIM_FOV fovCircle.Color = State.Aiming and Palette.FOV_Active or Palette.FOV_Circle fovCircle.Visible = true else fovCircle.Visible = false end end local Radar = { bg = Drawing.new("Square"), border = Drawing.new("Square"), cross1 = Drawing.new("Line"), cross2 = Drawing.new("Line"), center = Drawing.new("Triangle"), dots = {} } do Radar.bg.Filled = true Radar.bg.Color = Palette.RadarBg Radar.bg.Transparency = 0.85 Radar.bg.Visible = false Radar.border.Filled = false Radar.border.Color = Palette.RadarBorder Radar.border.Thickness = 1 Radar.border.Visible = false Radar.cross1.Color = Palette.RadarGrid Radar.cross1.Thickness = 1 Radar.cross1.Visible = false Radar.cross2.Color = Palette.RadarGrid Radar.cross2.Thickness = 1 Radar.cross2.Visible = false Radar.center.Filled = true Radar.center.Color = Palette.RadarYou Radar.center.Visible = false for i = 1, 30 do local d = Drawing.new("Triangle") d.Filled = true d.Color = Palette.RadarEnemy d.Visible = false Radar.dots[i] = d end end local Compass = { bg = Drawing.new("Square"), bgGrad = Drawing.new("Square"), texts = {}, ticks = {}, indicators = {}, centerLine = Drawing.new("Line") } do Compass.bg.Filled = true Compass.bg.Color = Palette.CompassBg Compass.bg.Transparency = 0.6 Compass.bg.Visible = false Compass.bgGrad.Filled = true Compass.bgGrad.Transparency = 0.8 Compass.bgGrad.Visible = false Compass.centerLine.Color = Palette.RadarYou Compass.centerLine.Thickness = 2 Compass.centerLine.Visible = false local cardinals = {"N", "15", "30", "NE", "60", "75", "E", "105", "120", "SE", "150", "165", "S", "195", "210", "SW", "240", "255", "W", "285", "300", "NW", "330", "345"} for i = 1, 24 do local t = Drawing.new("Text") t.Size = 12 t.Font = Drawing.Fonts.Monospace t.Center = true t.Outline = true t.Text = cardinals[i] t.Visible = false Compass.texts[i] = t end for i = 1, 72 do local tick = Drawing.new("Line") tick.Color = Palette.CompassTick tick.Thickness = 1 tick.Visible = false Compass.ticks[i] = tick end for i = 1, 20 do local ind = Drawing.new("Triangle") ind.Filled = true ind.Color = Palette.CompassEnemy ind.Visible = false Compass.indicators[i] = ind end end local function HideRadar() Radar.bg.Visible = false Radar.border.Visible = false Radar.cross1.Visible = false Radar.cross2.Visible = false Radar.center.Visible = false for _, d in ipairs(Radar.dots) do d.Visible = false end end local function HideCompass() Compass.bg.Visible = false Compass.bgGrad.Visible = false Compass.centerLine.Visible = false for _, t in ipairs(Compass.texts) do t.Visible = false end for _, t in ipairs(Compass.ticks) do t.Visible = false end for _, i in ipairs(Compass.indicators) do i.Visible = false end end local function Update2DRadar() camera = workspace.CurrentCamera if not camera then HideRadar() return end local myChar = GetLocalCharacter() if not myChar then HideRadar() return end local myRoot = GetTargetPart(myChar) if not myRoot then HideRadar() return end local charsFolder = GetCharactersFolder() local size = Config.RADAR_Size local screenSize = camera.ViewportSize local defaultPos = Vector2.new(screenSize.X - size - 160, 15) local pos = State.Radar2D_Pos or defaultPos local center = pos + Vector2.new(size/2, size/2) Radar.bg.Position = pos Radar.bg.Size = Vector2.new(size, size) Radar.bg.Visible = true Radar.border.Position = pos Radar.border.Size = Vector2.new(size, size) Radar.border.Color = Config.RADAR_MoveMode and Color3.fromRGB(255, 200, 50) or Palette.RadarBorder Radar.border.Thickness = Config.RADAR_MoveMode and 2 or 1 Radar.border.Visible = true Radar.cross1.From = Vector2.new(center.X, pos.Y + 6) Radar.cross1.To = Vector2.new(center.X, pos.Y + size - 6) Radar.cross1.Visible = true Radar.cross2.From = Vector2.new(pos.X + 6, center.Y) Radar.cross2.To = Vector2.new(pos.X + size - 6, center.Y) Radar.cross2.Visible = true local myLook = camera.CFrame.LookVector local myAngle = math.atan2(-myLook.X, -myLook.Z) local cosA, sinA = math.cos(myAngle), math.sin(myAngle) local scale = (size/2 - 6) / Config.RADAR_Range local localTeam = GetPlayerTeam(LocalPlayer) local dotIdx = 1 for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local character = charsFolder and charsFolder:FindFirstChild(player.Name) local playerTeam = GetPlayerTeam(player) if not character or not playerTeam then continue end local isEnemy = true if Config.ESP_TeamCheck and localTeam and playerTeam then isEnemy = localTeam ~= playerTeam end if not isEnemy then continue end local root = GetTargetPart(character) if not root then continue end local rx = root.Position.X - myRoot.Position.X local rz = root.Position.Z - myRoot.Position.Z local dist2D = math.sqrt(rx^2 + rz^2) if dist2D < Config.RADAR_Range then local rotX = rx * cosA - rz * sinA local rotZ = rx * sinA + rz * cosA local radarX, radarY = rotX * scale, rotZ * scale local maxD = size/2 - 6 local rDist = math.sqrt(radarX^2 + radarY^2) if rDist > maxD then radarX, radarY = radarX/rDist * maxD, radarY/rDist * maxD end local dotPos = center + Vector2.new(radarX, radarY) if dotIdx <= #Radar.dots then local dot = Radar.dots[dotIdx] local ds = 8 local eAngle = 0 local lookPart = character:FindFirstChild("head_only") or character:FindFirstChild("Head") or character:FindFirstChild("TPVBodyVanillaHead") or character:FindFirstChild("helmet") or character:FindFirstChild("TPVBodyVanillaTorsoFront") or root if lookPart and lookPart:IsA("BasePart") then local lookVec = lookPart.CFrame.LookVector eAngle = math.atan2(-lookVec.X, -lookVec.Z) - myAngle end local eFwd = Vector2.new(-math.sin(eAngle), -math.cos(eAngle)) local eRight = Vector2.new(-eFwd.Y, eFwd.X) dot.PointA = dotPos + eFwd * ds dot.PointB = dotPos - eFwd * ds/2 + eRight * ds/2 dot.PointC = dotPos - eFwd * ds/2 - eRight * ds/2 local visible = IsVisible(root) dot.Color = visible and Palette.ESP_Visible or Palette.ESP_Enemy dot.Visible = true dotIdx = dotIdx + 1 end end end for i = dotIdx, #Radar.dots do Radar.dots[i].Visible = false end local as = Tuning.RadarArrowSize Radar.center.PointA = center + Vector2.new(0, -as) Radar.center.PointB = center + Vector2.new(-as/2, as/2) Radar.center.PointC = center + Vector2.new(as/2, as/2) Radar.center.Visible = true end local function UpdateHUDRadar() camera = workspace.CurrentCamera if not camera then HideCompass() return end local myChar = GetLocalCharacter() if not myChar then HideCompass() return end local myRoot = GetTargetPart(myChar) if not myRoot then HideCompass() return end local charsFolder = GetCharactersFolder() local screenSize = camera.ViewportSize local cw = Tuning.CompassWidth local ch = Tuning.CompassHeight local defaultCx = screenSize.X / 2 - cw / 2 local defaultCy = 70 local hudPos = State.RadarHUD_Pos or Vector2.new(defaultCx, defaultCy) local cx = hudPos.X local cy = hudPos.Y Compass.bg.Position = Vector2.new(cx, cy) Compass.bg.Size = Vector2.new(cw, ch) Compass.bg.Color = Config.RADAR_MoveMode and Color3.fromRGB(50, 40, 20) or Palette.CompassBg Compass.bg.Visible = true local myLook = camera.CFrame.LookVector local myYaw = math.deg(math.atan2(-myLook.X, -myLook.Z)) if myYaw < 0 then myYaw = myYaw + 360 end local centerX = cx + cw / 2 Compass.centerLine.From = Vector2.new(centerX, cy + 2) Compass.centerLine.To = Vector2.new(centerX, cy + ch - 2) Compass.centerLine.Color = Config.RADAR_MoveMode and Color3.fromRGB(255, 200, 50) or Palette.RadarYou Compass.centerLine.Visible = true local cardinalData = { [0] = "N", [45] = "NE", [90] = "E", [135] = "SE", [180] = "S", [225] = "SW", [270] = "W", [315] = "NW" } local textIdx = 1 local tickIdx = 1 local fov = 90 local pixPerDeg = cw / fov for deg = 0, 359, 15 do local diff = deg - myYaw if diff > 180 then diff = diff - 360 end if diff < -180 then diff = diff + 360 end if math.abs(diff) <= fov / 2 then local screenX = centerX - diff * pixPerDeg local cardinalText = cardinalData[deg] local isCardinal = cardinalText ~= nil if tickIdx <= #Compass.ticks then local tick = Compass.ticks[tickIdx] local tickH = isCardinal and 14 or 8 tick.From = Vector2.new(screenX, cy + ch - tickH - 2) tick.To = Vector2.new(screenX, cy + ch - 2) tick.Color = isCardinal and Color3.new(1, 1, 1) or Palette.CompassTick tick.Visible = true tickIdx = tickIdx + 1 end if textIdx <= #Compass.texts then local t = Compass.texts[textIdx] if isCardinal then t.Text = cardinalText t.Color = Color3.new(1, 1, 1) t.Size = 14 else t.Text = tostring(deg) t.Color = Palette.CompassText t.Size = 10 end t.Position = Vector2.new(screenX, cy + 5) t.Visible = true textIdx = textIdx + 1 end end end for i = textIdx, #Compass.texts do Compass.texts[i].Visible = false end for i = tickIdx, #Compass.ticks do Compass.ticks[i].Visible = false end local localTeam = GetPlayerTeam(LocalPlayer) local indIdx = 1 for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local character = charsFolder and charsFolder:FindFirstChild(player.Name) local playerTeam = GetPlayerTeam(player) if not character or not playerTeam then continue end local isEnemy = true if Config.ESP_TeamCheck and localTeam and playerTeam then isEnemy = localTeam ~= playerTeam end if not isEnemy then continue end local root = GetTargetPart(character) if not root then continue end local dx = root.Position.X - myRoot.Position.X local dz = root.Position.Z - myRoot.Position.Z local dist = math.sqrt(dx^2 + dz^2) if dist < Config.RADAR_Range then local enemyYaw = math.deg(math.atan2(-dx, -dz)) if enemyYaw < 0 then enemyYaw = enemyYaw + 360 end local diff = enemyYaw - myYaw if diff > 180 then diff = diff - 360 end if diff < -180 then diff = diff + 360 end if math.abs(diff) <= fov / 2 then local screenX = centerX - diff * pixPerDeg if indIdx <= #Compass.indicators then local ind = Compass.indicators[indIdx] local sz = 8 local indY = cy + ch + 6 local lookPart = character:FindFirstChild("head_only") or character:FindFirstChild("Head") or character:FindFirstChild("TPVBodyVanillaHead") or character:FindFirstChild("helmet") or character:FindFirstChild("TPVBodyVanillaTorsoFront") or root local facingAngle = 0 if lookPart and lookPart:IsA("BasePart") then local enemyLook = lookPart.CFrame.LookVector local enemyFacingYaw = math.deg(math.atan2(-enemyLook.X, -enemyLook.Z)) if enemyFacingYaw < 0 then enemyFacingYaw = enemyFacingYaw + 360 end facingAngle = math.rad(myYaw - enemyFacingYaw) end local fwdX = math.sin(facingAngle) local fwdY = -math.cos(facingAngle) local rightX = fwdY local rightY = -fwdX ind.PointA = Vector2.new(screenX + fwdX * sz, indY + fwdY * sz) ind.PointB = Vector2.new(screenX - fwdX * sz * 0.5 - rightX * sz * 0.5, indY - fwdY * sz * 0.5 - rightY * sz * 0.5) ind.PointC = Vector2.new(screenX - fwdX * sz * 0.5 + rightX * sz * 0.5, indY - fwdY * sz * 0.5 + rightY * sz * 0.5) local visible = IsVisible(root) ind.Color = visible and Palette.ESP_Visible or Palette.ESP_Enemy ind.Visible = true indIdx = indIdx + 1 end end end end for i = indIdx, #Compass.indicators do Compass.indicators[i].Visible = false end end local function UpdateRadar() if not Config.RADAR_Enabled then HideRadar() HideCompass() return end if Config.RADAR_Mode == "2D" then HideCompass() Update2DRadar() else HideRadar() UpdateHUDRadar() end end local UI = {} UI.ScreenGui = Instance.new("ScreenGui") UI.ScreenGui.Name = "RiotfallUI" UI.ScreenGui.ResetOnSpawn = false UI.ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling UI.ScreenGui.DisplayOrder = 999 pcall(function() UI.ScreenGui.Parent = game:GetService("CoreGui") end) if not UI.ScreenGui.Parent then UI.ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end local function CreateWatermark() local label = Instance.new("TextLabel") label.Name = "Watermark" label.BackgroundTransparency = 1 label.Position = UDim2.new(0, 10, 0, 8) label.Size = UDim2.new(0, 200, 0, 20) label.Font = Enum.Font.RobotoMono label.TextSize = 14 label.TextColor3 = Palette.Accent label.TextXAlignment = Enum.TextXAlignment.Left label.TextStrokeTransparency = 0.6 label.Text = "riotfall by leet" label.Parent = UI.ScreenGui return label end local function CreateActiveList() local frame = Instance.new("Frame") frame.Name = "ActiveList" frame.BackgroundTransparency = 1 frame.AnchorPoint = Vector2.new(1, 0) frame.Position = UDim2.new(1, -10, 0, 8) frame.Size = UDim2.new(0, 150, 0, 300) frame.Parent = UI.ScreenGui local layout = Instance.new("UIListLayout") layout.FillDirection = Enum.FillDirection.Vertical layout.HorizontalAlignment = Enum.HorizontalAlignment.Right layout.SortOrder = Enum.SortOrder.Name layout.Padding = UDim.new(0, 1) layout.Parent = frame return frame end local function RefreshActiveList(frame) for _, child in ipairs(frame:GetChildren()) do if child:IsA("TextLabel") then child:Destroy() end end if not Config.MISC_ActiveList then return end local features = {} if Config.ESP_Enabled then table.insert(features, "ESP") end if Config.ESP_Box then table.insert(features, "Box") end if Config.ESP_Name then table.insert(features, "Names") end if Config.ESP_Distance then table.insert(features, "Distance") end if Config.ESP_Tracer then table.insert(features, "Tracers") end if Config.AIM_Enabled then table.insert(features, "Aimbot") end if Config.SILENT_Enabled then table.insert(features, "Silent Aim") end if Config.RADAR_Enabled then table.insert(features, "Radar [" .. Config.RADAR_Mode .. "]") end if Config.RADAR_MoveMode then table.insert(features, "Move Mode") end for i, name in ipairs(features) do local lbl = Instance.new("TextLabel") lbl.Name = string.format("%02d", i) .. name lbl.BackgroundTransparency = 1 lbl.Size = UDim2.new(1, 0, 0, 16) lbl.Font = Enum.Font.RobotoMono lbl.TextSize = 13 lbl.TextColor3 = Palette.ItemOn lbl.TextXAlignment = Enum.TextXAlignment.Right lbl.TextStrokeTransparency = 0.6 lbl.Text = name lbl.Parent = frame end end local function CreatePanel(title, items, pos) local totalHeight = Tuning.PanelHeaderH for _, item in ipairs(items) do if item.type == "slider" then totalHeight = totalHeight + Tuning.SliderHeight else totalHeight = totalHeight + Tuning.ItemHeight end end totalHeight = totalHeight + 6 local panel = Instance.new("Frame") panel.Name = title panel.BackgroundColor3 = Palette.PanelBg panel.BackgroundTransparency = 0.08 panel.BorderSizePixel = 0 panel.Position = pos panel.Size = UDim2.new(0, Tuning.PanelWidth, 0, totalHeight) panel.Active = true panel.Draggable = true panel.Parent = UI.ScreenGui local stroke = Instance.new("UIStroke") stroke.Color = Palette.PanelBorder stroke.Thickness = 1 stroke.Parent = panel local header = Instance.new("Frame") header.Name = "Header" header.BackgroundColor3 = Palette.PanelHeader header.BackgroundTransparency = 0.05 header.BorderSizePixel = 0 header.Size = UDim2.new(1, 0, 0, Tuning.PanelHeaderH) header.Parent = panel local titleLabel = Instance.new("TextLabel") titleLabel.Name = "Title" titleLabel.BackgroundTransparency = 1 titleLabel.Size = UDim2.new(1, 0, 1, 0) titleLabel.Font = Enum.Font.GothamBold titleLabel.TextSize = Tuning.FontSize titleLabel.TextColor3 = Palette.Text titleLabel.Text = title titleLabel.Parent = header local yOffset = Tuning.PanelHeaderH + 3 for _, item in ipairs(items) do if item.type == "toggle" then local btn = Instance.new("TextButton") btn.Name = item.key btn.BackgroundColor3 = Palette.ItemHover btn.BackgroundTransparency = 1 btn.BorderSizePixel = 0 btn.Position = UDim2.new(0, 0, 0, yOffset) btn.Size = UDim2.new(1, 0, 0, Tuning.ItemHeight) btn.Font = Enum.Font.RobotoMono btn.TextSize = Tuning.FontSize btn.TextXAlignment = Enum.TextXAlignment.Left btn.AutoButtonColor = false btn.Parent = panel local pad = Instance.new("UIPadding") pad.PaddingLeft = UDim.new(0, 10) pad.Parent = btn local function Update() btn.TextColor3 = Config[item.key] and Palette.ItemOn or Palette.ItemOff btn.Text = item.name end Update() btn.MouseEnter:Connect(function() btn.BackgroundTransparency = 0.5 end) btn.MouseLeave:Connect(function() btn.BackgroundTransparency = 1 end) btn.MouseButton1Click:Connect(function() Config[item.key] = not Config[item.key] Update() if UI.ActiveList then RefreshActiveList(UI.ActiveList) end end) yOffset = yOffset + Tuning.ItemHeight elseif item.type == "dropdown" then local btn = Instance.new("TextButton") btn.Name = item.key btn.BackgroundColor3 = Palette.ItemHover btn.BackgroundTransparency = 1 btn.BorderSizePixel = 0 btn.Position = UDim2.new(0, 0, 0, yOffset) btn.Size = UDim2.new(1, 0, 0, Tuning.ItemHeight) btn.Font = Enum.Font.RobotoMono btn.TextSize = Tuning.FontSize btn.TextXAlignment = Enum.TextXAlignment.Left btn.AutoButtonColor = false btn.Parent = panel local pad = Instance.new("UIPadding") pad.PaddingLeft = UDim.new(0, 10) pad.Parent = btn local idx = 1 for i, opt in ipairs(item.options) do if opt == Config[item.key] then idx = i break end end local function Update() btn.Text = item.name .. ": " .. Config[item.key] btn.TextColor3 = Palette.ItemOff end Update() btn.MouseEnter:Connect(function() btn.BackgroundTransparency = 0.5 end) btn.MouseLeave:Connect(function() btn.BackgroundTransparency = 1 end) btn.MouseButton1Click:Connect(function() idx = idx % #item.options + 1 Config[item.key] = item.options[idx] Update() end) yOffset = yOffset + Tuning.ItemHeight elseif item.type == "slider" then local container = Instance.new("Frame") container.Name = item.key container.BackgroundTransparency = 1 container.Position = UDim2.new(0, 10, 0, yOffset) container.Size = UDim2.new(1, -20, 0, Tuning.SliderHeight - 4) container.Parent = panel local label = Instance.new("TextLabel") label.Name = "Label" label.BackgroundTransparency = 1 label.Size = UDim2.new(1, 0, 0, 16) label.Font = Enum.Font.RobotoMono label.TextSize = 12 label.TextColor3 = Palette.TextDim label.TextXAlignment = Enum.TextXAlignment.Left label.Parent = container local track = Instance.new("Frame") track.Name = "Track" track.BackgroundColor3 = Color3.fromRGB(45, 45, 50) track.BorderSizePixel = 0 track.Position = UDim2.new(0, 0, 0, 18) track.Size = UDim2.new(1, 0, 0, 8) track.Parent = container local trackCorner = Instance.new("UICorner") trackCorner.CornerRadius = UDim.new(0, 4) trackCorner.Parent = track local fill = Instance.new("Frame") fill.Name = "Fill" fill.BackgroundColor3 = Palette.Accent fill.BorderSizePixel = 0 fill.Size = UDim2.new(0, 0, 1, 0) fill.Parent = track local fillCorner = Instance.new("UICorner") fillCorner.CornerRadius = UDim.new(0, 4) fillCorner.Parent = fill local function UpdateSlider() local val = Config[item.key] local pct = (val - item.min) / (item.max - item.min) fill.Size = UDim2.new(pct, 0, 1, 0) label.Text = item.name .. ": " .. tostring(math.floor(val * 10) / 10) end UpdateSlider() local dragging = false track.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true end end) track.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) Connections["slider_" .. item.key] = RunService.RenderStepped:Connect(function() if dragging then local mx = UserInputService:GetMouseLocation().X local tx = track.AbsolutePosition.X local tw = track.AbsoluteSize.X local pct = math.clamp((mx - tx) / tw, 0, 1) local val = item.min + pct * (item.max - item.min) val = math.floor(val / item.step + 0.5) * item.step Config[item.key] = math.clamp(val, item.min, item.max) UpdateSlider() end end) yOffset = yOffset + Tuning.SliderHeight end end return panel end UI.Watermark = CreateWatermark() UI.ActiveList = CreateActiveList() RefreshActiveList(UI.ActiveList) UI.Panels = {} UI.Panels.ESP = CreatePanel("ESP", { {type = "toggle", name = "Enabled", key = "ESP_Enabled"}, {type = "toggle", name = "Box", key = "ESP_Box"}, {type = "toggle", name = "Names", key = "ESP_Name"}, {type = "toggle", name = "Distance", key = "ESP_Distance"}, {type = "toggle", name = "Tracers", key = "ESP_Tracer"}, {type = "toggle", name = "Rainbow", key = "ESP_Rainbow"}, {type = "toggle", name = "TeamCheck", key = "ESP_TeamCheck"} }, UDim2.new(0, 10, 0, 35)) UI.Panels.Aimbot = CreatePanel("Aimbot", { {type = "toggle", name = "Enabled", key = "AIM_Enabled"}, {type = "toggle", name = "ShowFOV", key = "AIM_FOVEnabled"}, {type = "slider", name = "FOV", key = "AIM_FOV", min = 30, max = 400, step = 5}, {type = "slider", name = "Smooth", key = "AIM_Smooth", min = 1, max = 15, step = 0.5} }, UDim2.new(0, 165, 0, 35)) UI.Panels.Silent = CreatePanel("Silent", { {type = "toggle", name = "Enabled", key = "SILENT_Enabled"}, {type = "toggle", name = "Rage Mode", key = "SILENT_Rage"}, {type = "slider", name = "FOV", key = "SILENT_FOV", min = 50, max = 400, step = 10}, {type = "toggle", name = "TeamCheck", key = "SILENT_TeamCheck"} }, UDim2.new(0, 165, 0, 180)) UI.Panels.Radar = CreatePanel("Radar", { {type = "toggle", name = "Enabled", key = "RADAR_Enabled"}, {type = "dropdown", name = "Mode", key = "RADAR_Mode", options = {"2D", "HUD"}}, {type = "toggle", name = "Move Mode", key = "RADAR_MoveMode"}, {type = "slider", name = "Size", key = "RADAR_Size", min = 100, max = 200, step = 10}, {type = "slider", name = "Range", key = "RADAR_Range", min = 50, max = 500, step = 25} }, UDim2.new(0, 320, 0, 35)) UI.Panels.Misc = CreatePanel("Misc", { {type = "toggle", name = "Watermark", key = "MISC_Watermark"}, {type = "toggle", name = "ActiveList", key = "MISC_ActiveList"} }, UDim2.new(0, 475, 0, 35)) local function Unload() if State.Unloaded then return end State.Unloaded = true for _, conn in pairs(Connections) do pcall(function() conn:Disconnect() end) end CleanupAllESP() pcall(function() fovCircle:Remove() end) pcall(function() if Silent.FOVCircle then Silent.FOVCircle:Remove() end end) pcall(function() Radar.bg:Remove() Radar.border:Remove() Radar.cross1:Remove() Radar.cross2:Remove() Radar.center:Remove() for _, d in ipairs(Radar.dots) do d:Remove() end end) pcall(function() Compass.bg:Remove() Compass.bgGrad:Remove() Compass.centerLine:Remove() for _, t in ipairs(Compass.texts) do t:Remove() end for _, t in ipairs(Compass.ticks) do t:Remove() end for _, i in ipairs(Compass.indicators) do i:Remove() end end) pcall(function() UI.ScreenGui:Destroy() end) end local function IsMouseInRect(mousePos, rectPos, rectSize) return mousePos.X >= rectPos.X and mousePos.X <= rectPos.X + rectSize.X and mousePos.Y >= rectPos.Y and mousePos.Y <= rectPos.Y + rectSize.Y end Connections.inputDown = UserInputService.InputBegan:Connect(function(input, gp) if input.KeyCode == Enum.KeyCode.Home then Unload() return end if input.KeyCode == Enum.KeyCode.Insert and not gp then UI.ScreenGui.Enabled = not UI.ScreenGui.Enabled return end if input.UserInputType == Enum.UserInputType.MouseButton2 then State.Aiming = true end if input.UserInputType == Enum.UserInputType.MouseButton1 and not gp then Silent.IsShooting = true task.delay(0.15, function() Silent.IsShooting = false end) end if Config.RADAR_MoveMode and input.UserInputType == Enum.UserInputType.MouseButton1 then local mousePos = UserInputService:GetMouseLocation() local cam = workspace.CurrentCamera if not cam then return end local screenSize = cam.ViewportSize if Config.RADAR_Mode == "2D" then local size = Config.RADAR_Size local defaultPos = Vector2.new(screenSize.X - size - 160, 15) local pos = State.Radar2D_Pos or defaultPos if IsMouseInRect(mousePos, pos, Vector2.new(size, size)) then State.RadarDragging = "2D" State.RadarDragOffset = mousePos - pos end elseif Config.RADAR_Mode == "HUD" then local cw = Tuning.CompassWidth local ch = Tuning.CompassHeight local defaultPos = Vector2.new(screenSize.X / 2 - cw / 2, 70) local pos = State.RadarHUD_Pos or defaultPos if IsMouseInRect(mousePos, pos, Vector2.new(cw, ch)) then State.RadarDragging = "HUD" State.RadarDragOffset = mousePos - pos end end end end) Connections.inputUp = UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton2 then State.Aiming = false targetEnemy = nil end if input.UserInputType == Enum.UserInputType.MouseButton1 then State.RadarDragging = nil end end) Connections.inputChanged = UserInputService.InputChanged:Connect(function(input) if State.RadarDragging and input.UserInputType == Enum.UserInputType.MouseMovement then local mousePos = UserInputService:GetMouseLocation() local newPos = mousePos - State.RadarDragOffset if State.RadarDragging == "2D" then State.Radar2D_Pos = newPos elseif State.RadarDragging == "HUD" then State.RadarHUD_Pos = newPos end end end) Connections.render = RunService.RenderStepped:Connect(function() if State.Unloaded then return end State.RainbowHue = (State.RainbowHue + 0.004) % 1 UpdateESP() UpdateAimbot() UpdateFOV() UpdateRadar() if Config.SILENT_Enabled then GetSilentTarget() end UpdateSilentFOV() UpdateSilentSnap() if UI.Watermark then UI.Watermark.Visible = Config.MISC_Watermark end end) for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then CreateESP(player) end end Connections.playerAdded = Players.PlayerAdded:Connect(function(player) CreateESP(player) end) Connections.playerRemoving = Players.PlayerRemoving:Connect(function(player) RemoveESP(player) end)