local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") _G.FriendColor = Color3.fromRGB(0, 0, 255) _G.EnemyColor = Color3.fromRGB(255, 0, 0) _G.UseTeamColor = true local DEFAULT_FOV = 60 local DEFAULT_SMOOTHNESS = 0.3 local AIM_PARTS = {"Head", "Body"} local currentAimPart = 1 local currentFOV = DEFAULT_FOV local currentSmoothness = DEFAULT_SMOOTHNESS local aimbotEnabled = true local espEnabled = true local running = true local fovCircle local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "FPSHelper" ScreenGui.Parent = CoreGui local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 250, 0, 300) MainFrame.Position = UDim2.new(0.8, 0, 0.5, -150) MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40) MainFrame.BorderSizePixel = 0 MainFrame.Active = true MainFrame.Draggable = true MainFrame.Parent = ScreenGui local Header = Instance.new("TextLabel") Header.Size = UDim2.new(1, 0, 0, 30) Header.BackgroundColor3 = Color3.fromRGB(20, 20, 30) Header.Text = "FPS Helper v2.6" Header.TextColor3 = Color3.new(1, 1, 1) Header.Font = Enum.Font.SourceSansBold Header.TextSize = 18 Header.Parent = MainFrame local CloseButton = Instance.new("TextButton") CloseButton.Size = UDim2.new(0, 30, 0, 30) CloseButton.Position = UDim2.new(1, -30, 0, 0) CloseButton.Text = "X" CloseButton.TextColor3 = Color3.new(1, 1, 1) CloseButton.BackgroundColor3 = Color3.fromRGB(255, 60, 60) CloseButton.Font = Enum.Font.GothamBold CloseButton.TextSize = 18 CloseButton.Parent = Header local Holder = Instance.new("Folder", CoreGui) Holder.Name = "ESP" local function ESP(target) if not espEnabled or target == Players.LocalPlayer then return end if target.Character then if not target.Character:FindFirstChild("ESP_Highlight") then local highlight = Instance.new("Highlight") highlight.Name = "ESP_Highlight" highlight.Adornee = target.Character highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.FillColor = _G.UseTeamColor and target.TeamColor.Color or ((Players.LocalPlayer.TeamColor == target.TeamColor) and _G.FriendColor or _G.EnemyColor) highlight.OutlineColor = Color3.new(0, 0, 0) highlight.FillTransparency = 0.5 highlight.OutlineTransparency = 0 highlight.Parent = target.Character else target.Character.ESP_Highlight.FillColor = _G.UseTeamColor and target.TeamColor.Color or ((Players.LocalPlayer.TeamColor == target.TeamColor) and _G.FriendColor or _G.EnemyColor) end end end local function UpdateAllESP() if not espEnabled then return end for _, player in ipairs(Players:GetPlayers()) do if player ~= Players.LocalPlayer then coroutine.wrap(ESP)(player) end end end local function UpdateFOV() if not fovCircle then fovCircle = Drawing.new("Circle") fovCircle.Visible = aimbotEnabled fovCircle.Thickness = 2 fovCircle.Transparency = 1 fovCircle.Color = Color3.new(1, 0, 0) end fovCircle.Radius = currentFOV fovCircle.Position = Vector2.new(workspace.CurrentCamera.ViewportSize.X/2, workspace.CurrentCamera.ViewportSize.Y/2) end local function FindTarget() local closest = {dist = math.huge} local center = Vector2.new(workspace.CurrentCamera.ViewportSize.X/2, workspace.CurrentCamera.ViewportSize.Y/2) local aimPartName = currentAimPart == 1 and "Head" or "HumanoidRootPart" for _, player in ipairs(Players:GetPlayers()) do if player ~= Players.LocalPlayer and player.Character then local part = player.Character:FindFirstChild(aimPartName) if part then local pos, vis = workspace.CurrentCamera:WorldToViewportPoint(part.Position) if vis then local ray = Ray.new( workspace.CurrentCamera.CFrame.Position, (part.Position - workspace.CurrentCamera.CFrame.Position).Unit * 1000 ) local hit = workspace:FindPartOnRay(ray, Players.LocalPlayer.Character) if hit and hit:IsDescendantOf(player.Character) then local dist = (Vector2.new(pos.X, pos.Y) - center).Magnitude if dist < currentFOV and dist < closest.dist then closest = {part = part, dist = dist} end end end end end end return closest.part end local function CreateToggle(text, ypos, state, callback) local button = Instance.new("TextButton") button.Size = UDim2.new(0.9, 0, 0, 30) button.Position = UDim2.new(0.05, 0, ypos/300, 0) button.Text = text..": "..(state and "ON" or "OFF") button.TextColor3 = Color3.new(1, 1, 1) button.BackgroundColor3 = state and Color3.fromRGB(60, 200, 60) or Color3.fromRGB(200, 60, 60) button.Font = Enum.Font.SourceSans button.TextSize = 16 button.Parent = MainFrame button.MouseButton1Click:Connect(function() state = not state button.Text = text..": "..(state and "ON" or "OFF") button.BackgroundColor3 = state and Color3.fromRGB(60, 200, 60) or Color3.fromRGB(200, 60, 60) callback(state) end) end local function CreateSlider(text, ypos, min, max, step, value, callback) local container = Instance.new("Frame") container.Size = UDim2.new(0.9, 0, 0, 50) container.Position = UDim2.new(0.05, 0, ypos/300, 0) container.BackgroundTransparency = 1 container.Parent = MainFrame local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 0, 20) label.Text = text..": "..value label.TextColor3 = Color3.new(1, 1, 1) label.BackgroundTransparency = 1 label.Font = Enum.Font.SourceSans label.TextSize = 14 label.Parent = container local track = Instance.new("Frame") track.Size = UDim2.new(1, 0, 0, 10) track.Position = UDim2.new(0, 0, 0, 25) track.BackgroundColor3 = Color3.fromRGB(60, 60, 70) track.BorderSizePixel = 0 track.Parent = container local percentage = (value - min)/(max - min) local thumb = Instance.new("Frame") thumb.Size = UDim2.new(0, 15, 0, 20) thumb.Position = UDim2.new(percentage, -7.5, -0.5, 0) thumb.BackgroundColor3 = Color3.fromRGB(60, 200, 60) thumb.BorderSizePixel = 0 thumb.Parent = track local dragging = false thumb.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true MainFrame.Draggable = false end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local mousePos = UserInputService:GetMouseLocation() local trackPos = track.AbsolutePosition local trackSize = track.AbsoluteSize local relX = math.clamp(mousePos.X - trackPos.X, 0, trackSize.X) local percent = relX/trackSize.X local value = math.floor((min + (max - min)*percent)/step + 0.5)*step value = math.clamp(value, min, max) thumb.Position = UDim2.new(percent, -7.5, -0.5, 0) label.Text = text..": "..value callback(value) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false MainFrame.Draggable = true end end) end CreateToggle("Aimbot", 40, aimbotEnabled, function(state) aimbotEnabled = state if fovCircle then fovCircle.Visible = state end end) CreateToggle("ESP", 90, espEnabled, function(state) espEnabled = state if state then UpdateAllESP() else for _, player in ipairs(Players:GetPlayers()) do if player ~= Players.LocalPlayer and player.Character and player.Character:FindFirstChild("ESP_Highlight") then player.Character.ESP_Highlight:Destroy() end end end end) CreateSlider("FOV", 140, 10, 120, 1, currentFOV, function(value) currentFOV = value UpdateFOV() end) CreateSlider("Smoothness", 190, 0.1, 1, 0.1, currentSmoothness, function(value) currentSmoothness = value end) local aimPartButton = Instance.new("TextButton") aimPartButton.Size = UDim2.new(0.9, 0, 0, 30) aimPartButton.Position = UDim2.new(0.05, 0, 250/300, 0) aimPartButton.Text = "Target: "..AIM_PARTS[currentAimPart] aimPartButton.TextColor3 = Color3.new(1, 1, 1) aimPartButton.BackgroundColor3 = Color3.fromRGB(80, 120, 200) aimPartButton.Font = Enum.Font.SourceSans aimPartButton.TextSize = 16 aimPartButton.Parent = MainFrame aimPartButton.MouseButton1Click:Connect(function() currentAimPart = currentAimPart%#AIM_PARTS + 1 aimPartButton.Text = "Target: "..AIM_PARTS[currentAimPart] end) RunService.RenderStepped:Connect(function() if not running then return end if espEnabled then for _, player in ipairs(Players:GetPlayers()) do if player ~= Players.LocalPlayer then coroutine.wrap(ESP)(player) end end end UpdateFOV() if aimbotEnabled then local target = FindTarget() if target then local camPos = workspace.CurrentCamera.CFrame.Position local newCF = CFrame.new(camPos, target.Position) workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame:Lerp(newCF, currentSmoothness) end end end) local function SetupPlayer(player) if player == Players.LocalPlayer then return end player.CharacterAdded:Connect(function(character) if espEnabled then task.wait(0.5) ESP(player) end end) if player.Character and espEnabled then ESP(player) end end for _, player in ipairs(Players:GetPlayers()) do SetupPlayer(player) end Players.PlayerAdded:Connect(SetupPlayer) Players.PlayerRemoving:Connect(function(player) if player.Character and player.Character:FindFirstChild("ESP_Highlight") then player.Character.ESP_Highlight:Destroy() end end) CloseButton.MouseButton1Click:Connect(function() running = false ScreenGui:Destroy() Holder:Destroy() if fovCircle then fovCircle:Remove() end for _, player in ipairs(Players:GetPlayers()) do if player.Character and player.Character:FindFirstChild("ESP_Highlight") then player.Character.ESP_Highlight:Destroy() end end end)