local CoreGui = game:GetService("CoreGui") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Teams = game:GetService("Teams") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer if CoreGui:FindFirstChild("AimBotSmooth") then CoreGui.AimBotSmooth:Destroy() end local Settings = { Aimlock = false, LockTeam = false, Highlights = false, Tracers = false, PlayerInfo = false, LockDist = 500, WalkSpeed = 16, Smoothness = 0.5, WhitelistedTeams = {}, WhitelistedPlayers = {}, UI_Visible = true, Theme = { BG = Color3.fromRGB(10, 10, 15), Accent = Color3.fromRGB(0, 255, 200), Text = Color3.fromRGB(255, 255, 255), DarkText = Color3.fromRGB(150, 150, 150), ButtonOff = Color3.fromRGB(25, 25, 30), Safe = Color3.fromRGB(0, 180, 80), TeamBlue = Color3.fromRGB(60, 120, 255) } } local DrawingLines = {} local CameraDragging = false UserInputService.InputBegan:Connect(function(input, gp) if not gp and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton2) then CameraDragging = true end end) UserInputService.InputEnded:Connect(function(input, gp) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton2 then CameraDragging = false end end) local function GetClosestPlayer() local target, closestDist = nil, math.huge local screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) for _, v in pairs(Players:GetPlayers()) do if v ~= LocalPlayer and v.Character and v.Character:FindFirstChild("HumanoidRootPart") and v.Character:FindFirstChild("Humanoid") and v.Character.Humanoid.Health > 0 then local dist = (LocalPlayer.Character.HumanoidRootPart.Position - v.Character.HumanoidRootPart.Position).Magnitude if dist > Settings.LockDist then continue end if not Settings.LockTeam and v.Team == LocalPlayer.Team then continue end if v.Team and Settings.WhitelistedTeams[v.Team.Name] then continue end if Settings.WhitelistedPlayers[v.Name] then continue end local pos, onScreen = Camera:WorldToViewportPoint(v.Character.HumanoidRootPart.Position) if onScreen then local screenDist = (Vector2.new(pos.X, pos.Y) - screenCenter).Magnitude if screenDist < closestDist then closestDist = screenDist; target = v.Character end end end end return target end local Gui = Instance.new("ScreenGui", CoreGui) Gui.Name = "AimBotSmooth" local function EnableDrag(obj) local dragStart, startPos, dragging obj.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true; dragStart = input.Position; startPos = obj.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) 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 obj.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end -- Floating Toggle local MiniBtn = Instance.new("TextButton", Gui) MiniBtn.Size = UDim2.new(0, 55, 0, 55); MiniBtn.Position = UDim2.new(0, 50, 0, 150) MiniBtn.BackgroundColor3 = Settings.Theme.Accent; MiniBtn.Text = "AS"; MiniBtn.Font = Enum.Font.GothamBold; MiniBtn.TextSize = 22; MiniBtn.TextColor3 = Color3.fromRGB(0,0,0) Instance.new("UICorner", MiniBtn).CornerRadius = UDim.new(1, 0) EnableDrag(MiniBtn) -- Main Frame local Main = Instance.new("Frame", Gui) Main.Size = UDim2.new(0, 310, 0, 480); Main.Position = UDim2.new(0.5, -155, 0.5, -240) Main.BackgroundColor3 = Settings.Theme.BG; Main.BorderSizePixel = 0; Main.ClipsDescendants = true Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 12) EnableDrag(Main) MiniBtn.MouseButton1Click:Connect(function() Settings.UI_Visible = not Settings.UI_Visible; Main.Visible = Settings.UI_Visible end) local Title = Instance.new("TextLabel", Main) Title.Size = UDim2.new(1, 0, 0, 45); Title.Text = "AimBotSmooth PRO"; Title.TextColor3 = Settings.Theme.Accent; Title.Font = Enum.Font.GothamBold; Title.TextSize = 18; Title.BackgroundColor3 = Color3.fromRGB(20, 20, 25) local Scroll = Instance.new("ScrollingFrame", Main) Scroll.Size = UDim2.new(1, -20, 1, -60); Scroll.Position = UDim2.new(0, 10, 0, 55); Scroll.BackgroundTransparency = 1; Scroll.ScrollBarThickness = 0 local List = Instance.new("UIListLayout", Scroll); List.Padding = UDim.new(0, 8) -- [[ LIST WINDOW GENERATOR ]] -- local function CreateSubWindow(title, posOffset) local frame = Instance.new("Frame", Gui) frame.Size = UDim2.new(0, 240, 0, 320); frame.Position = UDim2.new(0.5, posOffset, 0.5, -160) frame.BackgroundColor3 = Settings.Theme.BG; frame.Visible = false; frame.BorderSizePixel = 0 Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10) EnableDrag(frame) local tLabel = Instance.new("TextLabel", frame) tLabel.Size = UDim2.new(1, 0, 0, 35); tLabel.Text = title; tLabel.TextColor3 = Settings.Theme.Accent; tLabel.Font = Enum.Font.GothamBold; tLabel.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Instance.new("UICorner", tLabel) local sc = Instance.new("ScrollingFrame", frame) sc.Size = UDim2.new(1, -15, 1, -45); sc.Position = UDim2.new(0, 10, 0, 40); sc.BackgroundTransparency = 1; sc.ScrollBarThickness = 2 local ly = Instance.new("UIListLayout", sc); ly.Padding = UDim.new(0, 5) return frame, sc end local PListFrame, PListScroll = CreateSubWindow("PLAYER WHITELIST", 170) local TListFrame, TListScroll = CreateSubWindow("TEAM WHITELIST", -420) -- [[ REFRESH LOGIC ]] -- local function RefreshPlayerList() for _, c in pairs(PListScroll:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer then local btn = Instance.new("TextButton", PListScroll) btn.Size = UDim2.new(1, -5, 0, 30); btn.BackgroundColor3 = Settings.WhitelistedPlayers[p.Name] and Settings.Theme.Safe or Settings.Theme.ButtonOff btn.Text = " " .. p.Name; btn.TextColor3 = Color3.new(1,1,1); btn.Font = Enum.Font.GothamBold; btn.TextSize = 12; btn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", btn) btn.MouseButton1Click:Connect(function() Settings.WhitelistedPlayers[p.Name] = not Settings.WhitelistedPlayers[p.Name]; RefreshPlayerList() end) end end end local function RefreshTeamList() for _, c in pairs(TListScroll:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end for _, t in pairs(Teams:GetTeams()) do local btn = Instance.new("TextButton", TListScroll) btn.Size = UDim2.new(1, -5, 0, 30); btn.BackgroundColor3 = Settings.WhitelistedTeams[t.Name] and Settings.Theme.TeamBlue or Settings.Theme.ButtonOff btn.Text = " " .. t.Name; btn.TextColor3 = Color3.new(1,1,1); btn.Font = Enum.Font.GothamBold; btn.TextSize = 12; btn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", btn) btn.MouseButton1Click:Connect(function() Settings.WhitelistedTeams[t.Name] = not Settings.WhitelistedTeams[t.Name]; RefreshTeamList() end) end end -- [[ UI ELEMENTS ]] -- local function CreateToggle(name, key) local btn = Instance.new("TextButton", Scroll); btn.Size = UDim2.new(1, 0, 0, 40); btn.BackgroundColor3 = Settings.Theme.ButtonOff; btn.Text = " " .. name .. " [OFF]"; btn.TextColor3 = Settings.Theme.DarkText; btn.Font = Enum.Font.GothamBold; btn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", btn) btn.MouseButton1Click:Connect(function() Settings[key] = not Settings[key]; btn.TextColor3 = Settings[key] and Settings.Theme.BG or Settings.Theme.DarkText; btn.BackgroundColor3 = Settings[key] and Settings.Theme.Accent or Settings.Theme.ButtonOff; btn.Text = " " .. name .. (Settings[key] and " [ON]" or " [OFF]") end) end local function CreateInput(name, key, default) local frame = Instance.new("Frame", Scroll); frame.Size = UDim2.new(1, 0, 0, 40); frame.BackgroundTransparency = 1 local label = Instance.new("TextLabel", frame); label.Size = UDim2.new(0.5, 0, 1, 0); label.Text = " " .. name; label.TextColor3 = Settings.Theme.Text; label.Font = Enum.Font.GothamBold; label.TextXAlignment = Enum.TextXAlignment.Left; label.BackgroundTransparency = 1 local input = Instance.new("TextBox", frame); input.Size = UDim2.new(0.45, 0, 0.8, 0); input.Position = UDim2.new(0.5, 0, 0.1, 0); input.BackgroundColor3 = Settings.Theme.ButtonOff; input.Text = tostring(default); input.TextColor3 = Settings.Theme.Accent; input.Font = Enum.Font.GothamBold; Instance.new("UICorner", input) input.FocusLost:Connect(function() Settings[key] = tonumber(input.Text) or default end) end CreateToggle("Aimlock Head", "Aimlock") CreateToggle("Lock Your Team", "LockTeam") local TeamBtn = Instance.new("TextButton", Scroll) TeamBtn.Size = UDim2.new(1, 0, 0, 40); TeamBtn.BackgroundColor3 = Color3.fromRGB(40, 70, 120); TeamBtn.Text = " MANAGE TEAM WHITELIST"; TeamBtn.TextColor3 = Color3.new(1,1,1); TeamBtn.Font = Enum.Font.GothamBold; TeamBtn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", TeamBtn) TeamBtn.MouseButton1Click:Connect(function() TListFrame.Visible = not TListFrame.Visible; if TListFrame.Visible then RefreshTeamList() end end) local PlayBtn = Instance.new("TextButton", Scroll) PlayBtn.Size = UDim2.new(1, 0, 0, 40); PlayBtn.BackgroundColor3 = Color3.fromRGB(80, 40, 120); PlayBtn.Text = " MANAGE PLAYER WHITELIST"; PlayBtn.TextColor3 = Color3.new(1,1,1); PlayBtn.Font = Enum.Font.GothamBold; PlayBtn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", PlayBtn) PlayBtn.MouseButton1Click:Connect(function() PListFrame.Visible = not PListFrame.Visible; if PListFrame.Visible then RefreshPlayerList() end end) CreateToggle("Highlights (Chams)", "Highlights") CreateToggle("Body Tracers (Line)", "Tracers") CreateToggle("Player Info (ESP)", "PlayerInfo") CreateInput("Lock Distance", "LockDist", 500) CreateInput("Smooth Aim (0.1-1)", "Smoothness", 0.5) CreateInput("WalkSpeed Boost", "WalkSpeed", 16) -- [[ MAIN LOOP ]] -- RunService.RenderStepped:Connect(function() if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then LocalPlayer.Character.Humanoid.WalkSpeed = Settings.WalkSpeed end if Settings.Aimlock and not CameraDragging then local t = GetClosestPlayer() if t and t:FindFirstChild("Head") then Camera.CFrame = Camera.CFrame:Lerp(CFrame.lookAt(Camera.CFrame.Position, t.Head.Position), Settings.Smoothness) end end for _, l in pairs(DrawingLines) do l:Remove() end; DrawingLines = {} for _, v in pairs(Players:GetPlayers()) do if v ~= LocalPlayer and v.Character and v.Character:FindFirstChild("HumanoidRootPart") and v.Character:FindFirstChild("Humanoid") then local char = v.Character local isW = Settings.WhitelistedPlayers[v.Name] or (v.Team and Settings.WhitelistedTeams[v.Team.Name]) local color = isW and Settings.Theme.Safe or v.TeamColor.Color -- Highlights (AlwaysOnTop = ทะลุสิ่งกีดขวาง) local hl = char:FindFirstChild("EliteHighlight") or Instance.new("Highlight", char) hl.Name = "EliteHighlight"; hl.FillColor = color; hl.Enabled = Settings.Highlights hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop -- Fixed ESP Info local info = char:FindFirstChild("EliteInfo") if Settings.PlayerInfo and char.Humanoid.Health > 0 then if not info then info = Instance.new("BillboardGui", char) info.Name = "EliteInfo"; info.Size = UDim2.new(0, 100, 0, 50); info.Adornee = char:FindFirstChild("Head") info.AlwaysOnTop = true; info.ExtentsOffset = Vector3.new(0, 3, 0) local txt = Instance.new("TextLabel", info) txt.Size = UDim2.new(1, 0, 1, 0); txt.BackgroundTransparency = 1; txt.Font = Enum.Font.GothamBold; txt.TextSize = 12; txt.TextStrokeTransparency = 0 end local dist = math.floor((LocalPlayer.Character.HumanoidRootPart.Position - char.HumanoidRootPart.Position).Magnitude) info.TextLabel.Text = string.format("%s\n%d HP | %dm", v.Name, math.floor(char.Humanoid.Health), dist) info.TextLabel.TextColor3 = color; info.Enabled = true elseif info then info.Enabled = false end -- Tracers if Settings.Tracers and char.Humanoid.Health > 0 then local _, onScreen = Camera:WorldToViewportPoint(char.HumanoidRootPart.Position) if onScreen then local myP, _ = Camera:WorldToViewportPoint(LocalPlayer.Character.HumanoidRootPart.Position) local taP, _ = Camera:WorldToViewportPoint(char.HumanoidRootPart.Position) local l = Drawing.new("Line"); l.From = Vector2.new(myP.X, myP.Y); l.To = Vector2.new(taP.X, taP.Y); l.Color = color; l.Thickness = 1.5; l.Visible = true; table.insert(DrawingLines, l) end end end end end)