-- made by probeta | Entrenched WW1 ESP + Predictive Aimbot + Triggerbot -- Keybinds: F5 GUI, F1 ESP, F2 Aimbot, F3/F4 FOV, F6 Triggerbot, F7 Aim Always local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera -- Settings local Settings = { ESP = { Enabled = true, TeamCheck = true, Boxes = true, Names = true, Health = true, Distance = true, Tracers = true, BoxColor = Color3.fromRGB(139, 69, 19), TracerColor = Color3.fromRGB(47, 79, 79), TextColor = Color3.fromRGB(210, 180, 140) }, Aimbot = { Enabled = true, AlwaysOn = false, -- F7 toggle: aim without holding RMB Smoothness = 6, FOV = 120, HitboxRadius = 4.5, TargetPart = "Head", ShowFOVCircle = true, Prediction = true, BulletSpeed = 1500 }, Triggerbot = { Enabled = false, Delay = 0.05 -- 50ms between shots }, Visuals = { Crosshair = true, Hitmarker = true, HitmarkerDuration = 0.2 }, GUI = { Visible = true } } local drawings = {} local fovCircle = nil local crosshair = nil local hitmarkerActive = false local hitmarkerStart = 0 local lastTriggerTime = 0 -- ============ Helper Functions ============ local function getEnemies() local enemies = {} for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer then if Settings.ESP.TeamCheck and plr.Team == LocalPlayer.Team then continue end local char = plr.Character if char and char.Parent then local hum = char:FindFirstChildWhichIsA("Humanoid") if hum and hum.Health > 0 then table.insert(enemies, plr) end end end end return enemies end local function getTargetPart(char, partName) local part = char:FindFirstChild(partName) if not part then part = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso") end return part end local function worldToScreen(pos) local vec, onScreen = Camera:WorldToScreenPoint(pos) return Vector2.new(vec.X, vec.Y), onScreen end local function getHealthColor(percent) return Color3.new(1 - percent, percent, 0) end local function getSafeVelocity(part) local success, vel = pcall(function() return part.AssemblyLinearVelocity end) return success and vel or Vector3.zero end local function getPredictedPosition(part) if not Settings.Aimbot.Prediction then return part.Position end local distance = (Camera.CFrame.Position - part.Position).Magnitude local timeToHit = distance / math.max(Settings.Aimbot.BulletSpeed, 0.001) local velocity = getSafeVelocity(part) return part.Position + (velocity * timeToHit) end -- ============ Improved ESP with Min/Max Box Size ============ local function updateESP() if not Settings.ESP.Enabled then for _, set in pairs(drawings) do for _, obj in pairs(set) do if obj and obj.Remove then obj:Remove() end end end drawings = {} return end local viewport = Camera.ViewportSize local screenX, screenY = viewport.X, viewport.Y if screenX == 0 then return end local newDrawings = {} local enemies = getEnemies() local myChar = LocalPlayer.Character local myRoot = myChar and (myChar:FindFirstChild("HumanoidRootPart") or myChar:FindFirstChild("UpperTorso")) for _, plr in ipairs(enemies) do local char = plr.Character if not char then continue end local root = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("UpperTorso") if not root then continue end local screenPos, onScreen = worldToScreen(root.Position) if not onScreen then continue end local distance = myRoot and (myRoot.Position - root.Position).Magnitude or 0 -- Improved box scaling: min 12px, max 150px local scale = math.clamp(300 / math.max(distance, 25), 0.6, 3) local boxW = math.clamp(2.2 * scale, 14, 80) local boxH = math.clamp(4.5 * scale, 28, 140) if Settings.ESP.Boxes then local box = drawings[plr] and drawings[plr].box or drawing.new("Square") box.Visible = true box.Thickness = 1.5 box.Color = Settings.ESP.BoxColor box.Filled = false box.Position = Vector2.new(screenPos.X - boxW/2, screenPos.Y - boxH - 18) box.Size = Vector2.new(boxW, boxH + 18) newDrawings[plr] = newDrawings[plr] or {} newDrawings[plr].box = box end if Settings.ESP.Names then local nameObj = drawings[plr] and drawings[plr].name or drawing.new("Text") nameObj.Visible = true nameObj.Center = true nameObj.Color = Settings.ESP.TextColor nameObj.Outline = true nameObj.Size = 13 if Settings.ESP.Distance then nameObj.Text = plr.Name .. " " .. math.floor(distance) .. "m" else nameObj.Text = plr.Name end nameObj.Position = Vector2.new(screenPos.X, screenPos.Y - boxH - 28) newDrawings[plr].name = nameObj end if Settings.ESP.Health then local hum = char:FindFirstChildWhichIsA("Humanoid") local healthPercent = hum and (hum.Health / hum.MaxHealth) or 1 local barH = 4 local barW = boxW local barY = screenPos.Y - boxH - 18 + boxH + 18 local bg = drawings[plr] and drawings[plr].healthBg or drawing.new("Square") bg.Visible = true bg.Color = Color3.new(0,0,0) bg.Filled = true bg.Thickness = 0 bg.Position = Vector2.new(screenPos.X - barW/2 - 1, barY - 1) bg.Size = Vector2.new(barW + 2, barH + 2) newDrawings[plr].healthBg = bg local fill = drawings[plr] and drawings[plr].healthFill or drawing.new("Square") fill.Visible = true fill.Color = getHealthColor(healthPercent) fill.Filled = true fill.Thickness = 0 fill.Position = Vector2.new(screenPos.X - barW/2, barY) fill.Size = Vector2.new(barW * healthPercent, barH) newDrawings[plr].healthFill = fill end if Settings.ESP.Tracers then local tracer = drawings[plr] and drawings[plr].tracer or drawing.new("Line") tracer.Visible = true tracer.Thickness = 1.2 tracer.Color = Settings.ESP.TracerColor tracer.From = Vector2.new(screenX/2, screenY) tracer.To = screenPos newDrawings[plr].tracer = tracer end end for plr, set in pairs(drawings) do if not newDrawings[plr] then for _, obj in pairs(set) do if obj and obj.Remove then obj:Remove() end end end end drawings = newDrawings end -- ============ Aimbot (with AlwaysOn option) ============ local function getClosestEnemy() local enemies = getEnemies() if #enemies == 0 then return nil, nil, nil end local myChar = LocalPlayer.Character if not myChar then return nil, nil, nil end local cameraPos = Camera.CFrame.Position local cameraDir = Camera.CFrame.LookVector local bestAngle = Settings.Aimbot.FOV local bestTarget, bestPart, bestPos = nil, nil, nil for _, plr in ipairs(enemies) do local char = plr.Character if not char then continue end local part = getTargetPart(char, Settings.Aimbot.TargetPart) if not part then continue end local partPos = getPredictedPosition(part) local toTarget = partPos - cameraPos local dist = toTarget.Magnitude local angle = math.deg(math.acos(math.clamp(cameraDir:Dot(toTarget.Unit), -1, 1))) local angularRadius = math.deg(math.asin(math.min(1, Settings.Aimbot.HitboxRadius / dist))) local effectiveAngle = angle - angularRadius if effectiveAngle < bestAngle then bestAngle = effectiveAngle bestTarget = plr bestPart = part bestPos = partPos end end return bestTarget, bestPart, bestPos end local function smoothAimTo(targetPos) if not targetPos then return end local screenPos, onScreen = Camera:WorldToScreenPoint(targetPos) if not onScreen then return end local viewport = Camera.ViewportSize local center = Vector2.new(viewport.X / 2, viewport.Y / 2) local deltaX = (screenPos.X - center.X) local deltaY = (screenPos.Y - center.Y) local smooth = Settings.Aimbot.Smoothness if smooth > 1 then deltaX = deltaX / smooth deltaY = deltaY / smooth end if mousemoverel then mousemoverel(deltaX, deltaY) else -- Safe CFrame fallback (less detectable than direct CFrame set) local currentCF = Camera.CFrame local targetCF = CFrame.lookAt(currentCF.Position, targetPos) Camera.CFrame = currentCF:Lerp(targetCF, 1 / math.max(smooth, 1)) end end local function updateAimbot() if not Settings.Aimbot.Enabled then return end local shouldAim = false if Settings.Aimbot.AlwaysOn then shouldAim = true else shouldAim = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) end if not shouldAim then return end local _, _, targetPos = getClosestEnemy() if targetPos then smoothAimTo(targetPos) end end -- ============ Triggerbot ============ local function fireWeapon() -- Simulate left click if mousemoverel then -- Use virtual input if possible pcall(function() local vim = game:GetService("VirtualInputManager") vim:SendMouseButtonEvent(0, 0, 0, true, game, 0) task.wait(Settings.Triggerbot.Delay) vim:SendMouseButtonEvent(0, 0, 0, false, game, 0) end) else -- Fallback: mouse1click (works on many executors) pcall(mouse1click) end end local function updateTriggerbot() if not Settings.Triggerbot.Enabled then return end local now = tick() if now - lastTriggerTime < Settings.Triggerbot.Delay then return end local _, _, targetPos = getClosestEnemy() if not targetPos then return end local screenPos, onScreen = Camera:WorldToScreenPoint(targetPos) if not onScreen then return end local viewport = Camera.ViewportSize local center = Vector2.new(viewport.X/2, viewport.Y/2) local distToCenter = (Vector2.new(screenPos.X, screenPos.Y) - center).Magnitude -- If target is within 20 pixels of crosshair, fire if distToCenter < 20 then fireWeapon() lastTriggerTime = now if Settings.Visuals.Hitmarker then hitmarkerActive = true hitmarkerStart = now end end end -- ============ Crosshair & Hitmarker ============ local function drawCrosshair() if not Settings.Visuals.Crosshair then if crosshair then crosshair.Visible = false end return end local viewport = Camera.ViewportSize local center = Vector2.new(viewport.X/2, viewport.Y/2) if not crosshair then crosshair = drawing.new("Line") crosshair.Thickness = 1.5 crosshair.Color = Color3.fromRGB(255, 255, 255) crosshair.Transparency = 0.7 end crosshair.Visible = true -- Simple plus sign local size = 8 crosshair.From = Vector2.new(center.X - size, center.Y) crosshair.To = Vector2.new(center.X - 2, center.Y) -- We'll use 4 lines if not crosshair.line2 then crosshair.line2 = drawing.new("Line") crosshair.line2.Thickness = 1.5 crosshair.line2.Color = Color3.fromRGB(255, 255, 255) crosshair.line2.Transparency = 0.7 crosshair.line3 = drawing.new("Line") crosshair.line3.Thickness = 1.5 crosshair.line3.Color = Color3.fromRGB(255, 255, 255) crosshair.line3.Transparency = 0.7 crosshair.line4 = drawing.new("Line") crosshair.line4.Thickness = 1.5 crosshair.line4.Color = Color3.fromRGB(255, 255, 255) crosshair.line4.Transparency = 0.7 end crosshair.line2.From = Vector2.new(center.X + 2, center.Y) crosshair.line2.To = Vector2.new(center.X + size, center.Y) crosshair.line3.From = Vector2.new(center.X, center.Y - size) crosshair.line3.To = Vector2.new(center.X, center.Y - 2) crosshair.line4.From = Vector2.new(center.X, center.Y + 2) crosshair.line4.To = Vector2.new(center.X, center.Y + size) end local function updateHitmarker() if not Settings.Visuals.Hitmarker then return end if hitmarkerActive and (tick() - hitmarkerStart) < Settings.Visuals.HitmarkerDuration then local viewport = Camera.ViewportSize local center = Vector2.new(viewport.X/2, viewport.Y/2) if not hitmarkerLines then hitmarkerLines = {} for i = 1, 4 do hitmarkerLines[i] = drawing.new("Line") hitmarkerLines[i].Thickness = 2 hitmarkerLines[i].Color = Color3.fromRGB(255, 50, 50) hitmarkerLines[i].Transparency = 0.9 end end local size = 12 hitmarkerLines[1].From = Vector2.new(center.X - size, center.Y - size) hitmarkerLines[1].To = Vector2.new(center.X - 4, center.Y - 4) hitmarkerLines[2].From = Vector2.new(center.X + size, center.Y - size) hitmarkerLines[2].To = Vector2.new(center.X + 4, center.Y - 4) hitmarkerLines[3].From = Vector2.new(center.X - size, center.Y + size) hitmarkerLines[3].To = Vector2.new(center.X - 4, center.Y + 4) hitmarkerLines[4].From = Vector2.new(center.X + size, center.Y + size) hitmarkerLines[4].To = Vector2.new(center.X + 4, center.Y + 4) for _, line in ipairs(hitmarkerLines) do line.Visible = true end else if hitmarkerLines then for _, line in ipairs(hitmarkerLines) do line.Visible = false end end hitmarkerActive = false end end -- ============ FOV Circle ============ local function drawFOVCircle() if fovCircle then fovCircle:Remove() end if not Settings.Aimbot.Enabled or not Settings.Aimbot.ShowFOVCircle then return end local viewport = Camera.ViewportSize local center = Vector2.new(viewport.X/2, viewport.Y/2) local radius = (Settings.Aimbot.FOV / Camera.FieldOfView) * (viewport.Y / 2) fovCircle = drawing.new("Circle") fovCircle.Radius = radius fovCircle.Thickness = 1.5 fovCircle.Color = Color3.fromRGB(200, 180, 100) fovCircle.Filled = false fovCircle.NumSides = 72 fovCircle.Position = center fovCircle.Transparency = 0.4 fovCircle.Visible = true end local function updateFOVCircle() if fovCircle then fovCircle:Remove() end drawFOVCircle() end -- ============ GUI Setup ============ local guiName = "ESP_" .. tostring(math.random(1000, 9999)) local screenGui = Instance.new("ScreenGui") screenGui.Name = guiName screenGui.ResetOnSpawn = false screenGui.Parent = CoreGui local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 280, 0, 560) mainFrame.Position = UDim2.new(0, 15, 0, 15) mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25) mainFrame.BackgroundTransparency = 0.1 mainFrame.BorderSizePixel = 0 mainFrame.ClipsDescendants = true mainFrame.Parent = screenGui local frameCorner = Instance.new("UICorner") frameCorner.CornerRadius = UDim.new(0, 8) frameCorner.Parent = mainFrame local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 30) titleBar.BackgroundColor3 = Color3.fromRGB(35, 35, 40) titleBar.BackgroundTransparency = 0.2 titleBar.BorderSizePixel = 0 titleBar.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 8) titleCorner.Parent = titleBar local titleText = Instance.new("TextLabel") titleText.Size = UDim2.new(0.7, 0, 1, 0) titleText.Position = UDim2.new(0, 10, 0, 0) titleText.BackgroundTransparency = 1 titleText.Text = "ENTRENCHED WW1 | probeta" titleText.TextColor3 = Color3.fromRGB(220, 180, 120) titleText.Font = Enum.Font.GothamBold titleText.TextSize = 14 titleText.TextXAlignment = Enum.TextXAlignment.Left titleText.Parent = titleBar local toggleGuiBtn = Instance.new("TextButton") toggleGuiBtn.Size = UDim2.new(0, 24, 0, 24) toggleGuiBtn.Position = UDim2.new(1, -30, 0, 3) toggleGuiBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 70) toggleGuiBtn.Text = "−" toggleGuiBtn.TextColor3 = Color3.fromRGB(220, 220, 220) toggleGuiBtn.Font = Enum.Font.GothamBold toggleGuiBtn.TextSize = 18 toggleGuiBtn.BorderSizePixel = 0 toggleGuiBtn.Parent = titleBar local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 4) btnCorner.Parent = toggleGuiBtn local contentFrame = Instance.new("ScrollingFrame") contentFrame.Size = UDim2.new(1, -10, 1, -40) contentFrame.Position = UDim2.new(0, 5, 0, 35) contentFrame.BackgroundTransparency = 1 contentFrame.CanvasSize = UDim2.new(0, 0, 0, 0) contentFrame.ScrollBarThickness = 4 contentFrame.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 110) contentFrame.Parent = mainFrame local uiList = Instance.new("UIListLayout") uiList.Padding = UDim.new(0, 6) uiList.SortOrder = Enum.SortOrder.LayoutOrder uiList.Parent = contentFrame local function makeSection(title) local section = Instance.new("Frame") section.Size = UDim2.new(1, 0, 0, 0) section.BackgroundTransparency = 1 section.AutomaticSize = Enum.AutomaticSize.Y section.Parent = contentFrame local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, 0, 0, 22) titleLabel.BackgroundTransparency = 1 titleLabel.Text = title titleLabel.TextColor3 = Color3.fromRGB(200, 170, 130) titleLabel.Font = Enum.Font.GothamSemibold titleLabel.TextSize = 13 titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Parent = section local line = Instance.new("Frame") line.Size = UDim2.new(1, -10, 0, 1) line.Position = UDim2.new(0, 0, 0, 22) line.BackgroundColor3 = Color3.fromRGB(80, 70, 60) line.BorderSizePixel = 0 line.Parent = section local container = Instance.new("Frame") container.Size = UDim2.new(1, 0, 0, 0) container.Position = UDim2.new(0, 0, 0, 26) container.BackgroundTransparency = 1 container.AutomaticSize = Enum.AutomaticSize.Y container.Parent = section local containerList = Instance.new("UIListLayout") containerList.Padding = UDim.new(0, 4) containerList.SortOrder = Enum.SortOrder.LayoutOrder containerList.Parent = container return container end local function makeToggle(parent, text, setting, field) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -10, 0, 32) btn.BackgroundColor3 = Color3.fromRGB(45, 45, 50) btn.BackgroundTransparency = 0.2 btn.Text = text .. ": " .. (setting[field] and "ON" or "OFF") btn.TextColor3 = Color3.fromRGB(230, 230, 230) btn.Font = Enum.Font.Gotham btn.TextSize = 13 btn.BorderSizePixel = 0 btn.Parent = parent local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 6) corner.Parent = btn btn.MouseButton1Click:Connect(function() setting[field] = not setting[field] btn.Text = text .. ": " .. (setting[field] and "ON" or "OFF") if setting == Settings.Aimbot and (field == "Enabled" or field == "ShowFOVCircle") then updateFOVCircle() elseif setting == Settings.Aimbot and field == "FOV" then updateFOVCircle() elseif setting == Settings.Visuals and field == "Crosshair" then if not setting[field] and crosshair then crosshair.Visible = false if crosshair.line2 then crosshair.line2.Visible = false end if crosshair.line3 then crosshair.line3.Visible = false end if crosshair.line4 then crosshair.line4.Visible = false end end end end) return btn end local function makeSlider(parent, text, setting, field, minVal, maxVal, step) local container = Instance.new("Frame") container.Size = UDim2.new(1, -10, 0, 50) container.BackgroundTransparency = 1 container.Parent = parent local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 0, 20) label.BackgroundTransparency = 1 label.Text = text .. ": " .. string.format("%.1f", setting[field]) label.TextColor3 = Color3.fromRGB(210, 210, 210) label.Font = Enum.Font.Gotham label.TextSize = 12 label.TextXAlignment = Enum.TextXAlignment.Left label.Parent = container local sliderBg = Instance.new("Frame") sliderBg.Size = UDim2.new(1, 0, 0, 6) sliderBg.Position = UDim2.new(0, 0, 0, 24) sliderBg.BackgroundColor3 = Color3.fromRGB(60, 55, 60) sliderBg.BorderSizePixel = 0 sliderBg.Parent = container local bgCorner = Instance.new("UICorner") bgCorner.CornerRadius = UDim.new(0, 3) bgCorner.Parent = sliderBg local fill = Instance.new("Frame") fill.Size = UDim2.new((setting[field] - minVal) / (maxVal - minVal), 0, 1, 0) fill.BackgroundColor3 = Color3.fromRGB(180, 130, 70) fill.BorderSizePixel = 0 fill.Parent = sliderBg local fillCorner = Instance.new("UICorner") fillCorner.CornerRadius = UDim.new(0, 3) fillCorner.Parent = fill local valueLabel = Instance.new("TextLabel") valueLabel.Size = UDim2.new(0, 40, 0, 18) valueLabel.Position = UDim2.new(1, -45, 0, 2) valueLabel.BackgroundTransparency = 1 valueLabel.Text = tostring(setting[field]) valueLabel.TextColor3 = Color3.fromRGB(200, 170, 130) valueLabel.Font = Enum.Font.Gotham valueLabel.TextSize = 11 valueLabel.TextXAlignment = Enum.TextXAlignment.Right valueLabel.Parent = container local function updateSlider() local norm = (setting[field] - minVal) / (maxVal - minVal) fill.Size = UDim2.new(norm, 0, 1, 0) local display = string.format("%.1f", setting[field]) label.Text = text .. ": " .. display valueLabel.Text = display if setting == Settings.Aimbot and field == "FOV" then updateFOVCircle() end end sliderBg.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then local function move(mouseX) local x = math.clamp((mouseX - sliderBg.AbsolutePosition.X) / sliderBg.AbsoluteSize.X, 0, 1) local val = minVal + x * (maxVal - minVal) val = math.floor(val / step + 0.5) * step setting[field] = math.clamp(val, minVal, maxVal) updateSlider() end move(input.Position.X) local con con = UserInputService.InputChanged:Connect(function(change) if change.UserInputType == Enum.UserInputType.MouseMovement then move(change.Position.X) end end) local release release = UserInputService.InputEnded:Connect(function(ended) if ended.UserInputType == Enum.UserInputType.MouseButton1 then con:Disconnect() release:Disconnect() end end) end end) updateSlider() return container end -- Build UI Sections local espSec = makeSection("ESP") makeToggle(espSec, "ESP Enabled", Settings.ESP, "Enabled") makeToggle(espSec, "Team Check", Settings.ESP, "TeamCheck") makeToggle(espSec, "Boxes", Settings.ESP, "Boxes") makeToggle(espSec, "Names", Settings.ESP, "Names") makeToggle(espSec, "Health Bar", Settings.ESP, "Health") makeToggle(espSec, "Distance", Settings.ESP, "Distance") makeToggle(espSec, "Tracers", Settings.ESP, "Tracers") local aimSec = makeSection("Aimbot") makeToggle(aimSec, "Aimbot Enabled", Settings.Aimbot, "Enabled") makeToggle(aimSec, "Always On (no RMB)", Settings.Aimbot, "AlwaysOn") makeToggle(aimSec, "Show FOV Circle", Settings.Aimbot, "ShowFOVCircle") makeToggle(aimSec, "Prediction Mode", Settings.Aimbot, "Prediction") makeSlider(aimSec, "FOV", Settings.Aimbot, "FOV", 20, 180, 5) makeSlider(aimSec, "Smoothness", Settings.Aimbot, "Smoothness", 1, 20, 1) makeSlider(aimSec, "Hitbox Radius", Settings.Aimbot, "HitboxRadius", 1.5, 8, 0.5) makeSlider(aimSec, "Bullet Speed", Settings.Aimbot, "BulletSpeed", 500, 3000, 50) local trigSec = makeSection("Triggerbot") makeToggle(trigSec, "Triggerbot Enabled", Settings.Triggerbot, "Enabled") makeSlider(trigSec, "Shot Delay (s)", Settings.Triggerbot, "Delay", 0.02, 0.3, 0.01) local visSec = makeSection("Visuals") makeToggle(visSec, "Crosshair", Settings.Visuals, "Crosshair") makeToggle(visSec, "Hitmarker", Settings.Visuals, "Hitmarker") makeSlider(visSec, "Hitmarker Duration", Settings.Visuals, "HitmarkerDuration", 0.1, 0.5, 0.05) local function updateCanvas() contentFrame.CanvasSize = UDim2.new(0, 0, 0, uiList.AbsoluteContentSize.Y + 10) end uiList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(updateCanvas) task.wait(0.1) updateCanvas() local function toggleGUI() Settings.GUI.Visible = not Settings.GUI.Visible mainFrame.Visible = Settings.GUI.Visible toggleGuiBtn.Text = Settings.GUI.Visible and "−" or "+" end toggleGuiBtn.MouseButton1Click:Connect(toggleGUI) -- Keybinds UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.F5 then toggleGUI() elseif input.KeyCode == Enum.KeyCode.F1 then Settings.ESP.Enabled = not Settings.ESP.Enabled elseif input.KeyCode == Enum.KeyCode.F2 then Settings.Aimbot.Enabled = not Settings.Aimbot.Enabled updateFOVCircle() elseif input.KeyCode == Enum.KeyCode.F3 then Settings.Aimbot.FOV = math.min(Settings.Aimbot.FOV + 5, 180) updateFOVCircle() elseif input.KeyCode == Enum.KeyCode.F4 then Settings.Aimbot.FOV = math.max(Settings.Aimbot.FOV - 5, 20) updateFOVCircle() elseif input.KeyCode == Enum.KeyCode.F6 then Settings.Triggerbot.Enabled = not Settings.Triggerbot.Enabled elseif input.KeyCode == Enum.KeyCode.F7 then Settings.Aimbot.AlwaysOn = not Settings.Aimbot.AlwaysOn end end) -- Main loops RunService.RenderStepped:Connect(function() updateESP() updateAimbot() updateTriggerbot() drawCrosshair() updateHitmarker() updateFOVCircle() end) Camera:GetPropertyChangedSignal("ViewportSize"):Connect(updateFOVCircle) Camera:GetPropertyChangedSignal("FieldOfView"):Connect(updateFOVCircle) updateFOVCircle() -- Cleanup script:GetPropertyChangedSignal("Enabled"):Connect(function() if not script.Enabled then for _, set in pairs(drawings) do for _, obj in pairs(set) do if obj and obj.Remove then obj:Remove() end end end if fovCircle then fovCircle:Remove() end if crosshair then crosshair:Remove() if crosshair.line2 then crosshair.line2:Remove() end if crosshair.line3 then crosshair.line3:Remove() end if crosshair.line4 then crosshair.line4:Remove() end end if hitmarkerLines then for _, line in ipairs(hitmarkerLines) do line:Remove() end end screenGui:Destroy() end end) print("[probeta] Entrenched WW1 script loaded. F1 ESP | F2 Aimbot | F3/F4 FOV | F6 Trigger | F7 AlwaysOn")