local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local player = Players.LocalPlayer local mouse = player:GetMouse() local camera = workspace.CurrentCamera local function getRootPart() local character = player.Character return character and character:FindFirstChild("HumanoidRootPart") end local function createTool(name) local tool = Instance.new("Tool") tool.Name = name tool.RequiresHandle = false tool.CanBeDropped = false tool.ManualActivationOnly = false tool.Parent = player:WaitForChild("Backpack") return tool end local teleportTool = createTool("Teleport") local teleportConnection teleportTool.Equipped:Connect(function() teleportConnection = mouse.Button1Down:Connect(function() local root = getRootPart() if not root then return end local target = mouse.Hit if target then root.CFrame = CFrame.new(target.Position + Vector3.new(0, 3, 0)) end end) end) teleportTool.Unequipped:Connect(function() if teleportConnection then teleportConnection:Disconnect() teleportConnection = nil end end) local flyTool = createTool("Fly") local flying = false local flySpeed = 60 local flyVelocity local flyGyro local flyConnection local flyGui local flyButton local function stopFlying() flying = false if flyConnection then flyConnection:Disconnect() flyConnection = nil end if flyVelocity then flyVelocity:Destroy() flyVelocity = nil end if flyGyro then flyGyro:Destroy() flyGyro = nil end local character = player.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.PlatformStand = false end if flyButton then flyButton.Text = "FLY: OFF" flyButton.BackgroundColor3 = Color3.fromRGB(50, 70, 50) end end local function startFlying() local root = getRootPart() local character = player.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") if not root or not humanoid then return end stopFlying() flying = true humanoid.PlatformStand = true flyVelocity = Instance.new("BodyVelocity") flyVelocity.MaxForce = Vector3.new(9e9, 9e9, 9e9) flyVelocity.Velocity = Vector3.zero flyVelocity.Parent = root flyGyro = Instance.new("BodyGyro") flyGyro.MaxTorque = Vector3.new(9e9, 9e9, 9e9) flyGyro.P = 9e4 flyGyro.Parent = root flyConnection = RunService.RenderStepped:Connect(function() if not flying or not root.Parent then stopFlying() return end local cameraCFrame = camera.CFrame local direction = Vector3.zero if UserInputService:IsKeyDown(Enum.KeyCode.W) then direction += cameraCFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then direction -= cameraCFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then direction -= cameraCFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then direction += cameraCFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.Space) then direction += Vector3.new(0, 1, 0) end if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then direction -= Vector3.new(0, 1, 0) end if direction.Magnitude > 0 then direction = direction.Unit * flySpeed end flyVelocity.Velocity = direction flyGyro.CFrame = cameraCFrame end) if flyButton then flyButton.Text = "FLY: ON" flyButton.BackgroundColor3 = Color3.fromRGB(50, 160, 70) end end local function createFlyUI() if flyGui then flyGui:Destroy() end flyGui = Instance.new("ScreenGui") flyGui.Name = "FlyUI" flyGui.ResetOnSpawn = false pcall(function() flyGui.Parent = CoreGui end) if not flyGui.Parent then flyGui.Parent = player:WaitForChild("PlayerGui") end local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 140, 0, 70) frame.Position = UDim2.new(0.5, -70, 0.15, 0) frame.BackgroundColor3 = Color3.fromRGB(20, 26, 20) frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true frame.Parent = flyGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = frame local outline = Instance.new("UIStroke") outline.Color = Color3.fromRGB(50, 90, 50) outline.Thickness = 1.5 outline.Parent = frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 22) title.BackgroundTransparency = 1 title.Text = "Fly Control" title.TextColor3 = Color3.fromRGB(200, 230, 200) title.Font = Enum.Font.GothamBold title.TextSize = 13 title.Parent = frame flyButton = Instance.new("TextButton") flyButton.Size = UDim2.new(0.85, 0, 0, 28) flyButton.Position = UDim2.new(0.075, 0, 0, 30) flyButton.BackgroundColor3 = Color3.fromRGB(50, 70, 50) flyButton.Text = "FLY: OFF" flyButton.TextColor3 = Color3.new(1, 1, 1) flyButton.Font = Enum.Font.GothamBold flyButton.TextSize = 13 flyButton.Parent = frame local buttonCorner = Instance.new("UICorner") buttonCorner.CornerRadius = UDim.new(0, 6) buttonCorner.Parent = flyButton flyButton.MouseButton1Click:Connect(function() if flying then stopFlying() else startFlying() end end) end flyTool.Equipped:Connect(createFlyUI) flyTool.Unequipped:Connect(function() stopFlying() if flyGui then flyGui:Destroy() flyGui = nil end end) player.CharacterAdded:Connect(function() task.wait(0.5) if flying then stopFlying() end end) local espTool = createTool("ESP") local espEnabled = false local espSettings = { Boxes = true, Names = true, Tracers = false, Distance = true, Health = true, Chams = true, TeamCheck = false, MaxDist = 2000 } local espObjects = {} local espGui local espConnection local function hideESP(objects) for name, object in pairs(objects) do if name == "highlight" then object.Enabled = false else object.Visible = false end end end local function removeESP(targetPlayer) local objects = espObjects[targetPlayer] if not objects then return end for _, object in pairs(objects) do if typeof(object) == "Instance" then pcall(function() object:Destroy() end) else pcall(function() object:Remove() end) end end espObjects[targetPlayer] = nil end local function clearESP() for targetPlayer in pairs(espObjects) do removeESP(targetPlayer) end end local function createESP(targetPlayer) if targetPlayer == player or espObjects[targetPlayer] then return end local success, box = pcall(function() return Drawing.new("Square") end) if not success or not box then return end box.Thickness = 1.5 box.Filled = false box.Color = Color3.fromRGB(60, 200, 90) box.Visible = false box.ZIndex = 2 local name = Drawing.new("Text") name.Size = 14 name.Center = true name.Outline = true name.Color = Color3.fromRGB(220, 240, 220) name.Visible = false name.ZIndex = 3 local tracer = Drawing.new("Line") tracer.Thickness = 1.2 tracer.Color = Color3.fromRGB(60, 200, 90) tracer.Visible = false tracer.ZIndex = 1 local health = Drawing.new("Line") health.Thickness = 2.5 health.Color = Color3.fromRGB(50, 200, 80) health.Visible = false health.ZIndex = 2 local distance = Drawing.new("Text") distance.Size = 12 distance.Center = true distance.Outline = true distance.Color = Color3.fromRGB(180, 200, 180) distance.Visible = false distance.ZIndex = 3 local highlight = Instance.new("Highlight") highlight.FillColor = Color3.fromRGB(60, 200, 90) highlight.OutlineColor = Color3.fromRGB(30, 120, 50) highlight.FillTransparency = 0.55 highlight.OutlineTransparency = 0 highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.Enabled = false if targetPlayer.Character then highlight.Parent = targetPlayer.Character highlight.Adornee = targetPlayer.Character end espObjects[targetPlayer] = { box = box, name = name, tracer = tracer, health = health, distance = distance, highlight = highlight } end local function isEnemy(targetPlayer) if not espSettings.TeamCheck then return true end if not player.Team or not targetPlayer.Team then return true end return player.Team ~= targetPlayer.Team end local function updateESP() if not espEnabled then for _, objects in pairs(espObjects) do hideESP(objects) end return end for targetPlayer, objects in pairs(espObjects) do if not targetPlayer.Parent or not targetPlayer.Character or not isEnemy(targetPlayer) then hideESP(objects) continue end local character = targetPlayer.Character local root = character:FindFirstChild("HumanoidRootPart") local humanoid = character:FindFirstChildOfClass("Humanoid") local head = character:FindFirstChild("Head") if not root or not humanoid or humanoid.Health <= 0 then hideESP(objects) continue end if objects.highlight and objects.highlight.Parent ~= character then objects.highlight.Parent = character objects.highlight.Adornee = character end local screenPosition, onScreen = camera:WorldToViewportPoint(root.Position) local distanceFromCamera = (root.Position - camera.CFrame.Position).Magnitude if not onScreen or distanceFromCamera > espSettings.MaxDist then hideESP(objects) continue end local headPosition = head and camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.6, 0)) or screenPosition local footPosition = camera:WorldToViewportPoint( root.Position - Vector3.new(0, 3, 0) ) local height = math.abs(headPosition.Y - footPosition.Y) local width = height * 0.55 local x = screenPosition.X - width / 2 local y = headPosition.Y if espSettings.Boxes then objects.box.Size = Vector2.new(width, height) objects.box.Position = Vector2.new(x, y) objects.box.Visible = true else objects.box.Visible = false end if espSettings.Names then objects.name.Text = targetPlayer.Name objects.name.Position = Vector2.new(screenPosition.X, y - 16) objects.name.Visible = true else objects.name.Visible = false end if espSettings.Distance then objects.distance.Text = math.floor(distanceFromCamera) .. "m" objects.distance.Position = Vector2.new( screenPosition.X, footPosition.Y + 4 ) objects.distance.Visible = true else objects.distance.Visible = false end if espSettings.Health then local healthPercent = math.clamp( humanoid.Health / math.max(humanoid.MaxHealth, 1), 0, 1 ) objects.health.From = Vector2.new(x - 5, y + height) objects.health.To = Vector2.new( x - 5, y + height - height * healthPercent ) objects.health.Color = Color3.fromRGB( 255 * (1 - healthPercent), 220 * healthPercent, 40 ) objects.health.Visible = true else objects.health.Visible = false end if espSettings.Tracers then objects.tracer.From = Vector2.new( camera.ViewportSize.X / 2, camera.ViewportSize.Y ) objects.tracer.To = Vector2.new( screenPosition.X, footPosition.Y ) objects.tracer.Visible = true else objects.tracer.Visible = false end if objects.highlight then objects.highlight.Enabled = espSettings.Chams end end end local function startESP() if espConnection then espConnection:Disconnect() end espConnection = RunService.RenderStepped:Connect(updateESP) end local function stopESP() if espConnection then espConnection:Disconnect() espConnection = nil end clearESP() end Players.PlayerAdded:Connect(function(newPlayer) newPlayer.CharacterAdded:Connect(function() task.wait(0.5) if espEnabled then createESP(newPlayer) end end) end) Players.PlayerRemoving:Connect(removeESP) local function createESPUI() if espGui then espGui:Destroy() end espGui = Instance.new("ScreenGui") espGui.Name = "ESPUI" espGui.ResetOnSpawn = false pcall(function() espGui.Parent = CoreGui end) if not espGui.Parent then espGui.Parent = player:WaitForChild("PlayerGui") end local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 180, 0, 256) frame.Position = UDim2.new(0.02, 0, 0.25, 0) frame.BackgroundColor3 = Color3.fromRGB(18, 24, 18) frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true frame.Parent = espGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = frame local outline = Instance.new("UIStroke") outline.Color = Color3.fromRGB(50, 100, 50) outline.Thickness = 1.5 outline.Parent = frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 26) title.BackgroundTransparency = 1 title.Text = "ESP Settings" title.TextColor3 = Color3.fromRGB(200, 230, 200) title.Font = Enum.Font.GothamBold title.TextSize = 14 title.Parent = frame local toggles = { {label = "ESP Enabled", key = "Enabled"}, {label = "Boxes", key = "Boxes"}, {label = "Names", key = "Names"}, {label = "Tracers", key = "Tracers"}, {label = "Distance", key = "Distance"}, {label = "Health Bar", key = "Health"}, {label = "Chams", key = "Chams"}, {label = "Team Check", key = "TeamCheck"} } for index, setting in ipairs(toggles) do local y = 32 + (index - 1) * 26 local label = Instance.new("TextLabel") label.Size = UDim2.new(0.58, 0, 0, 22) label.Position = UDim2.new(0, 10, 0, y) label.BackgroundTransparency = 1 label.Text = setting.label label.TextColor3 = Color3.fromRGB(200, 220, 200) label.Font = Enum.Font.Gotham label.TextSize = 12 label.TextXAlignment = Enum.TextXAlignment.Left label.Parent = frame local enabled = setting.key == "Enabled" and espEnabled or espSettings[setting.key] local button = Instance.new("TextButton") button.Size = UDim2.new(0, 44, 0, 20) button.Position = UDim2.new(1, -54, 0, y + 1) button.BackgroundColor3 = enabled and Color3.fromRGB(50, 150, 70) or Color3.fromRGB(50, 60, 50) button.Text = enabled and "ON" or "OFF" button.TextColor3 = Color3.new(1, 1, 1) button.Font = Enum.Font.GothamBold button.TextSize = 11 button.Parent = frame local buttonCorner = Instance.new("UICorner") buttonCorner.CornerRadius = UDim.new(0, 5) buttonCorner.Parent = button button.MouseButton1Click:Connect(function() if setting.key == "Enabled" then espEnabled = not espEnabled button.Text = espEnabled and "ON" or "OFF" button.BackgroundColor3 = espEnabled and Color3.fromRGB(50, 150, 70) or Color3.fromRGB(50, 60, 50) if espEnabled then startESP() for _, targetPlayer in ipairs(Players:GetPlayers()) do if targetPlayer ~= player then createESP(targetPlayer) end end else stopESP() end else espSettings[setting.key] = not espSettings[setting.key] local isOn = espSettings[setting.key] button.Text = isOn and "ON" or "OFF" button.BackgroundColor3 = isOn and Color3.fromRGB(50, 150, 70) or Color3.fromRGB(50, 60, 50) end end) end end espTool.Equipped:Connect(createESPUI) espTool.Unequipped:Connect(function() if espGui then espGui:Destroy() espGui = nil end end)