local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local VirtualUser = game:GetService("VirtualUser") local VIM = game:GetService("VirtualInputManager") local LocalPlayer = Players.LocalPlayer local ToolSequence = { "Melee", "Machine Gun", "Laser", "Rocket Launchers" } local Config = { StopScripts = false, -- Farm & Basic TargetToolName = "", AutoEquip = false, MultiAutoEquip = false, MultiEquipDelay = 1, CoordX = 0, CoordY = 0, CoordZ = 0, TpDelay = 1, AutoTp = false, AutoAttack = false, AutoSpawn = false, AntiAfk = false, -- Auto Farm (Behind TP) AutoFarm = false, FarmDistance = 5, -- Speed SpeedMult = 2, AutoSpeed = false, HoldQSpeed = false, IsQHeld = false, -- Orbit OrbitCenter = Vector3.new(0, 50, 0), OrbitRadius = 20, OrbitSpeed = 2, OrbitEnabled = false, OrbitClockwise = true, OrbitConnection = nil, OrbitAngle = 0, -- Aim AimToiletAuto = false, AimToiletHoldE = false, AimPlayerAuto = false, AimPlayerHoldE = false, IsEHeld = false, -- ESP EspPlayer = false, EspToilet = false } local CachedToilets = {} task.spawn(function() while true do if Config.StopScripts then break end local tempCache = {} -- Ищем папку с мобами в Workspace local enemyFolder = workspace:FindFirstChild("Enemies") or workspace:FindFirstChild("Toilets") if enemyFolder then for _, obj in pairs(enemyFolder:GetDescendants()) do if obj:IsA("Model") and obj ~= LocalPlayer.Character then -- Проверяем наличие Humanoid, чтобы избежать захвата мусорных моделей if obj:FindFirstChild("Humanoid") then table.insert(tempCache, obj) end end end end CachedToilets = tempCache task.wait(1) end end) local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "ProHub_Ultimate" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling pcall(function() ScreenGui.Parent = game:GetService("CoreGui") end) if not ScreenGui.Parent then ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 380, 0, 500) MainFrame.Position = UDim2.new(0.5, -190, 0.5, -250) MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30) MainFrame.BorderSizePixel = 0 MainFrame.ClipsDescendants = true MainFrame.Parent = ScreenGui Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 8) local Header = Instance.new("Frame") Header.Size = UDim2.new(1, 0, 0, 45) Header.BackgroundColor3 = Color3.fromRGB(40, 40, 50) Header.BorderSizePixel = 0 Header.Parent = MainFrame local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, -100, 1, 0) Title.Position = UDim2.new(0, 15, 0, 0) Title.Text = "🛁 Pro Hub Ultimate" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.BackgroundTransparency = 1 Title.Font = Enum.Font.GothamBold Title.TextSize = 16 Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = Header local MinBtn = Instance.new("TextButton") MinBtn.Size = UDim2.new(0, 40, 1, 0) MinBtn.Position = UDim2.new(1, -80, 0, 0) MinBtn.BackgroundTransparency = 1 MinBtn.Text = "−" MinBtn.Font = Enum.Font.GothamBold MinBtn.TextSize = 24 MinBtn.TextColor3 = Color3.fromRGB(200, 200, 200) MinBtn.Parent = Header local CloseBtn = Instance.new("TextButton") CloseBtn.Size = UDim2.new(0, 40, 1, 0) CloseBtn.Position = UDim2.new(1, -40, 0, 0) CloseBtn.BackgroundTransparency = 1 CloseBtn.Text = "×" CloseBtn.Font = Enum.Font.GothamBold CloseBtn.TextSize = 24 CloseBtn.TextColor3 = Color3.fromRGB(255, 100, 100) CloseBtn.Parent = Header local Holder = Instance.new("ScrollingFrame") Holder.Size = UDim2.new(1, -20, 1, -55) Holder.Position = UDim2.new(0, 10, 0, 50) Holder.BackgroundTransparency = 1 Holder.BorderSizePixel = 0 Holder.ScrollBarThickness = 4 Holder.AutomaticCanvasSize = Enum.AutomaticSize.Y Holder.Parent = MainFrame local UIListLayout = Instance.new("UIListLayout") UIListLayout.Padding = UDim.new(0, 8) UIListLayout.Parent = Holder local function CreateSection(title) local Section = Instance.new("Frame") Section.Size = UDim2.new(1, 0, 0, 0) Section.BackgroundTransparency = 1 Section.AutomaticSize = Enum.AutomaticSize.Y Section.Parent = Holder local Label = Instance.new("TextLabel") Label.Size = UDim2.new(1, 0, 0, 25) Label.Text = title Label.TextColor3 = Color3.fromRGB(150, 150, 180) Label.BackgroundTransparency = 1 Label.Font = Enum.Font.GothamBold Label.TextSize = 12 Label.TextXAlignment = Enum.TextXAlignment.Left Label.Parent = Section local Container = Instance.new("Frame") Container.Size = UDim2.new(1, 0, 0, 0) Container.Position = UDim2.new(0, 0, 0, 25) Container.BackgroundTransparency = 1 Container.AutomaticSize = Enum.AutomaticSize.Y Container.Parent = Section local Layout = Instance.new("UIListLayout") Layout.Padding = UDim.new(0, 5) Layout.Parent = Container return Container end local function CreateToggle(parent, name, defaultState, callback) local Frame = Instance.new("Frame") Frame.Size = UDim2.new(1, 0, 0, 40) Frame.BackgroundColor3 = Color3.fromRGB(35, 35, 40) Frame.BorderSizePixel = 0 Frame.Parent = parent local Label = Instance.new("TextLabel") Label.Size = UDim2.new(1, -60, 1, 0) Label.Position = UDim2.new(0, 10, 0, 0) Label.Text = name Label.TextColor3 = Color3.fromRGB(220, 220, 220) Label.BackgroundTransparency = 1 Label.Font = Enum.Font.Gotham Label.TextSize = 14 Label.TextXAlignment = Enum.TextXAlignment.Left Label.Parent = Frame local Btn = Instance.new("TextButton") Btn.Size = UDim2.new(0, 40, 0, 20) Btn.Position = UDim2.new(1, -50, 0.5, -10) Btn.Text = "" Btn.BackgroundColor3 = Color3.fromRGB(60, 60, 65) Btn.BorderSizePixel = 0 Btn.Parent = Frame local Indicator = Instance.new("Frame") Indicator.Size = UDim2.new(0, 16, 0, 16) Indicator.Position = UDim2.new(0, 2, 0.5, -8) Indicator.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Indicator.BorderSizePixel = 0 Indicator.Parent = Btn local state = defaultState or false Btn.BackgroundColor3 = state and Color3.fromRGB(70, 180, 100) or Color3.fromRGB(60, 60, 65) Indicator.Position = state and UDim2.new(1, -18, 0.5, -8) or UDim2.new(0, 2, 0.5, -8) Btn.MouseButton1Click:Connect(function() state = not state Btn.BackgroundColor3 = state and Color3.fromRGB(70, 180, 100) or Color3.fromRGB(60, 60, 65) Indicator.Position = state and UDim2.new(1, -18, 0.5, -8) or UDim2.new(0, 2, 0.5, -8) callback(state) end) return Frame end local function CreateInput(parent, placeholder, defaultText, callback) local Input = Instance.new("TextBox") Input.Size = UDim2.new(1, 0, 0, 35) Input.BackgroundColor3 = Color3.fromRGB(35, 35, 40) Input.BorderSizePixel = 0 Input.Text = defaultText or "" Input.PlaceholderText = placeholder Input.Font = Enum.Font.Gotham Input.TextSize = 13 Input.TextColor3 = Color3.fromRGB(255, 255, 255) Input.ClearTextOnFocus = false Input.Parent = parent Input.FocusLost:Connect(function() callback(Input.Text, Input) end) return Input end local function CreateButton(parent, text, callback) local Btn = Instance.new("TextButton") Btn.Size = UDim2.new(1, 0, 0, 35) Btn.BackgroundColor3 = Color3.fromRGB(50, 50, 60) Btn.Text = text Btn.Font = Enum.Font.GothamBold Btn.TextSize = 13 Btn.TextColor3 = Color3.fromRGB(255, 255, 255) Btn.BorderSizePixel = 0 Btn.Parent = parent Btn.MouseButton1Click:Connect(callback) return Btn end local BaseSec = CreateSection("⚔️ FARM & COMBAT") CreateInput(BaseSec, "Farm Distance (Studs)", tostring(Config.FarmDistance), function(txt, obj) local val = tonumber(txt) if val then Config.FarmDistance = val else obj.Text = tostring(Config.FarmDistance) end end) CreateToggle(BaseSec, "🤖 Auto Farm (TP Behind)", Config.AutoFarm, function(state) Config.AutoFarm = state end) CreateInput(BaseSec, "Single Tool Name", "", function(txt) Config.TargetToolName = txt end) CreateToggle(BaseSec, "⚡ Single Auto-Equip", Config.AutoEquip, function(state) Config.AutoEquip = state end) CreateInput(BaseSec, "Multi-Equip Delay (sec)", tostring(Config.MultiEquipDelay), function(txt, obj) local val = tonumber(txt); if val then Config.MultiEquipDelay = val else obj.Text = tostring(Config.MultiEquipDelay) end end) CreateToggle(BaseSec, "🔄 Multi Auto-Equip", Config.MultiAutoEquip, function(state) Config.MultiAutoEquip = state end) CreateToggle(BaseSec, "⚔️ Auto Attack", Config.AutoAttack, function(state) Config.AutoAttack = state end) CreateToggle(BaseSec, "♻️ Auto Spawn", Config.AutoSpawn, function(state) Config.AutoSpawn = state end) local TpSec = CreateSection("📍 TELEPORT (COORDS)") CreateInput(TpSec, "X Coordinate", tostring(Config.CoordX), function(txt, obj) local val = tonumber(txt); if val then Config.CoordX = val else obj.Text = tostring(Config.CoordX) end end) CreateInput(TpSec, "Y Coordinate", tostring(Config.CoordY), function(txt, obj) local val = tonumber(txt); if val then Config.CoordY = val else obj.Text = tostring(Config.CoordY) end end) CreateInput(TpSec, "Z Coordinate", tostring(Config.CoordZ), function(txt, obj) local val = tonumber(txt); if val then Config.CoordZ = val else obj.Text = tostring(Config.CoordZ) end end) CreateInput(TpSec, "Delay (seconds)", tostring(Config.TpDelay), function(txt, obj) local val = tonumber(txt); if val then Config.TpDelay = val else obj.Text = tostring(Config.TpDelay) end end) CreateButton(TpSec, "📍 Телепортироваться", function() if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(Config.CoordX, Config.CoordY, Config.CoordZ) end end) CreateToggle(TpSec, "Авто TP (с задержкой)", Config.AutoTp, function(state) Config.AutoTp = state end) local SpeedSec = CreateSection("⚡ PLAYER SPEED") CreateInput(SpeedSec, "Speed Multiplier", tostring(Config.SpeedMult), function(txt, obj) local val = tonumber(txt); if val then Config.SpeedMult = val else obj.Text = tostring(Config.SpeedMult) end end) CreateToggle(SpeedSec, "🏃 Auto Speed", Config.AutoSpeed, function(state) Config.AutoSpeed = state end) CreateToggle(SpeedSec, "⌨️ Hold Q Speed", Config.HoldQSpeed, function(state) Config.HoldQSpeed = state end) local OrbitSec = CreateSection("🌀 ULTRA DODGE (ORBIT)") local OrbitCoords = CreateInput(OrbitSec, "Center Coords (X, Y, Z)", "0, 50, 0", function(txt) local x, y, z = txt:match("([^,]+),([^,]+),([^,]+)") if x and y and z then Config.OrbitCenter = Vector3.new(tonumber(x), tonumber(y), tonumber(z)) end end) CreateButton(OrbitSec, "📍 Set Center to My Position", function() if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then local pos = LocalPlayer.Character.HumanoidRootPart.Position Config.OrbitCenter = pos OrbitCoords.Text = string.format("%d, %d, %d", math.floor(pos.X), math.floor(pos.Y), math.floor(pos.Z)) end end) CreateInput(OrbitSec, "Radius", tostring(Config.OrbitRadius), function(txt, obj) local val = tonumber(txt); if val then Config.OrbitRadius = val else obj.Text = tostring(Config.OrbitRadius) end end) CreateInput(OrbitSec, "Speed", tostring(Config.OrbitSpeed), function(txt, obj) local val = tonumber(txt); if val then Config.OrbitSpeed = val else obj.Text = tostring(Config.OrbitSpeed) end end) CreateToggle(OrbitSec, "🚀 Enable Ultra Dodge", Config.OrbitEnabled, function(state) Config.OrbitEnabled = state end) local AimSec = CreateSection("🎯 AIMBOTS") CreateToggle(AimSec, "👾 Toilet Autoaim", Config.AimToiletAuto, function(state) Config.AimToiletAuto = state end) CreateToggle(AimSec, "⌨️ Hold E Toilet Aim", Config.AimToiletHoldE, function(state) Config.AimToiletHoldE = state end) CreateToggle(AimSec, "👤 Player Autoaim", Config.AimPlayerAuto, function(state) Config.AimPlayerAuto = state end) CreateToggle(AimSec, "⌨️ Hold E Player Aim", Config.AimPlayerHoldE, function(state) Config.AimPlayerHoldE = state end) -- ESP SECTION local ActivePlayerESP = {} local ActiveToiletESP = {} local function ClearPlayerESP() for _, data in pairs(ActivePlayerESP) do if data.Billboard then data.Billboard:Destroy() end if data.Highlight then data.Highlight:Destroy() end end table.clear(ActivePlayerESP) end local function ClearToiletESP() for _, data in pairs(ActiveToiletESP) do if data.Billboard then data.Billboard:Destroy() end if data.Highlight then data.Highlight:Destroy() end end table.clear(ActiveToiletESP) end local EspSec = CreateSection("👁️ VISUALS (ESP)") CreateToggle(EspSec, "👤 Player ESP", Config.EspPlayer, function(state) Config.EspPlayer = state if not state then ClearPlayerESP() end end) CreateToggle(EspSec, "👾 Toilet ESP", Config.EspToilet, function(state) Config.EspToilet = state if not state then ClearToiletESP() end end) local MiscSec = CreateSection("🛡️ MISC") CreateToggle(MiscSec, "💤 Anti-AFK", Config.AntiAfk, function(state) Config.AntiAfk = state end) Instance.new("Frame", Holder).Size = UDim2.new(1, 0, 0, 10) -- === 4. ЛОГИКА ОКНА === local isMinimized = false MinBtn.MouseButton1Click:Connect(function() isMinimized = not isMinimized MainFrame:TweenSize(isMinimized and UDim2.new(0, 380, 0, 45) or UDim2.new(0, 380, 0, 500), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true) MinBtn.Text = isMinimized and "+" or "−" end) CloseBtn.MouseButton1Click:Connect(function() Config.StopScripts = true ClearPlayerESP() ClearToiletESP() ScreenGui:Destroy() end) UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed or UserInputService:GetFocusedTextBox() then return end if input.KeyCode == Enum.KeyCode.RightControl then ScreenGui.Enabled = not ScreenGui.Enabled elseif input.KeyCode == Enum.KeyCode.Q then Config.IsQHeld = true elseif input.KeyCode == Enum.KeyCode.E then Config.IsEHeld = true end end) UserInputService.InputEnded:Connect(function(input, gameProcessed) if gameProcessed or UserInputService:GetFocusedTextBox() then return end if input.KeyCode == Enum.KeyCode.Q then Config.IsQHeld = false elseif input.KeyCode == Enum.KeyCode.E then Config.IsEHeld = false end end) local dragging, dragStart, startPos = false, nil, nil Header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true; dragStart = input.Position; startPos = MainFrame.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) local function equipSingleTool() local character = LocalPlayer.Character if not character then return end local humanoid = character:FindFirstChildOfClass("Humanoid") if not humanoid or Config.TargetToolName == "" then return end for _, item in pairs(character:GetChildren()) do if item:IsA("Tool") and item.Name == Config.TargetToolName then return end end local tool = LocalPlayer.Backpack:FindFirstChild(Config.TargetToolName) if tool and tool:IsA("Tool") then humanoid:EquipTool(tool) end end task.spawn(function() while not Config.StopScripts do if Config.AutoEquip then equipSingleTool() end task.wait(0.3) end end) task.spawn(function() local currentIndex = 1 while not Config.StopScripts do if Config.MultiAutoEquip and #ToolSequence > 0 then local character = LocalPlayer.Character if character then local humanoid = character:FindFirstChildOfClass("Humanoid") if humanoid then local toolName = ToolSequence[currentIndex] local tool = LocalPlayer.Backpack:FindFirstChild(toolName) or character:FindFirstChild(toolName) if tool and tool:IsA("Tool") then humanoid:EquipTool(tool) end currentIndex = currentIndex + 1 if currentIndex > #ToolSequence then currentIndex = 1 end end end task.wait(Config.MultiEquipDelay) else task.wait(0.5) end end end) LocalPlayer.CharacterAdded:Connect(function() task.wait(0.5) if Config.AutoEquip then equipSingleTool() end end) task.spawn(function() while not Config.StopScripts do if Config.AutoTp then if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(Config.CoordX, Config.CoordY, Config.CoordZ) end task.wait(Config.TpDelay) else task.wait(0.5) end end end) task.spawn(function() while not Config.StopScripts do if Config.AutoSpawn then local PlayerGui = LocalPlayer:FindFirstChild("PlayerGui") local mainUI = PlayerGui and PlayerGui:FindFirstChild("MainUI") local menuBG = mainUI and mainUI:FindFirstChild("MenuBG") if menuBG and menuBG.Visible then pcall(function() VIM:SendKeyEvent(true, Enum.KeyCode.BackSlash, false, game) task.wait(0.25) VIM:SendKeyEvent(false, Enum.KeyCode.BackSlash, false, game) task.wait(0.25) VIM:SendKeyEvent(true, Enum.KeyCode.Down, false, game) task.wait(0.25) VIM:SendKeyEvent(false, Enum.KeyCode.Down, false, game) task.wait(0.25) VIM:SendKeyEvent(true, Enum.KeyCode.Return, false, game) task.wait(0.25) VIM:SendKeyEvent(false, Enum.KeyCode.Return, false, game) end) task.wait(2) end end task.wait(1) end end) local function GetEffectiveMultiplier() if Config.AutoSpeed then return Config.SpeedMult end if Config.HoldQSpeed and Config.IsQHeld then return Config.SpeedMult end return 1 end local function accelerateModel(character) for _, obj in pairs(character:GetDescendants()) do if obj:IsA("Animator") then local animController = obj.Parent if animController:IsA("AnimationController") or animController:IsA("Humanoid") then obj.AnimationPlayed:Connect(function(track) track:AdjustSpeed(GetEffectiveMultiplier()) end) end end end local root = character:WaitForChild("HumanoidRootPart", 5) if root then local lastCFrame = root.CFrame local connection connection = RunService.Heartbeat:Connect(function() if Config.StopScripts or not character.Parent or not root.Parent or not ScreenGui.Parent then connection:Disconnect(); return end local currentMultiplier = GetEffectiveMultiplier() local movement = root.CFrame.Position - lastCFrame.Position local horizontalMovement = Vector3.new(movement.X, 0, movement.Z) * (currentMultiplier - 1) local verticalMovement = Vector3.new(0, movement.Y * (currentMultiplier - 1), 0) if movement.Magnitude > 0.01 and movement.Magnitude < 50 then root.CFrame = root.CFrame + horizontalMovement + verticalMovement end lastCFrame = root.CFrame end) end end if LocalPlayer.Character then accelerateModel(LocalPlayer.Character) end LocalPlayer.CharacterAdded:Connect(function(character) task.wait(0.5); accelerateModel(character) end) local function GetClosestToilet() local closest, shortestDist = nil, math.huge local lpChar = LocalPlayer.Character if not lpChar or not lpChar.PrimaryPart then return nil end local lpPos = lpChar.PrimaryPart.Position for _, model in pairs(CachedToilets) do if model.Parent then local root = model.PrimaryPart or model:FindFirstChild("HumanoidRootPart") local hum = model:FindFirstChild("Humanoid") if root and (not hum or hum.Health > 0) then local dist = (root.Position - lpPos).Magnitude if dist < shortestDist then shortestDist = dist; closest = root end end end end return closest end local function GetClosestPlayer() local closest, shortestDist = nil, math.huge local lpChar = LocalPlayer.Character if not lpChar or not lpChar.PrimaryPart then return nil end local lpPos = lpChar.PrimaryPart.Position for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then local root = plr.Character:FindFirstChild("HumanoidRootPart") local hum = plr.Character:FindFirstChild("Humanoid") if root and hum and hum.Health > 0 then local dist = (root.Position - lpPos).Magnitude if dist < shortestDist then shortestDist = dist; closest = root end end end end return closest end RunService.Heartbeat:Connect(function(deltaTime) if Config.StopScripts then return end if Config.AutoAttack then local tool = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Tool") if tool then tool:Activate() end end if Config.AutoFarm then local target = GetClosestToilet() local char = LocalPlayer.Character if target and char and char:FindFirstChild("HumanoidRootPart") then local hrp = char.HumanoidRootPart local behindPosition = target.CFrame * CFrame.new(0, 0, Config.FarmDistance) hrp.CFrame = CFrame.lookAt(behindPosition.Position, target.Position) hrp.AssemblyLinearVelocity = Vector3.zero hrp.AssemblyAngularVelocity = Vector3.zero end end if not Config.OrbitEnabled then if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") and Config.OrbitConnection then LocalPlayer.Character.HumanoidRootPart.AssemblyLinearVelocity = Vector3.zero Config.OrbitConnection = false end return end if not Config.AutoFarm then Config.OrbitConnection = true local char = LocalPlayer.Character; local root = char and char:FindFirstChild("HumanoidRootPart") if not char or not root then return end local direction = Config.OrbitClockwise and -1 or 1 Config.OrbitAngle = Config.OrbitAngle + (Config.OrbitSpeed * deltaTime * direction) local newX = Config.OrbitCenter.X + math.cos(Config.OrbitAngle) * Config.OrbitRadius local newZ = Config.OrbitCenter.Z + math.sin(Config.OrbitAngle) * Config.OrbitRadius char:PivotTo(CFrame.new(newX, Config.OrbitCenter.Y, newZ)) root.AssemblyLinearVelocity = Vector3.zero; root.AssemblyAngularVelocity = Vector3.zero end end) RunService.RenderStepped:Connect(function() if Config.StopScripts then return end local camera = workspace.CurrentCamera if not camera then return end local targetToAim = nil if Config.AimPlayerAuto or (Config.AimPlayerHoldE and Config.IsEHeld) then targetToAim = GetClosestPlayer() end if not targetToAim and (Config.AimToiletAuto or (Config.AimToiletHoldE and Config.IsEHeld)) then targetToAim = GetClosestToilet() end if targetToAim then camera.CFrame = CFrame.lookAt(camera.CFrame.Position, targetToAim.Position) end if Config.EspPlayer then local currentPlayers = {} for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then local char = plr.Character local root = char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart local hum = char:FindFirstChild("Humanoid") if root and hum and hum.Health > 0 then currentPlayers[char] = true local espData = ActivePlayerESP[char] if not espData then local bg = Instance.new("BillboardGui") bg.Size = UDim2.new(0, 200, 0, 50) bg.AlwaysOnTop = true bg.Adornee = root bg.StudsOffset = Vector3.new(0, 3.5, 0) bg.Parent = ScreenGui local tl = Instance.new("TextLabel") tl.Size = UDim2.new(1, 0, 1, 0) tl.BackgroundTransparency = 1 tl.Font = Enum.Font.GothamBold tl.TextSize = 12 tl.TextColor3 = Color3.fromRGB(63, 255, 0) tl.TextStrokeTransparency = 0 tl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) tl.Parent = bg local hl = Instance.new("Highlight") hl.FillColor = Color3.fromRGB(63, 255, 0) hl.OutlineColor = Color3.fromRGB(255, 255, 255) hl.FillTransparency = 0.5 hl.Parent = char espData = {Billboard = bg, TextLabel = tl, Highlight = hl} ActivePlayerESP[char] = espData end if LocalPlayer.Character and LocalPlayer.Character.PrimaryPart then local dist = math.floor((root.Position - LocalPlayer.Character.PrimaryPart.Position).Magnitude) local hp = math.floor(hum.Health) local maxHp = math.floor(hum.MaxHealth) espData.TextLabel.Text = string.format("%s\nHP: %d/%d\n[%d studs]", plr.Name, hp, maxHp, dist) end end end end for char, data in pairs(ActivePlayerESP) do if not currentPlayers[char] or not char.Parent then if data.Billboard then data.Billboard:Destroy() end if data.Highlight then data.Highlight:Destroy() end ActivePlayerESP[char] = nil end end end if Config.EspToilet then local currentToilets = {} for _, model in pairs(CachedToilets) do if model.Parent then local root = model.PrimaryPart or model:FindFirstChild("HumanoidRootPart") local hum = model:FindFirstChild("Humanoid") if root and (not hum or hum.Health > 0) then currentToilets[model] = true local espData = ActiveToiletESP[model] if not espData then local bg = Instance.new("BillboardGui") bg.Size = UDim2.new(0, 200, 0, 50) bg.AlwaysOnTop = true bg.Adornee = root bg.StudsOffset = Vector3.new(0, 3.5, 0) bg.Parent = ScreenGui local tl = Instance.new("TextLabel") tl.Size = UDim2.new(1, 0, 1, 0) tl.BackgroundTransparency = 1 tl.Font = Enum.Font.GothamBold tl.TextSize = 12 tl.TextColor3 = Color3.fromRGB(255, 60, 60) tl.TextStrokeTransparency = 0 tl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) tl.Parent = bg local hl = Instance.new("Highlight") hl.FillColor = Color3.fromRGB(255, 60, 60) hl.OutlineColor = Color3.fromRGB(255, 255, 255) hl.FillTransparency = 0.5 hl.Parent = model espData = {Billboard = bg, TextLabel = tl, Highlight = hl} ActiveToiletESP[model] = espData end if LocalPlayer.Character and LocalPlayer.Character.PrimaryPart then local dist = math.floor((root.Position - LocalPlayer.Character.PrimaryPart.Position).Magnitude) local hp = hum and math.floor(hum.Health) or 0 local maxHp = hum and math.floor(hum.MaxHealth) or 0 if hum then espData.TextLabel.Text = string.format("%s\nHP: %d/%d\n[%d studs]", model.Name, hp, maxHp, dist) else espData.TextLabel.Text = string.format("%s\n[%d studs]", model.Name, dist) end end end end end for model, data in pairs(ActiveToiletESP) do if not currentToilets[model] or not model.Parent then if data.Billboard then data.Billboard:Destroy() end if data.Highlight then data.Highlight:Destroy() end ActiveToiletESP[model] = nil end end end end) LocalPlayer.Idled:Connect(function() if Config.AntiAfk and not Config.StopScripts then VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end end)