--[[ 1337 HUB v3 • Меню: Right Shift (открыть / закрыть) • Загрузка + выбор языка (RU / EN) • Aim / Silent Aim / ESP / Chams / Радар + Team Check • Player: Bhop, вид от 3-го лица (бинд + настройки), Speed, Fly, Noclip и др. ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local HttpService = game:GetService("HttpService") local Workspace = game:GetService("Workspace") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera -- ==================== ОЧИСТКА СТАРОЙ ВЕРСИИ ==================== pcall(function() if getgenv and getgenv().__1337HubUnload then getgenv().__1337HubUnload() end end) local Connections = {} local function Connect(signal, fn) local c = signal:Connect(fn) table.insert(Connections, c) return c end -- ==================== НАСТРОЙКИ ==================== local Settings = { Aimbot = { Enabled = false, Key = Enum.UserInputType.MouseButton2, -- ЛКМ / ПКМ FOV = 150, ShowFOV = true, Smoothness = 4, TargetPart = "Head", TeamCheck = false, WallCheck = true, TargetDot = true, DotSize = 10, }, ESP = { Enabled = true, MaxDistance = 1500, TeamCheck = false, TeamColors = false, -- Боксы Box = false, BoxStyle = "Full", -- Full / Corner BoxColor = Color3.fromRGB(255, 255, 255), BoxRainbow = false, BoxThickness = 1.5, BoxOutline = true, BoxFill = false, BoxFillColor = Color3.fromRGB(138, 92, 255), BoxFillAlpha = 0.8, -- Здоровье (вертикальная полоса) HealthBar = false, HealthStyle = "Gradient", -- Gradient / Health / Solid HealthSide = "Left", -- Left / Right HealthWidth = 4, HealthText = false, HealthHigh = Color3.fromRGB(80, 255, 130), HealthLow = Color3.fromRGB(255, 60, 60), -- Текст Names = false, NameColor = Color3.fromRGB(255, 255, 255), Distance = false, DistanceColor = Color3.fromRGB(190, 190, 210), Weapon = false, WeaponColor = Color3.fromRGB(255, 214, 102), TextSize = 13, -- Линии Snaplines = false, SnapOrigin = "Bottom", -- Bottom / Center / Mouse SnapColor = Color3.fromRGB(255, 255, 255), SnapThickness = 1, -- Chams Chams = false, ChamsFill = Color3.fromRGB(255, 70, 90), ChamsOutline = Color3.fromRGB(255, 255, 255), ChamsHidden = Color3.fromRGB(138, 92, 255), ChamsRainbow = false, ChamsFillTrans = 0.5, ChamsOutlineTrans = 0, ChamsThroughWalls = true, ChamsVisCheck = false, ChamsPulse = false, }, Radar = { Enabled = false, Range = 200, Size = 160, DotSize = 6, EnemyColor = Color3.fromRGB(255, 70, 90), TeamColor = Color3.fromRGB(80, 255, 140), }, Tracer = { Enabled = false, Color1 = Color3.fromRGB(138, 92, 255), Color2 = Color3.fromRGB(80, 200, 255), Rainbow = false, Thickness = 0.15, Glow = 3, Core = true, Lifetime = 1, Interval = 0.1, Origin = "Tool", -- Tool / Head / Camera Impact = true, ImpactLight = true, OnlyTool = true, Range = 600, }, Crosshair = { Enabled = false, Color = Color3.fromRGB(255, 255, 255), Rainbow = false, Size = 10, Gap = 4, Thickness = 2, Dot = true, Outline = true, Spin = false, SpinSpeed = 120, FollowMouse = false, }, FOVStyle = { UseTheme = true, AimColor = Color3.fromRGB(138, 92, 255), AimHold = Color3.fromRGB(80, 160, 255), SilentColor = Color3.fromRGB(80, 160, 255), Thickness = 1.5, Fill = false, FillTrans = 0.92, }, Silent = { Enabled = false, Part = "Head", -- Head / UpperTorso / HumanoidRootPart / Random HitChance = 100, FOV = 200, ShowFOV = true, ShowDot = true, TeamCheck = false, WallCheck = true, MRaycast = true, -- Workspace:Raycast MFindPart = true, -- Workspace:FindPartOnRay* MScreenRay = true, -- Camera:ScreenPointToRay / ViewportPointToRay MMouse = true, -- Mouse.Hit / Mouse.Target }, Player = { Bhop = false, BhopKey = Enum.KeyCode.Space, BhopToggleKey = Enum.KeyCode.Unknown, BhopMode = "Hold", -- Hold / Always BhopBoost = 15, -- % к скорости в воздухе Speed = false, SpeedValue = 32, Jump = false, JumpValue = 70, InfJump = false, Noclip = false, NoclipKey = Enum.KeyCode.Unknown, Fly = false, FlyKey = Enum.KeyCode.Unknown, FlySpeed = 60, Fullbright = false, NoFog = false, FOVEnabled = false, FOVValue = 90, AntiAFK = true, }, Third = { Enabled = false, Key = Enum.KeyCode.V, Distance = 12, ShoulderX = 0, Height = 1, Collision = true, ShowBody = true, Smooth = true, ForceMode = true, }, UI = { Style = "1337 Neon", Language = "RU", Watermark = true, }, } -- ==================== КОНФИГ ==================== local CONFIG_FILE = "1337Hub_config.json" local CanFS = (typeof(writefile) == "function") and (typeof(readfile) == "function") and (typeof(isfile) == "function") local ConfigLoaded = false -- сохранение включается только после сборки меню local function Encode(v) local t = typeof(v) if t == "Color3" then return { __c = v:ToHex() } elseif t == "EnumItem" then return { __e = v.Name, __t = (string.match(tostring(v), "^Enum%.(%w+)%.") or "UserInputType") } end return v end local function Decode(saved, default) local dt = typeof(default) if dt == "Color3" then if type(saved) == "table" and type(saved.__c) == "string" then local ok, c = pcall(Color3.fromHex, saved.__c) if ok then return c end end return default elseif dt == "EnumItem" then if type(saved) == "table" and type(saved.__e) == "string" then local enumType = (saved.__t == "KeyCode") and Enum.KeyCode or Enum.UserInputType local ok, e = pcall(function() return enumType[saved.__e] end) if ok and e then return e end end return default end if typeof(saved) == dt then return saved end return default end local function SaveConfigNow() if not CanFS then return false end local data = {} for group, tbl in pairs(Settings) do data[group] = {} for k, v in pairs(tbl) do data[group][k] = Encode(v) end end local ok = pcall(function() writefile(CONFIG_FILE, HttpService:JSONEncode(data)) end) return ok end local function LoadConfig() if not CanFS then return end pcall(function() if not isfile(CONFIG_FILE) then return end local data = HttpService:JSONDecode(readfile(CONFIG_FILE)) for group, tbl in pairs(Settings) do local saved = data[group] if type(saved) == "table" then for k, default in pairs(tbl) do if saved[k] ~= nil then tbl[k] = Decode(saved[k], default) end end end end end) end local saveQueued = false local function RequestSave() if not ConfigLoaded or saveQueued then return end saveQueued = true task.delay(0.6, function() saveQueued = false SaveConfigNow() end) end LoadConfig() -- Состояние silent aim / хуков local Alive = true local SilentCache = nil -- { Positions = {}, Parts = {} } для выбранной цели local LastShot = 0 local LastShotPos, LastShotId = nil, 0 local HookStatusLabel = nil local RANDOM_KEYS = { "Head", "UpperTorso", "HumanoidRootPart" } local HooksSupported = (typeof(hookmetamethod) == "function") and (typeof(getnamecallmethod) == "function") and (typeof(checkcaller) == "function") and (typeof(newcclosure) == "function") -- ==================== ТЕМА ==================== local Theme = { Background = Color3.fromRGB(10, 12, 17), Sidebar = Color3.fromRGB(13, 16, 23), Element = Color3.fromRGB(20, 25, 34), ElementHi = Color3.fromRGB(28, 35, 48), Accent = Color3.fromRGB(0, 214, 143), Accent2 = Color3.fromRGB(0, 160, 255), Text = Color3.fromRGB(236, 244, 248), SubText = Color3.fromRGB(138, 156, 170), Stroke = Color3.fromRGB(38, 48, 62), HeaderEnd = Color3.fromRGB(6, 42, 42), } -- ===== Стили меню ===== local THEME_ROLES = { "Background", "Sidebar", "Element", "ElementHi", "Accent", "Accent2", "Text", "SubText", "Stroke", "HeaderEnd" } local function Fnt(name, fallback) local ok, f = pcall(function() return Enum.Font[name] end) if ok and f then return f end return fallback end local Themes = { ["1337 Neon"] = { Display = "💚 1337 Neon", Background = Color3.fromRGB(10, 12, 17), Sidebar = Color3.fromRGB(13, 16, 23), Element = Color3.fromRGB(20, 25, 34), ElementHi = Color3.fromRGB(28, 35, 48), Accent = Color3.fromRGB(0, 214, 143), Accent2 = Color3.fromRGB(0, 160, 255), Text = Color3.fromRGB(236, 244, 248), SubText = Color3.fromRGB(138, 156, 170), Stroke = Color3.fromRGB(38, 48, 62), HeaderEnd = Color3.fromRGB(6, 42, 42), Fonts = { Regular = Enum.Font.Gotham, Medium = Enum.Font.GothamMedium, Bold = Enum.Font.GothamBold }, Radius = 1.2, Title = "1337 HUB", Hint = "Right Shift — скрыть/показать", Icons = { Aim = "🎯", Silent = "👻", Visuals = "👁", Chams = "🔮", Extras = "✨", Player = "🏃", Misc = "⚙" }, }, ["Default"] = { Display = "🟣 Classic", Background = Color3.fromRGB(16, 16, 24), Sidebar = Color3.fromRGB(20, 20, 30), Element = Color3.fromRGB(28, 28, 42), ElementHi = Color3.fromRGB(36, 36, 54), Accent = Color3.fromRGB(138, 92, 255), Accent2 = Color3.fromRGB(80, 160, 255), Text = Color3.fromRGB(235, 235, 245), SubText = Color3.fromRGB(150, 150, 170), Stroke = Color3.fromRGB(50, 50, 72), HeaderEnd = Color3.fromRGB(28, 22, 48), Fonts = { Regular = Enum.Font.Gotham, Medium = Enum.Font.GothamMedium, Bold = Enum.Font.GothamBold }, Radius = 1, Title = "1337 HUB · Classic", Hint = "Right Shift — скрыть/показать", Icons = { Aim = "🎯", Silent = "👻", Visuals = "👁", Chams = "🔮", Extras = "✨", Player = "🏃", Misc = "⚙" }, }, ["Win11 Dark"] = { Display = "🪟 Windows 11 Dark", Background = Color3.fromRGB(32, 32, 32), Sidebar = Color3.fromRGB(39, 39, 39), Element = Color3.fromRGB(50, 50, 50), ElementHi = Color3.fromRGB(60, 60, 60), Accent = Color3.fromRGB(0, 120, 212), Accent2 = Color3.fromRGB(96, 205, 255), Text = Color3.fromRGB(242, 242, 242), SubText = Color3.fromRGB(172, 172, 172), Stroke = Color3.fromRGB(72, 72, 72), HeaderEnd = Color3.fromRGB(43, 43, 43), Fonts = { Regular = Fnt("BuilderSans", Enum.Font.Gotham), Medium = Fnt("BuilderSansMedium", Enum.Font.GothamMedium), Bold = Fnt("BuilderSansBold", Enum.Font.GothamBold) }, Radius = 0.7, Title = "1337 HUB · Win11", Hint = "Right Shift — скрыть/показать", Icons = { Aim = "◎", Silent = "◌", Visuals = "◉", Chams = "◍", Extras = "✦", Player = "🏃", Misc = "⚙" }, }, ["Win11 Light"] = { Display = "🪟 Windows 11 Light", Background = Color3.fromRGB(243, 243, 243), Sidebar = Color3.fromRGB(232, 232, 236), Element = Color3.fromRGB(251, 251, 251), ElementHi = Color3.fromRGB(240, 240, 244), Accent = Color3.fromRGB(0, 103, 192), Accent2 = Color3.fromRGB(0, 150, 230), Text = Color3.fromRGB(27, 27, 32), SubText = Color3.fromRGB(100, 100, 110), Stroke = Color3.fromRGB(205, 205, 212), HeaderEnd = Color3.fromRGB(225, 225, 232), Fonts = { Regular = Fnt("BuilderSans", Enum.Font.Gotham), Medium = Fnt("BuilderSansMedium", Enum.Font.GothamMedium), Bold = Fnt("BuilderSansBold", Enum.Font.GothamBold) }, Radius = 0.7, Title = "1337 HUB · Win11", Hint = "Right Shift — скрыть/показать", Icons = { Aim = "◎", Silent = "◌", Visuals = "◉", Chams = "◍", Extras = "✦", Player = "🏃", Misc = "⚙" }, }, ["Femboy UwU"] = { Display = "🐾 Femboy UwU", Background = Color3.fromRGB(30, 20, 38), Sidebar = Color3.fromRGB(40, 26, 50), Element = Color3.fromRGB(56, 36, 70), ElementHi = Color3.fromRGB(76, 50, 94), Accent = Color3.fromRGB(244, 128, 176), Accent2 = Color3.fromRGB(91, 206, 250), Text = Color3.fromRGB(255, 236, 248), SubText = Color3.fromRGB(214, 170, 212), Stroke = Color3.fromRGB(104, 66, 120), HeaderEnd = Color3.fromRGB(72, 36, 88), Fonts = { Regular = Fnt("Nunito", Enum.Font.GothamMedium), Medium = Fnt("Nunito", Enum.Font.GothamMedium), Bold = Fnt("FredokaOne", Enum.Font.GothamBold) }, Radius = 1.7, Title = "1337 HUB ✨ (=^.^=)", Hint = "RShift ~ hide me uwu", Icons = { Aim = "🎀", Silent = "🌸", Visuals = "💖", Chams = "🦊", Extras = "⭐", Player = "🏃", Misc = "🐾" }, }, } local ThemeOrder = { "1337 Neon", "Default", "Win11 Dark", "Win11 Light", "Femboy UwU" } local ApplyTheme -- определяется после сборки меню local RefreshThemeCards = function() end -- ==================== ЛОКАЛИЗАЦИЯ (RU / EN) ==================== local EN = { ["Right Shift — скрыть/показать"] = "Right Shift — hide/show", ["Основное"] = "Main", ["Aim включён"] = "Aim enabled", ["Кнопка наведения"] = "Aim key", ["ЛКМ (Left Click)"] = "Left Click", ["ПКМ (Right Click)"] = "Right Click", ["Цель"] = "Target", ["Голова"] = "Head", ["Торс"] = "Torso", ["Корпус"] = "Body", ["Показывать круг FOV"] = "Show FOV circle", ["Радиус FOV"] = "FOV radius", ["Плавность"] = "Smoothness", ["Проверки"] = "Checks", ["Не целиться в команду"] = "Team check (skip teammates)", ["Не целиться через стены"] = "Wall check", ["Общее"] = "General", ["ESP включён"] = "ESP enabled", ["Макс. дистанция"] = "Max distance", ["Скрывать команду"] = "Hide teammates", ["Цвет команды вместо своих цветов"] = "Use team colors", ["Боксы"] = "Boxes", ["Стиль бокса"] = "Box style", ["Полный"] = "Full", ["Углы"] = "Corners", ["Цвет бокса"] = "Box color", ["Толщина"] = "Thickness", ["Чёрная обводка"] = "Black outline", ["Заливка бокса"] = "Box fill", ["Цвет заливки"] = "Fill color", ["Прозрачность заливки"] = "Fill transparency", ["Здоровье (вертикальная полоса)"] = "Health (vertical bar)", ["Полоса здоровья"] = "Health bar", ["Цвет полосы"] = "Bar color", ["Градиент"] = "Gradient", ["По HP"] = "By HP", ["Один цвет"] = "Solid", ["Сторона"] = "Side", ["Слева"] = "Left", ["Справа"] = "Right", ["Цвет: много HP"] = "Color: high HP", ["Цвет: мало HP"] = "Color: low HP", ["Ширина полосы"] = "Bar width", ["Число HP рядом с полосой"] = "HP number next to bar", ["Текст"] = "Text", ["Имена"] = "Names", ["Цвет имени"] = "Name color", ["Дистанция"] = "Distance", ["Цвет дистанции"] = "Distance color", ["Оружие в руках"] = "Held weapon", ["Цвет оружия"] = "Weapon color", ["Размер текста"] = "Text size", ["Линии к игрокам"] = "Snaplines", ["Линии"] = "Lines", ["Откуда"] = "Origin", ["Снизу"] = "Bottom", ["Центр"] = "Center", ["Курсор"] = "Cursor", ["Цвет линий"] = "Line color", ["Толщина линий"] = "Line thickness", ["Chams включены"] = "Chams enabled", ["Заливка"] = "Fill", ["Обводка"] = "Outline", ["Прозрачность обводки"] = "Outline transparency", ["Поведение"] = "Behavior", ["Видно сквозь стены"] = "Visible through walls", ["Другой цвет за стеной"] = "Different color behind walls", ["Цвет за стеной"] = "Hidden color", ["Пульсация"] = "Pulse", ["Трейсеры пуль"] = "Bullet tracers", ["Трейсеры включены"] = "Tracers enabled", ["Цвет начала"] = "Start color", ["Цвет конца"] = "End color", ["Свечение (ореол)"] = "Glow (halo)", ["Белое ядро"] = "White core", ["Время жизни"] = "Lifetime", [" с"] = " s", ["Интервал между трейсерами"] = "Tracer interval", ["Откуда вылетает"] = "Spawn origin", ["Оружие"] = "Weapon", ["Камера"] = "Camera", ["Эффект попадания"] = "Impact effect", ["Свет от попадания"] = "Impact light", ["Только с оружием в руках"] = "Only with tool equipped", ["Свой прицел"] = "Custom crosshair", ["Прицел включён"] = "Crosshair enabled", ["Цвет прицела"] = "Crosshair color", ["Длина линий"] = "Line length", ["Зазор в центре"] = "Center gap", ["Точка в центре"] = "Center dot", ["Вращение"] = "Spin", ["Скорость вращения"] = "Spin speed", ["°/с"] = "°/s", ["Следует за курсором"] = "Follow cursor", ["Стиль кругов FOV и точки цели"] = "FOV circle & target dot style", ["Цвета из темы меню"] = "Use menu theme colors", ["Aim: цвет круга"] = "Aim: circle color", ["Aim: цвет при наведении"] = "Aim: locked color", ["Silent: цвет круга"] = "Silent: circle color", ["Толщина круга"] = "Circle thickness", ["Заливка круга"] = "Circle fill", ["Точка на цели Aim"] = "Aim target dot", ["Размер точки"] = "Dot size", ["Радар"] = "Radar", ["Мини-радар"] = "Mini radar", ["Дальность"] = "Range", ["Размер"] = "Size", ["Размер точек"] = "Dot size", ["Цвет врагов"] = "Enemy color", ["Цвет команды"] = "Team color", ["Silent Aim включён"] = "Silent Aim enabled", [" Хуки: проверка…"] = " Hooks: checking…", ["Куда стрелять"] = "Hit part", ["Часть тела"] = "Body part", ["Шанс попадания"] = "Hit chance", ["FOV и визуалы"] = "FOV & visuals", ["Точка и имя цели"] = "Target dot & name", ["Не стрелять через стены"] = "Wall check (no wallbang)", ["Методы перехвата (зависит от игры)"] = "Hook methods (game dependent)", ["Стиль меню"] = "Menu style", ["Меню"] = "Menu", [" Right Shift — открыть / закрыть меню\n Заголовок можно перетаскивать мышью"] = " Right Shift — open / close menu\n Drag the header to move the window", ["Конфиг"] = "Config", ["Сохранить конфиг"] = "Save config", ["Конфиг недоступен (нет writefile)"] = "Config unavailable (no writefile)", ["✔ Сохранено"] = "✔ Saved", ["✖ Не удалось сохранить"] = "✖ Failed to save", ["Выгрузить скрипт"] = "Unload script", [" Хуки: ✅ установлены"] = " Hooks: ✅ installed", [" Хуки: ❌ ошибка установки"] = " Hooks: ❌ install failed", [" Хуки: ❌ экзекутор не поддерживает hookmetamethod"] = " Hooks: ❌ executor lacks hookmetamethod", -- Player ["Бхоп (Bhop)"] = "Bhop", ["Bhop включён"] = "Bhop enabled", ["Клавиша бхопа (удержание)"] = "Bhop key (hold)", ["Бинд вкл/выкл бхопа"] = "Bhop toggle bind", ["Режим бхопа"] = "Bhop mode", ["Удержание"] = "Hold", ["Всегда"] = "Always", ["Ускорение в воздухе"] = "Air speed boost", ["Вид от 3-го лица"] = "Third person", ["3-е лицо включено"] = "Third person enabled", ["Бинд переключения"] = "Toggle bind", ["Дистанция камеры"] = "Camera distance", ["Смещение вбок"] = "Side offset", ["Высота камеры"] = "Camera height", ["Не проходить сквозь стены"] = "Camera wall collision", ["Показывать своё тело"] = "Show own body", ["Плавное движение"] = "Smooth movement", ["Форсировать (игры с 1-м лицом)"] = "Force mode (first-person games)", ["Движение"] = "Movement", ["Изменить скорость"] = "Custom walk speed", ["Скорость ходьбы"] = "Walk speed", ["Изменить прыжок"] = "Custom jump power", ["Сила прыжка"] = "Jump power", ["Бесконечный прыжок"] = "Infinite jump", ["Noclip (сквозь стены)"] = "Noclip", ["Бинд Noclip"] = "Noclip bind", ["Полёт (Fly)"] = "Fly", ["Бинд полёта"] = "Fly bind", ["Скорость полёта"] = "Fly speed", ["Мир и камера"] = "World & camera", ["Fullbright (без темноты)"] = "Fullbright", ["Убрать туман"] = "Remove fog", ["Свой FOV камеры"] = "Custom camera FOV", ["FOV камеры"] = "Camera FOV", ["Анти-АФК"] = "Anti-AFK", ["Перезайти на сервер"] = "Rejoin server", ["Язык"] = "Language", ["Язык меню"] = "Menu language", ["Водяной знак (FPS / пинг)"] = "Watermark (FPS / ping)", ["Нет"] = "None", ["Нажми клавишу…"] = "Press a key…", } local TabNames = { RU = { Aim = "Аим", Silent = "Silent", Visuals = "Визуалы", Chams = "Чамсы", Extras = "Экстра", Player = "Игрок", Misc = "Разное" }, EN = { Aim = "Aim", Silent = "Silent", Visuals = "Visuals", Chams = "Chams", Extras = "Extras", Player = "Player", Misc = "Misc" }, } local function TR(str) if Settings.UI.Language == "EN" then return EN[str] or str end return str end local function TabName(name) return (TabNames[Settings.UI.Language] or TabNames.RU)[name] or name end local Localized, LocRefresh = {}, {} local function Reg(inst, prop, ru, upper) Localized[inst] = { Prop = prop, Ru = ru, Upper = upper } local t = TR(ru) if upper then t = string.upper(t) end inst[prop] = t end local RefreshTabs = function() end local function SetLanguage(code) Settings.UI.Language = code for inst, d in pairs(Localized) do pcall(function() local t = TR(d.Ru) if d.Upper then t = string.upper(t) end inst[d.Prop] = t end) end for _, f in ipairs(LocRefresh) do pcall(f) end RefreshTabs() RequestSave() end local function Tween(obj, t, props, style, dir) local tw = TweenService:Create(obj, TweenInfo.new(t, style or Enum.EasingStyle.Quad, dir or Enum.EasingDirection.Out), props) tw:Play() return tw end local function Corner(parent, r) local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, r) c.Parent = parent return c end local function Stroke(parent, color, thickness, transparency) local s = Instance.new("UIStroke") s.Color = color s.Thickness = thickness or 1 s.Transparency = transparency or 0 s.ApplyStrokeMode = Enum.ApplyStrokeMode.Border s.Parent = parent return s end local function New(class, props, parent) local o = Instance.new(class) local lk, lu = props.LocKey, props.LocUpper for k, v in pairs(props) do if k ~= "LocKey" and k ~= "LocUpper" then o[k] = v end end if lk ~= nil then Reg(o, "Text", lk, lu) end o.Parent = parent return o end -- ==================== GUI ==================== local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "1337HubGUI" ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.DisplayOrder = 999 local ok = pcall(function() if gethui then ScreenGui.Parent = gethui() else ScreenGui.Parent = CoreGui end end) if not ok or not ScreenGui.Parent then ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end -- ==================== ЗАГРУЗКА + ВЫБОР ЯЗЫКА ==================== local function RunLoader() local LC = { Bg = Color3.fromRGB(6, 8, 12), Card = Color3.fromRGB(12, 15, 22), Ac = Color3.fromRGB(0, 214, 143), Ac2 = Color3.fromRGB(0, 160, 255), Text = Color3.fromRGB(236, 244, 248), Sub = Color3.fromRGB(138, 156, 170), Stroke = Color3.fromRGB(38, 48, 62), Btn = Color3.fromRGB(20, 26, 36), Bad = Color3.fromRGB(255, 80, 100), } local LT = { RU = { pick = "Выберите язык • Select language", sub = "Подготовка к запуску", s1 = "Инициализация ядра", s2 = "Проверка возможностей эксплойта", s3 = "Загрузка конфигурации", s4 = "Сборка интерфейса", s5 = "Готово!", foot = "Right Shift — открыть / закрыть меню", }, EN = { pick = "Выберите язык • Select language", sub = "Preparing to launch", s1 = "Initializing core", s2 = "Checking executor capabilities", s3 = "Loading configuration", s4 = "Building interface", s5 = "Ready!", foot = "Right Shift — open / close menu", }, } local root = New("Frame", { Name = "Loader", Size = UDim2.fromScale(1, 1), BackgroundColor3 = LC.Bg, BorderSizePixel = 0, ZIndex = 500, Active = true, }, ScreenGui) New("UIGradient", { Color = ColorSequence.new(Color3.fromRGB(5, 7, 11), Color3.fromRGB(3, 28, 30)), Rotation = 35 }, root) -- плавающие частицы local parts = {} for i = 1, 28 do local sz = math.random(2, 5) local f = New("Frame", { Size = UDim2.fromOffset(sz, sz), Position = UDim2.fromScale(math.random(), math.random()), BackgroundColor3 = (i % 2 == 0) and LC.Ac or LC.Ac2, BackgroundTransparency = 0.45 + math.random() * 0.4, BorderSizePixel = 0, ZIndex = 501, }, root) Corner(f, 4) parts[i] = { F = f, X = math.random(), Y = math.random(), S = 0.015 + math.random() * 0.035, W = math.random() * 6 } end local card = New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), Position = UDim2.fromScale(0.5, 0.5), Size = UDim2.fromOffset(460, 330), BackgroundColor3 = LC.Card, BorderSizePixel = 0, ZIndex = 502, }, root) Corner(card, 18) local cardStroke = Stroke(card, Color3.new(1, 1, 1), 2, 0.05) local cardGrad = New("UIGradient", { Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, LC.Ac), ColorSequenceKeypoint.new(0.5, LC.Ac2), ColorSequenceKeypoint.new(1, LC.Ac), }), }, cardStroke) local cardScale = New("UIScale", { Scale = 0.85 }, card) Tween(cardScale, 0.55, { Scale = 1 }, Enum.EasingStyle.Back) local logo = New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(0, 26), Size = UDim2.new(1, 0, 0, 60), Font = Enum.Font.GothamBlack, Text = "1337", TextSize = 56, TextColor3 = Color3.new(1, 1, 1), ZIndex = 503, }, card) local logoGrad = New("UIGradient", { Color = ColorSequence.new(LC.Ac, LC.Ac2) }, logo) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(0, 86), Size = UDim2.new(1, 0, 0, 20), Font = Enum.Font.GothamBold, Text = "H U B", TextSize = 15, TextColor3 = LC.Sub, ZIndex = 503, }, card) local status = New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(0, 122), Size = UDim2.new(1, 0, 0, 20), Font = Enum.Font.GothamMedium, Text = LT.RU.pick, TextSize = 13, TextColor3 = LC.Text, ZIndex = 503, }, card) local pulse = Connect(RunService.Heartbeat, function(dt) cardGrad.Rotation = (os.clock() * 90) % 360 logoGrad.Rotation = (os.clock() * 40) % 360 for _, p in ipairs(parts) do p.Y = p.Y - p.S * dt * 3 if p.Y < -0.05 then p.Y = 1.05 p.X = math.random() end p.F.Position = UDim2.fromScale(p.X + math.sin(os.clock() + p.W) * 0.01, p.Y) end end) -- выбор языка local picked = nil local langButtons = {} local function langBtn(code, name, x) local b = New("TextButton", { Position = UDim2.fromOffset(x, 160), Size = UDim2.fromOffset(196, 76), BackgroundColor3 = LC.Btn, AutoButtonColor = false, Text = "", ZIndex = 503, }, card) Corner(b, 12) local st = Stroke(b, (Settings.UI.Language == code) and LC.Ac or LC.Stroke, 1.5, 0) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(0, 12), Size = UDim2.new(1, 0, 0, 30), Font = Enum.Font.GothamBlack, Text = code, TextSize = 26, TextColor3 = LC.Ac, ZIndex = 504, }, b) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(0, 44), Size = UDim2.new(1, 0, 0, 20), Font = Enum.Font.GothamMedium, Text = name, TextSize = 13, TextColor3 = LC.Text, ZIndex = 504, }, b) b.MouseEnter:Connect(function() Tween(b, 0.15, { BackgroundColor3 = Color3.fromRGB(28, 38, 52) }) Tween(st, 0.15, { Color = LC.Ac2 }) end) b.MouseLeave:Connect(function() Tween(b, 0.15, { BackgroundColor3 = LC.Btn }) Tween(st, 0.15, { Color = (Settings.UI.Language == code) and LC.Ac or LC.Stroke }) end) b.MouseButton1Click:Connect(function() picked = code end) table.insert(langButtons, b) end langBtn("RU", "Русский", 28) langBtn("EN", "English", 236) repeat task.wait() until picked or not Alive Settings.UI.Language = picked or Settings.UI.Language local T = LT[Settings.UI.Language] or LT.RU for _, b in ipairs(langButtons) do Tween(b, 0.2, { BackgroundTransparency = 1 }) for _, d in ipairs(b:GetDescendants()) do if d:IsA("TextLabel") then Tween(d, 0.2, { TextTransparency = 1 }) end if d:IsA("UIStroke") then Tween(d, 0.2, { Transparency = 1 }) end end end task.wait(0.25) for _, b in ipairs(langButtons) do b:Destroy() end -- прогресс status.Text = T.sub local track = New("Frame", { Position = UDim2.fromOffset(28, 196), Size = UDim2.new(1, -56, 0, 8), BackgroundColor3 = LC.Btn, BorderSizePixel = 0, ZIndex = 503, }, card) Corner(track, 4) local fill = New("Frame", { Size = UDim2.new(0, 0, 1, 0), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, ZIndex = 504, }, track) Corner(fill, 4) New("UIGradient", { Color = ColorSequence.new(LC.Ac, LC.Ac2) }, fill) local stepLabel = New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(28, 210), Size = UDim2.new(1, -120, 0, 18), Font = Enum.Font.GothamMedium, Text = "", TextSize = 12, TextColor3 = LC.Sub, TextXAlignment = Enum.TextXAlignment.Left, ZIndex = 503, }, card) local pct = New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.new(1, -92, 0, 210), Size = UDim2.fromOffset(64, 18), Font = Enum.Font.GothamBold, Text = "0%", TextSize = 12, TextColor3 = LC.Ac, TextXAlignment = Enum.TextXAlignment.Right, ZIndex = 503, }, card) local chipsHolder = New("Frame", { BackgroundTransparency = 1, Position = UDim2.fromOffset(28, 246), Size = UDim2.new(1, -56, 0, 28), ZIndex = 503, }, card) New("UIListLayout", { FillDirection = Enum.FillDirection.Horizontal, Padding = UDim.new(0, 8) }, chipsHolder) local function chip(text, good) local c = New("TextLabel", { Size = UDim2.fromOffset(118, 26), BackgroundColor3 = LC.Btn, Font = Enum.Font.GothamBold, Text = text .. (good and " ✔" or " ✖"), TextSize = 11, TextColor3 = good and LC.Ac or LC.Bad, TextTransparency = 1, BackgroundTransparency = 1, ZIndex = 503, }, chipsHolder) Corner(c, 8) Stroke(c, good and LC.Ac or LC.Bad, 1, 0.55) Tween(c, 0.25, { TextTransparency = 0, BackgroundTransparency = 0 }) end New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.new(0, 0, 1, -34), Size = UDim2.new(1, 0, 0, 18), Font = Enum.Font.Gotham, Text = T.foot .. " • v3.0", TextSize = 11, TextColor3 = LC.Sub, ZIndex = 503, }, card) local steps = { { T.s1, 0.18, nil }, { T.s2, 0.42, function() chip("HOOKS", HooksSupported) chip("FILES", CanFS) chip("GUI", true) end }, { T.s3, 0.68, nil }, { T.s4, 0.92, nil }, { T.s5, 1.00, nil }, } local shown = 0 for _, st in ipairs(steps) do stepLabel.Text = st[1] .. "…" if st[3] then st[3]() end Tween(fill, 0.45, { Size = UDim2.new(st[2], 0, 1, 0) }) local target = math.floor(st[2] * 100) while shown < target do shown = math.min(target, shown + 2) pct.Text = shown .. "%" task.wait(0.012) end task.wait(0.28) end stepLabel.Text = T.s5 task.wait(0.4) -- плавное исчезновение for _, d in ipairs(root:GetDescendants()) do local props = {} if d:IsA("GuiObject") then props.BackgroundTransparency = 1 end if d:IsA("TextLabel") or d:IsA("TextButton") then props.TextTransparency = 1 end if d:IsA("UIStroke") then props.Transparency = 1 end if next(props) then Tween(d, 0.45, props) end end Tween(root, 0.45, { BackgroundTransparency = 1 }) Tween(cardScale, 0.45, { Scale = 1.08 }) task.wait(0.5) pcall(function() pulse:Disconnect() end) root:Destroy() end RunLoader() -- Слой для 2D ESP / прицела (всегда позади меню) local ESPLayer = New("Frame", { Name = "ESPLayer", Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, ZIndex = -10, }, ScreenGui) -- Круг FOV local FOVCircle = New("Frame", { Name = "FOVCircle", AnchorPoint = Vector2.new(0.5, 0.5), BackgroundTransparency = 1, Size = UDim2.fromOffset(300, 300), Visible = false, }, ScreenGui) Corner(FOVCircle, 1000) local FOVStroke = Stroke(FOVCircle, Theme.Accent, 1.5, 0.15) -- Точка на цели local TargetDot = New("Frame", { Name = "TargetDot", AnchorPoint = Vector2.new(0.5, 0.5), BackgroundColor3 = Color3.new(1, 1, 1), Size = UDim2.fromOffset(10, 10), Visible = false, ZIndex = 10, }, ScreenGui) Corner(TargetDot, 100) local TargetDotStroke = Stroke(TargetDot, Theme.Accent, 2, 0) -- Silent Aim: круг FOV, точка и подпись цели local SilentFOV = New("Frame", { Name = "SilentFOV", AnchorPoint = Vector2.new(0.5, 0.5), BackgroundTransparency = 1, Size = UDim2.fromOffset(400, 400), Visible = false, }, ScreenGui) Corner(SilentFOV, 1000) local SilentFOVStroke = Stroke(SilentFOV, Theme.Accent2, 1.5, 0.2) local SilentDot = New("Frame", { Name = "SilentDot", AnchorPoint = Vector2.new(0.5, 0.5), BackgroundColor3 = Theme.Accent2, Size = UDim2.fromOffset(10, 10), Visible = false, ZIndex = 11, }, ScreenGui) Corner(SilentDot, 100) local SilentDotStroke = Stroke(SilentDot, Color3.new(1, 1, 1), 2, 0) SilentDot:SetAttribute("NoTheme", true) SilentDotStroke:SetAttribute("NoTheme", true) local SilentLabel = New("TextLabel", { Name = "SilentLabel", AnchorPoint = Vector2.new(0.5, 0), BackgroundColor3 = Theme.Background, BackgroundTransparency = 0.25, Size = UDim2.fromOffset(190, 18), Font = Enum.Font.GothamMedium, TextColor3 = Theme.Text, TextSize = 11, Text = "", Visible = false, ZIndex = 11, }, ScreenGui) Corner(SilentLabel, 6) -- Главное окно local Main = New("Frame", { Name = "Main", Size = UDim2.fromOffset(660, 450), Position = UDim2.new(0.5, -330, 0.5, -225), BackgroundColor3 = Theme.Background, BorderSizePixel = 0, ClipsDescendants = true, }, ScreenGui) Corner(Main, 14) local MainStroke = Stroke(Main, Color3.new(1, 1, 1), 1.6, 0.1) local MainStrokeGrad = New("UIGradient", { Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Theme.Accent), ColorSequenceKeypoint.new(0.5, Theme.Accent2), ColorSequenceKeypoint.new(1, Theme.Accent), }), }, MainStroke) local MainScale = New("UIScale", { Scale = 1 }, Main) -- Верхняя полоса local Header = New("Frame", { Size = UDim2.new(1, 0, 0, 46), BackgroundColor3 = Theme.Sidebar, BorderSizePixel = 0, }, Main) local HeaderGrad = New("UIGradient", { Color = ColorSequence.new(Theme.Sidebar, Theme.HeaderEnd), Rotation = 0, }, Header) local AccentLine = New("Frame", { Size = UDim2.new(1, 0, 0, 2), Position = UDim2.new(0, 0, 1, -2), BorderSizePixel = 0, BackgroundColor3 = Color3.new(1, 1, 1), }, Header) New("UIGradient", { Color = ColorSequence.new(Theme.Accent, Theme.Accent2) }, AccentLine) local TitleLabel = New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(18, 0), Size = UDim2.new(0, 300, 1, 0), Font = Enum.Font.GothamBold, Text = "1337 HUB", TextColor3 = Color3.new(1, 1, 1), TextSize = 17, TextXAlignment = Enum.TextXAlignment.Left, }, Header) New("UIGradient", { Color = ColorSequence.new(Theme.Accent, Theme.Accent2) }, TitleLabel) local HintLabel = New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.new(1, -230, 0, 0), Size = UDim2.new(0, 215, 1, 0), Font = Enum.Font.Gotham, LocKey = "Right Shift — скрыть/показать", TextColor3 = Theme.SubText, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Right, }, Header) -- Перетаскивание окна do local dragging, dragStart, startPos Connect(Header.InputBegan, function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = Main.Position end end) Connect(UserInputService.InputChanged, function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local d = input.Position - dragStart Main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end end) Connect(UserInputService.InputEnded, function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) end -- Боковая панель local Sidebar = New("Frame", { Position = UDim2.fromOffset(0, 46), Size = UDim2.new(0, 150, 1, -46), BackgroundColor3 = Theme.Sidebar, BorderSizePixel = 0, }, Main) New("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder }, Sidebar) New("UIPadding", { PaddingTop = UDim.new(0, 12), PaddingLeft = UDim.new(0, 10), PaddingRight = UDim.new(0, 10) }, Sidebar) local PagesHolder = New("Frame", { Position = UDim2.fromOffset(150, 46), Size = UDim2.new(1, -150, 1, -46), BackgroundTransparency = 1, }, Main) local Tabs = {} RefreshTabs = function() local icons = (Themes[Settings.UI.Style] or Themes["1337 Neon"]).Icons for name, t in pairs(Tabs) do t.Button.Text = (icons[name] or "•") .. " " .. TabName(name) end end local function SelectTab(name) for n, t in pairs(Tabs) do local active = (n == name) t.Page.Visible = active Tween(t.Button, 0.2, { BackgroundColor3 = active and Theme.Accent or Theme.Sidebar, TextColor3 = active and Color3.new(1, 1, 1) or Theme.SubText, }) end end local function CreateTab(name, icon, order) local btn = New("TextButton", { Size = UDim2.new(1, 0, 0, 34), BackgroundColor3 = Theme.Sidebar, AutoButtonColor = false, Font = Enum.Font.GothamMedium, Text = icon .. " " .. TabName(name), TextColor3 = Theme.SubText, TextSize = 13, LayoutOrder = order, }, Sidebar) Corner(btn, 8) local page = New("ScrollingFrame", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 3, ScrollBarImageColor3 = Theme.Accent, CanvasSize = UDim2.new(), AutomaticCanvasSize = Enum.AutomaticSize.Y, Visible = false, }, PagesHolder) New("UIListLayout", { Padding = UDim.new(0, 8), SortOrder = Enum.SortOrder.LayoutOrder }, page) New("UIPadding", { PaddingTop = UDim.new(0, 12), PaddingBottom = UDim.new(0, 12), PaddingLeft = UDim.new(0, 14), PaddingRight = UDim.new(0, 14), }, page) Tabs[name] = { Button = btn, Page = page } Connect(btn.MouseButton1Click, function() SelectTab(name) end) Connect(btn.MouseEnter, function() if not page.Visible then Tween(btn, 0.15, { BackgroundColor3 = Theme.Element }) end end) Connect(btn.MouseLeave, function() if not page.Visible then Tween(btn, 0.15, { BackgroundColor3 = Theme.Sidebar }) end end) return page end -- ==================== ЭЛЕМЕНТЫ UI ==================== local function Section(page, text) New("TextLabel", { Size = UDim2.new(1, 0, 0, 18), BackgroundTransparency = 1, Font = Enum.Font.GothamBold, LocKey = text, LocUpper = true, TextColor3 = Theme.Accent, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, }, page) end local function Toggle(page, text, default, callback) local state = default local row = New("TextButton", { Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = Theme.Element, AutoButtonColor = false, Text = "", }, page) Corner(row, 8) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(12, 0), Size = UDim2.new(1, -70, 1, 0), Font = Enum.Font.GothamMedium, LocKey = text, TextColor3 = Theme.Text, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, row) local sw = New("Frame", { AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -12, 0.5, 0), Size = UDim2.fromOffset(40, 20), BackgroundColor3 = state and Theme.Accent or Theme.Stroke, }, row) Corner(sw, 10) local knob = New("Frame", { AnchorPoint = Vector2.new(0, 0.5), Position = state and UDim2.new(1, -18, 0.5, 0) or UDim2.new(0, 2, 0.5, 0), Size = UDim2.fromOffset(16, 16), BackgroundColor3 = Color3.new(1, 1, 1), }, sw) Corner(knob, 8) local function render() Tween(sw, 0.18, { BackgroundColor3 = state and Theme.Accent or Theme.Stroke }) Tween(knob, 0.18, { Position = state and UDim2.new(1, -18, 0.5, 0) or UDim2.new(0, 2, 0.5, 0) }) end Connect(row.MouseButton1Click, function() state = not state render() callback(state) RequestSave() end) Connect(row.MouseEnter, function() Tween(row, 0.15, { BackgroundColor3 = Theme.ElementHi }) end) Connect(row.MouseLeave, function() Tween(row, 0.15, { BackgroundColor3 = Theme.Element }) end) callback(state) -- хэндл для переключения из бинда return function(v) state = v and true or false render() callback(state) RequestSave() end end local function Slider(page, text, min, max, default, step, suffix, callback) local value = default local row = New("Frame", { Size = UDim2.new(1, 0, 0, 52), BackgroundColor3 = Theme.Element, }, page) Corner(row, 8) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(12, 6), Size = UDim2.new(0.6, 0, 0, 18), Font = Enum.Font.GothamMedium, LocKey = text, TextColor3 = Theme.Text, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, row) local valueLabel = New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.new(0.5, 0, 0, 6), Size = UDim2.new(0.5, -12, 0, 18), Font = Enum.Font.GothamBold, TextColor3 = Theme.Accent, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Right, }, row) local track = New("Frame", { Position = UDim2.new(0, 12, 0, 34), Size = UDim2.new(1, -24, 0, 6), BackgroundColor3 = Theme.Stroke, }, row) Corner(track, 3) local fill = New("Frame", { Size = UDim2.new(0, 0, 1, 0), BackgroundColor3 = Color3.new(1, 1, 1), }, track) Corner(fill, 3) New("UIGradient", { Color = ColorSequence.new(Theme.Accent, Theme.Accent2) }, fill) local knob = New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.fromOffset(14, 14), BackgroundColor3 = Color3.new(1, 1, 1), ZIndex = 2, }, track) Corner(knob, 7) Stroke(knob, Theme.Accent, 2) local function setValue(v, fire) v = math.clamp(math.floor(v / step + 0.5) * step, min, max) v = tonumber(string.format("%.4f", v)) or v value = v local a = (v - min) / (max - min) fill.Size = UDim2.new(a, 0, 1, 0) knob.Position = UDim2.new(a, 0, 0.5, 0) valueLabel.Text = tostring(v) .. TR(suffix or "") if fire then callback(v) RequestSave() end end local dragging = false local function update(x) local a = math.clamp((x - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1) setValue(min + (max - min) * a, true) end Connect(row.InputBegan, function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true update(input.Position.X) end end) Connect(UserInputService.InputChanged, function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then update(input.Position.X) end end) Connect(UserInputService.InputEnded, function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) table.insert(LocRefresh, function() setValue(value, false) end) setValue(default, true) end -- options = { {Label = "ЛКМ", Value = ...}, ... } local function SameValue(a, b) if typeof(a) == "Color3" and typeof(b) == "Color3" then return a:ToHex() == b:ToHex() end return a == b end local function Selector(page, text, options, defaultIndex, callback, current) local row = New("Frame", { Size = UDim2.new(1, 0, 0, 62), BackgroundColor3 = Theme.Element, }, page) Corner(row, 8) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(12, 6), Size = UDim2.new(1, -24, 0, 18), Font = Enum.Font.GothamMedium, LocKey = text, TextColor3 = Theme.Text, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, row) local holder = New("Frame", { Position = UDim2.new(0, 12, 0, 28), Size = UDim2.new(1, -24, 0, 26), BackgroundTransparency = 1, }, row) New("UIListLayout", { FillDirection = Enum.FillDirection.Horizontal, Padding = UDim.new(0, 6), }, holder) local buttons = {} local function select(i) for idx, b in ipairs(buttons) do local active = idx == i Tween(b, 0.18, { BackgroundColor3 = active and Theme.Accent or Theme.Stroke, TextColor3 = active and Color3.new(1, 1, 1) or Theme.SubText, }) end callback(options[i].Value) RequestSave() end for i, opt in ipairs(options) do local b = New("TextButton", { Size = UDim2.new(1 / #options, -6 * (#options - 1) / #options, 1, 0), BackgroundColor3 = Theme.Stroke, AutoButtonColor = false, Font = Enum.Font.GothamMedium, LocKey = opt.Label, TextColor3 = Theme.SubText, TextSize = 12, }, holder) Corner(b, 6) buttons[i] = b Connect(b.MouseButton1Click, function() select(i) end) end if current ~= nil then for i, opt in ipairs(options) do if SameValue(opt.Value, current) then defaultIndex = i break end end end select(defaultIndex) end local function NT(...) for _, inst in ipairs({ ... }) do inst:SetAttribute("NoTheme", true) end end -- Выбор цвета: квадрат насыщенности/яркости + полоса оттенка (+ режим RGB-радуга) local function ColorPicker(page, text, tbl, key, rainbowKey) local row = New("Frame", { Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = Theme.Element, ClipsDescendants = true, }, page) Corner(row, 8) local header = New("TextButton", { Size = UDim2.new(1, 0, 0, 38), BackgroundTransparency = 1, Text = "", AutoButtonColor = false, }, row) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(12, 0), Size = UDim2.new(1, -130, 1, 0), Font = Enum.Font.GothamMedium, LocKey = text, TextColor3 = Theme.Text, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, header) local swatch = New("Frame", { AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -12, 0.5, 0), Size = UDim2.fromOffset(34, 18), BackgroundColor3 = tbl[key], }, header) Corner(swatch, 5) local swStroke = Stroke(swatch, Color3.new(1, 1, 1), 1, 0.6) NT(swatch, swStroke) if rainbowKey then local rgb = New("TextButton", { AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -54, 0.5, 0), Size = UDim2.fromOffset(38, 18), BackgroundColor3 = tbl[rainbowKey] and Theme.Accent or Theme.Stroke, AutoButtonColor = false, Font = Enum.Font.GothamBold, Text = "RGB", TextColor3 = Color3.new(1, 1, 1), TextSize = 10, }, header) Corner(rgb, 5) Connect(rgb.MouseButton1Click, function() tbl[rainbowKey] = not tbl[rainbowKey] Tween(rgb, 0.15, { BackgroundColor3 = tbl[rainbowKey] and Theme.Accent or Theme.Stroke }) RequestSave() end) end local h, sat, val = tbl[key]:ToHSV() local svFrame = New("Frame", { Position = UDim2.fromOffset(12, 46), Size = UDim2.new(1, -52, 0, 96), BackgroundColor3 = Color3.fromHSV(h, 1, 1), BorderSizePixel = 0, }, row) Corner(svFrame, 6) local white = New("Frame", { Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0 }, svFrame) Corner(white, 6) local wg = New("UIGradient", { Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1) }), }, white) local black = New("Frame", { Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(0, 0, 0), BorderSizePixel = 0 }, svFrame) Corner(black, 6) local bg = New("UIGradient", { Rotation = 90, Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 0) }), }, black) local svCursor = New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.fromOffset(10, 10), BackgroundTransparency = 1, ZIndex = 3, }, svFrame) Corner(svCursor, 5) local curStroke = Stroke(svCursor, Color3.new(1, 1, 1), 2, 0) local hueBar = New("Frame", { Position = UDim2.new(1, -30, 0, 46), Size = UDim2.fromOffset(18, 96), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, }, row) Corner(hueBar, 5) local keys = {} for i = 0, 6 do table.insert(keys, ColorSequenceKeypoint.new(i / 6, Color3.fromHSV(i / 6, 1, 1))) end local hg = New("UIGradient", { Rotation = 90, Color = ColorSequence.new(keys) }, hueBar) local hueCursor = New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.new(1, 6, 0, 4), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, ZIndex = 3, }, hueBar) Corner(hueCursor, 2) local hcStroke = Stroke(hueCursor, Color3.new(0, 0, 0), 1, 0.2) NT(svFrame, white, wg, black, bg, svCursor, curStroke, hueBar, hg, hueCursor, hcStroke) local function apply(save) local c = Color3.fromHSV(h, sat, val) tbl[key] = c swatch.BackgroundColor3 = c svFrame.BackgroundColor3 = Color3.fromHSV(h, 1, 1) svCursor.Position = UDim2.fromScale(sat, 1 - val) hueCursor.Position = UDim2.new(0.5, 0, h, 0) if save then RequestSave() end end local drag = nil local function update() local m = UserInputService:GetMouseLocation() if drag == "sv" then sat = math.clamp((m.X - svFrame.AbsolutePosition.X) / svFrame.AbsoluteSize.X, 0, 1) val = 1 - math.clamp((m.Y - svFrame.AbsolutePosition.Y) / svFrame.AbsoluteSize.Y, 0, 1) apply(true) elseif drag == "hue" then h = math.clamp((m.Y - hueBar.AbsolutePosition.Y) / hueBar.AbsoluteSize.Y, 0, 0.999) apply(true) end end local function isPress(input) return input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch end Connect(svFrame.InputBegan, function(input) if isPress(input) then drag = "sv" update() end end) Connect(hueBar.InputBegan, function(input) if isPress(input) then drag = "hue" update() end end) Connect(UserInputService.InputChanged, function(input) if drag and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then update() end end) Connect(UserInputService.InputEnded, function(input) if isPress(input) then drag = nil end end) local open = false Connect(header.MouseButton1Click, function() open = not open Tween(row, 0.2, { Size = UDim2.new(1, 0, 0, open and 154 or 38) }) end) apply(false) end -- ==================== БИНДЫ / КНОПКИ ==================== local BindListening = false local Handles = {} local function BindName(b) if b == nil or b == Enum.KeyCode.Unknown then return TR("Нет") end return b.Name end local function Keybind(page, text, tbl, key) local row = New("Frame", { Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = Theme.Element }, page) Corner(row, 8) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(12, 0), Size = UDim2.new(1, -140, 1, 0), Font = Enum.Font.GothamMedium, LocKey = text, TextColor3 = Theme.Text, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, row) local btn = New("TextButton", { AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -10, 0.5, 0), Size = UDim2.fromOffset(112, 24), BackgroundColor3 = Theme.Stroke, AutoButtonColor = false, Font = Enum.Font.GothamBold, TextColor3 = Theme.Text, TextSize = 11, Text = "", }, row) Corner(btn, 6) local listening = false local function render() btn.Text = listening and TR("Нажми клавишу…") or BindName(tbl[key]) end table.insert(LocRefresh, render) render() Connect(btn.MouseButton1Click, function() listening = true BindListening = true render() Tween(btn, 0.15, { BackgroundColor3 = Theme.Accent }) end) Connect(UserInputService.InputBegan, function(input) if not listening then return end local v if input.UserInputType == Enum.UserInputType.Keyboard then if input.KeyCode == Enum.KeyCode.Escape or input.KeyCode == Enum.KeyCode.Backspace then v = Enum.KeyCode.Unknown else v = input.KeyCode end elseif input.UserInputType == Enum.UserInputType.MouseButton2 or input.UserInputType == Enum.UserInputType.MouseButton3 then v = input.UserInputType else return end tbl[key] = v listening = false task.delay(0.15, function() BindListening = false end) render() Tween(btn, 0.15, { BackgroundColor3 = Theme.Stroke }) RequestSave() end) end local function Button(page, text, color, callback) local b = New("TextButton", { Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = color or Theme.Accent, Font = Enum.Font.GothamBold, LocKey = text, TextColor3 = Color3.new(1, 1, 1), TextSize = 13, }, page) Corner(b, 8) Connect(b.MouseButton1Click, callback) return b end -- ==================== СТРАНИЦЫ ==================== local AimPage = CreateTab("Aim", "🎯", 1) local SilentPage = CreateTab("Silent", "👻", 2) local VisualsPage = CreateTab("Visuals", "👁", 3) local ChamsPage = CreateTab("Chams", "🔮", 4) local ExtrasPage = CreateTab("Extras", "✨", 5) local PlayerPage = CreateTab("Player", "🏃", 6) local MiscPage = CreateTab("Misc", "⚙", 7) -- AIM Section(AimPage, "Основное") Toggle(AimPage, "Aim включён", Settings.Aimbot.Enabled, function(v) Settings.Aimbot.Enabled = v end) Selector(AimPage, "Кнопка наведения", { { Label = "ЛКМ (Left Click)", Value = Enum.UserInputType.MouseButton1 }, { Label = "ПКМ (Right Click)", Value = Enum.UserInputType.MouseButton2 }, }, 2, function(v) Settings.Aimbot.Key = v end, Settings.Aimbot.Key) Selector(AimPage, "Цель", { { Label = "Голова", Value = "Head" }, { Label = "Торс", Value = "UpperTorso" }, { Label = "Корпус", Value = "HumanoidRootPart" }, }, 1, function(v) Settings.Aimbot.TargetPart = v end, Settings.Aimbot.TargetPart) Section(AimPage, "FOV") Toggle(AimPage, "Показывать круг FOV", Settings.Aimbot.ShowFOV, function(v) Settings.Aimbot.ShowFOV = v end) Slider(AimPage, "Радиус FOV", 20, 600, Settings.Aimbot.FOV, 5, " px", function(v) Settings.Aimbot.FOV = v end) Slider(AimPage, "Плавность", 1, 20, Settings.Aimbot.Smoothness, 1, "", function(v) Settings.Aimbot.Smoothness = v end) Section(AimPage, "Проверки") Toggle(AimPage, "Не целиться в команду", Settings.Aimbot.TeamCheck, function(v) Settings.Aimbot.TeamCheck = v end) Toggle(AimPage, "Не целиться через стены", Settings.Aimbot.WallCheck, function(v) Settings.Aimbot.WallCheck = v end) -- VISUALS (2D ESP) local E = Settings.ESP Section(VisualsPage, "Общее") Toggle(VisualsPage, "ESP включён", E.Enabled, function(v) E.Enabled = v end) Slider(VisualsPage, "Макс. дистанция", 100, 3000, E.MaxDistance, 50, " st", function(v) E.MaxDistance = v end) Toggle(VisualsPage, "Скрывать команду", E.TeamCheck, function(v) E.TeamCheck = v end) Toggle(VisualsPage, "Цвет команды вместо своих цветов", E.TeamColors, function(v) E.TeamColors = v end) Section(VisualsPage, "Боксы") Toggle(VisualsPage, "Боксы", E.Box, function(v) E.Box = v end) Selector(VisualsPage, "Стиль бокса", { { Label = "Полный", Value = "Full" }, { Label = "Углы", Value = "Corner" }, }, 1, function(v) E.BoxStyle = v end, E.BoxStyle) ColorPicker(VisualsPage, "Цвет бокса", E, "BoxColor", "BoxRainbow") Slider(VisualsPage, "Толщина", 1, 4, E.BoxThickness, 0.5, " px", function(v) E.BoxThickness = v end) Toggle(VisualsPage, "Чёрная обводка", E.BoxOutline, function(v) E.BoxOutline = v end) Toggle(VisualsPage, "Заливка бокса", E.BoxFill, function(v) E.BoxFill = v end) ColorPicker(VisualsPage, "Цвет заливки", E, "BoxFillColor") Slider(VisualsPage, "Прозрачность заливки", 0.3, 0.95, E.BoxFillAlpha, 0.05, "", function(v) E.BoxFillAlpha = v end) Section(VisualsPage, "Здоровье (вертикальная полоса)") Toggle(VisualsPage, "Полоса здоровья", E.HealthBar, function(v) E.HealthBar = v end) Selector(VisualsPage, "Цвет полосы", { { Label = "Градиент", Value = "Gradient" }, { Label = "По HP", Value = "Health" }, { Label = "Один цвет", Value = "Solid" }, }, 1, function(v) E.HealthStyle = v end, E.HealthStyle) Selector(VisualsPage, "Сторона", { { Label = "Слева", Value = "Left" }, { Label = "Справа", Value = "Right" }, }, 1, function(v) E.HealthSide = v end, E.HealthSide) ColorPicker(VisualsPage, "Цвет: много HP", E, "HealthHigh") ColorPicker(VisualsPage, "Цвет: мало HP", E, "HealthLow") Slider(VisualsPage, "Ширина полосы", 2, 8, E.HealthWidth, 1, " px", function(v) E.HealthWidth = v end) Toggle(VisualsPage, "Число HP рядом с полосой", E.HealthText, function(v) E.HealthText = v end) Section(VisualsPage, "Текст") Toggle(VisualsPage, "Имена", E.Names, function(v) E.Names = v end) ColorPicker(VisualsPage, "Цвет имени", E, "NameColor") Toggle(VisualsPage, "Дистанция", E.Distance, function(v) E.Distance = v end) ColorPicker(VisualsPage, "Цвет дистанции", E, "DistanceColor") Toggle(VisualsPage, "Оружие в руках", E.Weapon, function(v) E.Weapon = v end) ColorPicker(VisualsPage, "Цвет оружия", E, "WeaponColor") Slider(VisualsPage, "Размер текста", 10, 20, E.TextSize, 1, " px", function(v) E.TextSize = v end) Section(VisualsPage, "Линии к игрокам") Toggle(VisualsPage, "Линии", E.Snaplines, function(v) E.Snaplines = v end) Selector(VisualsPage, "Откуда", { { Label = "Снизу", Value = "Bottom" }, { Label = "Центр", Value = "Center" }, { Label = "Курсор", Value = "Mouse" }, }, 1, function(v) E.SnapOrigin = v end, E.SnapOrigin) ColorPicker(VisualsPage, "Цвет линий", E, "SnapColor") Slider(VisualsPage, "Толщина линий", 1, 4, E.SnapThickness, 0.5, " px", function(v) E.SnapThickness = v end) -- CHAMS Section(ChamsPage, "Chams") Toggle(ChamsPage, "Chams включены", E.Chams, function(v) E.Chams = v end) ColorPicker(ChamsPage, "Заливка", E, "ChamsFill", "ChamsRainbow") ColorPicker(ChamsPage, "Обводка", E, "ChamsOutline") Slider(ChamsPage, "Прозрачность заливки", 0, 1, E.ChamsFillTrans, 0.05, "", function(v) E.ChamsFillTrans = v end) Slider(ChamsPage, "Прозрачность обводки", 0, 1, E.ChamsOutlineTrans, 0.05, "", function(v) E.ChamsOutlineTrans = v end) Section(ChamsPage, "Поведение") Toggle(ChamsPage, "Видно сквозь стены", E.ChamsThroughWalls, function(v) E.ChamsThroughWalls = v end) Toggle(ChamsPage, "Другой цвет за стеной", E.ChamsVisCheck, function(v) E.ChamsVisCheck = v end) ColorPicker(ChamsPage, "Цвет за стеной", E, "ChamsHidden") Toggle(ChamsPage, "Пульсация", E.ChamsPulse, function(v) E.ChamsPulse = v end) -- EXTRAS local T = Settings.Tracer Section(ExtrasPage, "Трейсеры пуль") Toggle(ExtrasPage, "Трейсеры включены", T.Enabled, function(v) T.Enabled = v end) ColorPicker(ExtrasPage, "Цвет начала", T, "Color1", "Rainbow") ColorPicker(ExtrasPage, "Цвет конца", T, "Color2") Slider(ExtrasPage, "Толщина", 0.05, 0.6, T.Thickness, 0.05, "", function(v) T.Thickness = v end) Slider(ExtrasPage, "Свечение (ореол)", 1, 8, T.Glow, 0.5, "x", function(v) T.Glow = v end) Toggle(ExtrasPage, "Белое ядро", T.Core, function(v) T.Core = v end) Slider(ExtrasPage, "Время жизни", 0.2, 3, T.Lifetime, 0.1, " с", function(v) T.Lifetime = v end) Slider(ExtrasPage, "Интервал между трейсерами", 0.05, 0.5, T.Interval, 0.05, " с", function(v) T.Interval = v end) Selector(ExtrasPage, "Откуда вылетает", { { Label = "Оружие", Value = "Tool" }, { Label = "Голова", Value = "Head" }, { Label = "Камера", Value = "Camera" }, }, 1, function(v) T.Origin = v end, T.Origin) Toggle(ExtrasPage, "Эффект попадания", T.Impact, function(v) T.Impact = v end) Toggle(ExtrasPage, "Свет от попадания", T.ImpactLight, function(v) T.ImpactLight = v end) Toggle(ExtrasPage, "Только с оружием в руках", T.OnlyTool, function(v) T.OnlyTool = v end) local C = Settings.Crosshair Section(ExtrasPage, "Свой прицел") Toggle(ExtrasPage, "Прицел включён", C.Enabled, function(v) C.Enabled = v end) ColorPicker(ExtrasPage, "Цвет прицела", C, "Color", "Rainbow") Slider(ExtrasPage, "Длина линий", 3, 30, C.Size, 1, " px", function(v) C.Size = v end) Slider(ExtrasPage, "Зазор в центре", 0, 20, C.Gap, 1, " px", function(v) C.Gap = v end) Slider(ExtrasPage, "Толщина", 1, 5, C.Thickness, 1, " px", function(v) C.Thickness = v end) Toggle(ExtrasPage, "Точка в центре", C.Dot, function(v) C.Dot = v end) Toggle(ExtrasPage, "Чёрная обводка", C.Outline, function(v) C.Outline = v end) Toggle(ExtrasPage, "Вращение", C.Spin, function(v) C.Spin = v end) Slider(ExtrasPage, "Скорость вращения", 30, 360, C.SpinSpeed, 10, "°/с", function(v) C.SpinSpeed = v end) Toggle(ExtrasPage, "Следует за курсором", C.FollowMouse, function(v) C.FollowMouse = v end) local F = Settings.FOVStyle Section(ExtrasPage, "Стиль кругов FOV и точки цели") Toggle(ExtrasPage, "Цвета из темы меню", F.UseTheme, function(v) F.UseTheme = v end) ColorPicker(ExtrasPage, "Aim: цвет круга", F, "AimColor") ColorPicker(ExtrasPage, "Aim: цвет при наведении", F, "AimHold") ColorPicker(ExtrasPage, "Silent: цвет круга", F, "SilentColor") Slider(ExtrasPage, "Толщина круга", 1, 5, F.Thickness, 0.5, " px", function(v) F.Thickness = v end) Toggle(ExtrasPage, "Заливка круга", F.Fill, function(v) F.Fill = v end) Slider(ExtrasPage, "Прозрачность заливки", 0.7, 0.99, F.FillTrans, 0.01, "", function(v) F.FillTrans = v end) Toggle(ExtrasPage, "Точка на цели Aim", Settings.Aimbot.TargetDot, function(v) Settings.Aimbot.TargetDot = v end) Slider(ExtrasPage, "Размер точки", 4, 24, Settings.Aimbot.DotSize, 1, " px", function(v) Settings.Aimbot.DotSize = v end) local R = Settings.Radar Section(ExtrasPage, "Радар") Toggle(ExtrasPage, "Мини-радар", R.Enabled, function(v) R.Enabled = v end) Slider(ExtrasPage, "Дальность", 50, 500, R.Range, 10, " st", function(v) R.Range = v end) Slider(ExtrasPage, "Размер", 100, 260, R.Size, 10, " px", function(v) R.Size = v end) Slider(ExtrasPage, "Размер точек", 3, 10, R.DotSize, 1, " px", function(v) R.DotSize = v end) ColorPicker(ExtrasPage, "Цвет врагов", R, "EnemyColor") ColorPicker(ExtrasPage, "Цвет команды", R, "TeamColor") -- SILENT AIM Section(SilentPage, "Silent Aim") Toggle(SilentPage, "Silent Aim включён", Settings.Silent.Enabled, function(v) Settings.Silent.Enabled = v end) HookStatusLabel = New("TextLabel", { Size = UDim2.new(1, 0, 0, 30), BackgroundColor3 = Theme.Element, Font = Enum.Font.GothamMedium, LocKey = " Хуки: проверка…", TextColor3 = Theme.SubText, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, SilentPage) Corner(HookStatusLabel, 8) Section(SilentPage, "Куда стрелять") Selector(SilentPage, "Часть тела", { { Label = "Голова", Value = "Head" }, { Label = "Торс", Value = "UpperTorso" }, { Label = "Корпус", Value = "HumanoidRootPart" }, { Label = "Random", Value = "Random" }, }, 1, function(v) Settings.Silent.Part = v end, Settings.Silent.Part) Slider(SilentPage, "Шанс попадания", 1, 100, Settings.Silent.HitChance, 1, " %", function(v) Settings.Silent.HitChance = v end) Section(SilentPage, "FOV и визуалы") Slider(SilentPage, "Радиус FOV", 20, 800, Settings.Silent.FOV, 5, " px", function(v) Settings.Silent.FOV = v end) Toggle(SilentPage, "Показывать круг FOV", Settings.Silent.ShowFOV, function(v) Settings.Silent.ShowFOV = v end) Toggle(SilentPage, "Точка и имя цели", Settings.Silent.ShowDot, function(v) Settings.Silent.ShowDot = v end) Section(SilentPage, "Проверки") Toggle(SilentPage, "Не целиться в команду", Settings.Silent.TeamCheck, function(v) Settings.Silent.TeamCheck = v end) Toggle(SilentPage, "Не стрелять через стены", Settings.Silent.WallCheck, function(v) Settings.Silent.WallCheck = v end) Section(SilentPage, "Методы перехвата (зависит от игры)") Toggle(SilentPage, "Workspace:Raycast", Settings.Silent.MRaycast, function(v) Settings.Silent.MRaycast = v end) Toggle(SilentPage, "Workspace:FindPartOnRay*", Settings.Silent.MFindPart, function(v) Settings.Silent.MFindPart = v end) Toggle(SilentPage, "Camera:Screen/ViewportPointToRay", Settings.Silent.MScreenRay, function(v) Settings.Silent.MScreenRay = v end) Toggle(SilentPage, "Mouse.Hit / Mouse.Target", Settings.Silent.MMouse, function(v) Settings.Silent.MMouse = v end) -- PLAYER (универсальные функции) local PL = Settings.Player local TP3 = Settings.Third Section(PlayerPage, "Бхоп (Bhop)") Handles.Bhop = Toggle(PlayerPage, "Bhop включён", PL.Bhop, function(v) PL.Bhop = v end) Keybind(PlayerPage, "Клавиша бхопа (удержание)", PL, "BhopKey") Keybind(PlayerPage, "Бинд вкл/выкл бхопа", PL, "BhopToggleKey") Selector(PlayerPage, "Режим бхопа", { { Label = "Удержание", Value = "Hold" }, { Label = "Всегда", Value = "Always" }, }, 1, function(v) PL.BhopMode = v end, PL.BhopMode) Slider(PlayerPage, "Ускорение в воздухе", 0, 60, PL.BhopBoost, 5, " %", function(v) PL.BhopBoost = v end) Section(PlayerPage, "Вид от 3-го лица") Handles.Third = Toggle(PlayerPage, "3-е лицо включено", TP3.Enabled, function(v) TP3.Enabled = v end) Keybind(PlayerPage, "Бинд переключения", TP3, "Key") Slider(PlayerPage, "Дистанция камеры", 3, 40, TP3.Distance, 1, " st", function(v) TP3.Distance = v end) Slider(PlayerPage, "Смещение вбок", -6, 6, TP3.ShoulderX, 0.5, "", function(v) TP3.ShoulderX = v end) Slider(PlayerPage, "Высота камеры", -3, 6, TP3.Height, 0.5, "", function(v) TP3.Height = v end) Toggle(PlayerPage, "Не проходить сквозь стены", TP3.Collision, function(v) TP3.Collision = v end) Toggle(PlayerPage, "Показывать своё тело", TP3.ShowBody, function(v) TP3.ShowBody = v end) Toggle(PlayerPage, "Плавное движение", TP3.Smooth, function(v) TP3.Smooth = v end) Toggle(PlayerPage, "Форсировать (игры с 1-м лицом)", TP3.ForceMode, function(v) TP3.ForceMode = v end) Section(PlayerPage, "Движение") Toggle(PlayerPage, "Изменить скорость", PL.Speed, function(v) PL.Speed = v end) Slider(PlayerPage, "Скорость ходьбы", 16, 200, PL.SpeedValue, 2, "", function(v) PL.SpeedValue = v end) Toggle(PlayerPage, "Изменить прыжок", PL.Jump, function(v) PL.Jump = v end) Slider(PlayerPage, "Сила прыжка", 50, 250, PL.JumpValue, 5, "", function(v) PL.JumpValue = v end) Toggle(PlayerPage, "Бесконечный прыжок", PL.InfJump, function(v) PL.InfJump = v end) Handles.Noclip = Toggle(PlayerPage, "Noclip (сквозь стены)", PL.Noclip, function(v) PL.Noclip = v end) Keybind(PlayerPage, "Бинд Noclip", PL, "NoclipKey") Handles.Fly = Toggle(PlayerPage, "Полёт (Fly)", PL.Fly, function(v) PL.Fly = v end) Keybind(PlayerPage, "Бинд полёта", PL, "FlyKey") Slider(PlayerPage, "Скорость полёта", 10, 250, PL.FlySpeed, 5, "", function(v) PL.FlySpeed = v end) Section(PlayerPage, "Мир и камера") Toggle(PlayerPage, "Fullbright (без темноты)", PL.Fullbright, function(v) PL.Fullbright = v end) Toggle(PlayerPage, "Убрать туман", PL.NoFog, function(v) PL.NoFog = v end) Toggle(PlayerPage, "Свой FOV камеры", PL.FOVEnabled, function(v) PL.FOVEnabled = v end) Slider(PlayerPage, "FOV камеры", 40, 120, PL.FOVValue, 1, "", function(v) PL.FOVValue = v end) Toggle(PlayerPage, "Анти-АФК", PL.AntiAFK, function(v) PL.AntiAFK = v end) Button(PlayerPage, "Перезайти на сервер", Theme.Accent2, function() pcall(function() game:GetService("TeleportService"):Teleport(game.PlaceId, LocalPlayer) end) end) -- MISC Section(MiscPage, "Язык меню") Selector(MiscPage, "Язык", { { Label = "Русский", Value = "RU" }, { Label = "English", Value = "EN" }, }, 1, function(v) SetLanguage(v) end, Settings.UI.Language) Toggle(MiscPage, "Водяной знак (FPS / пинг)", Settings.UI.Watermark, function(v) Settings.UI.Watermark = v end) Section(MiscPage, "Стиль меню") do local grid = New("Frame", { Size = UDim2.new(1, 0, 0, 136), BackgroundTransparency = 1, }, MiscPage) New("UIGridLayout", { CellSize = UDim2.new(0.5, -4, 0, 40), CellPadding = UDim2.fromOffset(8, 8), SortOrder = Enum.SortOrder.LayoutOrder, }, grid) local cards = {} for i, name in ipairs(ThemeOrder) do local t = Themes[name] local btn = New("TextButton", { BackgroundColor3 = Theme.Element, AutoButtonColor = false, Font = Enum.Font.GothamMedium, Text = "", LayoutOrder = i, }, grid) Corner(btn, 8) local st = Stroke(btn, Theme.Stroke, 1) New("TextLabel", { BackgroundTransparency = 1, Position = UDim2.fromOffset(12, 0), Size = UDim2.new(1, -60, 1, 0), Font = Enum.Font.GothamMedium, Text = t.Display, TextColor3 = Theme.Text, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, btn) for k, col in ipairs({ t.Accent, t.Accent2 }) do local sw = New("Frame", { AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -10 - (2 - k) * 18, 0.5, 0), Size = UDim2.fromOffset(14, 14), BackgroundColor3 = col, }, btn) Corner(sw, 7) sw:SetAttribute("NoTheme", true) end cards[name] = { Button = btn, Stroke = st } Connect(btn.MouseButton1Click, function() ApplyTheme(name) end) end RefreshThemeCards = function() for name, c in pairs(cards) do local sel = (Settings.UI.Style == name) c.Stroke.Color = sel and Theme.Accent or Theme.Stroke c.Stroke.Thickness = sel and 2 or 1 c.Button.BackgroundColor3 = sel and Theme.ElementHi or Theme.Element end end end Section(MiscPage, "Меню") local infoLabel = New("TextLabel", { Size = UDim2.new(1, 0, 0, 50), BackgroundColor3 = Theme.Element, Font = Enum.Font.Gotham, LocKey = " Right Shift — открыть / закрыть меню\n Заголовок можно перетаскивать мышью", TextColor3 = Theme.SubText, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, MiscPage) Corner(infoLabel, 8) Section(MiscPage, "Конфиг") local cfgBtn = New("TextButton", { Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = Theme.Accent, Font = Enum.Font.GothamBold, LocKey = CanFS and "Сохранить конфиг" or "Конфиг недоступен (нет writefile)", TextColor3 = Color3.new(1, 1, 1), TextSize = 13, }, MiscPage) Corner(cfgBtn, 8) Connect(cfgBtn.MouseButton1Click, function() local ok = SaveConfigNow() Reg(cfgBtn, "Text", ok and "✔ Сохранено" or "✖ Не удалось сохранить") task.delay(1.5, function() if cfgBtn.Parent then Reg(cfgBtn, "Text", CanFS and "Сохранить конфиг" or "Конфиг недоступен (нет writefile)") end end) end) local unloadBtn = New("TextButton", { Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = Color3.fromRGB(190, 55, 75), AutoButtonColor = true, Font = Enum.Font.GothamBold, LocKey = "Выгрузить скрипт", TextColor3 = Color3.new(1, 1, 1), TextSize = 13, }, MiscPage) Corner(unloadBtn, 8) SelectTab("Aim") local function ClassifyFont(f) if f == Enum.Font.GothamBold then return "Bold" end if f == Enum.Font.GothamMedium then return "Medium" end return "Regular" end ApplyTheme = function(name) local new = Themes[name] if not new then return end -- карта «старый цвет роли → новый цвет роли» local map = {} for _, role in ipairs(THEME_ROLES) do local hex = Theme[role]:ToHex() if map[hex] == nil then map[hex] = new[role] end end local function mc(c) return map[c:ToHex()] or c end for _, d in ipairs(ScreenGui:GetDescendants()) do if not d:GetAttribute("NoTheme") and not d:IsDescendantOf(ESPLayer) then if d:IsA("GuiObject") then d.BackgroundColor3 = mc(d.BackgroundColor3) end if d:IsA("TextLabel") or d:IsA("TextButton") then d.TextColor3 = mc(d.TextColor3) local w = d:GetAttribute("FW") if not w then w = ClassifyFont(d.Font) d:SetAttribute("FW", w) end d.Font = new.Fonts[w] end if d:IsA("ScrollingFrame") then d.ScrollBarImageColor3 = mc(d.ScrollBarImageColor3) elseif d:IsA("UIStroke") then d.Color = mc(d.Color) elseif d:IsA("UIGradient") then local keys = {} for _, k in ipairs(d.Color.Keypoints) do table.insert(keys, ColorSequenceKeypoint.new(k.Time, mc(k.Value))) end d.Color = ColorSequence.new(keys) elseif d:IsA("UICorner") then local base = d:GetAttribute("R0") if not base then base = d.CornerRadius.Offset d:SetAttribute("R0", base) end if base > 0 and base < 100 then d.CornerRadius = UDim.new(0, math.max(2, math.floor(base * new.Radius + 0.5))) end end end end for _, role in ipairs(THEME_ROLES) do Theme[role] = new[role] end Settings.UI.Style = name TitleLabel.Text = new.Title Reg(HintLabel, "Text", new.Hint) for tabName, t in pairs(Tabs) do t.Button.Text = (new.Icons[tabName] or "•") .. " " .. TabName(tabName) end RefreshThemeCards() RequestSave() end ApplyTheme(Settings.UI.Style) if not Themes[Settings.UI.Style] then Settings.UI.Style = "Default" ApplyTheme("Default") end ConfigLoaded = true RequestSave() -- ==================== ОТКРЫТИЕ / ЗАКРЫТИЕ (RIGHT SHIFT) ==================== local menuOpen = true local function SetMenu(open) menuOpen = open if open then Main.Visible = true MainScale.Scale = 0.9 Tween(MainScale, 0.25, { Scale = 1 }, Enum.EasingStyle.Back) else Tween(MainScale, 0.18, { Scale = 0.9 }) task.delay(0.18, function() if not menuOpen then Main.Visible = false end end) end end SetMenu(true) Connect(UserInputService.InputBegan, function(input) if input.KeyCode == Enum.KeyCode.RightShift and not BindListening and not UserInputService:GetFocusedTextBox() then SetMenu(not menuOpen) end end) -- ==================== РАДАР ==================== local RADAR_SIZE = 160 local Radar = New("Frame", { Name = "Radar", AnchorPoint = Vector2.new(0, 1), Position = UDim2.new(0, 20, 1, -20), Size = UDim2.fromOffset(RADAR_SIZE, RADAR_SIZE), BackgroundColor3 = Theme.Background, BackgroundTransparency = 0.25, Visible = false, }, ScreenGui) Corner(Radar, 1000) Stroke(Radar, Theme.Accent, 1.5, 0.2) New("Frame", { -- перекрестие AnchorPoint = Vector2.new(0.5, 0.5), Position = UDim2.fromScale(0.5, 0.5), Size = UDim2.new(1, 0, 0, 1), BackgroundColor3 = Theme.Stroke, BorderSizePixel = 0, }, Radar) New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), Position = UDim2.fromScale(0.5, 0.5), Size = UDim2.new(0, 1, 1, 0), BackgroundColor3 = Theme.Stroke, BorderSizePixel = 0, }, Radar) local selfDot = New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), Position = UDim2.fromScale(0.5, 0.5), Size = UDim2.fromOffset(7, 7), BackgroundColor3 = Color3.new(1, 1, 1), ZIndex = 3, }, Radar) Corner(selfDot, 4) local radarDots = {} -- ==================== ОБЩИЕ ХЕЛПЕРЫ ВИЗУАЛОВ ==================== local IsVisible -- определяется в секции AIM local function Rainbow(offset) return Color3.fromHSV(((os.clock() * 0.25) + (offset or 0)) % 1, 0.85, 1) end local function ColorOf(tbl, key, rkey, offset) if rkey and tbl[rkey] then return Rainbow(offset) end return tbl[key] end local function IsTeammate(player) return LocalPlayer.Team ~= nil and player.Team == LocalPlayer.Team end -- ==================== 2D ESP ==================== local ESPData = {} local BLACK = Color3.new(0, 0, 0) local WHITE = Color3.new(1, 1, 1) local function MakeText(parent) return New("TextLabel", { BackgroundTransparency = 1, Size = UDim2.fromOffset(220, 14), Font = Enum.Font.GothamBold, Text = "", TextSize = 13, TextColor3 = WHITE, TextStrokeTransparency = 0, TextStrokeColor3 = BLACK, Visible = false, ZIndex = 6, }, parent) end local function MakeESP() local o = {} o.Root = New("Frame", { BackgroundTransparency = 1, BorderSizePixel = 0, Visible = false }, ESPLayer) o.Fill = New("Frame", { Size = UDim2.fromScale(1, 1), BackgroundColor3 = WHITE, BorderSizePixel = 0, Visible = false }, o.Root) o.Outline = New("Frame", { Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, BorderSizePixel = 0, Visible = false, ZIndex = 1 }, o.Root) o.OutlineStroke = Stroke(o.Outline, BLACK, 3, 0) o.Box = New("Frame", { Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, BorderSizePixel = 0, Visible = false, ZIndex = 2 }, o.Root) o.BoxStroke = Stroke(o.Box, WHITE, 1.5, 0) o.Corners = {} for i = 1, 8 do o.Corners[i] = New("Frame", { BorderSizePixel = 0, BackgroundColor3 = WHITE, Visible = false, ZIndex = 3 }, o.Root) end o.HPBack = New("Frame", { BackgroundColor3 = Color3.fromRGB(12, 12, 12), BorderSizePixel = 0, Visible = false, ZIndex = 2 }, o.Root) Stroke(o.HPBack, BLACK, 1, 0) o.HPFill = New("Frame", { AnchorPoint = Vector2.new(0, 1), BorderSizePixel = 0, BackgroundColor3 = WHITE, ZIndex = 3 }, o.HPBack) o.HPGrad = New("UIGradient", { Rotation = 90 }, o.HPFill) o.HPText = MakeText(o.Root) o.HPText.Size = UDim2.fromOffset(30, 12) o.Name = MakeText(o.Root) o.Dist = MakeText(o.Root) o.Weapon = MakeText(o.Root) o.Snap = New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), BorderSizePixel = 0, BackgroundColor3 = WHITE, Visible = false }, ESPLayer) return o end local function HideESP(o) o.Root.Visible = false o.Snap.Visible = false if o.Highlight then o.Highlight:Destroy() o.Highlight = nil end end local function RemoveESP(player) local o = ESPData[player] if o then if o.Highlight then o.Highlight:Destroy() end o.Root:Destroy() o.Snap:Destroy() ESPData[player] = nil end if radarDots[player] then radarDots[player]:Destroy() radarDots[player] = nil end end local function DrawPlayer(player, o, char, hum, root, head, dist, now, viewport, mouse) local E = Settings.ESP local topP = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, head.Size.Y / 2 + 0.2, 0)) local botP = Camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3, 0)) if topP.Z <= 0 or botP.Z <= 0 then o.Root.Visible = false o.Snap.Visible = false return end local hF = math.abs(botP.Y - topP.Y) if hF < 4 then o.Root.Visible = false o.Snap.Visible = false return end local h = math.floor(hF) local w = math.floor(hF * 0.55) local cx = (topP.X + botP.X) / 2 o.Root.Position = UDim2.fromOffset(math.floor(cx - w / 2), math.floor(math.min(topP.Y, botP.Y))) o.Root.Size = UDim2.fromOffset(w, h) o.Root.Visible = true local tc = (E.TeamColors and player.Team) and player.TeamColor.Color or nil -- Бокс local boxCol = tc or ColorOf(E, "BoxColor", "BoxRainbow", 0) local bt = E.BoxThickness local full = E.Box and E.BoxStyle == "Full" local corner = E.Box and E.BoxStyle == "Corner" o.Fill.Visible = E.Box and E.BoxFill if o.Fill.Visible then o.Fill.BackgroundColor3 = E.BoxFillColor o.Fill.BackgroundTransparency = E.BoxFillAlpha end o.Box.Visible = full o.Outline.Visible = full and E.BoxOutline if full then o.BoxStroke.Color = boxCol o.BoxStroke.Thickness = bt o.OutlineStroke.Thickness = bt + 2 end for i = 1, 8 do o.Corners[i].Visible = corner end if corner then local L = math.max(4, math.floor(math.min(w, h) * 0.28)) local t = math.max(1, math.floor(bt + 0.5)) local specs = { { 0, 0, L, t }, { 0, 0, t, L }, { w - L, 0, L, t }, { w - t, 0, t, L }, { 0, h - t, L, t }, { 0, h - L, t, L }, { w - L, h - t, L, t }, { w - t, h - L, t, L }, } for i, sp in ipairs(specs) do local f = o.Corners[i] f.Position = UDim2.fromOffset(sp[1], sp[2]) f.Size = UDim2.fromOffset(sp[3], sp[4]) f.BackgroundColor3 = boxCol end end local pad = ((full and bt or 1) + 3) -- Полоса здоровья (вертикальная) if E.HealthBar then local pct = math.clamp(hum.Health / math.max(hum.MaxHealth, 1), 0, 1) local bw = E.HealthWidth o.HPBack.Visible = true o.HPBack.Size = UDim2.new(0, bw, 1, 0) if E.HealthSide == "Left" then o.HPBack.Position = UDim2.new(0, -(bw + pad), 0, 0) else o.HPBack.Position = UDim2.new(1, pad, 0, 0) end o.HPFill.Position = UDim2.new(0, 0, 1, 0) o.HPFill.Size = UDim2.new(1, 0, pct, 0) local hi, lo = E.HealthHigh, E.HealthLow if E.HealthStyle == "Gradient" then o.HPFill.BackgroundColor3 = WHITE o.HPGrad.Enabled = true o.HPGrad.Color = ColorSequence.new(lo:Lerp(hi, pct), lo) elseif E.HealthStyle == "Health" then o.HPGrad.Enabled = false o.HPFill.BackgroundColor3 = lo:Lerp(hi, pct) else o.HPGrad.Enabled = false o.HPFill.BackgroundColor3 = hi end if E.HealthText then o.HPText.Visible = true o.HPText.TextSize = 10 o.HPText.Text = tostring(math.floor(hum.Health)) if E.HealthSide == "Left" then o.HPText.AnchorPoint = Vector2.new(1, 0.5) o.HPText.Position = UDim2.new(0, -(bw + pad + 3), 1 - pct, 0) o.HPText.TextXAlignment = Enum.TextXAlignment.Right else o.HPText.AnchorPoint = Vector2.new(0, 0.5) o.HPText.Position = UDim2.new(1, bw + pad + 3, 1 - pct, 0) o.HPText.TextXAlignment = Enum.TextXAlignment.Left end else o.HPText.Visible = false end else o.HPBack.Visible = false o.HPText.Visible = false end -- Текст local ts = E.TextSize if E.Names then o.Name.Visible = true o.Name.TextSize = ts o.Name.Size = UDim2.fromOffset(220, ts + 2) o.Name.AnchorPoint = Vector2.new(0.5, 1) o.Name.Position = UDim2.new(0.5, 0, 0, -pad) o.Name.Text = player.DisplayName o.Name.TextColor3 = E.NameColor else o.Name.Visible = false end local belowY = pad if E.Distance then o.Dist.Visible = true o.Dist.TextSize = ts o.Dist.Size = UDim2.fromOffset(220, ts + 2) o.Dist.AnchorPoint = Vector2.new(0.5, 0) o.Dist.Position = UDim2.new(0.5, 0, 1, belowY) o.Dist.Text = string.format("%d st", dist) o.Dist.TextColor3 = E.DistanceColor belowY = belowY + ts + 1 else o.Dist.Visible = false end if E.Weapon then local tool = char:FindFirstChildOfClass("Tool") o.Weapon.Visible = true o.Weapon.TextSize = ts o.Weapon.Size = UDim2.fromOffset(220, ts + 2) o.Weapon.AnchorPoint = Vector2.new(0.5, 0) o.Weapon.Position = UDim2.new(0.5, 0, 1, belowY) o.Weapon.Text = tool and tool.Name or "Hands" o.Weapon.TextColor3 = E.WeaponColor else o.Weapon.Visible = false end -- Линия к игроку if E.Snaplines then local origin if E.SnapOrigin == "Bottom" then origin = Vector2.new(viewport.X / 2, viewport.Y) elseif E.SnapOrigin == "Center" then origin = viewport / 2 else origin = mouse end local target = Vector2.new(cx, math.max(topP.Y, botP.Y)) local delta = target - origin local mid = (origin + target) / 2 o.Snap.Visible = true o.Snap.Position = UDim2.fromOffset(mid.X, mid.Y) o.Snap.Size = UDim2.fromOffset(delta.Magnitude, E.SnapThickness) o.Snap.Rotation = math.deg(math.atan2(delta.Y, delta.X)) o.Snap.BackgroundColor3 = tc or E.SnapColor else o.Snap.Visible = false end -- Chams if E.Chams then if not o.Highlight or o.Highlight.Parent ~= char then if o.Highlight then o.Highlight:Destroy() end o.Highlight = New("Highlight", { Adornee = char }, char) end local hl = o.Highlight local fillCol = E.ChamsFill if E.ChamsVisCheck then if now - (o.VisAt or 0) > 0.1 then o.VisAt = now o.Visible = IsVisible(head, char) end fillCol = o.Visible and E.ChamsFill or E.ChamsHidden end local outCol = E.ChamsOutline if E.ChamsRainbow then fillCol = Rainbow(0) outCol = Rainbow(0.5) end if tc then fillCol = tc end local pulse = E.ChamsPulse and (0.5 + 0.5 * math.sin(now * 3)) * 0.3 or 0 hl.FillColor = fillCol hl.OutlineColor = outCol hl.FillTransparency = math.clamp(E.ChamsFillTrans + pulse, 0, 1) hl.OutlineTransparency = E.ChamsOutlineTrans hl.DepthMode = E.ChamsThroughWalls and Enum.HighlightDepthMode.AlwaysOnTop or Enum.HighlightDepthMode.Occluded hl.Enabled = true elseif o.Highlight then o.Highlight:Destroy() o.Highlight = nil end end local function UpdateESP() local E = Settings.ESP local now = os.clock() local myChar = LocalPlayer.Character local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart") local viewport = Camera.ViewportSize local mouse = UserInputService:GetMouseLocation() local camPos = Camera.CFrame.Position for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then local char = player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") local head = char and char:FindFirstChild("Head") local valid = false local dist = 0 if E.Enabled and hum and root and head and hum.Health > 0 and not (E.TeamCheck and IsTeammate(player)) then dist = ((myRoot and myRoot.Position or camPos) - root.Position).Magnitude valid = dist <= E.MaxDistance end if valid then local o = ESPData[player] if not o then o = MakeESP() ESPData[player] = o end DrawPlayer(player, o, char, hum, root, head, dist, now, viewport, mouse) elseif ESPData[player] then HideESP(ESPData[player]) end end end end -- ==================== РАДАР ==================== local function UpdateRadar() local R = Settings.Radar Radar.Visible = R.Enabled if not R.Enabled then return end Radar.Size = UDim2.fromOffset(R.Size, R.Size) local half = R.Size / 2 for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then local char = player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") if hum and root and hum.Health > 0 then local dot = radarDots[player] if not dot then dot = New("Frame", { AnchorPoint = Vector2.new(0.5, 0.5), BackgroundColor3 = R.EnemyColor, ZIndex = 2, }, Radar) Corner(dot, 100) dot:SetAttribute("NoTheme", true) radarDots[player] = dot end dot.Size = UDim2.fromOffset(R.DotSize, R.DotSize) local rel = Camera.CFrame:PointToObjectSpace(root.Position) local v = Vector2.new(rel.X, rel.Z) / R.Range * (half - 6) if v.Magnitude > half - 6 then v = v.Unit * (half - 6) end dot.Position = UDim2.new(0.5, v.X, 0.5, v.Y) dot.BackgroundColor3 = IsTeammate(player) and R.TeamColor or R.EnemyColor elseif radarDots[player] then radarDots[player]:Destroy() radarDots[player] = nil end end end end -- ==================== AIM ==================== local rayParams = RaycastParams.new() rayParams.FilterType = Enum.RaycastFilterType.Exclude IsVisible = function(part, char) local ignore = { LocalPlayer.Character, Camera } local origin = Camera.CFrame.Position local dir = part.Position - origin for _ = 1, 8 do rayParams.FilterDescendantsInstances = ignore local result = Workspace:Raycast(origin, dir, rayParams) if not result then return true end local hit = result.Instance if hit:IsDescendantOf(char) then return true end -- прозрачные и непроходимые для коллизий детали не считаем стеной if hit.Transparency >= 0.9 or not hit.CanCollide then table.insert(ignore, hit) else return false end end return false end local function ResolvePart(char, name) local part = char:FindFirstChild(name) if not part and name == "UpperTorso" then part = char:FindFirstChild("Torso") end return part or char:FindFirstChild("HumanoidRootPart") end -- Ищет ближайшего к курсору игрока в радиусе fov (пиксели). Возвращает part, player local function FindTarget(fov, partName, teamCheck, wallCheck) local mousePos = UserInputService:GetMouseLocation() local best, bestPlayer, bestDist = nil, nil, fov for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character and not (teamCheck and IsTeammate(player)) then local char = player.Character local hum = char:FindFirstChildOfClass("Humanoid") local part = ResolvePart(char, partName) if hum and hum.Health > 0 and part then local sp, onScreen = Camera:WorldToViewportPoint(part.Position) if onScreen then local dist = (Vector2.new(sp.X, sp.Y) - mousePos).Magnitude if dist < bestDist and (not wallCheck or IsVisible(part, char)) then bestDist = dist best = part bestPlayer = player end end end end end return best, bestPlayer end local function GetTarget() local part = FindTarget(Settings.Aimbot.FOV, Settings.Aimbot.TargetPart, Settings.Aimbot.TeamCheck, Settings.Aimbot.WallCheck) return part end local function UpdateAim() local holding = Settings.Aimbot.Enabled and UserInputService:IsMouseButtonPressed(Settings.Aimbot.Key) -- Круг FOV local showCircle = Settings.Aimbot.Enabled and Settings.Aimbot.ShowFOV FOVCircle.Visible = showCircle if showCircle then local m = UserInputService:GetMouseLocation() FOVCircle.Position = UDim2.fromOffset(m.X, m.Y) FOVCircle.Size = UDim2.fromOffset(Settings.Aimbot.FOV * 2, Settings.Aimbot.FOV * 2) local FS = Settings.FOVStyle local base = FS.UseTheme and Theme.Accent or FS.AimColor local hold = FS.UseTheme and Theme.Accent2 or FS.AimHold FOVStroke.Color = holding and hold or base FOVStroke.Thickness = FS.Thickness FOVCircle.BackgroundColor3 = FOVStroke.Color FOVCircle.BackgroundTransparency = FS.Fill and FS.FillTrans or 1 end -- Цель (учитывает FOV, команду и стены) local target = Settings.Aimbot.Enabled and GetTarget() or nil -- Точка на цели if target and Settings.Aimbot.TargetDot then local sp, onScreen = Camera:WorldToViewportPoint(target.Position) if onScreen then local s = Settings.Aimbot.DotSize TargetDot.Size = UDim2.fromOffset(s, s) TargetDot.Position = UDim2.fromOffset(sp.X, sp.Y) TargetDot.BackgroundColor3 = holding and Theme.Accent2 or Color3.new(1, 1, 1) TargetDotStroke.Color = Theme.Accent TargetDot.Visible = true else TargetDot.Visible = false end else TargetDot.Visible = false end -- Наведение if holding and target then local alpha = math.clamp(1 / Settings.Aimbot.Smoothness, 0, 1) Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, target.Position), alpha) end end -- ==================== SILENT AIM ==================== local PART_LABELS = { Head = "Head", UpperTorso = "Torso", HumanoidRootPart = "Root", Random = "Random" } local function UpdateSilent() local S = Settings.Silent if not S.Enabled then SilentCache = nil SilentFOV.Visible = false SilentDot.Visible = false SilentLabel.Visible = false return end local m = UserInputService:GetMouseLocation() SilentFOV.Visible = S.ShowFOV if S.ShowFOV then SilentFOV.Position = UDim2.fromOffset(m.X, m.Y) SilentFOV.Size = UDim2.fromOffset(S.FOV * 2, S.FOV * 2) local FS = Settings.FOVStyle SilentFOVStroke.Color = FS.UseTheme and Theme.Accent2 or FS.SilentColor SilentFOVStroke.Thickness = FS.Thickness SilentFOV.BackgroundColor3 = SilentFOVStroke.Color SilentFOV.BackgroundTransparency = FS.Fill and FS.FillTrans or 1 end local lookup = (S.Part == "Random") and "HumanoidRootPart" or S.Part local part, player = FindTarget(S.FOV, lookup, S.TeamCheck, S.WallCheck) if part and player and player.Character then local char = player.Character local root = char:FindFirstChild("HumanoidRootPart") or part local cache = { Positions = {}, Parts = {} } for _, key in ipairs(RANDOM_KEYS) do local p = ResolvePart(char, key) or root cache.Positions[key] = p.Position cache.Parts[key] = p end SilentCache = cache local sp, onScreen = Camera:WorldToViewportPoint(part.Position) if S.ShowDot and onScreen then local flash = (os.clock() - LastShot) < 0.2 local size = flash and 18 or 10 SilentDot.Size = UDim2.fromOffset(size, size) SilentDot.Position = UDim2.fromOffset(sp.X, sp.Y) SilentDot.BackgroundColor3 = flash and Color3.new(1, 1, 1) or Theme.Accent2 SilentDot.Visible = true SilentLabel.Position = UDim2.fromOffset(sp.X, sp.Y + 14) SilentLabel.Text = string.format("%s · %s · %d%%", player.DisplayName, PART_LABELS[S.Part] or S.Part, S.HitChance) SilentLabel.Visible = true else SilentDot.Visible = false SilentLabel.Visible = false end else SilentCache = nil SilentDot.Visible = false SilentLabel.Visible = false end end -- Возвращает позицию и часть, куда перенаправить выстрел (или nil) local function SilentRoll() local c = SilentCache local S = Settings.Silent if not Alive or not c or not S.Enabled then return nil end if math.random(1, 100) > S.HitChance then return nil end local key = S.Part if key == "Random" then key = RANDOM_KEYS[math.random(1, #RANDOM_KEYS)] end LastShot = os.clock() LastShotPos = c.Positions[key] LastShotId = LastShotId + 1 return c.Positions[key], c.Parts[key] end -- Хуки (внутри хуков не обращаемся к свойствам Instance — иначе рекурсия) local MouseRef = LocalPlayer:GetMouse() if HooksSupported then local installed, err = pcall(function() local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", newcclosure(function(self, ...) local method = getnamecallmethod() if Alive and SilentCache and not checkcaller() then local S = Settings.Silent if self == Workspace then if method == "Raycast" and S.MRaycast then local pos = SilentRoll() if pos then local args = table.pack(...) local origin, dir = args[1], args[2] if typeof(origin) == "Vector3" and typeof(dir) == "Vector3" then args[2] = (pos - origin).Unit * dir.Magnitude return oldNamecall(self, table.unpack(args, 1, args.n)) end end elseif S.MFindPart and (method == "FindPartOnRay" or method == "FindPartOnRayWithIgnoreList" or method == "FindPartOnRayWithWhitelist") then local pos = SilentRoll() if pos then local args = table.pack(...) local ray = args[1] if typeof(ray) == "Ray" then args[1] = Ray.new(ray.Origin, (pos - ray.Origin).Unit * ray.Direction.Magnitude) return oldNamecall(self, table.unpack(args, 1, args.n)) end end end elseif S.MScreenRay and self == Camera and (method == "ScreenPointToRay" or method == "ViewportPointToRay") then local pos = SilentRoll() if pos then local ray = oldNamecall(self, ...) return Ray.new(ray.Origin, (pos - ray.Origin).Unit * ray.Direction.Magnitude) end end end return oldNamecall(self, ...) end)) local oldIndex oldIndex = hookmetamethod(game, "__index", newcclosure(function(self, key) if Alive and SilentCache and self == MouseRef and Settings.Silent.MMouse and (key == "Hit" or key == "Target") and not checkcaller() then local pos, part = SilentRoll() if pos then if key == "Hit" then return CFrame.new(pos) end return part end end return oldIndex(self, key) end)) end) if HookStatusLabel then Reg(HookStatusLabel, "Text", installed and " Хуки: ✅ установлены" or " Хуки: ❌ ошибка установки") end elseif HookStatusLabel then Reg(HookStatusLabel, "Text", " Хуки: ❌ экзекутор не поддерживает hookmetamethod") end -- ==================== ТРЕЙСЕРЫ ПУЛЬ ==================== local TracerFolder = New("Folder", { Name = "1337_Tracers" }, Workspace) local ActiveTracers = {} local lastTracerAt, lastSilentId = 0, 0 local function GetMuzzle() local char = LocalPlayer.Character local mode = Settings.Tracer.Origin if char and mode == "Tool" then local tool = char:FindFirstChildOfClass("Tool") if tool then for _, d in ipairs(tool:GetDescendants()) do if d:IsA("Attachment") then local n = string.lower(d.Name) if string.find(n, "muzzle") or string.find(n, "fire") or string.find(n, "barrel") then return d.WorldPosition end end end local handle = tool:FindFirstChild("Handle") or tool:FindFirstChildWhichIsA("BasePart") if handle then return handle.Position end end mode = "Head" end if char and mode == "Head" then local head = char:FindFirstChild("Head") if head then return head.Position + Vector3.new(0, -0.3, 0) end end local cf = Camera.CFrame return cf.Position + cf.LookVector * 1.5 - cf.UpVector * 0.8 end local function SpawnTracer(origin, hitPos) local T = Settings.Tracer local c1 = ColorOf(T, "Color1", "Rainbow", 0) local c2 = ColorOf(T, "Color2", "Rainbow", 0.3) local function point(pos) local part = Instance.new("Part") part.Anchored = true part.CanCollide = false part.CanQuery = false part.CanTouch = false part.Transparency = 1 part.Size = Vector3.new(0.1, 0.1, 0.1) part.CFrame = CFrame.new(pos) part.Parent = TracerFolder local att = Instance.new("Attachment") att.Parent = part return part, att end local p0, a0 = point(origin) local p1, a1 = point(hitPos) local function beam(width, colors, transparency) local b = Instance.new("Beam") b.Attachment0 = a0 b.Attachment1 = a1 b.Color = colors b.Width0 = width b.Width1 = width b.LightEmission = 1 b.LightInfluence = 0 b.FaceCamera = true b.Segments = 1 b.Transparency = NumberSequence.new(transparency) b.Parent = p0 return b end local t = { Born = os.clock(), Life = T.Lifetime, P0 = p0, P1 = p1, Halo = beam(T.Thickness * T.Glow, ColorSequence.new(c1, c2), 0.75), Mid = beam(T.Thickness, ColorSequence.new(c1, c2), 0), } if T.Core then t.Core = beam(T.Thickness * 0.35, ColorSequence.new(WHITE), 0.1) end if T.Impact then local ball = Instance.new("Part") ball.Shape = Enum.PartType.Ball ball.Material = Enum.Material.Neon ball.Color = c2 ball.Size = Vector3.new(0.4, 0.4, 0.4) ball.Anchored = true ball.CanCollide = false ball.CanQuery = false ball.CanTouch = false ball.CFrame = CFrame.new(hitPos) ball.Parent = TracerFolder t.Impact = ball if T.ImpactLight then local light = Instance.new("PointLight") light.Color = c2 light.Brightness = 3 light.Range = 10 light.Parent = ball t.Light = light end end table.insert(ActiveTracers, t) if #ActiveTracers > 80 then local old = table.remove(ActiveTracers, 1) old.P0:Destroy() old.P1:Destroy() if old.Impact then old.Impact:Destroy() end end end local function UpdateTracers() local now = os.clock() for i = #ActiveTracers, 1, -1 do local t = ActiveTracers[i] local a = (now - t.Born) / t.Life if a >= 1 then t.P0:Destroy() t.P1:Destroy() if t.Impact then t.Impact:Destroy() end table.remove(ActiveTracers, i) else t.Halo.Transparency = NumberSequence.new(0.7 + 0.3 * a) t.Mid.Transparency = NumberSequence.new(a * a) if t.Core then t.Core.Transparency = NumberSequence.new(0.1 + 0.9 * a) end if t.Impact then local sz = 0.4 + a * 1.6 t.Impact.Size = Vector3.new(sz, sz, sz) t.Impact.Transparency = a if t.Light then t.Light.Brightness = 3 * (1 - a) end end end end local T = Settings.Tracer if not T.Enabled or now - lastTracerAt < T.Interval then return end -- выстрел, перенаправленный Silent Aim if LastShotId ~= lastSilentId and LastShotPos then lastSilentId = LastShotId lastTracerAt = now SpawnTracer(GetMuzzle(), LastShotPos) return end -- обычный выстрел: ЛКМ зажата if menuOpen or (Settings.Silent.Enabled and SilentCache) then return end if UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then local char = LocalPlayer.Character if T.OnlyTool and not (char and char:FindFirstChildOfClass("Tool")) then return end local m = UserInputService:GetMouseLocation() local ray = Camera:ViewportPointToRay(m.X, m.Y) rayParams.FilterDescendantsInstances = { char, Camera, TracerFolder } local res = Workspace:Raycast(ray.Origin, ray.Direction * T.Range, rayParams) local hit = res and res.Position or (ray.Origin + ray.Direction * T.Range) lastTracerAt = now SpawnTracer(GetMuzzle(), hit) end end -- ==================== СВОЙ ПРИЦЕЛ ==================== local Crosshair = New("Frame", { Name = "Crosshair", AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.fromOffset(2, 2), BackgroundTransparency = 1, Visible = false, }, ESPLayer) local chBars, chStrokes = {}, {} for i = 1, 5 do chBars[i] = New("Frame", { BorderSizePixel = 0, BackgroundColor3 = WHITE }, Crosshair) chStrokes[i] = Stroke(chBars[i], BLACK, 1, 0) end Corner(chBars[5], 100) local function UpdateCrosshair() local C = Settings.Crosshair Crosshair.Visible = C.Enabled if not C.Enabled then return end local pos = C.FollowMouse and UserInputService:GetMouseLocation() or (Camera.ViewportSize / 2) Crosshair.Position = UDim2.fromOffset(pos.X, pos.Y) Crosshair.Rotation = C.Spin and ((os.clock() * C.SpinSpeed) % 360) or 0 local col = ColorOf(C, "Color", "Rainbow", 0) local s, g, t = C.Size, C.Gap, C.Thickness chBars[1].AnchorPoint = Vector2.new(0.5, 1) chBars[1].Position = UDim2.fromOffset(1, 1 - g) chBars[1].Size = UDim2.fromOffset(t, s) chBars[2].AnchorPoint = Vector2.new(0.5, 0) chBars[2].Position = UDim2.fromOffset(1, 1 + g) chBars[2].Size = UDim2.fromOffset(t, s) chBars[3].AnchorPoint = Vector2.new(1, 0.5) chBars[3].Position = UDim2.fromOffset(1 - g, 1) chBars[3].Size = UDim2.fromOffset(s, t) chBars[4].AnchorPoint = Vector2.new(0, 0.5) chBars[4].Position = UDim2.fromOffset(1 + g, 1) chBars[4].Size = UDim2.fromOffset(s, t) chBars[5].AnchorPoint = Vector2.new(0.5, 0.5) chBars[5].Position = UDim2.fromOffset(1, 1) chBars[5].Size = UDim2.fromOffset(t + 1, t + 1) chBars[5].Visible = C.Dot for i = 1, 5 do chBars[i].BackgroundColor3 = col chStrokes[i].Enabled = C.Outline end end -- ==================== PLAYER / УНИВЕРСАЛЬНЫЕ ФУНКЦИИ ==================== local Lighting = game:GetService("Lighting") local VirtualUser = game:GetService("VirtualUser") local PLR = Settings.Player local TPS = Settings.Third local function GetChar() local c = LocalPlayer.Character if not c then return nil end local hum = c:FindFirstChildOfClass("Humanoid") local hrp = c:FindFirstChild("HumanoidRootPart") if hum and hrp and hum.Health > 0 then return c, hum, hrp end return nil end local function BindDown(b) if b == nil or b == Enum.KeyCode.Unknown then return false end if b.EnumType == Enum.KeyCode then return UserInputService:IsKeyDown(b) end return UserInputService:IsMouseButtonPressed(b) end local function BindMatch(input, b) if b == nil or b == Enum.KeyCode.Unknown then return false end if b.EnumType == Enum.KeyCode then return input.KeyCode == b end return input.UserInputType == b end local lastHum, origSpeed, origJump, origJumpHeight = nil, nil, nil, nil local flying = false local noclipped = {} -- Bhop / Speed / Jump / Fly (Heartbeat) Connect(RunService.Heartbeat, function(dt) if not Alive then return end local c, hum, hrp = GetChar() if not c then lastHum = nil flying = false return end if hum ~= lastHum then lastHum = hum origSpeed, origJump, origJumpHeight = nil, nil, nil flying = false end local typing = UserInputService:GetFocusedTextBox() ~= nil -- скорость ходьбы if PLR.Speed then if not origSpeed then origSpeed = hum.WalkSpeed end hum.WalkSpeed = PLR.SpeedValue elseif origSpeed then hum.WalkSpeed = origSpeed origSpeed = nil end -- сила прыжка if PLR.Jump then if hum.UseJumpPower then if not origJump then origJump = hum.JumpPower end hum.JumpPower = PLR.JumpValue else if not origJumpHeight then origJumpHeight = hum.JumpHeight end hum.JumpHeight = PLR.JumpValue * PLR.JumpValue / (2 * Workspace.Gravity) end else if origJump then hum.JumpPower = origJump origJump = nil end if origJumpHeight then hum.JumpHeight = origJumpHeight origJumpHeight = nil end end -- bhop if PLR.Bhop and not PLR.Fly and not typing then local moving = hum.MoveDirection.Magnitude > 0.1 local want = (PLR.BhopMode == "Always" and moving) or (PLR.BhopMode ~= "Always" and BindDown(PLR.BhopKey)) if want then if hum.FloorMaterial ~= Enum.Material.Air then hum:ChangeState(Enum.HumanoidStateType.Jumping) elseif PLR.BhopBoost > 0 and moving then local vel = hrp.AssemblyLinearVelocity local cur = Vector3.new(vel.X, 0, vel.Z).Magnitude local target = hum.WalkSpeed * (1 + PLR.BhopBoost / 100) if cur < target then cur = math.min(target, cur + 45 * dt) end local dir = hum.MoveDirection.Unit hrp.AssemblyLinearVelocity = Vector3.new(dir.X * cur, vel.Y, dir.Z * cur) end end end -- полёт if PLR.Fly then flying = true hum.PlatformStand = true local cf = Camera.CFrame local dir = Vector3.new(0, 0, 0) if not typing then if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir = dir + cf.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir = dir - cf.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir = dir + cf.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir = dir - cf.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then dir = dir - Vector3.new(0, 1, 0) end end if dir.Magnitude > 0 then hrp.AssemblyLinearVelocity = dir.Unit * PLR.FlySpeed else hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0) end elseif flying then flying = false hum.PlatformStand = false hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0) end end) -- Noclip Connect(RunService.Stepped, function() if not Alive then return end local c = LocalPlayer.Character if PLR.Noclip and c then for _, d in ipairs(c:GetDescendants()) do if d:IsA("BasePart") and d.CanCollide then d.CanCollide = false noclipped[d] = true end end elseif next(noclipped) then for part in pairs(noclipped) do if part.Parent then part.CanCollide = true end end noclipped = {} end end) -- Бесконечный прыжок Connect(UserInputService.JumpRequest, function() if not (Alive and PLR.InfJump) then return end local _, hum = GetChar() if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end) -- Anti-AFK Connect(LocalPlayer.Idled, function() if not PLR.AntiAFK then return end pcall(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new(0, 0)) end) end) -- Fullbright / без тумана local lightOrig = {} local fbWas, fogWas = false, false local function RestoreFullbright() if not fbWas then return end fbWas = false pcall(function() Lighting.Brightness = lightOrig.Brightness Lighting.ClockTime = lightOrig.ClockTime Lighting.GlobalShadows = lightOrig.GlobalShadows Lighting.Ambient = lightOrig.Ambient Lighting.OutdoorAmbient = lightOrig.OutdoorAmbient end) end local function RestoreFog() if not fogWas then return end fogWas = false pcall(function() Lighting.FogEnd = lightOrig.FogEnd Lighting.FogStart = lightOrig.FogStart local atm = Lighting:FindFirstChildOfClass("Atmosphere") if atm and lightOrig.Density then atm.Density = lightOrig.Density end end) end Connect(RunService.Heartbeat, function() if not Alive then return end if PLR.Fullbright then if not fbWas then fbWas = true lightOrig.Brightness = Lighting.Brightness lightOrig.ClockTime = Lighting.ClockTime lightOrig.GlobalShadows = Lighting.GlobalShadows lightOrig.Ambient = Lighting.Ambient lightOrig.OutdoorAmbient = Lighting.OutdoorAmbient end Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.GlobalShadows = false Lighting.Ambient = Color3.fromRGB(190, 190, 190) Lighting.OutdoorAmbient = Color3.fromRGB(190, 190, 190) else RestoreFullbright() end if PLR.NoFog then local atm = Lighting:FindFirstChildOfClass("Atmosphere") if not fogWas then fogWas = true lightOrig.FogEnd = Lighting.FogEnd lightOrig.FogStart = Lighting.FogStart lightOrig.Density = atm and atm.Density or nil end Lighting.FogEnd = 1e6 Lighting.FogStart = 1e6 - 1 if atm then atm.Density = 0 end else RestoreFog() end end) -- Камера: 3-е лицо + свой FOV local tpOn, tpDist, tpSaved = false, 12, nil local tpRay = RaycastParams.new() tpRay.FilterType = Enum.RaycastFilterType.Exclude local function RestoreCameraMode() if not tpSaved then return end local saved = tpSaved tpSaved = nil pcall(function() LocalPlayer.CameraMode = saved.Mode LocalPlayer.CameraMinZoomDistance = saved.Min LocalPlayer.CameraMaxZoomDistance = saved.Max end) end local function CameraStep(dt) if not Alive then return end local cam = Workspace.CurrentCamera if not cam then return end if PLR.FOVEnabled then cam.FieldOfView = PLR.FOVValue end if not TPS.Enabled then if tpOn then tpOn = false RestoreCameraMode() end return end local c, hum, hrp = GetChar() if not c then return end local head = c:FindFirstChild("Head") or hrp if not tpOn then tpOn = true tpDist = math.max(0.5, (cam.CFrame.Position - head.Position).Magnitude) if TPS.ForceMode then pcall(function() tpSaved = { Mode = LocalPlayer.CameraMode, Min = LocalPlayer.CameraMinZoomDistance, Max = LocalPlayer.CameraMaxZoomDistance, } LocalPlayer.CameraMode = Enum.CameraMode.Classic LocalPlayer.CameraMinZoomDistance = 0.5 LocalPlayer.CameraMaxZoomDistance = math.max(128, TPS.Distance + 10) end) end end local goal = TPS.Distance if TPS.Smooth then tpDist = tpDist + (goal - tpDist) * math.clamp(dt * 12, 0, 1) else tpDist = goal end local origin = head.Position + Vector3.new(0, TPS.Height, 0) local rot = cam.CFrame - cam.CFrame.Position local desired = (CFrame.new(origin) * rot):PointToWorldSpace(Vector3.new(TPS.ShoulderX, 0, tpDist)) if TPS.Collision then tpRay.FilterDescendantsInstances = { c, cam } local delta = desired - origin if delta.Magnitude > 0.01 then local hit = Workspace:Raycast(origin, delta, tpRay) if hit then desired = origin + delta.Unit * math.max(0.5, (hit.Position - origin).Magnitude - 0.4) end end end cam.CFrame = CFrame.new(desired) * rot if TPS.ShowBody then for _, d in ipairs(c:GetDescendants()) do if d:IsA("BasePart") then d.LocalTransparencyModifier = 0 end end end end RunService:BindToRenderStep("1337_Camera", Enum.RenderPriority.Camera.Value + 1, CameraStep) -- Бинды (вкл/выкл функций с клавиатуры) Connect(UserInputService.InputBegan, function(input) if not Alive or BindListening or UserInputService:GetFocusedTextBox() then return end if BindMatch(input, TPS.Key) then Handles.Third(not TPS.Enabled) end if BindMatch(input, PLR.BhopToggleKey) then Handles.Bhop(not PLR.Bhop) end if BindMatch(input, PLR.NoclipKey) then Handles.Noclip(not PLR.Noclip) end if BindMatch(input, PLR.FlyKey) then Handles.Fly(not PLR.Fly) end end) local function RestoreAll() pcall(function() RunService:UnbindFromRenderStep("1337_Camera") end) RestoreCameraMode() RestoreFullbright() RestoreFog() local _, hum = GetChar() if hum then if origSpeed then hum.WalkSpeed = origSpeed end if origJump then hum.JumpPower = origJump end if origJumpHeight then hum.JumpHeight = origJumpHeight end if flying then hum.PlatformStand = false end end for part in pairs(noclipped) do if part.Parent then part.CanCollide = true end end noclipped = {} end -- Водяной знак + анимация рамки меню local WM = New("TextLabel", { Name = "Watermark", Position = UDim2.fromOffset(14, 14), Size = UDim2.fromOffset(0, 26), AutomaticSize = Enum.AutomaticSize.X, BackgroundColor3 = Theme.Background, BackgroundTransparency = 0.12, Font = Enum.Font.GothamBold, TextSize = 12, TextColor3 = Theme.Text, Text = "1337 HUB", ZIndex = 20, }, ScreenGui) Corner(WM, 8) New("UIPadding", { PaddingLeft = UDim.new(0, 12), PaddingRight = UDim.new(0, 12) }, WM) Stroke(WM, Theme.Accent, 1.2, 0.35) local fpsTime, fpsFrames = 0, 0 local function UpdateUIExtras(dt) MainStrokeGrad.Rotation = (os.clock() * 45) % 360 WM.Visible = Settings.UI.Watermark if not WM.Visible then return end fpsTime = fpsTime + dt fpsFrames = fpsFrames + 1 if fpsTime >= 0.5 then local fps = math.floor(fpsFrames / fpsTime + 0.5) fpsTime, fpsFrames = 0, 0 local ping = 0 pcall(function() ping = math.floor(LocalPlayer:GetNetworkPing() * 1000 + 0.5) end) WM.Text = string.format("1337 HUB | %d FPS | %d ms", fps, ping) end end -- ==================== ГЛАВНЫЙ ЦИКЛ ==================== Connect(RunService.RenderStepped, function(dt) Camera = Workspace.CurrentCamera pcall(UpdateESP) pcall(UpdateRadar) pcall(UpdateAim) pcall(UpdateSilent) pcall(UpdateTracers) pcall(UpdateCrosshair) pcall(UpdateUIExtras, dt) end) Connect(Players.PlayerRemoving, RemoveESP) -- ==================== ВЫГРУЗКА ==================== local function Unload() Alive = false SilentCache = nil pcall(function() TracerFolder:Destroy() end) SaveConfigNow() pcall(RestoreAll) for _, c in ipairs(Connections) do pcall(function() c:Disconnect() end) end for player in pairs(ESPData) do RemoveESP(player) end for player in pairs(radarDots) do RemoveESP(player) end ScreenGui:Destroy() end Connect(unloadBtn.MouseButton1Click, Unload) pcall(function() if getgenv then getgenv().__1337HubUnload = Unload end end)