Tactical swat simulator
Key Required

Tactical swat simulator

[👮] Tactical: Swat SimulatorScriptsByDeaslScriptsByDeasl 1.3K views 5.3K executesUpdated Sep 5, 2026
Unrated
00
Lua Script•674 lines (25266 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local CoreGui = game:GetService("CoreGui")
local HttpService = game:GetService("HttpService")

local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera

-- Deasl script Settings
local Settings = {
    AimbotEnabled = true,
    FOVEnabled = true,
    FOVRadius = 180,
    TargetPart = "Head",          -- "Head" or "HumanoidRootPart"
    VisibleCheck = true,          -- Wall Check
    Smoothness = 0.2,             -- Aim smoothness
    ESPEnabled = true,
    ESPBoxEnabled = true,         -- 2D Boxes
    ESPTracersEnabled = true,     -- Tracers
    ESPHealthEnabled = true,      -- Health bar
    ESPChamsEnabled = true,       -- Chams
    ESPNameEnabled = true,        -- Names
    ESPDistanceEnabled = true,    -- Distance
    ESPColor = Color3.fromRGB(160, 32, 240)
}

-- Config Save/Load System
local ConfigFile = "DeaslScript_Config.json"

local function SaveConfig()
    if writefile then
        local data = {
            AimbotEnabled = Settings.AimbotEnabled,
            FOVEnabled = Settings.FOVEnabled,
            FOVRadius = Settings.FOVRadius,
            TargetPart = Settings.TargetPart,
            VisibleCheck = Settings.VisibleCheck,
            Smoothness = Settings.Smoothness,
            ESPEnabled = Settings.ESPEnabled,
            ESPBoxEnabled = Settings.ESPBoxEnabled,
            ESPTracersEnabled = Settings.ESPTracersEnabled,
            ESPHealthEnabled = Settings.ESPHealthEnabled,
            ESPChamsEnabled = Settings.ESPChamsEnabled,
            ESPNameEnabled = Settings.ESPNameEnabled,
            ESPDistanceEnabled = Settings.ESPDistanceEnabled
        }
        writefile(ConfigFile, HttpService:JSONEncode(data))
    end
end

local function LoadConfig()
    if readfile and isfile and isfile(ConfigFile) then
        local success, result = pcall(function()
            return HttpService:JSONEncode(readfile(ConfigFile))
        end)
        if success and type(result) == "table" then
            for k, v in pairs(result) do
                if Settings[k] ~= nil then
                    Settings[k] = v
                end
            end
        end
    end
end

LoadConfig()

---------------------------------------------------------
-- GUI Draggable Function (Mobile / PC)
---------------------------------------------------------
local function MakeDraggable(frame, dragHandle)
    dragHandle = dragHandle or frame
    local dragging = false
    local dragInput, dragStart, startPos

    local function update(input)
        local delta = input.Position - dragStart
        frame.Position = UDim2.new(
            startPos.X.Scale, 
            startPos.X.Offset + delta.X, 
            startPos.Y.Scale, 
            startPos.Y.Offset + delta.Y
        )
    end

    dragHandle.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            dragStart = input.Position
            startPos = frame.Position

            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    dragging = false
                end
            end)
        end
    end)

    dragHandle.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
            dragInput = input
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if input == dragInput and dragging then
            update(input)
        end
    end)
end

---------------------------------------------------------
-- FOV Circle
---------------------------------------------------------
local FOVCircle = Drawing.new("Circle")
FOVCircle.Thickness = 2
FOVCircle.Color = Color3.fromRGB(160, 32, 240)
FOVCircle.NumSides = 64
FOVCircle.Filled = false
FOVCircle.Transparent = 1

---------------------------------------------------------
-- Wall Check (Visibility Check)
---------------------------------------------------------
local function IsVisible(targetPart)
    if not Settings.VisibleCheck then return true end

    local origin = Camera.CFrame.Position
    local direction = (targetPart.Position - origin)

    local raycastParams = RaycastParams.new()
    raycastParams.FilterType = RaycastFilterType.Exclude

    local ignoreList = {Camera}
    if LocalPlayer.Character then
        table.insert(ignoreList, LocalPlayer.Character)
    end
    if targetPart.Parent then
        table.insert(ignoreList, targetPart.Parent)
    end

    -- Ignore transparent decorations, hitboxes, and accessories
    for _, obj in ipairs(Workspace:GetDescendants()) do
        if obj:IsA("BasePart") and (not obj.CanCollide or obj.Transparency > 0.8) then
            table.insert(ignoreList, obj)
        elseif obj:IsA("Accessory") or obj:IsA("Clothing") then
            table.insert(ignoreList, obj)
        end
    end

    raycastParams.FilterDescendantsInstances = ignoreList
    local raycastResult = Workspace:Raycast(origin, direction, raycastParams)

    return raycastResult == nil
end

---------------------------------------------------------
-- NPC Scanning and Checking
---------------------------------------------------------
local CachedNPCs = {}

local function IsValidNPC(model)
    if not model or not model:IsA("Model") then return false, nil, nil end
    if model == LocalPlayer.Character then return false, nil, nil end
    if Players:GetPlayerFromCharacter(model) then return false, nil, nil end

    local modelName = string.upper(model.Name)
    local isNPC = string.find(modelName, "NPC") or string.find(modelName, "NPS") or string.find(modelName, "MOB") or string.find(modelName, "ZOMBIE") or string.find(modelName, "ENEMY")

    local humanoid = model:FindFirstChildOfClass("Humanoid")
    local targetPart = model:FindFirstChild(Settings.TargetPart) or model:FindFirstChild("Head") or model:FindFirstChild("HumanoidRootPart")

    if (isNPC or humanoid) and targetPart then
        if humanoid then
            if humanoid.Health > 0 then
                return true, targetPart, humanoid
            end
        else
            return true, targetPart, nil
        end
    end

    return false, nil, nil
end

task.spawn(function()
    while true do
        local newList = {}
        for _, obj in ipairs(Workspace:GetDescendants()) do
            if obj:IsA("Model") then
                local isValid, part, hum = IsValidNPC(obj)
                if isValid then
                    table.insert(newList, {Model = obj, Part = part, Humanoid = hum})
                end
            end
        end
        CachedNPCs = newList
        task.wait(0.5)
    end
end)

local function GetClosestNPC()
    local closestPart = nil
    local shortestDistance = Settings.FOVRadius
    local screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)

    for _, npcData in ipairs(CachedNPCs) do
        local targetPart = npcData.Model:FindFirstChild(Settings.TargetPart) or npcData.Part
        if targetPart and targetPart.Parent then
            local screenPos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)

            if onScreen then
                local distance = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude
                if distance < shortestDistance then
                    if IsVisible(targetPart) then
                        shortestDistance = distance
                        closestPart = targetPart
                    end
                end
            end
        end
    end

    return closestPart
end

---------------------------------------------------------
-- ESP Drawing System
---------------------------------------------------------
local ESPDrawings = {}

local function ClearESPDrawings()
    for _, drawGroup in pairs(ESPDrawings) do
        if drawGroup.Box then drawGroup.Box:Remove() end
        if drawGroup.Tracer then drawGroup.Tracer:Remove() end
        if drawGroup.HealthOutline then drawGroup.HealthOutline:Remove() end
        if drawGroup.HealthBar then drawGroup.HealthBar:Remove() end
        if drawGroup.NameTag then drawGroup.NameTag:Remove() end
    end
    ESPDrawings = {}
end

local function Update2DESP()
    if not Settings.ESPEnabled then
        ClearESPDrawings()
        return
    end

    local currentModels = {}

    for _, npcData in ipairs(CachedNPCs) do
        local model = npcData.Model
        local rootPart = model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("Head") or npcData.Part

        if model and rootPart and rootPart.Parent then
            currentModels[model] = true

            local screenPos, onScreen = Camera:WorldToViewportPoint(rootPart.Position)

            local highlight = model:FindFirstChild("DeaslChams")
            if Settings.ESPChamsEnabled then
                if not highlight then
                    highlight = Instance.new("Highlight")
                    highlight.Name = "DeaslChams"
                    highlight.FillColor = Settings.ESPColor
                    highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
                    highlight.FillTransparency = 0.5
                    highlight.OutlineTransparency = 0
                    highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
                    highlight.Parent = model
                else
                    highlight.Enabled = true
                end
            else
                if highlight then highlight.Enabled = false end
            end

            if onScreen then
                if not ESPDrawings[model] then
                    local box = Drawing.new("Square")
                    box.Thickness = 1.5
                    box.Color = Settings.ESPColor
                    box.Filled = false
                    box.Transparent = 1

                    local tracer = Drawing.new("Line")
                    tracer.Thickness = 1.5
                    tracer.Color = Settings.ESPColor
                    tracer.Transparent = 1

                    local hpOutline = Drawing.new("Square")
                    hpOutline.Thickness = 1
                    hpOutline.Color = Color3.fromRGB(0, 0, 0)
                    hpOutline.Filled = true
                    hpOutline.Transparent = 1

                    local hpBar = Drawing.new("Square")
                    hpBar.Thickness = 1
                    hpBar.Color = Color3.fromRGB(0, 255, 0)
                    hpBar.Filled = true
                    hpBar.Transparent = 1

                    local nameTag = Drawing.new("Text")
                    nameTag.Size = 14
                    nameTag.Color = Color3.fromRGB(255, 255, 255)
                    nameTag.Center = true
                    nameTag.Outline = true
                    nameTag.OutlineColor = Color3.fromRGB(0, 0, 0)

                    ESPDrawings[model] = {
                        Box = box,
                        Tracer = tracer,
                        HealthOutline = hpOutline,
                        HealthBar = hpBar,
                        NameTag = nameTag
                    }
                end

                local drawGroup = ESPDrawings[model]
                local head = model:FindFirstChild("Head") or rootPart
                local headPos = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 1.5, 0))
                local legPos = Camera:WorldToViewportPoint(rootPart.Position - Vector3.new(0, 3, 0))

                local height = math.abs(headPos.Y - legPos.Y)
                local width = height / 1.8

                if Settings.ESPBoxEnabled then
                    drawGroup.Box.Size = Vector2.new(width, height)
                    drawGroup.Box.Position = Vector2.new(screenPos.X - width / 2, screenPos.Y - height / 2)
                    drawGroup.Box.Visible = true
                else
                    drawGroup.Box.Visible = false
                end

                if Settings.ESPTracersEnabled then
                    drawGroup.Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
                    drawGroup.Tracer.To = Vector2.new(screenPos.X, screenPos.Y + height / 2)
                    drawGroup.Tracer.Visible = true
                else
                    drawGroup.Tracer.Visible = false
                end

                if Settings.ESPHealthEnabled and npcData.Humanoid then
                    local hum = npcData.Humanoid
                    local healthPct = math.clamp(hum.Health / hum.MaxHealth, 0, 1)

                    local barWidth = 3
                    local barPos = Vector2.new(screenPos.X - width / 2 - 6, screenPos.Y - height / 2)

                    drawGroup.HealthOutline.Size = Vector2.new(barWidth + 2, height + 2)
                    drawGroup.HealthOutline.Position = Vector2.new(barPos.X - 1, barPos.Y - 1)
                    drawGroup.HealthOutline.Visible = true

                    drawGroup.HealthBar.Size = Vector2.new(barWidth, height * healthPct)
                    drawGroup.HealthBar.Position = Vector2.new(barPos.X, barPos.Y + (height * (1 - healthPct)))
                    drawGroup.HealthBar.Color = Color3.fromRGB(255 * (1 - healthPct), 255 * healthPct, 0)
                    drawGroup.HealthBar.Visible = true
                else
                    drawGroup.HealthOutline.Visible = false
                    drawGroup.HealthBar.Visible = false
                end

                if Settings.ESPNameEnabled or Settings.ESPDistanceEnabled then
                    local textStr = ""
                    if Settings.ESPNameEnabled then textStr = model.Name end

                    if Settings.ESPDistanceEnabled then
                        local dist = math.floor((Camera.CFrame.Position - rootPart.Position).Magnitude)
                        textStr = textStr ~= "" and (textStr .. " [" .. tostring(dist) .. "m]") or ("[" .. tostring(dist) .. "m]")
                    end

                    drawGroup.NameTag.Text = textStr
                    drawGroup.NameTag.Position = Vector2.new(screenPos.X, screenPos.Y - height / 2 - 16)
                    drawGroup.NameTag.Visible = true
                else
                    drawGroup.NameTag.Visible = false
                end
            else
                if ESPDrawings[model] then
                    ESPDrawings[model].Box.Visible = false
                    ESPDrawings[model].Tracer.Visible = false
                    ESPDrawings[model].HealthOutline.Visible = false
                    ESPDrawings[model].HealthBar.Visible = false
                    ESPDrawings[model].NameTag.Visible = false
                end
            end
        end
    end

    for model, drawGroup in pairs(ESPDrawings) do
        if not currentModels[model] then
            drawGroup.Box:Remove()
            drawGroup.Tracer:Remove()
            drawGroup.HealthOutline:Remove()
            drawGroup.HealthBar:Remove()
            drawGroup.NameTag:Remove()
            ESPDrawings[model] = nil
        end
    end
end

---------------------------------------------------------
-- Stylized GUI Interface (Deasl v4.0)
---------------------------------------------------------
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "DeaslScript_GUI"
ScreenGui.ResetOnSpawn = false

if syn and syn.protect_gui then
    syn.protect_gui(ScreenGui)
    ScreenGui.Parent = CoreGui
else
    ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end

-- Toggle Button
local ToggleMenuBtn = Instance.new("TextButton")
ToggleMenuBtn.Size = UDim2.new(0, 90, 0, 35)
ToggleMenuBtn.Position = UDim2.new(0.02, 0, 0.08, 0)
ToggleMenuBtn.BackgroundColor3 = Color3.fromRGB(20, 18, 25)
ToggleMenuBtn.Text = "DEASL"
ToggleMenuBtn.TextColor3 = Color3.fromRGB(160, 32, 240)
ToggleMenuBtn.TextSize = 15
ToggleMenuBtn.Font = Enum.Font.SourceSansBold
ToggleMenuBtn.Parent = ScreenGui

local BtnCorner = Instance.new("UICorner")
BtnCorner.CornerRadius = UDim.new(0, 8)
BtnCorner.Parent = ToggleMenuBtn

local BtnStroke = Instance.new("UIStroke")
BtnStroke.Color = Color3.fromRGB(160, 32, 240)
BtnStroke.Thickness = 1.5
BtnStroke.Parent = ToggleMenuBtn

-- Main Frame
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 520, 0, 310)
MainFrame.Position = UDim2.new(0.3, 0, 0.3, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(16, 14, 20)
MainFrame.BorderSizePixel = 0
MainFrame.Visible = false
MainFrame.Parent = ScreenGui

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 10)
MainCorner.Parent = MainFrame

local MainStroke = Instance.new("UIStroke")
MainStroke.Color = Color3.fromRGB(100, 30, 180)
MainStroke.Thickness = 1.5
MainStroke.Parent = MainFrame

MakeDraggable(MainFrame)
MakeDraggable(ToggleMenuBtn)

ToggleMenuBtn.MouseButton1Click:Connect(function()
    MainFrame.Visible = not MainFrame.Visible
end)

-- Side Bar
local SideBar = Instance.new("Frame")
SideBar.Size = UDim2.new(0, 140, 1, 0)
SideBar.BackgroundColor3 = Color3.fromRGB(12, 10, 15)
SideBar.BorderSizePixel = 0
SideBar.Parent = MainFrame

local SideCorner = Instance.new("UICorner")
SideCorner.CornerRadius = UDim.new(0, 10)
SideCorner.Parent = SideBar

-- DEASL v4 Logo
local Logo = Instance.new("TextLabel")
Logo.Size = UDim2.new(1, 0, 0, 45)
Logo.BackgroundTransparency = 1
Logo.Text = "DEASL v4"
Logo.TextColor3 = Color3.fromRGB(255, 255, 255)
Logo.Font = Enum.Font.SourceSansBold
Logo.TextSize = 18
Logo.Parent = SideBar

-- Tab Containers
local CombatTab = Instance.new("ScrollingFrame")
CombatTab.Size = UDim2.new(1, -150, 1, -10)
CombatTab.Position = UDim2.new(0, 145, 0, 5)
CombatTab.BackgroundTransparency = 1
CombatTab.ScrollBarThickness = 2
CombatTab.Parent = MainFrame

local VisualsTab = Instance.new("ScrollingFrame")
VisualsTab.Size = UDim2.new(1, -150, 1, -10)
VisualsTab.Position = UDim2.new(0, 145, 0, 5)
VisualsTab.BackgroundTransparency = 1
VisualsTab.Visible = false
VisualsTab.ScrollBarThickness = 2
VisualsTab.Parent = MainFrame

local function CreateTabBtn(text, yPos, targetTab)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.9, 0, 0, 32)
    btn.Position = UDim2.new(0.05, 0, 0, yPos)
    btn.BackgroundTransparency = 1
    btn.Text = text
    btn.TextColor3 = Color3.fromRGB(150, 150, 150)
    btn.Font = Enum.Font.SourceSans
    btn.TextSize = 15
    btn.Parent = SideBar

    btn.MouseButton1Click:Connect(function()
        CombatTab.Visible = false
        VisualsTab.Visible = false
        targetTab.Visible = true
    end)
end

CreateTabBtn("Combat", 50, CombatTab)
CreateTabBtn("Visuals", 90, VisualsTab)

---------------------------------------------------------
-- UI Elements (Toggles, Sliders)
---------------------------------------------------------
local function CreateToggleUI(parent, text, yPos, defaultState, callback)
    local container = Instance.new("Frame")
    container.Size = UDim2.new(0.96, 0, 0, 36)
    container.Position = UDim2.new(0.02, 0, 0, yPos)
    container.BackgroundColor3 = Color3.fromRGB(25, 22, 32)
    container.Parent = parent

    local cCorner = Instance.new("UICorner")
    cCorner.CornerRadius = UDim.new(0, 6)
    cCorner.Parent = container

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0.7, 0, 1, 0)
    label.Position = UDim2.new(0.03, 0, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = text
    label.TextColor3 = Color3.fromRGB(220, 220, 220)
    label.Font = Enum.Font.SourceSans
    label.TextSize = 14
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = container

    local toggleBtn = Instance.new("TextButton")
    toggleBtn.Size = UDim2.new(0, 38, 0, 18)
    toggleBtn.Position = UDim2.new(0.85, -5, 0.25, 0)
    toggleBtn.BackgroundColor3 = defaultState and Color3.fromRGB(120, 40, 200) or Color3.fromRGB(50, 50, 60)
    toggleBtn.Text = ""
    toggleBtn.Parent = container

    local tCorner = Instance.new("UICorner")
    tCorner.CornerRadius = UDim.new(1, 0)
    tCorner.Parent = toggleBtn

    local state = defaultState
    toggleBtn.MouseButton1Click:Connect(function()
        state = not state
        toggleBtn.BackgroundColor3 = state and Color3.fromRGB(120, 40, 200) or Color3.fromRGB(50, 50, 60)
        callback(state)
        SaveConfig()
    end)
end

local function CreateSliderUI(parent, text, yPos, min, max, default, callback)
    local container = Instance.new("Frame")
    container.Size = UDim2.new(0.96, 0, 0, 45)
    container.Position = UDim2.new(0.02, 0, 0, yPos)
    container.BackgroundColor3 = Color3.fromRGB(25, 22, 32)
    container.Parent = parent

    local cCorner = Instance.new("UICorner")
    cCorner.CornerRadius = UDim.new(0, 6)
    cCorner.Parent = container

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0.9, 0, 0, 20)
    label.Position = UDim2.new(0.03, 0, 0, 2)
    label.BackgroundTransparency = 1
    label.Text = text .. ": " .. tostring(default)
    label.TextColor3 = Color3.fromRGB(220, 220, 220)
    label.Font = Enum.Font.SourceSans
    label.TextSize = 14
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = container

    local sliderBg = Instance.new("Frame")
    sliderBg.Size = UDim2.new(0.94, 0, 0, 6)
    sliderBg.Position = UDim2.new(0.03, 0, 0, 28)
    sliderBg.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
    sliderBg.Parent = container

    local sCorner = Instance.new("UICorner")
    sCorner.CornerRadius = UDim.new(1, 0)
    sCorner.Parent = sliderBg

    local fill = Instance.new("Frame")
    fill.Size = UDim2.new((default - min) / (max - min), 0, 1, 0)
    fill.BackgroundColor3 = Color3.fromRGB(140, 40, 220)
    fill.Parent = sliderBg

    local fCorner = Instance.new("UICorner")
    fCorner.CornerRadius = UDim.new(1, 0)
    fCorner.Parent = fill

    local dragging = false
    local function update(input)
        local pos = math.clamp((input.Position.X - sliderBg.AbsolutePosition.X) / sliderBg.AbsoluteSize.X, 0, 1)
        fill.Size = UDim2.new(pos, 0, 1, 0)
        local val = math.floor(min + (max - min) * pos)
        label.Text = text .. ": " .. tostring(val)
        callback(val)
        SaveConfig()
    end

    sliderBg.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            update(input)
        end
    end)

    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = false
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            update(input)
        end
    end)
end

-- Combat Tab Items
CreateToggleUI(CombatTab, "Aimbot Enabled", 5, Settings.AimbotEnabled, function(v) Settings.AimbotEnabled = v end)
CreateToggleUI(CombatTab, "Wall Check", 45, Settings.VisibleCheck, function(v) Settings.VisibleCheck = v end)
CreateToggleUI(CombatTab, "Draw FOV Circle", 85, Settings.FOVEnabled, function(v) Settings.FOVEnabled = v end)
CreateSliderUI(CombatTab, "Aimbot FOV", 125, 50, 600, Settings.FOVRadius, function(v) Settings.FOVRadius = v end)

-- Visuals Tab Items
CreateToggleUI(VisualsTab, "Master ESP", 5, Settings.ESPEnabled, function(v) Settings.ESPEnabled = v end)
CreateToggleUI(VisualsTab, "Chams (Highlight)", 45, Settings.ESPChamsEnabled, function(v) Settings.ESPChamsEnabled = v end)
CreateToggleUI(VisualsTab, "2D Boxes", 85, Settings.ESPBoxEnabled, function(v) Settings.ESPBoxEnabled = v end)
CreateToggleUI(VisualsTab, "Tracers", 125, Settings.ESPTracersEnabled, function(v) Settings.ESPTracersEnabled = v end)
CreateToggleUI(VisualsTab, "Health Bar", 165, Settings.ESPHealthEnabled, function(v) Settings.ESPHealthEnabled = v end)
CreateToggleUI(VisualsTab, "Name ESP", 205, Settings.ESPNameEnabled, function(v) Settings.ESPNameEnabled = v end)
CreateToggleUI(VisualsTab, "Distance ESP", 245, Settings.ESPDistanceEnabled, function(v) Settings.ESPDistanceEnabled = v end)

CombatTab.CanvasSize = UDim2.new(0, 0, 0, 200)
VisualsTab.CanvasSize = UDim2.new(0, 0, 0, 300)

---------------------------------------------------------
-- Main RenderStepped Loop
---------------------------------------------------------
RunService.RenderStepped:Connect(function()
    local screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
    FOVCircle.Position = screenCenter
    FOVCircle.Radius = Settings.FOVRadius
    FOVCircle.Visible = Settings.FOVEnabled

    Update2DESP()

    if Settings.AimbotEnabled then
        local targetPart = GetClosestNPC()
        if targetPart then
            local targetCFrame = CFrame.lookAt(Camera.CFrame.Position, targetPart.Position)
            Camera.CFrame = Camera.CFrame:Lerp(targetCFrame, Settings.Smoothness)
        end
    end
end)

Features & Information

- ​Aimbot: Auto-aim that automatically locks onto the target's head or torso - ​Wall Check: Aiming filter that ignores walls and transparent obstacles ​- FOV Circle: Visual circle on screen showing the target acquisition area ​- Aimbot FOV Adjustment: Slider to change the aimbot radius ​- Smoothness Control: Adjustment for smooth, natural-looking target tracking ​- Master ESP: Global toggle to enable or disable all visual overlays - ​Chams (Highlight): Full-body silhouette glow visible through solid walls ​- 2D Boxes: Bounding boxes surrounding NPC and player models - ​Tracers: Lines drawn from the screen center directly to targets ​- Health Bar: Real-time health bar next to each target ​- Name ESP: Displays target names above their head -​Distance ESP: Shows exact distance to targets in meters/studs

Community Comments (0)

No comments yet for this script.

More Scripts for [👮] Tactical: Swat Simulator