--[[ T1337.vlone — Dev Menu ESP (Highlight / Fill) + AimBot + Fly Использовать ТОЛЬКО в своей игре или тестовом плейсе. Управление: • Кнопка ≡ в левом верхнем углу — открыть/закрыть меню • RightShift — дублирует кнопку • R — AimBot • F — Fly Fly: • Направление движения задаётся ТОЛЬКО камерой • W/S — вперёд/назад по взгляду камеры • A/D — стрейф вбок от камеры • Space/LShift — вверх/вниз • Тело разворачивается вслед за камерой AimBot: FOV-круг по центру экрана, цели ищутся от центра. ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local Tween = game:GetService("TweenService") local Camera = workspace.CurrentCamera local LP = Players.LocalPlayer local Drawing = rawget(getfenv(), "Drawing") or nil -- ================== НАЗВАНИЕ МЕНЮ ================== local MENU_TITLE = "T1337.vlone" -- ==================================================== -- ================== РОДИТЕЛЬ GUI ================== local function GetGuiParent() local ok, hui = pcall(function() return gethui() end) if ok and hui then return hui end local ok2, cg = pcall(function() return game:GetService("CoreGui") end) if ok2 and cg then return cg end return LP:WaitForChild("PlayerGui") end -- ================== CLEANUP ПРЕДЫДУЩЕГО ЗАПУСКА ================== local function SafeDestroyGuiIn(parent) if not parent then return end local ok, existing = pcall(function() return parent:FindFirstChild("TEST_DevMenu") end) if ok and existing then existing:Destroy() end end -- 1) Удаляем старые ScreenGui во всех возможных родителях pcall(function() SafeDestroyGuiIn(gethui()) end) pcall(function() SafeDestroyGuiIn(game:GetService("CoreGui")) end) pcall(function() SafeDestroyGuiIn(LP:FindFirstChild("PlayerGui")) end) -- 2) Чистим остатки (Highlight, BillboardGui, BodyVelocity, BodyGyro) со всех персонажей local function CleanChar(ch) if not ch then return end for _, obj in ipairs(ch:GetDescendants()) do if obj.Name == "TEST_ESP_Fill" or obj.Name == "TEST_ESP_Info" or obj.Name == "TEST_FlyBV" or obj.Name == "TEST_FlyBG" then obj:Destroy() end end local hrp = ch:FindFirstChild("HumanoidRootPart") if hrp then for _, obj in ipairs(hrp:GetChildren()) do if obj.Name == "TEST_FlyBV" or obj.Name == "TEST_FlyBG" then obj:Destroy() end end end local hum = ch:FindFirstChildOfClass("Humanoid") if hum then hum.PlatformStand = false hum.WalkSpeed = 16 hum.AutoRotate = true end end for _, p in ipairs(Players:GetPlayers()) do CleanChar(p.Character) end CleanChar(LP.Character) -- =================================================================== -- ================== CONFIG ================== local CFG = { ESP = { Enabled = true, FillEnabled = true, FillColor = Color3.fromRGB(0, 200, 100), FillTransparency = 0.55, OutlineEnabled = true, OutlineColor = Color3.fromRGB(0, 255, 120), OutlineTransp = 0.0, NamesEnabled = true, NameColor = Color3.fromRGB(255, 255, 255), DistEnabled = true, TracersEnabled = true, TracerColor = Color3.fromRGB(255, 60, 60), TracerTransp = 0.2, MaxDistance = 2500, }, Aim = { Enabled = false, FOV = 130, MaxDistance = 700, Part = "Head", Smoothness = 0.55, ShowFOV = true, VisibleCheck = true, }, Fly = { Enabled = false, Speed = 60, }, } -- ================== UI HELPERS ================== local function New(class, props, parent) local i = Instance.new(class) for k, v in pairs(props) do i[k] = v end if parent then i.Parent = parent end return i end local function Corner(parent, r) New("UICorner", {CornerRadius = UDim.new(0, r or 6)}, parent) end -- Drag: игнорируем нажатия на кнопки (иначе клик по ✕ не срабатывает) local function MakeDraggable(frame, dragBar) local dragging, dragStart, startPos dragBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then local t = input.Target if t and t:IsA("GuiButton") then return end dragging, dragStart, startPos = true, input.Position, frame.Position end end) UIS.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local d = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end end) UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) end local function MakeToggle(parent, text, initial, callback) local c = New("Frame", {Size = UDim2.new(1, -8, 0, 26), BackgroundTransparency = 1}, parent) New("TextLabel", { Size = UDim2.new(1, -50, 1, 0), BackgroundTransparency = 1, Text = text, TextColor3 = Color3.fromRGB(225,225,230), TextSize = 13, Font = Enum.Font.Gotham, TextXAlignment = Enum.TextXAlignment.Left, }, c) local btn = New("TextButton", { Size = UDim2.new(0, 34, 0, 18), Position = UDim2.new(1, -34, 0.5, -9), BackgroundColor3 = initial and Color3.fromRGB(0,180,90) or Color3.fromRGB(60,60,70), Text = "", AutoButtonColor = false, }, c); Corner(btn, 9) local knob = New("Frame", { Size = UDim2.new(0, 14, 0, 14), Position = initial and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7), BackgroundColor3 = Color3.fromRGB(255,255,255), BorderSizePixel = 0, }, btn); Corner(knob, 7) local state = initial local function set(n) state = n Tween:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = state and Color3.fromRGB(0,180,90) or Color3.fromRGB(60,60,70)}):Play() Tween:Create(knob, TweenInfo.new(0.15), {Position = state and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)}):Play() if callback then callback(state) end end btn.MouseButton1Click:Connect(function() set(not state) end) return {Set = set, Get = function() return state end, Frame = c} end local function MakeSlider(parent, text, min, max, initial, callback) local c = New("Frame", {Size = UDim2.new(1, -8, 0, 42), BackgroundTransparency = 1}, parent) New("TextLabel", { Size = UDim2.new(1, -60, 0, 16), BackgroundTransparency = 1, Text = text, TextColor3 = Color3.fromRGB(225,225,230), TextSize = 13, Font = Enum.Font.Gotham, TextXAlignment = Enum.TextXAlignment.Left, }, c) local val = New("TextLabel", { Size = UDim2.new(0, 60, 0, 16), Position = UDim2.new(1, -60, 0, 0), BackgroundTransparency = 1, Text = tostring(math.floor(initial)), TextColor3 = Color3.fromRGB(140,190,255), TextSize = 13, Font = Enum.Font.Gotham, TextXAlignment = Enum.TextXAlignment.Right, }, c) local barBg = New("Frame", { Size = UDim2.new(1, 0, 0, 6), Position = UDim2.new(0, 0, 0, 26), BackgroundColor3 = Color3.fromRGB(40,40,50), BorderSizePixel = 0, }, c); Corner(barBg, 3) local fill = New("Frame", { Size = UDim2.new((initial - min) / (max - min), 0, 1, 0), BackgroundColor3 = Color3.fromRGB(100,150,255), BorderSizePixel = 0, }, barBg); Corner(fill, 3) local hit = New("TextButton", {Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = ""}, barBg) local dragging = false local function upd(x) local rel = math.clamp((x - barBg.AbsolutePosition.X) / barBg.AbsoluteSize.X, 0, 1) local v = min + (max - min) * rel fill.Size = UDim2.new(rel, 0, 1, 0) val.Text = string.format("%d", math.floor(v)) callback(v) end hit.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true; upd(i.Position.X) end end) UIS.InputChanged:Connect(function(i) if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then upd(i.Position.X) end end) UIS.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) return c end local function MakeColorPicker(parent, text, initial, callback) local c = New("Frame", {Size = UDim2.new(1, -8, 0, 46), BackgroundTransparency = 1}, parent) New("TextLabel", { Size = UDim2.new(1, -30, 0, 18), BackgroundTransparency = 1, Text = text, TextColor3 = Color3.fromRGB(225,225,230), TextSize = 13, Font = Enum.Font.Gotham, TextXAlignment = Enum.TextXAlignment.Left, }, c) local swatch = New("Frame", { Size = UDim2.new(0, 22, 0, 14), Position = UDim2.new(1, -22, 0, 2), BackgroundColor3 = initial, BorderSizePixel = 0, }, c); Corner(swatch, 3) local row = New("Frame", {Size = UDim2.new(1, 0, 0, 20), Position = UDim2.new(0, 0, 0, 22), BackgroundTransparency = 1}, c) local cur = {R = initial.R * 255, G = initial.G * 255, B = initial.B * 255} local function notify() local col = Color3.fromRGB(cur.R, cur.G, cur.B) swatch.BackgroundColor3 = col callback(col) end for i, ch in ipairs({"R","G","B"}) do local chCol = ch == "R" and Color3.fromRGB(255,80,80) or ch == "G" and Color3.fromRGB(80,255,80) or Color3.fromRGB(80,80,255) local bg = New("Frame", { Size = UDim2.new(1/3, -4, 0, 6), Position = UDim2.new((i-1)/3, 2, 0.5, -3), BackgroundColor3 = Color3.fromRGB(40,40,50), BorderSizePixel = 0, }, row); Corner(bg, 3) local fill = New("Frame", { Size = UDim2.new(cur[ch] / 255, 0, 1, 0), BackgroundColor3 = chCol, BorderSizePixel = 0, }, bg); Corner(fill, 3) local hit = New("TextButton", {Size = UDim2.new(1,0,1,0), BackgroundTransparency = 1, Text = ""}, bg) local drg = false local function upd(x) local rel = math.clamp((x - bg.AbsolutePosition.X) / bg.AbsoluteSize.X, 0, 1) cur[ch] = rel * 255 fill.Size = UDim2.new(rel, 0, 1, 0) notify() end hit.InputBegan:Connect(function(ip) if ip.UserInputType == Enum.UserInputType.MouseButton1 then drg = true; upd(ip.Position.X) end end) UIS.InputChanged:Connect(function(ip) if drg and ip.UserInputType == Enum.UserInputType.MouseMovement then upd(ip.Position.X) end end) UIS.InputEnded:Connect(function(ip) if ip.UserInputType == Enum.UserInputType.MouseButton1 then drg = false end end) end return c end -- ================== ESP ================== local ESP = {} local tracerLines = {} local function IsValidCharacter(ch) if not ch or not ch:IsDescendantOf(workspace) then return false end local hum = ch:FindFirstChildOfClass("Humanoid") return hum and hum.Health > 0 end local function ApplyHighlight(data) if not data or not data.highlight then return end local h = data.highlight h.FillColor = CFG.ESP.FillColor h.FillTransparency = CFG.ESP.FillEnabled and CFG.ESP.FillTransparency or 1 h.OutlineColor = CFG.ESP.OutlineColor h.OutlineTransparency = CFG.ESP.OutlineEnabled and CFG.ESP.OutlineTransp or 1 end local function CreateESP(player) if player == LP then return end local function onChar(ch) if ESP[player] then for _, obj in pairs(ESP[player]) do if typeof(obj) == "Instance" and obj.Parent then obj:Destroy() end end if tracerLines[player] then tracerLines[player]:Remove(); tracerLines[player] = nil end end local hrp = ch:WaitForChild("HumanoidRootPart", 5) local head = ch:WaitForChild("Head", 5) if not hrp or not head then return end local data = {} local hl = Instance.new("Highlight") hl.Name = "TEST_ESP_Fill" hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Adornee = ch hl.Parent = ch data.highlight = hl ApplyHighlight(data) local bb = New("BillboardGui", { Name = "TEST_ESP_Info", Size = UDim2.new(0, 200, 0, 34), StudsOffset = Vector3.new(0, 3, 0), AlwaysOnTop = true, Parent = head, }) data.billboard = bb data.nameLabel = New("TextLabel", { Size = UDim2.new(1, 0, 0.6, 0), BackgroundTransparency = 1, TextColor3 = CFG.ESP.NameColor, TextStrokeTransparency = 0, TextScaled = true, Font = Enum.Font.GothamBold, Text = player.Name, }, bb) data.distLabel = New("TextLabel", { Size = UDim2.new(1, 0, 0.4, 0), Position = UDim2.new(0, 0, 0.6, 0), BackgroundTransparency = 1, TextColor3 = CFG.ESP.NameColor, TextStrokeTransparency = 0, TextScaled = true, Font = Enum.Font.Gotham, Text = "", }, bb) if Drawing then local line = Drawing.new("Line") line.Thickness = 1.5 line.Transparency = 1 - CFG.ESP.TracerTransp line.Color = CFG.ESP.TracerColor line.Visible = false tracerLines[player] = line data.tracer = line end ESP[player] = data local hum = ch:FindFirstChildOfClass("Humanoid") if hum then hum.Died:Connect(function() if data.highlight then data.highlight.Enabled = false end if data.billboard then data.billboard.Enabled = false end if data.tracer then data.tracer.Visible = false end end) end end if player.Character then onChar(player.Character) end player.CharacterAdded:Connect(onChar) player.CharacterRemoving:Connect(function() if tracerLines[player] then tracerLines[player]:Remove(); tracerLines[player] = nil end ESP[player] = nil end) end local function RefreshESPAll() for _, data in pairs(ESP) do if data.highlight then ApplyHighlight(data) end if data.billboard then data.billboard.Enabled = CFG.ESP.Enabled and (CFG.ESP.NamesEnabled or CFG.ESP.DistEnabled) if data.nameLabel then data.nameLabel.Visible = CFG.ESP.NamesEnabled data.nameLabel.TextColor3 = CFG.ESP.NameColor end if data.distLabel then data.distLabel.Visible = CFG.ESP.DistEnabled data.distLabel.TextColor3 = CFG.ESP.NameColor end end if data.tracer then data.tracer.Color = CFG.ESP.TracerColor data.tracer.Transparency = 1 - CFG.ESP.TracerTransp end end end for _, p in ipairs(Players:GetPlayers()) do CreateESP(p) end Players.PlayerAdded:Connect(CreateESP) Players.PlayerRemoving:Connect(function(p) if tracerLines[p] then tracerLines[p]:Remove(); tracerLines[p] = nil end ESP[p] = nil end) -- ================== FOV CIRCLE ================== local fovCircle = Drawing and Drawing.new("Circle") or nil if fovCircle then fovCircle.Thickness = 1.5 fovCircle.Color = Color3.fromRGB(255, 255, 255) fovCircle.Transparency = 0.6 fovCircle.NumSides = 60 fovCircle.Filled = false end -- ================== AIMBOT ================== local function GetClosestTarget() local vp = Camera.ViewportSize local center = Vector2.new(vp.X / 2, vp.Y / 2) local best, bestScreenDist = nil, CFG.Aim.FOV for _, p in ipairs(Players:GetPlayers()) do if p == LP then continue end local ch = p.Character if not IsValidCharacter(ch) then continue end local part = ch:FindFirstChild(CFG.Aim.Part) if not part then continue end local worldDist = (part.Position - Camera.CFrame.Position).Magnitude if worldDist > CFG.Aim.MaxDistance then continue end local sp, onScreen = Camera:WorldToViewportPoint(part.Position) if not onScreen then continue end local screenDist = (Vector2.new(sp.X, sp.Y) - center).Magnitude if screenDist <= bestScreenDist then if CFG.Aim.VisibleCheck then local origin = Camera.CFrame.Position local params = RaycastParams.new() params.FilterDescendantsInstances = {ch, LP.Character} params.FilterType = Enum.RaycastFilterType.Exclude local res = workspace:Raycast(origin, part.Position - origin, params) if res then continue end end best, bestScreenDist = part, screenDist end end return best end -- ================== FLY (тело следует за камерой) ================== local flyConn = nil local flyBV = nil local flyBG = nil local function StopFly() if flyConn then flyConn:Disconnect(); flyConn = nil end if flyBV and flyBV.Parent then flyBV:Destroy() end flyBV = nil if flyBG and flyBG.Parent then flyBG:Destroy() end flyBG = nil local ch = LP.Character if ch then local hrp = ch:FindFirstChild("HumanoidRootPart") local hum = ch:FindFirstChildOfClass("Humanoid") if hum then hum.PlatformStand = false hum.WalkSpeed = 16 hum.AutoRotate = true pcall(function() hum:ChangeState(Enum.HumanoidStateType.Running) end) end if hrp then hrp.AssemblyLinearVelocity = Vector3.zero end end end local function StartFly() StopFly() local ch = LP.Character if not ch then return end local hrp = ch:FindFirstChild("HumanoidRootPart") local hum = ch:FindFirstChildOfClass("Humanoid") if not hrp or not hum then return end hum.PlatformStand = true hum.WalkSpeed = 0 hum.AutoRotate = false pcall(function() hum:ChangeState(Enum.HumanoidStateType.Physics) end) local bv = Instance.new("BodyVelocity") bv.Name = "TEST_FlyBV" bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge) bv.Velocity = Vector3.zero bv.P = 1250 bv.Parent = hrp flyBV = bv local bg = Instance.new("BodyGyro") bg.Name = "TEST_FlyBG" bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge) bg.P = 30000 bg.D = 1000 bg.CFrame = CFrame.new(hrp.Position, hrp.Position + Camera.CFrame.LookVector) bg.Parent = hrp flyBG = bg flyConn = RunService.Heartbeat:Connect(function() if not CFG.Fly.Enabled then return end if not hrp.Parent or not bv.Parent or not bg.Parent then StopFly(); return end bg.CFrame = CFrame.new(hrp.Position, hrp.Position + Camera.CFrame.LookVector) local look = Camera.CFrame.LookVector local right = Camera.CFrame.RightVector local up = Vector3.new(0, 1, 0) local dir = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then dir += look end if UIS:IsKeyDown(Enum.KeyCode.S) then dir -= look end if UIS:IsKeyDown(Enum.KeyCode.D) then dir += right end if UIS:IsKeyDown(Enum.KeyCode.A) then dir -= right end if UIS:IsKeyDown(Enum.KeyCode.Space) then dir += up end if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then dir -= up end if dir.Magnitude > 0 then bv.Velocity = dir.Unit * CFG.Fly.Speed else bv.Velocity = Vector3.zero end hrp.AssemblyLinearVelocity = bv.Velocity end) end LP.CharacterAdded:Connect(function() if CFG.Fly.Enabled then task.wait(0.3) StartFly() end end) -- ================== MENU BUILD ================== local guiParent = GetGuiParent() local screen = New("ScreenGui", { Name = "TEST_DevMenu", ResetOnSpawn = false, ZIndexBehavior = Enum.ZIndexBehavior.Sibling, IgnoreGuiInset = true, }, guiParent) local main = New("Frame", { Size = UDim2.new(0, 520, 0, 400), Position = UDim2.new(0.5, -260, 0.5, -200), BackgroundColor3 = Color3.fromRGB(20, 20, 26), BackgroundTransparency = 0.05, BorderSizePixel = 0, Active = true, ZIndex = 2, }, screen) Corner(main, 10) New("UIStroke", {Color = Color3.fromRGB(60,60,80), Thickness = 1, Transparency = 0.2}, main) local titleBar = New("Frame", { Size = UDim2.new(1, 0, 0, 36), BackgroundColor3 = Color3.fromRGB(30, 30, 40), BorderSizePixel = 0, }, main) Corner(titleBar, 10) MakeDraggable(main, titleBar) New("TextLabel", { Size = UDim2.new(1, -80, 1, 0), Position = UDim2.new(0, 14, 0, 0), BackgroundTransparency = 1, Text = MENU_TITLE, TextColor3 = Color3.fromRGB(220,220,240), TextSize = 15, Font = Enum.Font.GothamBold, TextXAlignment = Enum.TextXAlignment.Left, }, titleBar) local closeBtn = New("TextButton", { Size = UDim2.new(0, 26, 0, 26), Position = UDim2.new(1, -32, 0.5, -13), BackgroundColor3 = Color3.fromRGB(200,60,60), Text = "✕", TextColor3 = Color3.fromRGB(255,255,255), TextSize = 14, Font = Enum.Font.GothamBold, AutoButtonColor = false, }, titleBar); Corner(closeBtn, 6) local tabBar = New("Frame", { Size = UDim2.new(1, -20, 0, 30), Position = UDim2.new(0, 10, 0, 44), BackgroundTransparency = 1, }, main) local contentArea = New("Frame", { Size = UDim2.new(1, -20, 1, -84), Position = UDim2.new(0, 10, 0, 80), BackgroundColor3 = Color3.fromRGB(25, 25, 33), BorderSizePixel = 0, }, main); Corner(contentArea, 8) local tabButtons, tabFrames = {}, {} local function CreateTab(name, i) local btn = New("TextButton", { Size = UDim2.new(1/3, -6, 1, 0), Position = UDim2.new((i-1)/3, (i-1)*6, 0, 0), BackgroundColor3 = i == 1 and Color3.fromRGB(80,120,220) or Color3.fromRGB(40,40,52), Text = name, TextColor3 = Color3.fromRGB(230,230,240), TextSize = 13, Font = Enum.Font.GothamBold, AutoButtonColor = false, }, tabBar); Corner(btn, 6) tabButtons[name] = btn local frame = New("ScrollingFrame", { Size = UDim2.new(1, -16, 1, -16), Position = UDim2.new(0, 8, 0, 8), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 4, ScrollBarImageColor3 = Color3.fromRGB(90,90,120), CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, Visible = i == 1, }, contentArea) New("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, }, frame) tabFrames[name] = frame btn.MouseButton1Click:Connect(function() for n, b in pairs(tabButtons) do b.BackgroundColor3 = (n == name) and Color3.fromRGB(80,120,220) or Color3.fromRGB(40,40,52) end for n, f in pairs(tabFrames) do f.Visible = (n == name) end end) end CreateTab("ESP", 1) CreateTab("AimBot", 2) CreateTab("Fly", 3) -- ---------- ESP TAB ---------- local espTab = tabFrames["ESP"] MakeToggle(espTab, "ESP включён", CFG.ESP.Enabled, function(v) CFG.ESP.Enabled = v for _, d in pairs(ESP) do if d.highlight then d.highlight.Enabled = v end if d.billboard then d.billboard.Enabled = v end end RefreshESPAll() end) MakeToggle(espTab, "Заливка (Fill)", CFG.ESP.FillEnabled, function(v) CFG.ESP.FillEnabled = v; RefreshESPAll() end) MakeColorPicker(espTab, "Цвет заливки", CFG.ESP.FillColor, function(c) CFG.ESP.FillColor = c; RefreshESPAll() end) MakeSlider(espTab, "Прозрачность заливки", 0, 1, CFG.ESP.FillTransparency, function(v) CFG.ESP.FillTransparency = v; RefreshESPAll() end) MakeToggle(espTab, "Обводка", CFG.ESP.OutlineEnabled, function(v) CFG.ESP.OutlineEnabled = v; RefreshESPAll() end) MakeColorPicker(espTab, "Цвет обводки", CFG.ESP.OutlineColor, function(c) CFG.ESP.OutlineColor = c; RefreshESPAll() end) MakeToggle(espTab, "Ники", CFG.ESP.NamesEnabled, function(v) CFG.ESP.NamesEnabled = v; RefreshESPAll() end) MakeColorPicker(espTab, "Цвет ников", CFG.ESP.NameColor, function(c) CFG.ESP.NameColor = c; RefreshESPAll() end) MakeToggle(espTab, "Дистанция", CFG.ESP.DistEnabled, function(v) CFG.ESP.DistEnabled = v; RefreshESPAll() end) MakeToggle(espTab, "Трассеры", CFG.ESP.TracersEnabled, function(v) CFG.ESP.TracersEnabled = v end) MakeColorPicker(espTab, "Цвет трассеров", CFG.ESP.TracerColor, function(c) CFG.ESP.TracerColor = c; RefreshESPAll() end) MakeSlider(espTab, "Прозрачность трассеров", 0, 1, CFG.ESP.TracerTransp, function(v) CFG.ESP.TracerTransp = v; RefreshESPAll() end) MakeSlider(espTab, "Макс. дальность ESP", 100, 5000, CFG.ESP.MaxDistance, function(v) CFG.ESP.MaxDistance = v end) -- ---------- AIMBOT TAB ---------- local aimTab = tabFrames["AimBot"] MakeToggle(aimTab, "AimBot включён", CFG.Aim.Enabled, function(v) CFG.Aim.Enabled = v end) MakeSlider(aimTab, "FOV (радиус, px)", 20, 500, CFG.Aim.FOV, function(v) CFG.Aim.FOV = v end) MakeSlider(aimTab, "Макс. дистанция", 50, 3000, CFG.Aim.MaxDistance, function(v) CFG.Aim.MaxDistance = v end) MakeSlider(aimTab, "Плавность", 0, 0.95, CFG.Aim.Smoothness, function(v) CFG.Aim.Smoothness = v end) MakeToggle(aimTab, "Показывать FOV‑круг", CFG.Aim.ShowFOV, function(v) CFG.Aim.ShowFOV = v end) MakeToggle(aimTab, "Проверка видимости", CFG.Aim.VisibleCheck, function(v) CFG.Aim.VisibleCheck = v end) local partBtn = New("TextButton", { Size = UDim2.new(1, -8, 0, 26), BackgroundColor3 = Color3.fromRGB(40,40,52), Text = "Цель: " .. CFG.Aim.Part, TextColor3 = Color3.fromRGB(230,230,240), TextSize = 13, Font = Enum.Font.Gotham, AutoButtonColor = false, }, aimTab); Corner(partBtn, 6) local parts = {"Head", "HumanoidRootPart", "UpperTorso"} local pIdx = 1 for i, p in ipairs(parts) do if p == CFG.Aim.Part then pIdx = i end end partBtn.MouseButton1Click:Connect(function() pIdx = pIdx % #parts + 1 CFG.Aim.Part = parts[pIdx] partBtn.Text = "Цель: " .. CFG.Aim.Part end) -- ---------- FLY TAB ---------- local flyTab = tabFrames["Fly"] MakeToggle(flyTab, "Fly включён", CFG.Fly.Enabled, function(v) CFG.Fly.Enabled = v if v then StartFly() else StopFly() end end) MakeSlider(flyTab, "Скорость полёта", 10, 300, CFG.Fly.Speed, function(v) CFG.Fly.Speed = v end) New("TextLabel", { Size = UDim2.new(1, -8, 0, 40), BackgroundTransparency = 1, Text = "W/S — вперёд/назад по камере\nA/D — стрейф · Space/LShift — вверх/вниз\nТело разворачивается вслед за камерой", TextColor3 = Color3.fromRGB(150,150,180), TextSize = 11, Font = Enum.Font.Gotham, TextXAlignment = Enum.TextXAlignment.Left, TextWrapped = true, }, flyTab) -- ================== MAIN LOOP ================== RunService.RenderStepped:Connect(function() if CFG.ESP.Enabled then local myPos = Camera.CFrame.Position local screenSize = Camera.ViewportSize for player, data in pairs(ESP) do local ch = player.Character if not IsValidCharacter(ch) or not data.highlight then continue end local hrp = ch:FindFirstChild("HumanoidRootPart") if not hrp then continue end local dist = (hrp.Position - myPos).Magnitude local visible = dist <= CFG.ESP.MaxDistance data.highlight.Enabled = visible and (CFG.ESP.FillEnabled or CFG.ESP.OutlineEnabled) if data.billboard then data.billboard.Enabled = visible and (CFG.ESP.NamesEnabled or CFG.ESP.DistEnabled) end if data.distLabel then data.distLabel.Text = string.format("%d м", math.floor(dist)) end if data.tracer then if CFG.ESP.TracersEnabled and visible then local sp, onScreen = Camera:WorldToViewportPoint(hrp.Position) if onScreen then data.tracer.From = Vector2.new(screenSize.X / 2, screenSize.Y) data.tracer.To = Vector2.new(sp.X, sp.Y) data.tracer.Visible = true else data.tracer.Visible = false end else data.tracer.Visible = false end end end else for _, data in pairs(ESP) do if data.highlight then data.highlight.Enabled = false end if data.billboard then data.billboard.Enabled = false end if data.tracer then data.tracer.Visible = false end end end if fovCircle then if CFG.Aim.ShowFOV and CFG.Aim.Enabled then local vp = Camera.ViewportSize fovCircle.Position = Vector2.new(vp.X / 2, vp.Y / 2) fovCircle.Radius = CFG.Aim.FOV fovCircle.Visible = true else fovCircle.Visible = false end end if CFG.Aim.Enabled then local target = GetClosestTarget() if target then local goal = CFrame.new(Camera.CFrame.Position, target.Position) local factor = 1 - CFG.Aim.Smoothness Camera.CFrame = Camera.CFrame:Lerp(goal, factor) end end end) -- ================================================================ -- КНОПКА ОТКРЫТИЯ / ЗАКРЫТИЯ МЕНЮ (FAB) -- ================================================================ local toggleBtn = New("TextButton", { Name = "TEST_MenuToggle", Size = UDim2.new(0, 52, 0, 52), Position = UDim2.new(0, 20, 0, 20), BackgroundColor3 = Color3.fromRGB(25, 25, 33), Text = "≡", TextColor3 = Color3.fromRGB(120, 160, 255), TextSize = 28, Font = Enum.Font.GothamBold, AutoButtonColor = false, ZIndex = 100, Active = true, }, screen) Corner(toggleBtn, 26) New("UIStroke", { Color = Color3.fromRGB(80, 120, 220), Thickness = 2, Transparency = 0.15, }, toggleBtn) local fabDrag, fabStart, fabStartPos = false, nil, nil toggleBtn.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then fabDrag, fabStart, fabStartPos = true, i.Position, toggleBtn.Position end end) UIS.InputChanged:Connect(function(i) if fabDrag and i.UserInputType == Enum.UserInputType.MouseMovement then local d = i.Position - fabStart toggleBtn.Position = UDim2.new( fabStartPos.X.Scale, fabStartPos.X.Offset + d.X, fabStartPos.Y.Scale, fabStartPos.Y.Offset + d.Y ) end end) UIS.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then fabDrag = false end end) function SetMenuVisible(open) main.Visible = open toggleBtn.Text = open and "✕" or "≡" toggleBtn.TextColor3 = open and Color3.fromRGB(255, 100, 100) or Color3.fromRGB(120, 160, 255) end toggleBtn.MouseButton1Click:Connect(function() SetMenuVisible(not main.Visible) end) closeBtn.MouseButton1Click:Connect(function() SetMenuVisible(false) end) SetMenuVisible(true) -- ================== HOTKEYS ================== UIS.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Enum.KeyCode.RightShift then SetMenuVisible(not main.Visible) elseif input.KeyCode == Enum.KeyCode.R then CFG.Aim.Enabled = not CFG.Aim.Enabled elseif input.KeyCode == Enum.KeyCode.F then CFG.Fly.Enabled = not CFG.Fly.Enabled if CFG.Fly.Enabled then StartFly() else StopFly() end end end) print("[DevMenu] Загружено. Title: " .. MENU_TITLE) print("• Кнопка ≡ или RightShift — меню") print("• R — AimBot, F — Fly") print("• Fly: тело смотрит вслед за камерой")