
Key RequiredUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
local Config = {
ESP_Enabled = true,
ESP_Box = true,
ESP_Name = true,
ESP_Health = true,
ESP_Distance = true,
ESP_TeamCheck = true,
ESP_MaxDistance = 800,
ESP_HideSpawn = true,
ESP_SpawnY = -20,
DRONE_ESP = true,
DRONE_MaxDistance = 500,
CHAMS_Enabled = true,
CHAMS_FillTransparency = 0.7,
CHAMS_OutlineTransparency = 0,
AIM_Enabled = true,
AIM_FOV = 150,
AIM_Smooth = 0.12,
AIM_TeamCheck = true,
AIM_TargetPart = "Head",
AIM_Key = Enum.UserInputType.MouseButton2,
AIM_ShowFOV = true,
AIM_Prediction = true,
AIM_PredictionAmount = 1.0,
RECOIL_Enabled = true,
RECOIL_Strength = 1.0,
NO_CAMSHAKE = true,
NO_GUNBOB = true,
TP_Enabled = true,
TP_Key = Enum.KeyCode.T,
TP_Distance = 5,
TP_AutoShoot = true,
MenuOpen = true,
MenuKey = Enum.KeyCode.Insert
}
local RecoilProfiles = {
["AK"] = {
kickStrength = 0.055, horizontalStrength = 0.05, gunRise = 0.02, cameraShake = 0.04,
horizontalRandomness = 0.1, kickRandomness = 0.15, crouchMultiplier = 0.72, aimMultiplier = 0.35,
sprayIncrease = 0.12, returnSpeed = 0.1, patternScale = 0.045, firstShotMultiplier = 0.75,
moveMultiplier = 1.35, rpm = 600
},
["M4A1"] = {
kickStrength = 0.035, horizontalStrength = 0.05, gunRise = 0.015, cameraShake = 0.04,
horizontalRandomness = 0.1, kickRandomness = 0.15, crouchMultiplier = 0.72, aimMultiplier = 0.35,
sprayIncrease = 0.12, returnSpeed = 0.1, patternScale = 0.045, firstShotMultiplier = 0.75,
moveMultiplier = 1.35, rpm = 800
},
["SVD"] = {
kickStrength = 0.07, horizontalStrength = 0.07, gunRise = 0.02, cameraShake = 0.055,
horizontalRandomness = 0.14, kickRandomness = 0.18, crouchMultiplier = 0.8, aimMultiplier = 0.4,
sprayIncrease = 0.15, returnSpeed = 0.085, patternScale = 0.055, firstShotMultiplier = 0.9,
moveMultiplier = 1.45, rpm = 60
},
["RPK"] = {
kickStrength = 0.065, horizontalStrength = 0.015, gunRise = 0.04, cameraShake = 0.04,
horizontalRandomness = 0.2, kickRandomness = 0.15, crouchMultiplier = 0.72, aimMultiplier = 0.35,
sprayIncrease = 0.12, returnSpeed = 0.1, patternScale = 0.045, firstShotMultiplier = 0.75,
moveMultiplier = 1.35, rpm = 650
},
["P320"] = {
kickStrength = 0.085, horizontalStrength = 0.05, gunRise = 0.05, cameraShake = 0.04,
horizontalRandomness = 0.1, kickRandomness = 0.2, crouchMultiplier = 0.72, aimMultiplier = 0.35,
sprayIncrease = 0.12, returnSpeed = 0.1, patternScale = 0.045, firstShotMultiplier = 0.75,
moveMultiplier = 1.35, rpm = 400
},
["Benelli"] = {
kickStrength = 0.0875, horizontalStrength = 0.065, gunRise = 0.07, cameraShake = 0.04,
horizontalRandomness = 0.2, kickRandomness = 0.15, crouchMultiplier = 0.72, aimMultiplier = 0.35,
sprayIncrease = 0.12, returnSpeed = 0.1, patternScale = 0.045, firstShotMultiplier = 0.75,
moveMultiplier = 1.35, rpm = 80
},
["RPG"] = {
kickStrength = 0.45, horizontalStrength = 0.25, gunRise = 0.2, cameraShake = 0.04,
horizontalRandomness = 0.1, kickRandomness = 0.15, crouchMultiplier = 0.72, aimMultiplier = 0.35,
sprayIncrease = 0.12, returnSpeed = 0.1, patternScale = 0.045, firstShotMultiplier = 0.75,
moveMultiplier = 1.35, rpm = 10
},
["Default"] = {
kickStrength = 0.055, horizontalStrength = 0.05, gunRise = 0.02, cameraShake = 0.04,
horizontalRandomness = 0.1, kickRandomness = 0.15, crouchMultiplier = 0.72, aimMultiplier = 0.35,
sprayIncrease = 0.12, returnSpeed = 0.1, patternScale = 0.045, firstShotMultiplier = 0.75,
moveMultiplier = 1.35, rpm = 600
}
}
local BulletPhysics = {
Speed = 1500,
Drop = 0.1,
Gravity = 196.2
}
local VelocityCache = {}
local PositionCache = {}
local LastAimPos = nil
local AimSmoothing = 0
local WeaponToProfile = {
["AK-74"] = "AK", ["AK-74M"] = "AK", ["AK-74M Bakelit"] = "AK", ["AK-103"] = "AK",
["AK-103 MOD"] = "AK", ["AK-104 MOD"] = "AK", ["AK-47 MOD"] = "AK", ["AKM"] = "AK",
["AKM Plastic"] = "AK", ["AKMSN"] = "AK", ["AKS-74U"] = "AK", ["AKS-74"] = "AK",
["AK-12"] = "AK", ["AK-12 MOD"] = "AK", ["AK-47"] = "AK", ["AK"] = "AK",
["M4A1"] = "M4A1", ["M4A1 TAN"] = "M4A1", ["M4A1 Mod"] = "M4A1", ["M4"] = "M4A1",
["MK18"] = "M4A1", ["URGI"] = "M4A1", ["HRT MK4"] = "M4A1", ["11.5 BCM"] = "M4A1",
["Noveske NSR-9"] = "M4A1", ["LMT Defense DF2000"] = "M4A1", ["M16"] = "M4A1",
["HK416"] = "M4A1", ["HK416A5"] = "M4A1", ["HK416D"] = "M4A1",
["FN SCAR-L"] = "M4A1", ["SCAR-L"] = "M4A1", ["FN SCAR-H"] = "M4A1", ["SCAR-H"] = "M4A1",
["SIG MCX Spear"] = "M4A1", ["MCX"] = "M4A1", ["G36"] = "M4A1", ["G36C"] = "M4A1",
["L85A2"] = "M4A1", ["FAMAS"] = "M4A1", ["AUG"] = "M4A1", ["Steyr AUG"] = "M4A1",
["QBZ-95"] = "M4A1", ["Type 95"] = "M4A1", ["Galil"] = "M4A1",
["SVD"] = "SVD", ["SVD-K"] = "SVD", ["Dragunov"] = "SVD", ["DVL-10"] = "SVD",
["G3A3"] = "SVD", ["G3"] = "SVD", ["HK G3"] = "SVD", ["PSG1"] = "SVD",
["M14"] = "SVD", ["M14 EBR"] = "SVD", ["SR-25"] = "SVD", ["Mk 11"] = "SVD",
["M110"] = "SVD", ["RSASS"] = "SVD", ["SSG 69"] = "SVD", ["AWM"] = "SVD",
["L96"] = "SVD", ["M24"] = "SVD", ["R700"] = "SVD", ["Mosin"] = "SVD",
["Kar98k"] = "SVD", ["M40A5"] = "SVD", ["MSR"] = "SVD", ["Intervention"] = "SVD",
["RPK"] = "RPK", ["RPK-74"] = "RPK", ["PKM"] = "RPK", ["PKP"] = "RPK",
["M249"] = "RPK", ["M249 SAW"] = "RPK", ["M240B"] = "RPK", ["M240"] = "RPK",
["M60"] = "RPK", ["MG3"] = "RPK", ["MG42"] = "RPK", ["Negev"] = "RPK",
["L86 LSW"] = "RPK", ["RPD"] = "RPK", ["DP-28"] = "RPK",
["P320"] = "P320", ["SIG P320"] = "P320", ["M17"] = "P320", ["M18"] = "P320",
["Glock"] = "P320", ["Glock 17"] = "P320", ["Glock 19"] = "P320", ["G17"] = "P320", ["G19"] = "P320",
["M9"] = "P320", ["Beretta"] = "P320", ["M1911"] = "P320", ["1911"] = "P320",
["USP"] = "P320", ["P226"] = "P320", ["Five-Seven"] = "P320", ["Desert Eagle"] = "P320",
["Deagle"] = "P320", ["TT-33"] = "P320", ["Makarov"] = "P320", ["CZ-75"] = "P320",
["MP5"] = "M4A1", ["MP5A3"] = "M4A1", ["MP5SD"] = "M4A1", ["MP5K"] = "M4A1",
["MP7"] = "M4A1", ["MP9"] = "M4A1", ["UMP45"] = "M4A1", ["Vector"] = "M4A1",
["P90"] = "M4A1", ["PP-19"] = "M4A1", ["Bizon"] = "M4A1", ["Scorpion"] = "M4A1",
["MAC-10"] = "M4A1", ["Uzi"] = "M4A1", ["Kriss Vector"] = "M4A1",
["Benelli M3 14.5 Super"] = "Benelli", ["Benelli"] = "Benelli", ["M3 Super"] = "Benelli",
["M870"] = "Benelli", ["Remington 870"] = "Benelli", ["SPAS-12"] = "Benelli",
["M1014"] = "Benelli", ["AA-12"] = "Benelli", ["Saiga-12"] = "Benelli",
["KSG"] = "Benelli", ["Model 680"] = "Benelli", ["725"] = "Benelli",
["RPG-7"] = "RPG", ["RPG-26"] = "RPG", ["M67"] = "RPG", ["Smoke"] = "RPG", ["AT4"] = "RPG",
["SMAW"] = "RPG", ["Javelin"] = "RPG", ["Stinger"] = "RPG", ["MAAWS"] = "RPG",
["M72 LAW"] = "RPG", ["Panzerfaust"] = "RPG", ["Carl Gustaf"] = "RPG"
}
local Tuning = {
BoxRatio = 0.55,
NameSize = 13,
DistSize = 11,
HealthBarWidth = 2,
BoxThickness = 1
}
local Palette = {
Enemy = Color3.fromRGB(220, 60, 60),
EnemyVisible = Color3.fromRGB(50, 220, 50),
Friendly = Color3.fromRGB(100, 180, 255),
FOV = Color3.fromRGB(255, 255, 255),
Drone = Color3.fromRGB(255, 180, 50)
}
local State = {
Unloaded = false,
CurrentRecoilProfile = nil,
ShotsFired = 0,
LastShotTime = 0,
IsAiming = false,
IsCrouching = false,
IsFiring = false,
LastFireTick = 0,
SprayTime = 0,
AccumulatedRecoil = Vector2.new(0, 0),
LastCameraShake = CFrame.new(),
OriginalCamCF = nil,
LockedCameraCF = nil,
LastCameraCF = nil,
RecoilModulesPatched = false,
PatchedTables = {}
}
local ESP = { cache = {} }
local Chams = { cache = {} }
local DroneESP = { cache = {} }
local VelocityCache = {}
local Connections = {}
local FOVCircle = Drawing.new("Circle")
FOVCircle.Thickness = 1
FOVCircle.Color = Palette.FOV
FOVCircle.Filled = false
FOVCircle.Transparency = 0.5
FOVCircle.Radius = 100
FOVCircle.Visible = Config.AIM_ShowFOV and Config.AIM_Enabled
local function Create(class)
return Drawing.new(class)
end
function ESP.New()
return {
BoxTop = Create("Line"),
BoxBottom = Create("Line"),
BoxLeft = Create("Line"),
BoxRight = Create("Line"),
Name = Create("Text"),
Distance = Create("Text"),
HealthBarBG = Create("Line"),
HealthBar = Create("Line")
}
end
function ESP.Setup(esp)
for _, line in pairs({esp.BoxTop, esp.BoxBottom, esp.BoxLeft, esp.BoxRight}) do
line.Thickness = 1
line.Visible = false
end
esp.Name.Size = Tuning.NameSize
esp.Name.Center = true
esp.Name.Outline = true
esp.Name.Font = Drawing.Fonts.Monospace
esp.Name.Visible = false
esp.Distance.Size = Tuning.DistSize
esp.Distance.Center = true
esp.Distance.Outline = true
esp.Distance.Font = Drawing.Fonts.Monospace
esp.Distance.Visible = false
esp.HealthBarBG.Thickness = Tuning.HealthBarWidth + 2
esp.HealthBarBG.Color = Color3.fromRGB(0, 0, 0)
esp.HealthBarBG.Visible = false
esp.HealthBar.Thickness = Tuning.HealthBarWidth
esp.HealthBar.Visible = false
end
function ESP.Get(player)
if not ESP.cache[player] then
local e = ESP.New()
ESP.Setup(e)
ESP.cache[player] = e
end
return ESP.cache[player]
end
function ESP.Hide(esp)
if not esp then return end
esp.BoxTop.Visible = false
esp.BoxBottom.Visible = false
esp.BoxLeft.Visible = false
esp.BoxRight.Visible = false
esp.Name.Visible = false
esp.Distance.Visible = false
esp.HealthBar.Visible = false
esp.HealthBarBG.Visible = false
end
function ESP.Destroy(esp)
if not esp then return end
pcall(function()
esp.BoxTop:Remove()
esp.BoxBottom:Remove()
esp.BoxLeft:Remove()
esp.BoxRight:Remove()
esp.Name:Remove()
esp.Distance:Remove()
esp.HealthBar:Remove()
esp.HealthBarBG:Remove()
end)
end
function ESP.Remove(player)
local e = ESP.cache[player]
if e then
ESP.Hide(e)
ESP.Destroy(e)
ESP.cache[player] = nil
end
end
function Chams.Create(char, isEnemy, isVisible)
if Chams.cache[char] then return end
local highlight = Instance.new("Highlight")
highlight.Name = "H"
highlight.Adornee = char
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.FillTransparency = Config.CHAMS_FillTransparency
highlight.OutlineTransparency = Config.CHAMS_OutlineTransparency
local color = Palette.Friendly
if isEnemy then
color = isVisible and Palette.EnemyVisible or Palette.Enemy
end
highlight.FillColor = color
highlight.OutlineColor = color
highlight.Parent = char
Chams.cache[char] = highlight
end
function Chams.Update(char, isEnemy, isVisible)
local h = Chams.cache[char]
if not h then return end
local color = Palette.Friendly
if isEnemy then
color = isVisible and Palette.EnemyVisible or Palette.Enemy
end
h.FillColor = color
h.OutlineColor = color
h.FillTransparency = Config.CHAMS_FillTransparency
h.OutlineTransparency = Config.CHAMS_OutlineTransparency
end
function Chams.Remove(char)
local h = Chams.cache[char]
if h then
pcall(function() h:Destroy() end)
Chams.cache[char] = nil
end
end
function Chams.ClearAll()
for char, h in pairs(Chams.cache) do
pcall(function() h:Destroy() end)
end
Chams.cache = {}
end
function DroneESP.New()
return {
Box = Drawing.new("Square"),
Name = Drawing.new("Text"),
Distance = Drawing.new("Text")
}
end
function DroneESP.Setup(d)
d.Box.Thickness = 1
d.Box.Filled = false
d.Box.Color = Palette.Drone
d.Box.Visible = false
d.Name.Size = 12
d.Name.Center = true
d.Name.Outline = true
d.Name.Font = Drawing.Fonts.Monospace
d.Name.Color = Palette.Drone
d.Name.Visible = false
d.Distance.Size = 10
d.Distance.Center = true
d.Distance.Outline = true
d.Distance.Font = Drawing.Fonts.Monospace
d.Distance.Color = Palette.Drone
d.Distance.Visible = false
end
function DroneESP.Get(drone)
if not DroneESP.cache[drone] then
local d = DroneESP.New()
DroneESP.Setup(d)
DroneESP.cache[drone] = d
end
return DroneESP.cache[drone]
end
function DroneESP.Hide(d)
if not d then return end
d.Box.Visible = false
d.Name.Visible = false
d.Distance.Visible = false
end
function DroneESP.Destroy(d)
if not d then return end
pcall(function()
d.Box:Remove()
d.Name:Remove()
d.Distance:Remove()
end)
end
function DroneESP.Remove(drone)
local d = DroneESP.cache[drone]
if d then
DroneESP.Hide(d)
DroneESP.Destroy(d)
DroneESP.cache[drone] = nil
end
end
function DroneESP.ClearAll()
for drone, d in pairs(DroneESP.cache) do
DroneESP.Hide(d)
DroneESP.Destroy(d)
end
DroneESP.cache = {}
end
local function GetVelocity(player, part)
if not part then return Vector3.zero end
if not player then return Vector3.zero end
local vel = Vector3.zero
pcall(function() vel = part.AssemblyLinearVelocity end)
return vel
end
local function CalculateAimPoint(targetPos, targetVel, myPos)
local bulletSpeed = BulletPhysics.Speed
local gravityDrop = BulletPhysics.Gravity * BulletPhysics.Drop
local toTarget = targetPos - myPos
local dist = toTarget.Magnitude
if dist < 10 then
return targetPos
end
local flightTime = dist / bulletSpeed
for i = 1, 4 do
local predictedPos = targetPos + targetVel * flightTime
local newDist = (predictedPos - myPos).Magnitude
flightTime = newDist / bulletSpeed
end
flightTime = flightTime * Config.AIM_PredictionAmount
local leadX = targetPos.X + targetVel.X * flightTime
local leadZ = targetPos.Z + targetVel.Z * flightTime
local leadY = targetPos.Y + targetVel.Y * flightTime
local drop = 0.5 * gravityDrop * flightTime * flightTime
leadY = leadY + drop
return Vector3.new(leadX, leadY, leadZ)
end
local function IsEnemy(player)
if not player or not LocalPlayer then return false end
local myTeam = LocalPlayer.Team
local theirTeam = player.Team
if not myTeam or not theirTeam then return true end
return myTeam ~= theirTeam
end
local function GetCharacter(player)
return player and player.Character
end
local function GetHumanoid(char)
return char and char:FindFirstChildOfClass("Humanoid")
end
local function GetRootPart(char)
return char and char:FindFirstChild("HumanoidRootPart")
end
local function GetHead(char)
return char and char:FindFirstChild("Head")
end
local function GetDistance(pos)
local myChar = GetCharacter(LocalPlayer)
local myRoot = GetRootPart(myChar)
if not myRoot then return 9999 end
return (pos - myRoot.Position).Magnitude
end
local function IsInSpawn(hrp)
if not Config.ESP_HideSpawn then return false end
if not hrp then return true end
return hrp.Position.Y < Config.ESP_SpawnY
end
local function WorldToScreen(pos)
local screenPos, onScreen = Camera:WorldToViewportPoint(pos)
return Vector2.new(screenPos.X, screenPos.Y), onScreen, screenPos.Z
end
local function IsVisible(targetPos, targetChar)
local myChar = GetCharacter(LocalPlayer)
if not myChar then return false end
local myHead = myChar:FindFirstChild("Head")
if not myHead then return false end
local origin = myHead.Position
local direction = targetPos - origin
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {myChar, targetChar, Camera}
local result = Workspace:Raycast(origin, direction, params)
return result == nil
end
local function GetCurrentWeapon()
local char = GetCharacter(LocalPlayer)
if not char then return nil, nil end
for _, child in pairs(char:GetChildren()) do
if child:IsA("Tool") then
return child.Name, child
end
end
return nil, nil
end
local function GetRecoilProfile()
local weaponName = GetCurrentWeapon()
if not weaponName then return nil end
local profileName = WeaponToProfile[weaponName]
if profileName then
return RecoilProfiles[profileName], profileName
end
for name, profile in pairs(WeaponToProfile) do
if string.find(string.lower(weaponName), string.lower(name)) then
return RecoilProfiles[profile], profile
end
end
return RecoilProfiles["AK"], "AK"
end
local function CalculateRecoilCompensation(profile, shotNum, deltaTime)
local baseVertical = profile.kickStrength + profile.gunRise
local baseHorizontal = profile.horizontalStrength
local sprayFactor = 1 + math.min(shotNum * profile.sprayIncrease, 2.0)
local firstShotMult = shotNum == 1 and profile.firstShotMultiplier or 1.0
local verticalRecoil = baseVertical * sprayFactor * firstShotMult
local horizontalRecoil = baseHorizontal * sprayFactor
local patternPhase = (shotNum * profile.patternSpeed) % 360
local patternOffset = math.sin(math.rad(patternPhase)) * profile.patternScale
horizontalRecoil = horizontalRecoil + patternOffset
local multiplier = 1.0
if State.IsAiming then
multiplier = multiplier * profile.aimMultiplier
end
if State.IsCrouching then
multiplier = multiplier * profile.crouchMultiplier
end
verticalRecoil = verticalRecoil * multiplier
horizontalRecoil = horizontalRecoil * multiplier
return verticalRecoil, horizontalRecoil
end
local function ApplyRecoilCompensation(deltaX, deltaY)
if not Config.RECOIL_Enabled then return deltaX, deltaY end
local profile, profileName = GetRecoilProfile()
if not profile then
profile = RecoilProfiles["Default"]
end
local now = tick()
local timeSinceLastShot = now - State.LastShotTime
if timeSinceLastShot < 60 / (profile.rpm or 600) * 1.5 then
State.ShotsFired = State.ShotsFired + 1
State.SprayTime = State.SprayTime + timeSinceLastShot
else
State.ShotsFired = 1
State.SprayTime = 0
State.AccumulatedRecoil = Vector2.new(0, 0)
end
State.LastShotTime = now
local vertComp, horzComp = CalculateRecoilCompensation(profile, State.ShotsFired, timeSinceLastShot)
local screenScale = Camera.ViewportSize.Y / 1080
local baseScale = 120 * Config.RECOIL_Strength * screenScale
vertComp = vertComp * baseScale
horzComp = horzComp * baseScale * 0.6
State.AccumulatedRecoil = State.AccumulatedRecoil + Vector2.new(horzComp, vertComp)
return deltaX - horzComp, deltaY - vertComp
end
local function StandaloneAntiRecoil()
if not Config.RECOIL_Enabled then return end
local mouse1Down = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
if not mouse1Down then
State.IsFiring = false
State.ShotsFired = 0
State.SprayTime = 0
return
end
local profile = RecoilProfiles["Default"]
local weaponName = GetCurrentWeapon()
if weaponName then
local pName = WeaponToProfile[weaponName]
if pName and RecoilProfiles[pName] then
profile = RecoilProfiles[pName]
end
end
local now = tick()
local rpm = profile.rpm or 600
local fireInterval = 60 / rpm
if not State.IsFiring then
State.IsFiring = true
State.ShotsFired = 1
State.LastFireTick = now
State.SprayTime = 0
else
if now - State.LastFireTick >= fireInterval then
State.ShotsFired = State.ShotsFired + 1
State.LastFireTick = now
end
State.SprayTime = State.SprayTime + (1/60)
end
local baseKick = profile.kickStrength + profile.gunRise
local sprayMult = 1 + math.min(State.ShotsFired * profile.sprayIncrease * 0.5, 1.0)
if State.ShotsFired == 1 then
baseKick = baseKick * (profile.firstShotMultiplier or 0.75)
end
if State.IsAiming then
baseKick = baseKick * (profile.aimMultiplier or 0.35)
end
if State.IsCrouching then
baseKick = baseKick * (profile.crouchMultiplier or 0.72)
end
local perFrameComp = baseKick * sprayMult * 45 * Config.RECOIL_Strength
if mousemoverel then
mousemoverel(0, perFrameComp)
end
end
local function ScanAndPatchGC()
end
local function PatchWeaponModules()
end
local function RemoveCameraShake()
if not Config.NO_CAMSHAKE then return end
pcall(function()
local char = LocalPlayer.Character
if not char then return end
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.CameraOffset = Vector3.new(0, 0, 0)
end
end)
end
local function RemoveGunBob()
if not Config.NO_GUNBOB then return end
end
local function GetBestTarget()
if not Config.AIM_Enabled then return nil end
local mousePos = UserInputService:GetMouseLocation()
local bestTarget = nil
local bestScore = math.huge
for _, player in pairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
if Config.AIM_TeamCheck and not IsEnemy(player) then continue end
local char = GetCharacter(player)
if not char then continue end
local hum = GetHumanoid(char)
if not hum or hum.Health <= 0 then continue end
local hrp = GetRootPart(char)
if IsInSpawn(hrp) then continue end
local targetPart = char:FindFirstChild(Config.AIM_TargetPart) or GetHead(char) or hrp
if not targetPart then continue end
local screenPos, onScreen, depth = WorldToScreen(targetPart.Position)
if not onScreen or depth <= 0 then continue end
local dist = GetDistance(targetPart.Position)
if dist > Config.ESP_MaxDistance then continue end
local screenDist = (screenPos - mousePos).Magnitude
if screenDist > Config.AIM_FOV then continue end
local score = screenDist + (dist * 0.01)
if score < bestScore then
bestScore = score
bestTarget = {
Player = player,
Part = targetPart,
ScreenPos = screenPos,
Distance = dist,
Health = hum.Health
}
end
end
return bestTarget
end
local function AimAt(target)
if not target or not target.Part then return end
local myPos = Camera.CFrame.Position
local targetPos = target.Part.Position
local distance = target.Distance
local char = target.Player.Character
local hrp = GetRootPart(char)
local velocity = Vector3.zero
if hrp then
velocity = GetVelocity(target.Player, hrp)
end
if Config.AIM_Prediction then
targetPos = CalculateAimPoint(targetPos, velocity, myPos)
end
local screenPos = Camera:WorldToViewportPoint(targetPos)
if screenPos.Z <= 0 then return end
local screenCenter = Camera.ViewportSize / 2
local deltaX = screenPos.X - screenCenter.X
local deltaY = screenPos.Y - screenCenter.Y
local deltaMag = math.sqrt(deltaX * deltaX + deltaY * deltaY)
if deltaMag < 0.5 then return end
local smooth = Config.AIM_Smooth
local moveX = deltaX * smooth
local moveY = deltaY * smooth
if deltaMag > 50 then
moveX = deltaX * math.min(smooth * 2, 0.5)
moveY = deltaY * math.min(smooth * 2, 0.5)
end
if mousemoverel then
mousemoverel(moveX, moveY)
end
end
local LastChamsClean = 0
local ESPFrameCounter = 0
local VisibilityCache = {}
local LastVisibilityCheck = 0
local function RenderESP()
if State.Unloaded then return end
ESPFrameCounter = ESPFrameCounter + 1
Camera = Workspace.CurrentCamera
if not Camera then return end
local screenSize = Camera.ViewportSize
FOVCircle.Position = UserInputService:GetMouseLocation()
FOVCircle.Radius = Config.AIM_FOV
FOVCircle.Visible = Config.AIM_ShowFOV and Config.AIM_Enabled
local now = tick()
if now - LastChamsClean > 3 then
LastChamsClean = now
for oldChar, _ in pairs(Chams.cache) do
if not oldChar or not oldChar.Parent then
Chams.Remove(oldChar)
end
end
end
local doVisibilityCheck = now - LastVisibilityCheck > 0.15
if doVisibilityCheck then
LastVisibilityCheck = now
end
for _, player in pairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
local esp = ESP.Get(player)
local char = GetCharacter(player)
if not char or not char.Parent then
ESP.Hide(esp)
continue
end
local hum = GetHumanoid(char)
local hrp = GetRootPart(char)
local head = GetHead(char)
if not hum or not hrp or hum.Health <= 0 then
ESP.Hide(esp)
Chams.Remove(char)
continue
end
local rootPos, onScreen, depth = WorldToScreen(hrp.Position)
if not onScreen or depth <= 0 then
ESP.Hide(esp)
continue
end
local dist = GetDistance(hrp.Position)
if dist > Config.ESP_MaxDistance then
ESP.Hide(esp)
Chams.Remove(char)
continue
end
local isEnemy = IsEnemy(player)
if Config.ESP_TeamCheck and not isEnemy then
ESP.Hide(esp)
Chams.Remove(char)
continue
end
if IsInSpawn(hrp) then
ESP.Hide(esp)
Chams.Remove(char)
continue
end
local isVisible = VisibilityCache[player]
if doVisibilityCheck then
isVisible = IsVisible(hrp.Position, char)
VisibilityCache[player] = isVisible
end
isVisible = isVisible or false
local color = Palette.Friendly
if isEnemy then
color = isVisible and Palette.EnemyVisible or Palette.Enemy
end
local boxHeight = math.clamp(800 / math.max(depth, 1), 20, 120)
local boxWidth = boxHeight * Tuning.BoxRatio
local halfW = boxWidth / 2
local halfH = boxHeight / 2
local topY = rootPos.Y - halfH * 1.1
local bottomY = rootPos.Y + halfH * 0.9
local topLeft = Vector2.new(rootPos.X - halfW, topY)
local topRight = Vector2.new(rootPos.X + halfW, topY)
local bottomLeft = Vector2.new(rootPos.X - halfW, bottomY)
local bottomRight = Vector2.new(rootPos.X + halfW, bottomY)
if Config.ESP_Enabled and Config.ESP_Box then
esp.BoxTop.From = topLeft
esp.BoxTop.To = topRight
esp.BoxTop.Color = color
esp.BoxTop.Visible = true
esp.BoxBottom.From = bottomLeft
esp.BoxBottom.To = bottomRight
esp.BoxBottom.Color = color
esp.BoxBottom.Visible = true
esp.BoxLeft.From = topLeft
esp.BoxLeft.To = bottomLeft
esp.BoxLeft.Color = color
esp.BoxLeft.Visible = true
esp.BoxRight.From = topRight
esp.BoxRight.To = bottomRight
esp.BoxRight.Color = color
esp.BoxRight.Visible = true
else
esp.BoxTop.Visible = false
esp.BoxBottom.Visible = false
esp.BoxLeft.Visible = false
esp.BoxRight.Visible = false
end
if Config.ESP_Enabled and Config.ESP_Name then
esp.Name.Text = player.Name
esp.Name.Position = Vector2.new(rootPos.X, topY - 14)
esp.Name.Color = color
esp.Name.Visible = true
else
esp.Name.Visible = false
end
if Config.ESP_Enabled and Config.ESP_Distance then
esp.Distance.Text = string.format("%dm", math.floor(dist))
esp.Distance.Position = Vector2.new(rootPos.X, bottomY + 2)
esp.Distance.Color = color
esp.Distance.Visible = true
else
esp.Distance.Visible = false
end
if Config.ESP_Enabled and Config.ESP_Health then
local healthPercent = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
local barFullHeight = bottomY - topY
local barHeight = barFullHeight * healthPercent
local barTop = bottomY - barHeight
esp.HealthBarBG.From = Vector2.new(topLeft.X - 5, topY)
esp.HealthBarBG.To = Vector2.new(topLeft.X - 5, bottomY)
esp.HealthBarBG.Visible = true
local healthColor = Color3.fromRGB(
math.floor(255 * (1 - healthPercent)),
math.floor(255 * healthPercent),
0
)
esp.HealthBar.From = Vector2.new(topLeft.X - 5, barTop)
esp.HealthBar.To = Vector2.new(topLeft.X - 5, bottomY)
esp.HealthBar.Color = healthColor
esp.HealthBar.Visible = true
else
esp.HealthBar.Visible = false
esp.HealthBarBG.Visible = false
end
if Config.CHAMS_Enabled then
if not Chams.cache[char] then
Chams.Create(char, isEnemy, isVisible)
else
Chams.Update(char, isEnemy, isVisible)
end
else
Chams.Remove(char)
end
end
end
local DroneCache = {}
local LastDroneScan = 0
local function FindDrones()
local now = tick()
if now - LastDroneScan < 1.0 then
return DroneCache
end
LastDroneScan = now
DroneCache = {}
local droneFolder = Workspace:FindFirstChild("DroneWorkspace")
if droneFolder then
for _, obj in pairs(droneFolder:GetChildren()) do
if obj:IsA("Model") then
table.insert(DroneCache, obj)
end
end
end
return DroneCache
end
local DroneESPFrame = 0
local function RenderDroneESP()
if State.Unloaded then return end
if not Config.DRONE_ESP then
for drone, d in pairs(DroneESP.cache) do
DroneESP.Hide(d)
end
return
end
DroneESPFrame = DroneESPFrame + 1
if DroneESPFrame % 3 ~= 0 then return end
local drones = FindDrones()
local activeDrones = {}
for _, drone in pairs(drones) do
activeDrones[drone] = true
local d = DroneESP.Get(drone)
local primary = drone.PrimaryPart or drone:FindFirstChildWhichIsA("BasePart")
if not primary then
DroneESP.Hide(d)
continue
end
local screenPos, onScreen, depth = WorldToScreen(primary.Position)
if not onScreen or depth <= 0 then
DroneESP.Hide(d)
continue
end
local dist = GetDistance(primary.Position)
if dist > Config.DRONE_MaxDistance then
DroneESP.Hide(d)
continue
end
local boxSize = math.clamp(400 / math.max(depth, 1), 15, 60)
d.Box.Position = Vector2.new(screenPos.X - boxSize/2, screenPos.Y - boxSize/2)
d.Box.Size = Vector2.new(boxSize, boxSize)
d.Box.Visible = true
d.Name.Text = drone.Name
d.Name.Position = Vector2.new(screenPos.X, screenPos.Y - boxSize/2 - 12)
d.Name.Visible = true
d.Distance.Text = string.format("%dm", math.floor(dist))
d.Distance.Position = Vector2.new(screenPos.X, screenPos.Y + boxSize/2 + 2)
d.Distance.Visible = true
end
for drone, d in pairs(DroneESP.cache) do
if not activeDrones[drone] then
DroneESP.Remove(drone)
end
end
end
local function GetClosestEnemy()
local closest = nil
local closestDist = math.huge
local myChar = GetCharacter(LocalPlayer)
local myRoot = GetRootPart(myChar)
if not myRoot then return nil end
for _, player in pairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
if Config.AIM_TeamCheck and not IsEnemy(player) then continue end
local char = GetCharacter(player)
if not char then continue end
local hum = GetHumanoid(char)
if not hum or hum.Health <= 0 then continue end
local hrp = GetRootPart(char)
if not hrp then continue end
if IsInSpawn(hrp) then continue end
local dist = (hrp.Position - myRoot.Position).Magnitude
if dist < closestDist then
closestDist = dist
closest = {Player = player, Character = char, HRP = hrp, Distance = dist}
end
end
return closest
end
local TPTarget = nil
local TPActive = false
local TPKeyDebounce = false
local TPLastShot = 0
local TPFrameSkip = 0
local TPShotCount = 0
local TPLastReload = 0
local TPMagSize = 30
local function TeleportBehindAndAim(target)
if not target or not target.HRP then return end
local myChar = GetCharacter(LocalPlayer)
if not myChar then return end
local myRoot = GetRootPart(myChar)
if not myRoot then return end
local enemyHRP = target.HRP
if not enemyHRP or not enemyHRP.Parent then return end
local enemyPos = enemyHRP.Position
local enemyLook = enemyHRP.CFrame.LookVector
local behindPos = enemyPos - (enemyLook * Config.TP_Distance)
behindPos = Vector3.new(behindPos.X, enemyPos.Y, behindPos.Z)
myRoot.CFrame = CFrame.new(behindPos)
pcall(function()
myRoot.AssemblyLinearVelocity = Vector3.zero
end)
local head = target.Character:FindFirstChild("Head")
local aimTarget = head and head.Position or enemyPos
local camPos = behindPos + Vector3.new(0, 1.5, 0)
Camera.CFrame = CFrame.new(camPos, aimTarget)
end
local function GetMagSize()
local weaponName = GetCurrentWeapon()
if not weaponName then return 30 end
local name = string.lower(weaponName)
if name:match("m4") or name:match("hk416") or name:match("scar") then return 30
elseif name:match("ak") then return 30
elseif name:match("rpk") or name:match("m249") or name:match("pkm") then return 100
elseif name:match("svd") or name:match("m14") or name:match("sks") then return 10
elseif name:match("benelli") or name:match("shotgun") or name:match("870") then return 8
elseif name:match("p320") or name:match("glock") or name:match("pistol") then return 17
elseif name:match("rpg") or name:match("launcher") then return 1
elseif name:match("mp5") or name:match("mp7") or name:match("smg") then return 30
else return 30 end
end
local function TPReload()
local now = tick()
if now - TPLastReload < 2.5 then return true end
TPLastReload = now
TPShotCount = 0
TPMagSize = GetMagSize()
pcall(function()
if keypress then
keypress(0x52)
task.delay(0.1, function()
if keyrelease then keyrelease(0x52) end
end)
end
end)
return true
end
local function TPAutoShoot()
if not Config.TP_AutoShoot then return end
local now = tick()
if now - TPLastReload < 2.5 then
return
end
if TPShotCount >= TPMagSize then
TPReload()
return
end
if now - TPLastShot < 0.25 then return end
TPLastShot = now
TPShotCount = TPShotCount + 1
pcall(function()
if mouse1click then
mouse1click()
end
end)
end
local function ProcessTeleport()
if not Config.TP_Enabled then
TPActive = false
return
end
local keyDown = UserInputService:IsKeyDown(Config.TP_Key)
if keyDown and not TPKeyDebounce then
TPKeyDebounce = true
TPActive = not TPActive
if TPActive then
TPTarget = GetClosestEnemy()
TPShotCount = 0
TPMagSize = GetMagSize()
else
TPTarget = nil
end
elseif not keyDown then
TPKeyDebounce = false
end
if not TPActive then return end
TPFrameSkip = TPFrameSkip + 1
if TPFrameSkip < 2 then return end
TPFrameSkip = 0
if TPTarget then
local char = TPTarget.Player.Character
if char then
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if hrp and hum and hum.Health > 0 and not IsInSpawn(hrp) then
TPTarget.HRP = hrp
TPTarget.Character = char
TeleportBehindAndAim(TPTarget)
TPAutoShoot()
else
TPTarget = GetClosestEnemy()
end
else
TPTarget = GetClosestEnemy()
end
else
TPTarget = GetClosestEnemy()
end
end
local function ProcessAimbot()
if State.Unloaded then return end
if not Config.AIM_Enabled then return end
local holdingAimKey = UserInputService:IsMouseButtonPressed(Config.AIM_Key)
local holdingFire = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
if not holdingAimKey and not holdingFire then return end
local target = GetBestTarget()
if target then
AimAt(target)
end
end
local function UpdateState()
local char = GetCharacter(LocalPlayer)
if not char then return end
local hum = GetHumanoid(char)
if hum then
State.IsCrouching = hum:GetState() == Enum.HumanoidStateType.None
end
State.IsAiming = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2)
end
local function MainLoop()
if State.Unloaded then return end
UpdateState()
RenderESP()
RenderDroneESP()
ProcessAimbot()
ProcessTeleport()
StandaloneAntiRecoil()
end
local Unload
local ScreenGui = nil
local MobileTPBtn = nil
local function CreateMenu()
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "WarfareESP"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.IgnoreGuiInset = true
pcall(function()
if syn then
syn.protect_gui(ScreenGui)
elseif gethui then
ScreenGui.Parent = gethui()
return
end
end)
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local Accent = Color3.fromRGB(220, 60, 60)
local GlassBg = Color3.fromRGB(40, 44, 52)
local GlassCard = Color3.fromRGB(55, 60, 70)
local TextPrimary = Color3.fromRGB(255, 255, 255)
local TextSecondary = Color3.fromRGB(140, 145, 155)
local MainContainer = Instance.new("Frame")
MainContainer.Name = "MainContainer"
MainContainer.AnchorPoint = Vector2.new(0.5, 0.5)
MainContainer.Position = UDim2.new(0.5, 0, 0.5, 0)
MainContainer.Size = isMobile and UDim2.new(0.88, 0, 0, 380) or UDim2.new(0, 520, 0, 340)
MainContainer.BackgroundColor3 = GlassBg
MainContainer.BackgroundTransparency = 0.05
MainContainer.BorderSizePixel = 0
MainContainer.ClipsDescendants = true
MainContainer.Parent = ScreenGui
local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 16)
MainCorner.Parent = MainContainer
local TopBar = Instance.new("Frame")
TopBar.Size = UDim2.new(1, 0, 0, 44)
TopBar.BackgroundColor3 = Color3.fromRGB(35, 38, 46)
TopBar.BackgroundTransparency = 0.3
TopBar.BorderSizePixel = 0
TopBar.Parent = MainContainer
local TopCorner = Instance.new("UICorner")
TopCorner.CornerRadius = UDim.new(0, 16)
TopCorner.Parent = TopBar
local Tabs = {"ESP", "Aimbot", "Misc"}
local TabButtons = {}
local TabPanels = {}
for i, tabName in ipairs(Tabs) do
local TabBtn = Instance.new("TextButton")
TabBtn.Size = UDim2.new(0, 70, 0, 30)
TabBtn.Position = UDim2.new(0, 12 + (i-1) * 78, 0.5, -15)
TabBtn.BackgroundColor3 = i == 1 and Accent or GlassCard
TabBtn.BackgroundTransparency = i == 1 and 0.7 or 1
TabBtn.BorderSizePixel = 0
TabBtn.Text = tabName
TabBtn.TextSize = 12
TabBtn.Font = i == 1 and Enum.Font.GothamBold or Enum.Font.GothamMedium
TabBtn.TextColor3 = i == 1 and TextPrimary or TextSecondary
TabBtn.Parent = TopBar
local TabCorner = Instance.new("UICorner")
TabCorner.CornerRadius = UDim.new(0, 8)
TabCorner.Parent = TabBtn
local Panel = Instance.new("ScrollingFrame")
Panel.Name = tabName .. "Panel"
Panel.Size = UDim2.new(1, -16, 1, -52)
Panel.Position = UDim2.new(0, 8, 0, 48)
Panel.BackgroundTransparency = 1
Panel.ScrollBarThickness = 3
Panel.ScrollBarImageColor3 = Accent
Panel.BorderSizePixel = 0
Panel.Visible = i == 1
Panel.Parent = MainContainer
local PanelLayout = Instance.new("UIListLayout")
PanelLayout.SortOrder = Enum.SortOrder.LayoutOrder
PanelLayout.Padding = UDim.new(0, 6)
PanelLayout.Parent = Panel
TabButtons[tabName] = TabBtn
TabPanels[tabName] = Panel
end
local PowerBtn = Instance.new("ImageButton")
PowerBtn.Size = UDim2.new(0, 28, 0, 28)
PowerBtn.Position = UDim2.new(1, -42, 0.5, -14)
PowerBtn.BackgroundColor3 = Color3.fromRGB(200, 60, 60)
PowerBtn.BackgroundTransparency = 0.6
PowerBtn.BorderSizePixel = 0
PowerBtn.Image = "rbxassetid://97421363782839"
PowerBtn.ImageColor3 = TextPrimary
PowerBtn.Parent = TopBar
local PowerCorner = Instance.new("UICorner")
PowerCorner.CornerRadius = UDim.new(0, 8)
PowerCorner.Parent = PowerBtn
PowerBtn.MouseButton1Click:Connect(function()
Unload()
end)
for tabName, btn in pairs(TabButtons) do
btn.MouseButton1Click:Connect(function()
for name, b in pairs(TabButtons) do
local isActive = name == tabName
TweenService:Create(b, TweenInfo.new(0.2), {
BackgroundTransparency = isActive and 0.7 or 1,
BackgroundColor3 = isActive and Accent or GlassCard
}):Play()
b.TextColor3 = isActive and TextPrimary or TextSecondary
b.Font = isActive and Enum.Font.GothamBold or Enum.Font.GothamMedium
TabPanels[name].Visible = isActive
end
end)
end
local function CreateToggle(parent, label, default, callback, layoutOrder)
local Frame = Instance.new("Frame")
Frame.Size = UDim2.new(1, 0, 0, 38)
Frame.BackgroundColor3 = GlassCard
Frame.BackgroundTransparency = 0.4
Frame.BorderSizePixel = 0
Frame.LayoutOrder = layoutOrder or 0
Frame.Parent = parent
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 10)
Corner.Parent = Frame
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(1, -60, 1, 0)
Label.Position = UDim2.new(0, 12, 0, 0)
Label.BackgroundTransparency = 1
Label.Text = label
Label.TextSize = 12
Label.Font = Enum.Font.GothamMedium
Label.TextColor3 = TextPrimary
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = Frame
local ToggleBg = Instance.new("Frame")
ToggleBg.Size = UDim2.new(0, 40, 0, 22)
ToggleBg.Position = UDim2.new(1, -50, 0.5, -11)
ToggleBg.BackgroundColor3 = default and Accent or Color3.fromRGB(60, 65, 75)
ToggleBg.BorderSizePixel = 0
ToggleBg.Parent = Frame
local BgCorner = Instance.new("UICorner")
BgCorner.CornerRadius = UDim.new(1, 0)
BgCorner.Parent = ToggleBg
local Circle = Instance.new("Frame")
Circle.Size = UDim2.new(0, 16, 0, 16)
Circle.Position = default and UDim2.new(1, -19, 0.5, -8) or UDim2.new(0, 3, 0.5, -8)
Circle.BackgroundColor3 = TextPrimary
Circle.BorderSizePixel = 0
Circle.Parent = ToggleBg
local CircleCorner = Instance.new("UICorner")
CircleCorner.CornerRadius = UDim.new(1, 0)
CircleCorner.Parent = Circle
local enabled = default
local Btn = Instance.new("TextButton")
Btn.Size = UDim2.new(1, 0, 1, 0)
Btn.BackgroundTransparency = 1
Btn.Text = ""
Btn.Parent = Frame
Btn.MouseButton1Click:Connect(function()
enabled = not enabled
TweenService:Create(ToggleBg, TweenInfo.new(0.2), {
BackgroundColor3 = enabled and Accent or Color3.fromRGB(60, 65, 75)
}):Play()
TweenService:Create(Circle, TweenInfo.new(0.2, Enum.EasingStyle.Back), {
Position = enabled and UDim2.new(1, -19, 0.5, -8) or UDim2.new(0, 3, 0.5, -8)
}):Play()
callback(enabled)
end)
return Frame, function(val)
enabled = val
ToggleBg.BackgroundColor3 = enabled and Accent or Color3.fromRGB(60, 65, 75)
Circle.Position = enabled and UDim2.new(1, -19, 0.5, -8) or UDim2.new(0, 3, 0.5, -8)
end
end
local function CreateSlider(parent, label, min, max, default, callback, layoutOrder)
local Frame = Instance.new("Frame")
Frame.Size = UDim2.new(1, 0, 0, 48)
Frame.BackgroundColor3 = GlassCard
Frame.BackgroundTransparency = 0.4
Frame.BorderSizePixel = 0
Frame.LayoutOrder = layoutOrder or 0
Frame.Parent = parent
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 10)
Corner.Parent = Frame
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(0.6, 0, 0, 18)
Label.Position = UDim2.new(0, 12, 0, 6)
Label.BackgroundTransparency = 1
Label.Text = label
Label.TextSize = 11
Label.Font = Enum.Font.GothamMedium
Label.TextColor3 = TextPrimary
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = Frame
local Value = Instance.new("TextLabel")
Value.Size = UDim2.new(0.3, 0, 0, 18)
Value.Position = UDim2.new(0.7, -12, 0, 6)
Value.BackgroundTransparency = 1
Value.Text = tostring(default)
Value.TextSize = 11
Value.Font = Enum.Font.GothamBold
Value.TextColor3 = Accent
Value.TextXAlignment = Enum.TextXAlignment.Right
Value.Parent = Frame
local SliderBg = Instance.new("Frame")
SliderBg.Size = UDim2.new(1, -24, 0, 6)
SliderBg.Position = UDim2.new(0, 12, 0, 32)
SliderBg.BackgroundColor3 = Color3.fromRGB(50, 55, 65)
SliderBg.BorderSizePixel = 0
SliderBg.Parent = Frame
local BgCorner = Instance.new("UICorner")
BgCorner.CornerRadius = UDim.new(1, 0)
BgCorner.Parent = SliderBg
local Fill = Instance.new("Frame")
Fill.Size = UDim2.new((default - min) / (max - min), 0, 1, 0)
Fill.BackgroundColor3 = Accent
Fill.BorderSizePixel = 0
Fill.Parent = SliderBg
local FillCorner = Instance.new("UICorner")
FillCorner.CornerRadius = UDim.new(1, 0)
FillCorner.Parent = Fill
local dragging = false
local SliderBtn = Instance.new("TextButton")
SliderBtn.Size = UDim2.new(1, 0, 0, 20)
SliderBtn.Position = UDim2.new(0, 0, 0, 24)
SliderBtn.BackgroundTransparency = 1
SliderBtn.Text = ""
SliderBtn.Parent = Frame
local function UpdateSlider(inputPos)
local pct = math.clamp((inputPos - SliderBg.AbsolutePosition.X) / SliderBg.AbsoluteSize.X, 0, 1)
local value = min + (max - min) * pct
if max >= 10 then
value = math.floor(value)
else
value = math.floor(value * 100) / 100
end
Fill.Size = UDim2.new(pct, 0, 1, 0)
Value.Text = tostring(value)
callback(value)
end
SliderBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
UpdateSlider(input.Position.X)
end
end)
SliderBtn.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
Connections["Slider_" .. label] = UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
UpdateSlider(input.Position.X)
end
end)
return Frame
end
local function CreateSection(parent, text, layoutOrder)
local Section = Instance.new("TextLabel")
Section.Size = UDim2.new(1, 0, 0, 24)
Section.BackgroundTransparency = 1
Section.Text = text
Section.TextSize = 11
Section.Font = Enum.Font.GothamBold
Section.TextColor3 = Accent
Section.LayoutOrder = layoutOrder or 0
Section.Parent = parent
return Section
end
local ESP_Panel = TabPanels["ESP"]
CreateSection(ESP_Panel, "VISUALS", 1)
CreateToggle(ESP_Panel, "ESP Enabled", Config.ESP_Enabled, function(v) Config.ESP_Enabled = v end, 2)
CreateToggle(ESP_Panel, "Box", Config.ESP_Box, function(v) Config.ESP_Box = v end, 3)
CreateToggle(ESP_Panel, "Name", Config.ESP_Name, function(v) Config.ESP_Name = v end, 4)
CreateToggle(ESP_Panel, "Health Bar", Config.ESP_Health, function(v) Config.ESP_Health = v end, 5)
CreateToggle(ESP_Panel, "Distance", Config.ESP_Distance, function(v) Config.ESP_Distance = v end, 6)
CreateToggle(ESP_Panel, "Chams", Config.CHAMS_Enabled, function(v)
Config.CHAMS_Enabled = v
if not v then Chams.ClearAll() end
end, 7)
CreateSlider(ESP_Panel, "Chams Fill", 0, 1, Config.CHAMS_FillTransparency, function(v) Config.CHAMS_FillTransparency = v end, 8)
CreateToggle(ESP_Panel, "Drone ESP", Config.DRONE_ESP, function(v)
Config.DRONE_ESP = v
if not v then DroneESP.ClearAll() end
end, 9)
CreateSlider(ESP_Panel, "Max Distance", 100, 1500, Config.ESP_MaxDistance, function(v) Config.ESP_MaxDistance = v end, 10)
ESP_Panel.CanvasSize = UDim2.new(0, 0, 0, 550)
local AIM_Panel = TabPanels["Aimbot"]
CreateSection(AIM_Panel, "TARGETING", 1)
CreateToggle(AIM_Panel, "Aimbot Enabled", Config.AIM_Enabled, function(v)
Config.AIM_Enabled = v
FOVCircle.Visible = Config.AIM_ShowFOV and v
end, 2)
CreateToggle(AIM_Panel, "Show FOV Circle", Config.AIM_ShowFOV, function(v)
Config.AIM_ShowFOV = v
FOVCircle.Visible = v and Config.AIM_Enabled
end, 3)
CreateToggle(AIM_Panel, "Prediction", Config.AIM_Prediction, function(v) Config.AIM_Prediction = v end, 4)
CreateSlider(AIM_Panel, "FOV Size", 50, 300, Config.AIM_FOV, function(v)
Config.AIM_FOV = v
FOVCircle.Radius = v
end, 5)
CreateSlider(AIM_Panel, "Smoothness", 0.05, 0.3, Config.AIM_Smooth, function(v) Config.AIM_Smooth = v end, 6)
CreateSlider(AIM_Panel, "Prediction Amount", 0.5, 1.5, Config.AIM_PredictionAmount, function(v) Config.AIM_PredictionAmount = v end, 7)
CreateSection(AIM_Panel, "RECOIL CONTROL", 9)
CreateToggle(AIM_Panel, "Anti-Recoil", Config.RECOIL_Enabled, function(v) Config.RECOIL_Enabled = v end, 10)
CreateSlider(AIM_Panel, "Recoil Strength", 0.5, 3.0, Config.RECOIL_Strength, function(v) Config.RECOIL_Strength = v end, 11)
CreateToggle(AIM_Panel, "No Camera Shake", Config.NO_CAMSHAKE, function(v) Config.NO_CAMSHAKE = v end, 12)
AIM_Panel.CanvasSize = UDim2.new(0, 0, 0, 580)
local MISC_Panel = TabPanels["Misc"]
CreateSection(MISC_Panel, "TELEPORT", 1)
local _, tpToggleSetter = CreateToggle(MISC_Panel, "TP KILL ALL [T]", Config.TP_Enabled, function(v) Config.TP_Enabled = v end, 2)
CreateSlider(MISC_Panel, "TP Distance", 3, 15, Config.TP_Distance, function(v) Config.TP_Distance = v end, 3)
CreateToggle(MISC_Panel, "Auto-Shoot", Config.TP_AutoShoot, function(v) Config.TP_AutoShoot = v end, 4)
CreateSection(MISC_Panel, "SPAWN FILTER", 5)
CreateToggle(MISC_Panel, "Hide Spawn Players", Config.ESP_HideSpawn, function(v) Config.ESP_HideSpawn = v end, 6)
CreateSlider(MISC_Panel, "Spawn Y Threshold", -100, 50, Config.ESP_SpawnY, function(v) Config.ESP_SpawnY = v end, 7)
CreateSection(MISC_Panel, "ACTIONS", 8)
local UnloadBtn = Instance.new("TextButton")
UnloadBtn.Size = UDim2.new(1, 0, 0, 38)
UnloadBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50)
UnloadBtn.BackgroundTransparency = 0.3
UnloadBtn.BorderSizePixel = 0
UnloadBtn.Text = "UNLOAD SCRIPT"
UnloadBtn.TextSize = 13
UnloadBtn.Font = Enum.Font.GothamBold
UnloadBtn.TextColor3 = TextPrimary
UnloadBtn.LayoutOrder = 9
UnloadBtn.Parent = MISC_Panel
local UnloadCorner = Instance.new("UICorner")
UnloadCorner.CornerRadius = UDim.new(0, 10)
UnloadCorner.Parent = UnloadBtn
UnloadBtn.MouseButton1Click:Connect(function()
Unload()
end)
MISC_Panel.CanvasSize = UDim2.new(0, 0, 0, 450)
MainContainer.Visible = Config.MenuOpen
local dragging = false
local dragStart, startPos
local function StartDrag(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = MainContainer.Position
end
end
local function StopDrag(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end
TopBar.InputBegan:Connect(StartDrag)
TopBar.InputEnded:Connect(StopDrag)
Connections["Drag"] = UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
MainContainer.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
if isMobile then
local MobileToggle = Instance.new("TextButton")
MobileToggle.Name = "MobileToggle"
MobileToggle.Size = UDim2.new(0, 44, 0, 44)
MobileToggle.Position = UDim2.new(1, -54, 0, 50)
MobileToggle.BackgroundColor3 = GlassBg
MobileToggle.BackgroundTransparency = 0.1
MobileToggle.BorderSizePixel = 0
MobileToggle.Text = "☰"
MobileToggle.TextSize = 20
MobileToggle.Font = Enum.Font.GothamBold
MobileToggle.TextColor3 = TextPrimary
MobileToggle.Parent = ScreenGui
local MobileCorner = Instance.new("UICorner")
MobileCorner.CornerRadius = UDim.new(1, 0)
MobileCorner.Parent = MobileToggle
local MobileStroke = Instance.new("UIStroke")
MobileStroke.Color = Accent
MobileStroke.Thickness = 2
MobileStroke.Parent = MobileToggle
local visible = true
local mobileDragging = false
local mobileDragStart, mobileStartPos
MobileToggle.MouseButton1Click:Connect(function()
if not mobileDragging then
visible = not visible
MainContainer.Visible = visible
end
end)
MobileToggle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
mobileDragging = false
mobileDragStart = input.Position
mobileStartPos = MobileToggle.Position
end
end)
MobileToggle.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
local delta = input.Position - mobileDragStart
if delta.Magnitude > 10 then
mobileDragging = true
local screenSize = ScreenGui.AbsoluteSize
local btnSize = MobileToggle.AbsoluteSize
local newX = math.clamp(mobileStartPos.X.Offset + delta.X, 10, screenSize.X - btnSize.X - 10)
local newY = math.clamp(mobileStartPos.Y.Offset + delta.Y, 50, screenSize.Y - btnSize.Y - 10)
MobileToggle.Position = UDim2.new(0, newX, 0, newY)
end
end
end)
MobileToggle.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
task.wait(0.1)
mobileDragging = false
end
end)
MobileTPBtn = Instance.new("TextButton")
MobileTPBtn.Name = "MobileTP"
MobileTPBtn.Size = UDim2.new(0, 56, 0, 56)
MobileTPBtn.Position = UDim2.new(1, -70, 1, -140)
MobileTPBtn.BackgroundColor3 = Color3.fromRGB(60, 65, 75)
MobileTPBtn.BackgroundTransparency = 0.2
MobileTPBtn.BorderSizePixel = 0
MobileTPBtn.Text = "TP"
MobileTPBtn.TextSize = 16
MobileTPBtn.Font = Enum.Font.GothamBold
MobileTPBtn.TextColor3 = TextPrimary
MobileTPBtn.Visible = Config.TP_Enabled
MobileTPBtn.Parent = ScreenGui
local TPCorner = Instance.new("UICorner")
TPCorner.CornerRadius = UDim.new(1, 0)
TPCorner.Parent = MobileTPBtn
local TPStroke = Instance.new("UIStroke")
TPStroke.Color = Accent
TPStroke.Thickness = 2
TPStroke.Parent = MobileTPBtn
local tpDragging = false
local tpDragStart, tpStartPos
MobileTPBtn.MouseButton1Click:Connect(function()
if not tpDragging then
TPActive = not TPActive
if TPActive then
TPTarget = GetClosestEnemy()
TPShotCount = 0
TPMagSize = GetMagSize()
MobileTPBtn.BackgroundColor3 = Accent
MobileTPBtn.Text = "ON"
else
TPTarget = nil
MobileTPBtn.BackgroundColor3 = Color3.fromRGB(60, 65, 75)
MobileTPBtn.Text = "TP"
end
end
end)
MobileTPBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
tpDragging = false
tpDragStart = input.Position
tpStartPos = MobileTPBtn.Position
end
end)
MobileTPBtn.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
local delta = input.Position - tpDragStart
if delta.Magnitude > 10 then
tpDragging = true
local screenSize = ScreenGui.AbsoluteSize
local btnSize = MobileTPBtn.AbsoluteSize
local newX = math.clamp(tpStartPos.X.Offset + delta.X, 10, screenSize.X - btnSize.X - 10)
local newY = math.clamp(tpStartPos.Y.Offset + delta.Y, 50, screenSize.Y - btnSize.Y - 10)
MobileTPBtn.Position = UDim2.new(0, newX, 0, newY)
end
end
end)
MobileTPBtn.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
task.wait(0.1)
tpDragging = false
end
end)
end
return ScreenGui, MainContainer
end
Unload = function()
if State.Unloaded then return end
State.Unloaded = true
Config.TP_Enabled = false
TPActive = false
for _, conn in pairs(Connections) do
pcall(function() conn:Disconnect() end)
end
Connections = {}
for player, esp in pairs(ESP.cache) do
ESP.Hide(esp)
ESP.Destroy(esp)
end
ESP.cache = {}
Chams.ClearAll()
DroneESP.ClearAll()
pcall(function() FOVCircle:Remove() end)
if ScreenGui then
pcall(function() ScreenGui:Destroy() end)
ScreenGui = nil
end
pcall(function()
local gui = game:GetService("CoreGui"):FindFirstChild("WarfareESP")
if gui then gui:Destroy() end
end)
pcall(function()
local gui = LocalPlayer.PlayerGui:FindFirstChild("WarfareESP")
if gui then gui:Destroy() end
end)
State.PatchedTables = {}
State.RecoilModulesPatched = false
getgenv().WarfareESP = nil
end
local function UpdateMobileTPButton()
if MobileTPBtn then
MobileTPBtn.Visible = Config.TP_Enabled
if not Config.TP_Enabled then
TPActive = false
MobileTPBtn.BackgroundColor3 = Color3.fromRGB(60, 65, 75)
MobileTPBtn.Text = "TP"
end
if TPActive then
MobileTPBtn.BackgroundColor3 = Color3.fromRGB(220, 60, 60)
MobileTPBtn.Text = "ON"
else
MobileTPBtn.BackgroundColor3 = Color3.fromRGB(60, 65, 75)
MobileTPBtn.Text = "TP"
end
end
end
local function Init()
local gui, mainFrame = CreateMenu()
Connections.Render = RunService.RenderStepped:Connect(function()
MainLoop()
UpdateMobileTPButton()
end)
Connections.PlayerRemoving = Players.PlayerRemoving:Connect(function(player)
ESP.Remove(player)
VisibilityCache[player] = nil
local char = player.Character
if char then Chams.Remove(char) end
end)
Connections.CharacterAdded = LocalPlayer.CharacterAdded:Connect(function(char)
State.RecoilModulesPatched = false
State.ShotsFired = 0
State.IsFiring = false
end)
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
player.CharacterAdded:Connect(function(char)
ESP.Remove(player)
Chams.Remove(player.Character)
end)
end
end
Connections.PlayerAdded = Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(char)
ESP.Remove(player)
end)
end)
Connections.Input = UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if input.KeyCode == Config.MenuKey or input.KeyCode == Enum.KeyCode.RightShift then
Config.MenuOpen = not Config.MenuOpen
mainFrame.Visible = Config.MenuOpen
end
if input.KeyCode == Enum.KeyCode.End then
Unload()
end
end)
end
Init()
getgenv().WarfareESP = {
Config = Config,
Unload = Unload,
State = State
}
This script was bugged it is now visible.
aimbot not working
hey, on the map that is pretty much just a straight line doesnt work.