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)