
Key Required

-- 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)
why not xeno?
@Bormir cause xeno has low compatability with drawing libraries its like 80% UNC.. these scripts where made before xeno even was a thing, just ported it over recently..
@leet alr
@Bormir xeno version is now out
@leet you gotta admit xeno >solara every day (solara got 60 sunc, xeno got 80 sunc)
@transdimensional i dont mind xeno or solara, i personally have a wave sub so i dont see much use but for the everyday person fosure xeno is great
@leet i use volcano
Silent got me banned for "c" dont use!!!
@crystals is just a kick but yeah, and silent seems to do nothing anyways
this script kicks u sometimes