--[[ Murder Duels - Skeet / Linoria Edition (CS-Style UI) Features: - Multi-Language Support (RU / EN) with instant language switcher - Full Config Manager & Themes (SaveManager & ThemeManager): * Create, Save, Load, Overwrite, Delete configs * Set as default / Autoload on start * Custom theme picker & presets (Skeet, BBot, Tokyo Night, Ubuntu, Synthwave) - Working Silent Aim (Bullets & knives hit targets without camera snapping) - Silent Auto-Fire (Triggerbot) with Muzzle Clearance: * Automatically shoots when aim target is locked inside FOV * Zero camera movement / snapping * Muzzle Clearance Check (Raycasts directly from the revolver barrel/tip to target) Prevents shooting into walls, corners, boxes, or firing prematurely before peeking * Hooks ViewportPointToRay and Mouse.Hit natively so Triggerbot shots always hit via Silent Aim - Glowing Bullet Tracers / Hit Tracers: * Glowing Neon laser beam from muzzle to impact point on every shot (Revolver & Knife) * Neon impact hit dot with smooth Quad fadeout * Supports ricochets and custom colors / thickness / duration - Strict Target & Health Validation: * Alive & Health Check (HP > 0, state ~= Dead, no dead attributes) * Existence Check (Part and Character exist in workspace, not destroyed) * Immunity / ForceField Check * Strict Wall Check (Raycast Line-of-Sight, pierces destructible glass, blocks solid walls) * Team Check (Respects teammates and lobby teams) - High-Speed Bhop (Speed up to 150 studs/s, instant air strafes without CD) - Native Centered 3rd Person (Zero crookedness, shoulder offset 0) - Advanced ESP (Chams, Names, Distance, Health Bar, Weapon indicator) - Rich 2D Visuals: * 2D Box ESP (Bounding box around enemies) * Snaplines / Tracers (From Bottom or Center) * Head Dots (Precise head circles) * Silent Aim Target Line (Line directly to locked aim target) * Custom CS Crosshair (Size, Gap, Thickness, Dot) - Custom World Ambience: * Atmosphere Presets (Purple Night, Sunset, Blood Moon, Cyberpunk, Midnight, Toxic Green) * Time of Day (ClockTime 0 - 24 hours) * Custom Ambient & OutdoorAmbient colors * Fog Distance & Color with Atmosphere Tint * Saturation & Tint Color Correction - Bulletproof Menu Keybind (Quick-Select Dropdown + Press-Any-Key listener via UIS) - Working Sliders (Auto mouse unlock while menu is open) ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local TweenService = game:GetService("TweenService") local LocalPlayer = Players.LocalPlayer -- ==================== 0. MASTER PURGE PREVIOUS INSTANCES ==================== pcall(function() if _G.MD_GlobalConnections then for _, c in ipairs(_G.MD_GlobalConnections) do pcall(function() c:Disconnect() end) end end end) _G.MD_GlobalConnections = {} if _G.MurderDuelsCleanup then pcall(_G.MurderDuelsCleanup) _G.MurderDuelsCleanup = nil end if _G.MD_Unload then pcall(_G.MD_Unload) _G.MD_Unload = nil end pcall(function() if cleardrawcache then cleardrawcache() end end) pcall(function() local CoreGui = game:GetService("CoreGui") for _, child in ipairs(CoreGui:GetChildren()) do if child.Name:find("ESP") or child.Name:find("Linoria") or child.Name == "ScreenGui" or child.Name:find("MD_") then pcall(function() child:Destroy() end) end end end) pcall(function() for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("Highlight") and (obj.Name:find("ESP") or obj.Name:find("MD_")) then pcall(function() obj:Destroy() end) end end end) local isAlive = true _G.MD_Running = true -- Restore default weapon timings pcall(function() local rs = game:GetService("ReplicatedStorage") local revTiming = require(rs.Shared.RevolverTiming) local knifeTiming = require(rs.Shared.KnifeTiming) revTiming.SHOT_COOLDOWN = 2 revTiming.RELOAD_SOUND_FALLBACK = 0.8 knifeTiming.THROW_COOLDOWN = 0.3 knifeTiming.HOLD_TO_THROW_SEC = 0.2 knifeTiming.CHARGE_DUR = 0.5 end) -- Game native modules local PlayerState = nil local NativeTP = nil pcall(function() PlayerState = require(game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("PlayerState")) NativeTP = require(game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("ThirdPerson")) end) -- ==================== LOCALIZATION (RU / EN) ==================== local currentLang = _G.MD_SelectedLanguage or "RU" local Loc = { RU = { Title = "Murder Duels | Skeet Edition", Rage = "Рейдж", Legit = "Легит", Combat = "Бой", AntiAim = "Анти-Аим", Movement = "Движение", Visuals = "Визуалы", Settings = "Настройки", -- Combat / Rage SilentAimbot = "Сайлент Аим и Триггер", EnableSilentAim = "Включить Silent Aim", SilentAimDesc = "Пули и ножи летят во врага БЕЗ поворота камеры", ActivationMode = "Режим работы аима", AlwaysOn = "Всегда включен", HoldKey = "При удержании клавиши", SilentAutoFire = "Сайлент Авто-выстрел (Triggerbot)", SilentAutoFireDesc = "Автоматически стреляет при наведении на врага с Сайлент Аимом (БЕЗ рывков камеры)", AutoFireDelay = "Задержка выстрела (сек)", MuzzleCheck = "Проверка дула револьвера (Muzzle Check)", MuzzleCheckDesc = "Стрелять только когда конец револьвера чисто видит цель (не стреляет в углы и стены)", WallCheck = "Строгая проверка стен (Wall Check)", WallCheckDesc = "Не стрелять если враг за стеной или препятствием", TeamCheck = "Проверка команды (Team Check)", TeamCheckDesc = "Не целиться в союзников", Prediction = "Упреждение движения (Prediction)", PredictionDesc = "Упреждение полета ножа/пули по скорости цели", ProjSpeed = "Скорость снаряда", TargetFilters = "Фильтры целей и хитбоксы", TargetPlayers = "Игроки (Players)", TargetNoobs = "Манекены / Нубы (Dummies)", TargetBullseyes = "Мишени в тире (Targets)", HitboxPriority = "Приоритет хитбокса", DrawFOV = "Отображать круг FOV", FOVRadius = "Радиус FOV", -- Auto-Peek AutoPeek = "Авто-Пик (Auto-Peek)", EnableAutoPeek = "Включить Auto-Peek", AutoPeekDesc = "Запоминает точку, при выстреле моментально оттягивает обратно в укрытие", AutoPeekKey = "Клавиша Auto-Peek", AutoPeekMarker = "Светящийся маркер", AutoPeekMarkerDesc = "Показывать круг возврата на полу за укрытием", AutoPeekColor = "Цвет маркера", AutoPeekSpeed = "Скорость возврата (Speed)", -- Legit Tab LegitAimbot = "Легит Аимбот (Smooth Aim)", EnableLegitAim = "Включить Legit Aim", LegitAimDesc = "Плавная человеческая доводка камеры к противнику", LegitAimKey = "Клавиша Legit Aim", LegitSmoothness = "Плавность доводки (Smooth)", LegitFOV = "Радиус легит FOV", DrawLegitFOV = "Отображать легит FOV", LegitHitbox = "Приоритет хитбокса", LegitWallCheck = "Проверка видимости (Wall Check)", LegitTriggerbot = "Легит Триггербот (Triggerbot)", EnableLegitTrigger = "Включить Legit Triggerbot", LegitTriggerDesc = "Авто-выстрел только когда реальный прицел мыши наведён на врага", ReactionDelay = "Человеческая задержка (мс)", -- Anti-Aim AnglesDesync = "Углы и Дезсинк", SpeedConfig = "Скорость и Настройки", EnableAA = "Включить Anti-Aim", AADesc = "Ломает траектории ножей и аимботы противников", YawMode = "Режим Yaw", PitchMode = "Режим Pitch", SpinSpeed = "Скорость вращения", PitchAngle = "Угол Pitch", JitterAngle = "Угол Jitter", SwayFreq = "Частота Sway", -- Movement BhopStrafes = "Баннихоп и Стрейфы", MovementBoost = "Ускорители движения", Bhop = "Bunny Hop (Bhop)", BhopDesc = "Автоматические прыжки при удержании Пробела", AirStrafes = "Instant Air Strafes", AirStrafesDesc = "Мгновенное изменение вектора скорости без задержки и КД (W/A/S/D)", BhopSpeed = "Bhop Speed (Разгон)", InfJump = "Бесконечный прыжок (Infinite Jump)", InfJumpDesc = "Прыгать в воздухе сколько угодно раз", WalkSpeed = "WalkSpeed Booster", -- Visuals ThirdPersonCam = "Камера 3-го лица", CrosshairVisuals = "Кастомный прицел (Crosshair)", ESPWorld = "ESP игроков и Chams", DrawingVisuals = "2D Боксы и Трейсеры", AmbienceWorld = "Кастомный Эмбиенс и Освещение", BulletTracers = "Хиттрейсеры пуль (Bullet Tracers)", EnableTP = "Включить 3-е лицо", TPDesc = "Нативный вид от 3-го лица (ровно по центру, без кривых углов)", CamDist = "Дистанция камеры", ShoulderX = "Смещение плеча (0 = Центр)", HeightY = "Высота камеры", FOV = "Поле зрения (FOV)", EnableESP = "Включить Chams ESP", ESPDesc = "Подсветка игроков и ботов через стены", ESPNames = "Имена и Дистанция", ESPNamesDesc = "Отображать ник и дистанцию над головой", ESPHealth = "Полоска здоровья", ESPHealthDesc = "Отображать динамическую полоску здоровья", ESPWeapon = "Отображать оружие", ESPWeaponDesc = "Показывать что враг держит в руках (Revolver / Knife)", ESPBots = "Подсвечивать ботов / нубов", ChamsTransp = "Прозрачность Chams", Fullbright = "Fullbright (Без темноты)", FullbrightDesc = "Удалить тени, темноту и туман на арене", -- 2D Visuals BoxESP = "2D Рамки (Box ESP)", BoxESPDesc = "Отображать 2D прямоугольники вокруг игроков", Snaplines = "Трейсеры (Snaplines)", SnaplinesDesc = "Отображать линии к игрокам", TracerOrigin = "Откуда рисовать линии", TracerBottom = "Снизу экрана", TracerCenter = "От прицела", HeadDots = "Точки на голове (Head Dots)", HeadDotsDesc = "Отображать кружки на голове противников", TargetLine = "Линия захвата аима (Target Line)", TargetLineDesc = "Показывает линию к текущей цели сайлент аима", EnableCrosshair = "Включить кастомный прицел", CrosshairSize = "Размер линий прицела", CrosshairGap = "Зазор прицела (Gap)", CrosshairThickness = "Толщина линий", CrosshairDot = "Центральная точка", -- Bullet Tracers EnableTracers = "Включить хиттрейсеры", TracersDesc = "Светящийся неоновый луч от дула револьвера до точки попадания", ShowImpact = "Точка попадания (Impact Dot)", ShowImpactDesc = "Светящаяся сфера в месте попадания пули", TracerDuration = "Длительность луча (сек)", TracerThickness = "Толщина луча", -- Custom Ambience EnableAmbience = "Включить кастомный эмбиенс", AmbienceDesc = "Кастомное освещение, время суток и атмосфера карты", AmbiencePreset = "Пресеты атмосферы", ClockTime = "Время суток (Часы)", FogDist = "Дистанция тумана (Fog)", Saturation = "Насыщенность цветов", AmbientColor = "Цвет Ambient", OutdoorColor = "Цвет OutdoorAmbient", FogColor = "Цвет тумана", -- Viewmodel & Chams ViewmodelChams = "Вьюмодель и Чамсы Оружия", EnableWeaponChams = "Включить чамсы оружия", WeaponChamsDesc = "Кастомный скин, цвет и материал для револьвера и ножа", WeaponColor = "Цвет оружия", WeaponRainbow = "Радужный режим (Rainbow RGB)", WeaponMaterial = "Материал оружия", WeaponTransparency = "Прозрачность оружия", RemoveTextures = "Скрыть стандартные текстуры", RemoveTexturesDesc = "Убирает текстуру со скина, чтобы материал и свечение были чистыми", EnableArmChams = "Включить чамсы рук", ArmChamsDesc = "Кастомный материал и цвет рук персонажа", ArmColor = "Цвет рук", ArmRainbow = "Радужные руки (Rainbow)", ArmMaterial = "Материал рук", ArmTransparency = "Прозрачность рук", EnableViewmodel = "Включить кастомную вьюмодель", ViewmodelDesc = "Настройка положения оружия и рук на экране (как в CS:GO)", ViewmodelPreset = "Пресеты вьюмодели", ViewmodelX = "Смещение X (Влево / Вправо)", ViewmodelY = "Смещение Y (Вверх / Вниз)", ViewmodelZ = "Смещение Z (Ближе / Дальше)", ViewmodelRoll = "Угол наклона (Roll / Tilt)", ViewmodelPitch = "Угол наклона (Pitch)", -- Settings MenuSettings = "Настройки интерфейса", LanguageSettings = "Язык меню и Бинд", UnloadGroup = "Управление скриптом", Language = "Выбор языка", Unload = "Выгрузить меню (Unload)", MenuKey = "Клавиша меню", QuickKeySelect = "Быстрый выбор клавиши меню", ChangeMenuKey = "Нажмите для смены клавиши (Любая)", PressAnyKey = "Нажмите любую клавишу...", KeybindUpdated = "Клавиша меню изменена на", }, EN = { Title = "Murder Duels | Skeet Edition", Rage = "Rage", Legit = "Legit", Combat = "Combat", AntiAim = "Anti-Aim", Movement = "Movement", Visuals = "Visuals", Settings = "Settings", -- Combat / Rage SilentAimbot = "Silent Aim & Trigger", EnableSilentAim = "Enable Silent Aim", SilentAimDesc = "Bullets & knives hit target WITHOUT moving camera", ActivationMode = "Aim Activation Mode", AlwaysOn = "Always On", HoldKey = "Hold Keybind", SilentAutoFire = "Silent Auto-Fire (Triggerbot)", SilentAutoFireDesc = "Automatically fires when aiming at enemy with Silent Aim (no camera snap)", AutoFireDelay = "Auto-Fire Delay (sec)", MuzzleCheck = "Muzzle Clearance Check", MuzzleCheckDesc = "Only fire when the revolver barrel has a direct line of sight (avoids walls/corners)", WallCheck = "Strict Wall Check", WallCheckDesc = "Do not shoot if target is behind solid walls or obstacles", TeamCheck = "Team Check", TeamCheckDesc = "Do not target teammates", Prediction = "Movement Prediction", PredictionDesc = "Lead knife/bullet based on target velocity", ProjSpeed = "Projectile Speed", TargetFilters = "Target Filters & Hitbox", TargetPlayers = "Target Players", TargetNoobs = "Target Dummies (Noobs)", TargetBullseyes = "Target Shooting Bullseyes", HitboxPriority = "Hitbox Priority", DrawFOV = "Draw FOV Circle", FOVRadius = "FOV Radius", -- Auto-Peek AutoPeek = "Auto-Peek (Peek Assist)", EnableAutoPeek = "Enable Auto-Peek", AutoPeekDesc = "Records safe position, peeks, and pulls back behind cover after shot", AutoPeekKey = "Auto-Peek Keybind", AutoPeekMarker = "Show Return Marker", AutoPeekMarkerDesc = "Displays glowing circle marker on the ground at return point", AutoPeekColor = "Marker Color", AutoPeekSpeed = "Return Speed", -- Legit Tab LegitAimbot = "Legit Aimbot (Smooth Aim)", EnableLegitAim = "Enable Legit Aim", LegitAimDesc = "Smooth humanized camera aim assistance towards target", LegitAimKey = "Legit Aim Keybind", LegitSmoothness = "Aim Smoothness", LegitFOV = "Legit FOV Radius", DrawLegitFOV = "Draw Legit FOV Circle", LegitHitbox = "Hitbox Priority", LegitWallCheck = "Visibility Check (Wall Check)", LegitTriggerbot = "Legit Triggerbot", EnableLegitTrigger = "Enable Legit Triggerbot", LegitTriggerDesc = "Fires only when your crosshair is directly aimed at an enemy", ReactionDelay = "Reaction Delay (ms)", -- Anti-Aim AnglesDesync = "Angles & Desync", SpeedConfig = "Speed & Configuration", EnableAA = "Enable Anti-Aim", AADesc = "Breaks knife trajectories and opponent aimbots", YawMode = "Yaw Mode", PitchMode = "Pitch Mode", SpinSpeed = "Spinbot Speed", PitchAngle = "Pitch Angle", JitterAngle = "Jitter Angle", SwayFreq = "Sway Frequency", -- Movement BhopStrafes = "Bunny Hop & Air Strafes", MovementBoost = "Movement Boosters", Bhop = "Bunny Hop (Bhop)", BhopDesc = "Automatic jumps when holding Space without landing lag", AirStrafes = "Instant Air Strafes", AirStrafesDesc = "Instant velocity redirection without cooldown (W/A/S/D)", BhopSpeed = "Bhop Speed (Acceleration)", InfJump = "Infinite Jump", InfJumpDesc = "Jump in mid-air unlimited times", WalkSpeed = "WalkSpeed Booster", -- Visuals ThirdPersonCam = "3rd Person Camera", CrosshairVisuals = "Custom Crosshair", ESPWorld = "Player ESP & Chams", DrawingVisuals = "2D Boxes & Tracers", AmbienceWorld = "Custom Ambience & Lighting", BulletTracers = "Bullet Tracers", EnableTP = "Enable 3rd Person", TPDesc = "Native 3rd person perspective (centered, no crooked angles)", CamDist = "Camera Distance", ShoulderX = "Shoulder Offset (0 = Centered)", HeightY = "Height Offset", FOV = "Field Of View", EnableESP = "Enable Chams ESP", ESPDesc = "Highlight opponents and bots through walls", ESPNames = "Show Names & Distance", ESPNamesDesc = "Display username and distance above head", ESPHealth = "Show Health Bar", ESPHealthDesc = "Display dynamic health bar with current HP", ESPWeapon = "Show Equipped Weapon", ESPWeaponDesc = "Show held weapon (Revolver / Knife)", ESPBots = "Highlight Bots / Dummies", ChamsTransp = "Chams Transparency", Fullbright = "Fullbright (No Darkness)", FullbrightDesc = "Remove shadows, darkness, and fog", -- 2D Visuals BoxESP = "2D Box ESP", BoxESPDesc = "Draw 2D bounding boxes around players", Snaplines = "Snaplines / Tracers", SnaplinesDesc = "Draw lines pointing to enemies", TracerOrigin = "Tracer Origin", TracerBottom = "Bottom of Screen", TracerCenter = "Center / Crosshair", HeadDots = "Head Dots", HeadDotsDesc = "Draw clean dots on enemy heads", TargetLine = "Silent Aim Target Line", TargetLineDesc = "Shows a tracer to current silent aim target", EnableCrosshair = "Enable Custom Crosshair", CrosshairSize = "Crosshair Line Size", CrosshairGap = "Crosshair Gap", CrosshairThickness = "Line Thickness", CrosshairDot = "Center Dot", -- Bullet Tracers EnableTracers = "Enable Bullet Tracers", TracersDesc = "Glowing neon beam from weapon muzzle to impact point", ShowImpact = "Impact Dot", ShowImpactDesc = "Glowing neon sphere at bullet impact point", TracerDuration = "Tracer Duration (sec)", TracerThickness = "Tracer Thickness", -- Custom Ambience EnableAmbience = "Enable Custom Ambience", AmbienceDesc = "Custom world lighting, time of day and map atmosphere", AmbiencePreset = "Atmosphere Presets", ClockTime = "Time of Day (Hours)", FogDist = "Fog Distance", Saturation = "Color Saturation", AmbientColor = "Ambient Color", OutdoorColor = "OutdoorAmbient Color", FogColor = "Fog Color", -- Viewmodel & Chams ViewmodelChams = "Viewmodel & Weapon Chams", EnableWeaponChams = "Enable Weapon Chams", WeaponChamsDesc = "Custom skin, color, and material for revolver and knife", WeaponColor = "Weapon Color", WeaponRainbow = "Rainbow Mode (RGB)", WeaponMaterial = "Weapon Material", WeaponTransparency = "Weapon Transparency", RemoveTextures = "Remove Default Textures", RemoveTexturesDesc = "Removes default skin texture so material glow is pure", EnableArmChams = "Enable Arm Chams", ArmChamsDesc = "Custom material and color for character arms", ArmColor = "Arm Color", ArmRainbow = "Rainbow Arms (RGB)", ArmMaterial = "Arm Material", ArmTransparency = "Arm Transparency", EnableViewmodel = "Enable Custom Viewmodel", ViewmodelDesc = "Adjust weapon and hand screen position (CS:GO style)", ViewmodelPreset = "Viewmodel Presets", ViewmodelX = "Offset X (Left / Right)", ViewmodelY = "Offset Y (Up / Down)", ViewmodelZ = "Offset Z (Closer / Further)", ViewmodelRoll = "Tilt Angle (Roll)", ViewmodelPitch = "Tilt Angle (Pitch)", -- Settings MenuSettings = "UI Settings", LanguageSettings = "Menu Language & Keybind", UnloadGroup = "Script Control", Language = "Select Language", Unload = "Unload Hub", MenuKey = "Menu Keybind", QuickKeySelect = "Quick Menu Key Select", ChangeMenuKey = "Click to Change Key (Any Key)", PressAnyKey = "Press any key...", KeybindUpdated = "Menu keybind updated to", } } local function T(k) local dict = Loc[currentLang] or Loc.RU return dict[k] or k end -- Load LinoriaLib & Addons local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/GhostDuckyy/UI-Libraries/3b0bcba89893baa65d36b12b33e70e93ebc8b122/LinoriaLib/source.lua"))() local ThemeManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/GhostDuckyy/UI-Libraries/3b0bcba89893baa65d36b12b33e70e93ebc8b122/LinoriaLib/addons/ThemeManager.lua"))() local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/GhostDuckyy/UI-Libraries/3b0bcba89893baa65d36b12b33e70e93ebc8b122/LinoriaLib/addons/SaveManager.lua"))() local Connections = _G.MD_GlobalConnections local cachedTargets = {} local silentAimTargetPart = nil local silentAimTargetChar = nil -- Combat variables (Silent Aim) local silentAimEnabled = false local teamCheckEnabled = true local wallCheckEnabled = true local targetPlayers = true local targetNoobs = true local targetTargets = true local targetPartMode = "Head" local fovRadius = 160 local showFovCircle = true local predictionEnabled = true local projectileSpeed = 180 local silentAimMode = "AlwaysOn" -- Silent Auto-Fire (Triggerbot without camera snapping) local silentAutoFire = false local silentAutoFireDelay = 0.25 local lastSilentFireTime = 0 local muzzleCheckEnabled = false -- Muzzle Clearance Check (off by default so triggerbot is 100% reliable) -- Auto-Peek (Peek Assist) State local autoPeekEnabled = false local autoPeekAnchor = nil local autoPeekVisual = nil local autoPeekColor = Color3.fromRGB(0, 255, 180) local autoPeekShowMarker = true local autoPeekReturnSpeed = 4.0 local autoPeekState = "IDLE" -- "IDLE", "RECORDED", "PEEKING", "RETURNING" local function updateAutoPeekVisual() if autoPeekEnabled and autoPeekShowMarker and autoPeekAnchor then local container = workspace:FindFirstChild("Bin") or workspace.CurrentCamera if not autoPeekVisual or not autoPeekVisual.Parent then local marker = Instance.new("Part") marker.Name = "MD_AutoPeekMarker" marker.Anchored = true marker.CanCollide = false marker.CanTouch = false marker.CanQuery = false marker.CastShadow = false marker.Material = Enum.Material.Neon marker.Shape = Enum.PartType.Cylinder marker.Color = autoPeekColor marker.Transparency = 0.35 marker.Size = Vector3.new(0.25, 4.5, 4.5) marker.Parent = container autoPeekVisual = marker end autoPeekVisual.Color = autoPeekColor autoPeekVisual.CFrame = CFrame.new(autoPeekAnchor.X, autoPeekAnchor.Y - 2.8, autoPeekAnchor.Z) * CFrame.Angles(0, 0, math.rad(90)) else if autoPeekVisual then pcall(function() autoPeekVisual:Destroy() end) autoPeekVisual = nil end end end local function triggerAutoPeekReturn() if autoPeekEnabled and autoPeekAnchor and (autoPeekState == "PEEKING" or autoPeekState == "RECORDED") then task.delay(0.06, function() if autoPeekEnabled and autoPeekAnchor then autoPeekState = "RETURNING" end end) end end -- Legit Aimbot (Smooth Aim) State local legitAimEnabled = false local legitAimMode = "HoldKey" local legitSmoothness = 6 local legitFovRadius = 85 local legitHitbox = "Head" local legitShowFov = false local legitWallCheck = true local legitFovCircle = nil -- Legit Triggerbot State local legitTriggerEnabled = false local legitTriggerDelay = 0.16 local legitTriggerTeamCheck = true local legitTriggerStartTime = 0 local lastLegitTriggerFireTime = 0 -- Bullet Tracers / Hit Tracers State local bulletTracersEnabled = true local tracerColor = Color3.fromRGB(0, 255, 220) -- Neon Cyan local tracerImpactColor = Color3.fromRGB(255, 60, 60) -- Neon Red local tracerDuration = 1.0 local tracerThickness = 0.12 local tracerShowImpact = true local function spawnBulletTracer(from, to) if not bulletTracersEnabled then return end if not from or not to then return end local dist = (to - from).Magnitude if dist < 0.5 or dist > 1500 then return end local container = workspace:FindFirstChild("Bin") or workspace.CurrentCamera if not container then return end task.spawn(function() pcall(function() -- Glowing Neon Cylinder Beam local tracer = Instance.new("Part") tracer.Name = "MD_BulletTracer" tracer.Anchored = true tracer.CanCollide = false tracer.CanTouch = false tracer.CanQuery = false tracer.CastShadow = false tracer.Material = Enum.Material.Neon tracer.Color = tracerColor tracer.Shape = Enum.PartType.Cylinder tracer.Size = Vector3.new(dist, tracerThickness, tracerThickness) tracer.CFrame = CFrame.lookAt((from + to) / 2, to) * CFrame.Angles(0, math.rad(90), 0) tracer.Parent = container local tracerTween = TweenService:Create(tracer, TweenInfo.new(tracerDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Transparency = 1 }) tracerTween.Completed:Connect(function() pcall(function() tracer:Destroy() end) end) tracerTween:Play() -- Glowing Neon Impact Dot at hit position if tracerShowImpact then local hitDot = Instance.new("Part") hitDot.Name = "MD_ImpactDot" hitDot.Anchored = true hitDot.CanCollide = false hitDot.CanTouch = false hitDot.CanQuery = false hitDot.CastShadow = false hitDot.Material = Enum.Material.Neon hitDot.Color = tracerImpactColor hitDot.Shape = Enum.PartType.Ball hitDot.Size = Vector3.new(tracerThickness * 2.5, tracerThickness * 2.5, tracerThickness * 2.5) hitDot.CFrame = CFrame.new(to) hitDot.Parent = container local dotTween = TweenService:Create(hitDot, TweenInfo.new(tracerDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Transparency = 1, Size = Vector3.new(0.01, 0.01, 0.01) }) dotTween.Completed:Connect(function() pcall(function() hitDot:Destroy() end) end) dotTween:Play() end end) end) end _G.MD_OnShotFired = function(from, to) if bulletTracersEnabled and from and to then spawnBulletTracer(from, to) end triggerAutoPeekReturn() end local function fireWeapon() local im = nil pcall(function() im = require(game:GetService("ReplicatedStorage"):WaitForChild("Extensions"):WaitForChild("InputMap")) end) if im and im.tap then im.tap("Attack") else pcall(function() mouse1click() end) end end -- Anti-Aim variables local aaEnabled = false local aaYawMode = "Spinbot" local aaPitchMode = "Down (Head Roll)" local spinSpeed = 25 local jitterAngle = 90 local swayFreq = 8 local swayAngle = 75 local pitchAngle = 35 local currentYaw = 0 local defaultRjC0 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0) -- Movement variables local bhopEnabled = false local bhopSpeed = 55 local instantStrafes = true local infiniteJump = false -- 3rd Person variables (Native Centered) local thirdPersonEnabled = false local cameraDistance = 10 local shoulderOffset = 0 local heightOffset = 1.3 local customFOV = 85 -- Visuals: Advanced ESP local espEnabled = false local espShowNames = true local espShowDistance = true local espShowHealth = true local espShowWeapon = true local espTargetBots = true local espFillColor = Color3.fromRGB(255, 65, 65) local espOutlineColor = Color3.fromRGB(255, 255, 255) local espFillTransparency = 0.5 local espOutlineTransparency = 0 local espCache = {} local fullbrightEnabled = false -- Original Lighting State local originalAmbient = Lighting.Ambient local originalOutdoorAmbient = Lighting.OutdoorAmbient local originalBrightness = Lighting.Brightness local originalClockTime = Lighting.ClockTime local originalFogColor = Lighting.FogColor local originalFogEnd = Lighting.FogEnd local originalGlobalShadows = Lighting.GlobalShadows local colorCorrection = Lighting:FindFirstChildOfClass("ColorCorrectionEffect") local originalTintColor = colorCorrection and colorCorrection.TintColor or Color3.fromRGB(255, 255, 255) local originalSaturation = colorCorrection and colorCorrection.Saturation or 0 local atmosphere = Lighting:FindFirstChildOfClass("Atmosphere") local originalAtmoColor = atmosphere and atmosphere.Color or Color3.fromRGB(200, 200, 200) local originalAtmoDecay = atmosphere and atmosphere.Decay or Color3.fromRGB(100, 100, 100) -- Custom Ambience State local customAmbienceEnabled = false local customClockTime = 0 local customAmbientColor = Color3.fromRGB(90, 20, 140) local customOutdoorAmbientColor = Color3.fromRGB(45, 10, 80) local customFogColor = Color3.fromRGB(35, 5, 55) local customFogDistance = 450 local customTintColor = Color3.fromRGB(230, 200, 255) local customSaturation = 0.35 local ambiencePresets = { ["Purple Night"] = { ClockTime = 0, Ambient = Color3.fromRGB(90, 20, 140), OutdoorAmbient = Color3.fromRGB(45, 10, 80), FogColor = Color3.fromRGB(35, 5, 55), FogEnd = 450, Tint = Color3.fromRGB(230, 200, 255), Saturation = 0.35 }, ["Sunset"] = { ClockTime = 17.8, Ambient = Color3.fromRGB(180, 90, 60), OutdoorAmbient = Color3.fromRGB(130, 60, 40), FogColor = Color3.fromRGB(160, 80, 50), FogEnd = 550, Tint = Color3.fromRGB(255, 220, 180), Saturation = 0.25 }, ["Blood Moon"] = { ClockTime = 0, Ambient = Color3.fromRGB(160, 20, 20), OutdoorAmbient = Color3.fromRGB(90, 10, 10), FogColor = Color3.fromRGB(70, 5, 5), FogEnd = 400, Tint = Color3.fromRGB(255, 180, 180), Saturation = 0.4 }, ["Cyberpunk"] = { ClockTime = 21, Ambient = Color3.fromRGB(140, 30, 140), OutdoorAmbient = Color3.fromRGB(30, 140, 180), FogColor = Color3.fromRGB(30, 25, 60), FogEnd = 500, Tint = Color3.fromRGB(230, 180, 255), Saturation = 0.5 }, ["Midnight"] = { ClockTime = 0, Ambient = Color3.fromRGB(25, 35, 70), OutdoorAmbient = Color3.fromRGB(15, 20, 45), FogColor = Color3.fromRGB(10, 15, 35), FogEnd = 600, Tint = Color3.fromRGB(200, 220, 255), Saturation = 0.15 }, ["Toxic Green"] = { ClockTime = 0, Ambient = Color3.fromRGB(20, 120, 50), OutdoorAmbient = Color3.fromRGB(10, 70, 30), FogColor = Color3.fromRGB(15, 50, 20), FogEnd = 450, Tint = Color3.fromRGB(180, 255, 200), Saturation = 0.4 } } local function applyAmbience() if not customAmbienceEnabled then Lighting.ClockTime = originalClockTime Lighting.Ambient = originalAmbient Lighting.OutdoorAmbient = originalOutdoorAmbient Lighting.FogColor = originalFogColor Lighting.FogEnd = originalFogEnd if colorCorrection then colorCorrection.TintColor = originalTintColor colorCorrection.Saturation = originalSaturation end if atmosphere then atmosphere.Color = originalAtmoColor atmosphere.Decay = originalAtmoDecay end return end Lighting.ClockTime = customClockTime Lighting.Ambient = customAmbientColor Lighting.OutdoorAmbient = customOutdoorAmbientColor Lighting.FogColor = customFogColor Lighting.FogEnd = customFogDistance if not colorCorrection then colorCorrection = Instance.new("ColorCorrectionEffect", Lighting) end colorCorrection.TintColor = customTintColor colorCorrection.Saturation = customSaturation if atmosphere then atmosphere.Color = customFogColor atmosphere.Decay = customOutdoorAmbientColor end end -- Rich 2D Visuals State local boxEspEnabled = false local boxColor = Color3.fromRGB(255, 65, 65) local snaplinesEnabled = false local snaplinesColor = Color3.fromRGB(255, 200, 50) local snaplinesOrigin = "Bottom" local headDotsEnabled = false local headDotsColor = Color3.fromRGB(0, 255, 200) local targetLineEnabled = false local targetLineColor = Color3.fromRGB(50, 255, 50) local targetLine = nil local customCrosshairEnabled = false local crosshairColor = Color3.fromRGB(0, 255, 120) local crosshairSize = 6 local crosshairGap = 4 local crosshairThickness = 1.5 local crosshairDotEnabled = false local crosshairLines = {} local drawingCache = {} -- Menu Keybind State _G.MD_MenuToggleKey = _G.MD_MenuToggleKey or Enum.KeyCode.RightControl local isListeningForMenuKey = false local menuKeyLabelRef = nil -- FOV Circle & Drawing Initialization local fovCircle = nil if typeof(Drawing) == "table" and Drawing.new then pcall(function() fovCircle = Drawing.new("Circle") fovCircle.Thickness = 1.5 fovCircle.NumSides = 64 fovCircle.Radius = fovRadius fovCircle.Filled = false fovCircle.Color = Color3.fromRGB(255, 75, 75) fovCircle.Visible = false fovCircle.Transparency = 0.8 legitFovCircle = Drawing.new("Circle") legitFovCircle.Thickness = 1.5 legitFovCircle.NumSides = 64 legitFovCircle.Radius = legitFovRadius legitFovCircle.Filled = false legitFovCircle.Color = Color3.fromRGB(60, 180, 255) legitFovCircle.Visible = false legitFovCircle.Transparency = 0.8 targetLine = Drawing.new("Line") targetLine.Thickness = 1.5 targetLine.Color = targetLineColor targetLine.Visible = false crosshairLines.h1 = Drawing.new("Line") crosshairLines.h2 = Drawing.new("Line") crosshairLines.v1 = Drawing.new("Line") crosshairLines.v2 = Drawing.new("Line") crosshairLines.dot = Drawing.new("Circle") crosshairLines.dot.Radius = 1.5 crosshairLines.dot.Filled = true for _, l in pairs(crosshairLines) do l.Visible = false end end) end -- ==================== VIEWMODEL & WEAPON CHAMS ==================== local weaponChamsEnabled = false local weaponChamsColor = Color3.fromRGB(0, 255, 200) local weaponChamsRainbow = false local weaponChamsMaterial = "ForceField" local weaponChamsTransparency = 0 local weaponRemoveTextures = false local armChamsEnabled = false local armChamsColor = Color3.fromRGB(255, 100, 200) local armChamsRainbow = false local armChamsMaterial = "ForceField" local armChamsTransparency = 0 local vmOffsetEnabled = false local vmOffsetX = 0 local vmOffsetY = 0 local vmOffsetZ = 0 local vmRoll = 0 local vmPitch = 0 local origWeaponProps = {} local origArmProps = {} local origGripC0 = {} local function applyWeaponChams() local char = LocalPlayer.Character if not char then return end local currentColor = weaponChamsColor if weaponChamsRainbow then local hue = (tick() * 0.25) % 1 currentColor = Color3.fromHSV(hue, 0.85, 1) end local function processModel(m) if not m then return end for _, part in ipairs(m:GetDescendants()) do if part:IsA("BasePart") then if not origWeaponProps[part] then origWeaponProps[part] = { Material = part.Material, Color = part.Color, Transparency = part.Transparency, Reflectance = part.Reflectance } end if weaponChamsEnabled then part.Material = Enum.Material[weaponChamsMaterial] or Enum.Material.ForceField part.Color = currentColor part.Transparency = weaponChamsTransparency if part:IsA("MeshPart") then if origWeaponProps[part].TextureID == nil then origWeaponProps[part].TextureID = part.TextureID end if weaponRemoveTextures then part.TextureID = "" else part.TextureID = origWeaponProps[part].TextureID or "" end end local mesh = part:FindFirstChildOfClass("SpecialMesh") if mesh then if not origWeaponProps[mesh] then origWeaponProps[mesh] = { TextureId = mesh.TextureId } end if weaponRemoveTextures then mesh.TextureId = "" else mesh.TextureId = origWeaponProps[mesh].TextureId or "" end end else local orig = origWeaponProps[part] if orig then part.Material = orig.Material part.Color = orig.Color part.Transparency = orig.Transparency part.Reflectance = orig.Reflectance if part:IsA("MeshPart") and orig.TextureID then part.TextureID = orig.TextureID end end local mesh = part:FindFirstChildOfClass("SpecialMesh") if mesh and origWeaponProps[mesh] then mesh.TextureId = origWeaponProps[mesh].TextureId or "" end end end end end local tool = char:FindFirstChildOfClass("Tool") or char:FindFirstChild("Revolver") or char:FindFirstChild("Knife") local rig = char:FindFirstChild("RevolverRig") or char:FindFirstChild("KnifeRig") processModel(tool) processModel(rig) end local function applyArmChams() local char = LocalPlayer.Character if not char then return end local currentArmColor = armChamsColor if armChamsRainbow then local hue = ((tick() * 0.25) + 0.3) % 1 currentArmColor = Color3.fromHSV(hue, 0.85, 1) end local armNames = { "Right Arm", "Left Arm", "RightHand", "LeftHand", "RightLowerArm", "LeftLowerArm", "RightUpperArm", "LeftUpperArm" } for _, armName in ipairs(armNames) do local arm = char:FindFirstChild(armName) if arm and arm:IsA("BasePart") then if not origArmProps[arm] then origArmProps[arm] = { Material = arm.Material, Color = arm.Color, Transparency = arm.Transparency } end if armChamsEnabled then arm.Material = Enum.Material[armChamsMaterial] or Enum.Material.ForceField arm.Color = currentArmColor arm.Transparency = armChamsTransparency else local orig = origArmProps[arm] if orig then arm.Material = orig.Material arm.Color = orig.Color arm.Transparency = orig.Transparency end end end end end local function updateViewmodelOffset() local char = LocalPlayer.Character if not char then return end local rightArm = char:FindFirstChild("Right Arm") or char:FindFirstChild("RightHand") if not rightArm then return end local grip = rightArm:FindFirstChild("RightGrip") if not grip then for _, c in ipairs(rightArm:GetChildren()) do if (c:IsA("Weld") or c:IsA("Motor6D")) and (c.Name == "RightGrip" or (c.Part1 and c.Part1.Name == "Handle")) then grip = c break end end end if grip then if not origGripC0[grip] then origGripC0[grip] = grip.C0 end if vmOffsetEnabled then local offsetCF = CFrame.new(vmOffsetX, vmOffsetY, vmOffsetZ) * CFrame.Angles(math.rad(vmPitch), 0, math.rad(vmRoll)) grip.C0 = origGripC0[grip] * offsetCF else if origGripC0[grip] then grip.C0 = origGripC0[grip] end end end end local function resetViewmodelOffset() for grip, originalC0 in pairs(origGripC0) do if grip and grip.Parent then pcall(function() grip.C0 = originalC0 end) end end origGripC0 = {} end local function setupCharWeaponListeners(char) if not char then return end table.insert(Connections, char.ChildAdded:Connect(function(child) if child:IsA("Tool") or child.Name:find("Rig") then task.defer(function() if weaponChamsEnabled then applyWeaponChams() end if armChamsEnabled then applyArmChams() end if vmOffsetEnabled then updateViewmodelOffset() end end) end end)) table.insert(Connections, char.ChildRemoved:Connect(function(child) if child:IsA("Tool") or child.Name:find("Rig") then origGripC0 = {} end end)) end if LocalPlayer.Character then setupCharWeaponListeners(LocalPlayer.Character) end table.insert(Connections, LocalPlayer.CharacterAdded:Connect(function(char) origWeaponProps = {} origArmProps = {} origGripC0 = {} setupCharWeaponListeners(char) task.wait(0.3) if weaponChamsEnabled then applyWeaponChams() end if armChamsEnabled then applyArmChams() end if vmOffsetEnabled then updateViewmodelOffset() end end)) -- ==================== 0. MOUSE UNLOCK FOR SLIDERS ==================== local function maintainMouseAndOrder() local isMenuOpen = (Library and Library.IsOpen) or false if isMenuOpen then if LocalPlayer:GetAttribute("MouseUnlocked") ~= 1 then LocalPlayer:SetAttribute("MouseUnlocked", 1) end if UserInputService.MouseBehavior ~= Enum.MouseBehavior.Default then UserInputService.MouseBehavior = Enum.MouseBehavior.Default end UserInputService.MouseIconEnabled = true else if LocalPlayer:GetAttribute("MouseUnlocked") == 1 then LocalPlayer:SetAttribute("MouseUnlocked", nil) end end end table.insert(Connections, RunService.RenderStepped:Connect(maintainMouseAndOrder)) -- ==================== 1. HOOKS: TRUE SILENT AIM & BULLET TRACERS ==================== _G.MD_SilentAimEnabled = false _G.MD_SilentAimTarget = nil _G.MD_PredictionEnabled = true _G.MD_ProjectileSpeed = 180 _G.MD_CurrentWeaponIsKnife = false -- Dynamic Metamethod Dispatchers (Ultra-optimized, zero allocations on non-target calls) _G.MD_OnNamecall = function(self, method, ...) -- Fast exit for 99.9% of engine calls if method ~= "FireServer" and method ~= "ViewportPointToRay" then return nil end if method == "ViewportPointToRay" then if _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local target = _G.MD_SilentAimTarget if target and target.Parent and self:IsA("Camera") then local camPos = self.CFrame.Position local targetPos = target.Position local isKnife = (_G.MD_CurrentWeaponIsKnife == true) if isKnife and _G.MD_PredictionEnabled and (_G.MD_ProjectileSpeed or 0) > 0 then local vel = target.AssemblyLinearVelocity or target.Velocity or Vector3.zero local dist = (targetPos - camPos).Magnitude targetPos = targetPos + (vel * (dist / _G.MD_ProjectileSpeed)) end return Ray.new(camPos, (targetPos - camPos).Unit) end end return nil end if method == "FireServer" then if self.Name == "ShootReplicate" or self.Name == "ThrowReplicate" then local shotData = ... if _G.MD_OnShotFired and typeof(shotData) == "table" then task.spawn(function() pcall(function() if shotData.segments and #shotData.segments > 0 then for _, seg in ipairs(shotData.segments) do if seg.from and seg.hitPos then _G.MD_OnShotFired(seg.from, seg.hitPos) end end elseif shotData.origin and (shotData.hitPos or shotData.to) then _G.MD_OnShotFired(shotData.origin, shotData.hitPos or shotData.to) end end) end) end end return nil end return nil end _G.MD_OnIndex = function(self, key) -- Fast exit: NEVER touch anything unless the key is specifically "Hit" or "Target" if key ~= "Hit" and key ~= "Target" then return nil end if not _G.MD_SilentAimEnabled or not _G.MD_SilentAimTarget then return nil end -- Verify caller is mouse without triggering recursive metamethod calls if typeof(self) == "Instance" and self.ClassName == "PlayerMouse" then local target = _G.MD_SilentAimTarget if target and target.Parent then local targetPos = target.Position local isKnife = (_G.MD_CurrentWeaponIsKnife == true) if isKnife and _G.MD_PredictionEnabled and (_G.MD_ProjectileSpeed or 0) > 0 then local cam = workspace.CurrentCamera if cam then local camPos = cam.CFrame.Position local vel = target.AssemblyLinearVelocity or target.Velocity or Vector3.zero local dist = (targetPos - camPos).Magnitude targetPos = targetPos + (vel * (dist / _G.MD_ProjectileSpeed)) end end if key == "Hit" then return CFrame.new(targetPos) elseif key == "Target" then return target end end end return nil end if not _G.MD_HooksInstalled then local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) local method = getnamecallmethod() if _G.MD_OnNamecall then local override = _G.MD_OnNamecall(self, method, ...) if override ~= nil then return override end end return oldNamecall(self, ...) end) local oldIndex oldIndex = hookmetamethod(game, "__index", function(self, key) if _G.MD_OnIndex then local override = _G.MD_OnIndex(self, key) if override ~= nil then return override end end return oldIndex(self, key) end) _G.MD_HooksInstalled = true end -- ==================== 2. STRICT TARGET & HP VALIDATION ==================== local function isEnemy(plr) if plr == LocalPlayer then return false end if not teamCheckEnabled then return true end if LocalPlayer.Team and plr.Team then if LocalPlayer.Team.Name == "Lobby" and plr.Team.Name == "Lobby" then return true end return LocalPlayer.Team ~= plr.Team end if LocalPlayer.TeamColor and plr.TeamColor then return LocalPlayer.TeamColor ~= plr.TeamColor end return true end local function getTargetAimPart(char) if not char then return nil end if targetPartMode == "Head" then return char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart") elseif targetPartMode == "Torso" then return char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") or char:FindFirstChild("HumanoidRootPart") else return char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") end end local function isTargetAliveAndValid(target) if not target then return false end local part = target.part local char = target.char if not part or not part.Parent or not part:IsDescendantOf(workspace) then return false end if part.Transparency > 0.8 then return false end if char then if not char:IsDescendantOf(workspace) then return false end if char:FindFirstChildOfClass("ForceField") then return false end local hum = char:FindFirstChildOfClass("Humanoid") if hum then if hum.Health <= 0 then return false end local state = hum:GetState() if state == Enum.HumanoidStateType.Dead then return false end end if char:GetAttribute("Dead") == true or char:GetAttribute("Invulnerable") == true then return false end local plr = Players:GetPlayerFromCharacter(char) if plr then if plr.Parent ~= Players then return false end if not isEnemy(plr) then return false end end end return true end local function isTargetVisible(origin, part, char) if not wallCheckEnabled then return true end local dir = part.Position - origin local dist = dir.Magnitude if dist <= 0.5 then return true end local rayParams = RaycastParams.new() rayParams.FilterType = Enum.RaycastFilterType.Exclude rayParams.FilterDescendantsInstances = { workspace.CurrentCamera, LocalPlayer.Character, workspace:FindFirstChild("Bin") } rayParams.IgnoreWater = true local hit = workspace:Raycast(origin, dir.Unit * dist, rayParams) if not hit then return true end local hitInst = hit.Instance if hitInst == part or (char and hitInst:IsDescendantOf(char)) then return true end -- Pierce thin transparent glass, destructibles glass, or non-collidable cosmetic parts local hitName = hitInst.Name:lower() if (hitInst.Material == Enum.Material.Glass and hitInst.Transparency > 0.3) or hitName:find("glass") or (not hitInst.CanCollide and hitInst.Transparency > 0.6) then local secondaryOrigin = hit.Position + (dir.Unit * 0.15) local remainingDist = (part.Position - secondaryOrigin).Magnitude if remainingDist <= 0.5 then return true end local hit2 = workspace:Raycast(secondaryOrigin, dir.Unit * remainingDist, rayParams) if not hit2 then return true end if hit2.Instance == part or (char and hit2.Instance:IsDescendantOf(char)) then return true end end return false end local sharedRayParams = RaycastParams.new() sharedRayParams.FilterType = Enum.RaycastFilterType.Exclude sharedRayParams.IgnoreWater = true -- Exact Weapon Muzzle / Barrel Position (Where bullets and thrown knives spawn) local function getWeaponMuzzlePosition() local char = LocalPlayer.Character if not char then return nil end local tool = char:FindFirstChildOfClass("Tool") if not tool then tool = char:FindFirstChild("Revolver") or char:FindFirstChild("Knife") end if tool then local handle = tool:FindFirstChild("Handle") if handle and handle:IsA("BasePart") then return (handle.CFrame * CFrame.new(0, 0.2, -1.6)).Position end local p = tool:FindFirstChildWhichIsA("BasePart") if p then return (p.CFrame * CFrame.new(0, 0.2, -1.6)).Position end end local rightArm = char:FindFirstChild("Right Arm") or char:FindFirstChild("RightHand") if rightArm and rightArm:IsA("BasePart") then return (rightArm.CFrame * CFrame.new(0, 0, -1.5)).Position end local head = char:FindFirstChild("Head") return head and head.Position or nil end -- Muzzle Clearance Check: Guarantees the revolver barrel/tip has an open line of fire local function canMuzzleHitTarget(targetPart, targetChar) if not targetPart or not targetPart:IsDescendantOf(workspace) then return false end local muzzlePos = getWeaponMuzzlePosition() if not muzzlePos then return true -- If muzzle position cannot be determined, do not block firing end local dir = targetPart.Position - muzzlePos local dist = dir.Magnitude if dist <= 1.0 then return true end sharedRayParams.FilterDescendantsInstances = { workspace.CurrentCamera, LocalPlayer.Character, workspace:FindFirstChild("Bin"), workspace:FindFirstChild("RaycastIgnore") } local hit = workspace:Raycast(muzzlePos, dir.Unit * dist, sharedRayParams) if not hit then return true end local hitInst = hit.Instance if not hitInst then return true end -- Hit target player or part if hitInst == targetPart or (targetChar and hitInst:IsDescendantOf(targetChar)) then return true end -- Ignore non-collidable parts (cosmetics, invisible barriers, triggers, hitboxes) if not hitInst.CanCollide or hitInst.Transparency > 0.6 then return true end -- Transparent destructibles / glass piercing local hitName = hitInst.Name:lower() if (hitInst.Material == Enum.Material.Glass and hitInst.Transparency > 0.3) or hitName:find("glass") then local secondaryOrigin = hit.Position + (dir.Unit * 0.25) local remainingDist = (targetPart.Position - secondaryOrigin).Magnitude if remainingDist <= 0.5 then return true end local hit2 = workspace:Raycast(secondaryOrigin, dir.Unit * remainingDist, sharedRayParams) if not hit2 then return true end if hit2.Instance == targetPart or (targetChar and hit2.Instance:IsDescendantOf(targetChar)) or not hit2.Instance.CanCollide then return true end end return false end local staticLobbyTargets = {} local function cacheStaticLobbyTargets() table.clear(staticLobbyTargets) pcall(function() local lobby = workspace:FindFirstChild("Lobby") if lobby then for _, obj in ipairs(lobby:GetDescendants()) do if obj:IsA("BasePart") and (obj.Name:lower():find("target") or obj.Name:lower():find("bullseye")) and obj.Transparency < 0.8 then table.insert(staticLobbyTargets, obj) end end end end) end task.spawn(cacheStaticLobbyTargets) local function refreshTargetCache() local list = {} local seenModels = {} local myCam = workspace.CurrentCamera local myPos = myCam.CFrame.Position -- 1. Real Players if targetPlayers then for _, plr in ipairs(Players:GetPlayers()) do if isEnemy(plr) and plr.Character then local hum = plr.Character:FindFirstChildOfClass("Humanoid") local part = getTargetAimPart(plr.Character) if hum and hum.Health > 0 and part and hum:GetState() ~= Enum.HumanoidStateType.Dead then local dist = (part.Position - myPos).Magnitude if dist <= 350 and math.abs(part.Position.Y - myPos.Y) < 150 then seenModels[plr.Character] = true table.insert(list, { part = part, char = plr.Character, name = plr.Name }) end end end end end -- 2. Models in workspace.Characters (Opponents, bots, dummies) if workspace:FindFirstChild("Characters") then for _, m in ipairs(workspace.Characters:GetChildren()) do if m:IsA("Model") and m ~= LocalPlayer.Character and not seenModels[m] then local plr = Players:GetPlayerFromCharacter(m) local isTarget = false if plr then if isEnemy(plr) and targetPlayers then isTarget = true end else if targetNoobs then isTarget = true end end if isTarget then local hum = m:FindFirstChildOfClass("Humanoid") local part = getTargetAimPart(m) if hum and hum.Health > 0 and part and hum:GetState() ~= Enum.HumanoidStateType.Dead then local dist = (part.Position - myPos).Magnitude if dist <= 350 and math.abs(part.Position.Y - myPos.Y) < 150 then seenModels[m] = true table.insert(list, { part = part, char = m, name = plr and plr.Name or m.Name }) end end end end end end -- 3. Targets in Lobby (Pre-cached static targets, zero lag!) if targetTargets and #staticLobbyTargets > 0 then for _, obj in ipairs(staticLobbyTargets) do if obj and obj.Parent and obj:IsDescendantOf(workspace) then local dist = (obj.Position - myPos).Magnitude if dist <= 250 and math.abs(obj.Position.Y - myPos.Y) < 100 then table.insert(list, { part = obj, char = obj.Parent, name = "Target" }) end end end end cachedTargets = list _G.MD_CachedTargets = list end pcall(refreshTargetCache) task.spawn(function() while isAlive do task.wait(0.3) pcall(refreshTargetCache) end end) local function getBestSilentTarget() local best = nil local bestScore = math.huge local myCam = workspace.CurrentCamera local screenCenter = Vector2.new(myCam.ViewportSize.X / 2, myCam.ViewportSize.Y / 2) local camPos = myCam.CFrame.Position for _, t in ipairs(cachedTargets) do if isTargetAliveAndValid(t) then local part = t.part local screenPos, onScreen = myCam:WorldToViewportPoint(part.Position) local dist2D = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude local dist3D = (part.Position - camPos).Magnitude if onScreen and dist2D <= fovRadius and dist3D <= 350 then if isTargetVisible(camPos, part, t.char) then if dist2D < bestScore then bestScore = dist2D best = { part = part, char = t.char, dist3D = dist3D, name = t.name } end end end end end return best end local function getBestLegitTarget() local best = nil local bestDist2D = math.huge local myCam = workspace.CurrentCamera local screenCenter = Vector2.new(myCam.ViewportSize.X / 2, myCam.ViewportSize.Y / 2) local camPos = myCam.CFrame.Position for _, t in ipairs(cachedTargets) do if isTargetAliveAndValid(t) then local part = t.part if legitHitbox == "Head" and t.char then part = t.char:FindFirstChild("Head") or t.part elseif legitHitbox == "Torso" and t.char then part = t.char:FindFirstChild("Torso") or t.char:FindFirstChild("UpperTorso") or t.part end local screenPos, onScreen = myCam:WorldToViewportPoint(part.Position) if onScreen then local dist2D = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude local dist3D = (part.Position - camPos).Magnitude if dist2D <= legitFovRadius and dist3D <= 350 then if not legitWallCheck or isTargetVisible(camPos, part, t.char) then if dist2D < bestDist2D then bestDist2D = dist2D best = { part = part, char = t.char, screenPos = screenPos } end end end end end end return best end -- ==================== 3. RENDERSTEPPED LOOP ==================== table.insert(Connections, RunService.RenderStepped:Connect(function() local myCam = workspace.CurrentCamera local screenCenter = Vector2.new(myCam.ViewportSize.X / 2, myCam.ViewportSize.Y / 2) if vmOffsetEnabled then updateViewmodelOffset() end if (weaponChamsEnabled and weaponChamsRainbow) or (armChamsEnabled and armChamsRainbow) then if weaponChamsEnabled and weaponChamsRainbow then applyWeaponChams() end if armChamsEnabled and armChamsRainbow then applyArmChams() end end if fovCircle then fovCircle.Position = screenCenter fovCircle.Radius = fovRadius fovCircle.Visible = silentAimEnabled and showFovCircle end local isAimActive = silentAimEnabled if isAimActive and silentAimMode == "HoldKey" then if Options.SilentAimKey and not Options.SilentAimKey:GetState() then isAimActive = false end end if isAimActive then local best = getBestSilentTarget() silentAimTargetPart = best and best.part or nil silentAimTargetChar = best and best.char or nil else silentAimTargetPart = nil silentAimTargetChar = nil end _G.MD_SilentAimEnabled = isAimActive and (silentAimTargetPart ~= nil) _G.MD_SilentAimTarget = silentAimTargetPart _G.MD_PredictionEnabled = predictionEnabled _G.MD_ProjectileSpeed = projectileSpeed local myChar = LocalPlayer.Character local activeTool = myChar and myChar:FindFirstChildOfClass("Tool") local tName = activeTool and activeTool.Name:lower() or "" _G.MD_CurrentWeaponIsKnife = (tName:find("knife") ~= nil) -- Silent Auto-Fire (Triggerbot: Fires automatically WITHOUT camera snapping) if silentAutoFire and isAimActive and silentAimTargetPart then local now = tick() if (now - lastSilentFireTime >= silentAutoFireDelay) then -- Muzzle clearance check: only fire if the revolver barrel has an open line of fire if not muzzleCheckEnabled or canMuzzleHitTarget(silentAimTargetPart, silentAimTargetChar) then local char = LocalPlayer.Character local tool = char and char:FindFirstChildOfClass("Tool") if not tool then local bp = LocalPlayer:FindFirstChild("Backpack") local rev = bp and (bp:FindFirstChild("Revolver") or bp:FindFirstChild("Knife")) local hum = char and char:FindFirstChildOfClass("Humanoid") if rev and hum then hum:EquipTool(rev) end end lastSilentFireTime = now fireWeapon() end end end -- Legit FOV Circle if legitFovCircle then legitFovCircle.Position = screenCenter legitFovCircle.Radius = legitFovRadius legitFovCircle.Visible = legitAimEnabled and legitShowFov end -- Legit Aimbot Execution (Smooth Camera Aim) local isLegitActive = legitAimEnabled if isLegitActive and legitAimMode == "HoldKey" then if Options.LegitAimKey and not Options.LegitAimKey:GetState() then isLegitActive = false end end if isLegitActive then local legitTarget = getBestLegitTarget() if legitTarget and legitTarget.part then local targetPos = legitTarget.part.Position local currentCF = myCam.CFrame local targetCF = CFrame.lookAt(currentCF.Position, targetPos) local factor = math.clamp(1 / math.max(legitSmoothness, 1), 0.04, 0.45) myCam.CFrame = currentCF:Lerp(targetCF, factor) end end -- Legit Triggerbot Execution (Humanized Reaction Time on Direct Crosshair Aim) local isLegitTriggerActive = legitTriggerEnabled if isLegitTriggerActive and Options.LegitTriggerKey then if not Options.LegitTriggerKey:GetState() then isLegitTriggerActive = false end end if isLegitTriggerActive then local ray = myCam:ViewportPointToRay(screenCenter.X, screenCenter.Y) local rayParams = RaycastParams.new() rayParams.FilterType = Enum.RaycastFilterType.Exclude rayParams.FilterDescendantsInstances = { myCam, LocalPlayer.Character, workspace:FindFirstChild("Bin") } local hit = workspace:Raycast(ray.Origin, ray.Direction * 350, rayParams) local isEnemyAimed = false if hit and hit.Instance then local hitChar = hit.Instance.Parent if hitChar and hitChar:IsA("Accessory") then hitChar = hitChar.Parent end if hitChar and hitChar:FindFirstChildOfClass("Humanoid") then local plr = Players:GetPlayerFromCharacter(hitChar) if plr then if not legitTriggerTeamCheck or isEnemy(plr) then isEnemyAimed = true end elseif targetNoobs then isEnemyAimed = true end end end if isEnemyAimed then if legitTriggerStartTime == 0 then legitTriggerStartTime = tick() elseif (tick() - legitTriggerStartTime) >= (legitTriggerDelay or 0.16) then local now = tick() if (now - lastLegitTriggerFireTime >= 0.25) then lastLegitTriggerFireTime = now fireWeapon() end end else legitTriggerStartTime = 0 end else legitTriggerStartTime = 0 end -- Auto-Peek Execution (Peek Assist) if autoPeekEnabled and Options.AutoPeekKey then local isKeyHeld = Options.AutoPeekKey:GetState() local char = LocalPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") if isKeyHeld and hrp then if not autoPeekAnchor then autoPeekAnchor = hrp.Position autoPeekState = "RECORDED" updateAutoPeekVisual() else local dist = (hrp.Position - autoPeekAnchor).Magnitude if autoPeekState == "RECORDED" and dist > 2 then autoPeekState = "PEEKING" end if autoPeekState == "RETURNING" then local cur = hrp.Position local target = Vector3.new(autoPeekAnchor.X, cur.Y, autoPeekAnchor.Z) local diff = target - cur if diff.Magnitude > 1.2 then local step = math.min(diff.Magnitude, autoPeekReturnSpeed) hrp.CFrame = CFrame.new(cur + diff.Unit * step) * (hrp.CFrame - hrp.CFrame.Position) hrp.AssemblyLinearVelocity = Vector3.zero else hrp.CFrame = CFrame.new(target) * (hrp.CFrame - hrp.CFrame.Position) hrp.AssemblyLinearVelocity = Vector3.zero autoPeekState = "RECORDED" end end end else if autoPeekAnchor then autoPeekAnchor = nil autoPeekState = "IDLE" updateAutoPeekVisual() end end elseif autoPeekAnchor then autoPeekAnchor = nil autoPeekState = "IDLE" updateAutoPeekVisual() end -- 1. Silent Aim Target Line if targetLine then if targetLineEnabled and _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tPos, onScreen = myCam:WorldToViewportPoint(_G.MD_SilentAimTarget.Position) if onScreen then targetLine.From = screenCenter targetLine.To = Vector2.new(tPos.X, tPos.Y) targetLine.Color = targetLineColor targetLine.Visible = true else targetLine.Visible = false end else targetLine.Visible = false end end -- 2. Custom CS Crosshair if crosshairLines.h1 then if customCrosshairEnabled then local cx, cy = screenCenter.X, screenCenter.Y local g, s = crosshairGap, crosshairSize local col = crosshairColor local th = crosshairThickness crosshairLines.h1.From = Vector2.new(cx - g - s, cy) crosshairLines.h1.To = Vector2.new(cx - g, cy) crosshairLines.h1.Color = col crosshairLines.h1.Thickness = th crosshairLines.h1.Visible = true crosshairLines.h2.From = Vector2.new(cx + g, cy) crosshairLines.h2.To = Vector2.new(cx + g + s, cy) crosshairLines.h2.Color = col crosshairLines.h2.Thickness = th crosshairLines.h2.Visible = true crosshairLines.v1.From = Vector2.new(cx, cy - g - s) crosshairLines.v1.To = Vector2.new(cx, cy - g) crosshairLines.v1.Color = col crosshairLines.v1.Thickness = th crosshairLines.v1.Visible = true crosshairLines.v2.From = Vector2.new(cx, cy + g) crosshairLines.v2.To = Vector2.new(cx, cy + g + s) crosshairLines.v2.Color = col crosshairLines.v2.Thickness = th crosshairLines.v2.Visible = true crosshairLines.dot.Position = screenCenter crosshairLines.dot.Color = col crosshairLines.dot.Radius = th crosshairLines.dot.Visible = crosshairDotEnabled else for _, l in pairs(crosshairLines) do l.Visible = false end end end -- 3. 2D Visuals: Box ESP, Snaplines, Head Dots local activeDrawModels = {} if boxEspEnabled or snaplinesEnabled or headDotsEnabled then for _, t in ipairs(cachedTargets) do if isTargetAliveAndValid(t) then local char = t.char local head = char and (char:FindFirstChild("Head") or t.part) local root = char and (char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") or t.part) if head and root and head:IsDescendantOf(workspace) then activeDrawModels[char] = true if not drawingCache[char] then local box = Drawing.new("Square") box.Thickness = 1.5 box.Filled = false box.Visible = false local line = Drawing.new("Line") line.Thickness = 1 line.Visible = false local dot = Drawing.new("Circle") dot.Radius = 3.5 dot.Filled = true dot.Visible = false drawingCache[char] = { box = box, line = line, dot = dot } end local d = drawingCache[char] local headPos, onHead = myCam:WorldToViewportPoint(head.Position + Vector3.new(0, 0.6, 0)) local rootPos, onRoot = myCam:WorldToViewportPoint(root.Position - Vector3.new(0, 2.8, 0)) if onHead or onRoot then local topY = headPos.Y local botY = rootPos.Y local h = math.abs(botY - topY) local w = math.max(h * 0.65, 12) -- 2D Box if boxEspEnabled then d.box.Size = Vector2.new(w, h) d.box.Position = Vector2.new(rootPos.X - w / 2, math.min(topY, botY)) d.box.Color = boxColor d.box.Visible = true else d.box.Visible = false end -- Snaplines / Tracers if snaplinesEnabled then local startPos = (snaplinesOrigin == "Bottom") and Vector2.new(myCam.ViewportSize.X / 2, myCam.ViewportSize.Y) or screenCenter d.line.From = startPos d.line.To = Vector2.new(rootPos.X, math.max(topY, botY)) d.line.Color = snaplinesColor d.line.Visible = true else d.line.Visible = false end -- Head Dot if headDotsEnabled and onHead then d.dot.Position = Vector2.new(headPos.X, headPos.Y + 0.6 * (h / 30)) d.dot.Color = headDotsColor d.dot.Visible = true else d.dot.Visible = false end else d.box.Visible = false d.line.Visible = false d.dot.Visible = false end end end end end -- Hide or cleanup Drawing objects (Reuses instances, zero allocation overhead) for m, d in pairs(drawingCache) do if not activeDrawModels[m] then d.box.Visible = false d.line.Visible = false d.dot.Visible = false if not m.Parent or not m:IsDescendantOf(workspace) then pcall(function() d.box:Remove() end) pcall(function() d.line:Remove() end) pcall(function() d.dot:Remove() end) drawingCache[m] = nil end end end end)) -- ==================== 4. ANTI-AIM LOGIC ==================== local function getCharParts() local char = LocalPlayer.Character if not char then return nil end local root = char:FindFirstChild("HumanoidRootPart") local hum = char:FindFirstChildOfClass("Humanoid") local rj = root and root:FindFirstChild("RootJoint") return char, root, hum, rj end local function resetAntiAim() local _, root, hum, rj = getCharParts() if hum then hum.AutoRotate = true end if rj then rj.C0 = defaultRjC0 end end table.insert(Connections, RunService.Heartbeat:Connect(function(dt) if not aaEnabled then return end local _, root, hum, rj = getCharParts() if not root or not hum or hum.Health <= 0 then return end hum.AutoRotate = false local camLook = workspace.CurrentCamera.CFrame.LookVector local baseAngle = math.atan2(-camLook.X, -camLook.Z) if aaYawMode == "Spinbot" then currentYaw = (currentYaw + spinSpeed * dt) % (math.pi * 2) elseif aaYawMode == "Jitter (180 Flip)" then local flip = (tick() % 0.1 > 0.05) currentYaw = baseAngle + (flip and 0 or math.pi) elseif aaYawMode == "Jitter (Custom Angle)" then local flip = (tick() % 0.12 > 0.06) currentYaw = baseAngle + math.rad(flip and jitterAngle or -jitterAngle) elseif aaYawMode == "Random Jitter" then currentYaw = math.rad(math.random(-180, 180)) elseif aaYawMode == "Backward (180)" then currentYaw = baseAngle + math.pi elseif aaYawMode == "Sideways (90)" then currentYaw = baseAngle + math.rad(90) elseif aaYawMode == "Sway (Sinusoid)" then currentYaw = baseAngle + math.sin(tick() * swayFreq) * math.rad(swayAngle) end local preservedVelocity = root.AssemblyLinearVelocity root.CFrame = CFrame.new(root.Position) * CFrame.Angles(0, currentYaw, 0) root.AssemblyLinearVelocity = preservedVelocity if rj then if aaPitchMode == "Down (Head Roll)" then rj.C0 = defaultRjC0 * CFrame.Angles(math.rad(pitchAngle), 0, 0) elseif aaPitchMode == "Up (Sky)" then rj.C0 = defaultRjC0 * CFrame.Angles(math.rad(-pitchAngle), 0, 0) elseif aaPitchMode == "Jitter Pitch" then local flipP = (tick() % 0.1 > 0.05) rj.C0 = defaultRjC0 * CFrame.Angles(math.rad(flipP and pitchAngle or -pitchAngle), 0, 0) elseif aaPitchMode == "Zero" then rj.C0 = defaultRjC0 end end end)) -- ==================== 5. MOVEMENT: BHOP & STRAFES ==================== table.insert(Connections, RunService.Heartbeat:Connect(function() local char = LocalPlayer.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") if not hum or not root or hum.Health <= 0 then return end local isSpaceDown = UserInputService:IsKeyDown(Enum.KeyCode.Space) local onGround = (hum.FloorMaterial ~= Enum.Material.Air) local moveDir = hum.MoveDirection -- 1. Auto-Bhop без задержки приземления if bhopEnabled and isSpaceDown and onGround then hum:ChangeState(Enum.HumanoidStateType.Jumping) end -- 2. Air Strafes: Мгновенная смена направления без КД и задержки (W/A/S/D) if bhopEnabled and instantStrafes and moveDir.Magnitude > 0 then local currentVel = root.AssemblyLinearVelocity local speed = math.max(hum.WalkSpeed, bhopSpeed) root.AssemblyLinearVelocity = Vector3.new(moveDir.X * speed, currentVel.Y, moveDir.Z * speed) end end)) table.insert(Connections, UserInputService.JumpRequest:Connect(function() if infiniteJump then local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end)) -- ==================== 6. PERFECT NATIVE 3RD PERSON ==================== local function applyNativeCamera() if NativeTP then NativeTP.Distance = cameraDistance NativeTP.Shoulder = shoulderOffset NativeTP.Height = heightOffset NativeTP.SetEnabled(thirdPersonEnabled) end if PlayerState then PlayerState.CameraFirstPerson = not thirdPersonEnabled end workspace.CurrentCamera.FieldOfView = customFOV local char = LocalPlayer.Character if char and thirdPersonEnabled then for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") and p.Name ~= "HumanoidRootPart" and p.Name ~= "BoundingBox" then p.LocalTransparencyModifier = 0 end end end end table.insert(Connections, RunService.RenderStepped:Connect(function() if thirdPersonEnabled then if NativeTP and not NativeTP.IsEnabled() then NativeTP.SetEnabled(true) end if PlayerState and PlayerState.CameraFirstPerson ~= false then PlayerState.CameraFirstPerson = false end local char = LocalPlayer.Character if char then for _, p in ipairs(char:GetChildren()) do if p:IsA("BasePart") and p.Name ~= "HumanoidRootPart" and p.LocalTransparencyModifier > 0.1 then p.LocalTransparencyModifier = 0 end end end end end)) -- ==================== 7. VISUALS: ADVANCED ESP ==================== local function removeEspForModel(model) local data = espCache[model] if data then if data.highlight then pcall(function() data.highlight:Destroy() end) end if data.billboard then pcall(function() data.billboard:Destroy() end) end espCache[model] = nil end end local function clearAllEsp() for model, _ in pairs(espCache) do removeEspForModel(model) end for _, d in pairs(drawingCache) do pcall(function() d.box:Remove() end) pcall(function() d.line:Remove() end) pcall(function() d.dot:Remove() end) end drawingCache = {} end local function getWeaponName(char) local tool = char:FindFirstChildOfClass("Tool") if tool then return tool.Name end return nil end local function createEspForModel(model, isBot, displayName) if espCache[model] then return end local head = model:FindFirstChild("Head") or model:FindFirstChild("HumanoidRootPart") if not head then return end -- 1. Highlight (Chams) local hl = Instance.new("Highlight") hl.Name = "ESP_Highlight" hl.Adornee = model hl.FillColor = espFillColor hl.FillTransparency = espFillTransparency hl.OutlineColor = espOutlineColor hl.OutlineTransparency = espOutlineTransparency hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Enabled = espEnabled pcall(function() hl.Parent = model end) if not hl.Parent then hl.Parent = game:GetService("CoreGui") end -- 2. BillboardGui (Name, Distance, Health, Weapon) local bb = Instance.new("BillboardGui") bb.Name = "ESP_Billboard" bb.Adornee = head bb.AlwaysOnTop = true bb.Size = UDim2.new(0, 160, 0, 52) bb.StudsOffset = Vector3.new(0, 3.2, 0) bb.Enabled = espEnabled bb.Parent = game:GetService("CoreGui") local container = Instance.new("Frame", bb) container.Size = UDim2.new(1, 0, 1, 0) container.BackgroundTransparency = 1 local nameLabel = Instance.new("TextLabel", container) nameLabel.Name = "NameLabel" nameLabel.Size = UDim2.new(1, 0, 0, 16) nameLabel.Position = UDim2.new(0, 0, 0, 0) nameLabel.BackgroundTransparency = 1 nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255) nameLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) nameLabel.TextStrokeTransparency = 0.2 nameLabel.TextSize = 13 nameLabel.Font = Enum.Font.GothamBold nameLabel.Text = displayName or model.Name local healthBg = Instance.new("Frame", container) healthBg.Name = "HealthBg" healthBg.Size = UDim2.new(0, 90, 0, 4) healthBg.Position = UDim2.new(0.5, -45, 0, 18) healthBg.BackgroundColor3 = Color3.fromRGB(30, 30, 30) healthBg.BorderSizePixel = 0 healthBg.Visible = espShowHealth local healthFill = Instance.new("Frame", healthBg) healthFill.Name = "HealthFill" healthFill.Size = UDim2.new(1, 0, 1, 0) healthFill.BackgroundColor3 = Color3.fromRGB(46, 204, 113) healthFill.BorderSizePixel = 0 local weaponLabel = Instance.new("TextLabel", container) weaponLabel.Name = "WeaponLabel" weaponLabel.Size = UDim2.new(1, 0, 0, 14) weaponLabel.Position = UDim2.new(0, 0, 0, 24) weaponLabel.BackgroundTransparency = 1 weaponLabel.TextColor3 = Color3.fromRGB(241, 196, 15) weaponLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) weaponLabel.TextStrokeTransparency = 0.3 weaponLabel.TextSize = 11 weaponLabel.Font = Enum.Font.GothamMedium weaponLabel.Text = "" weaponLabel.Visible = espShowWeapon espCache[model] = { highlight = hl, billboard = bb, nameLabel = nameLabel, healthBg = healthBg, healthFill = healthFill, weaponLabel = weaponLabel, isBot = isBot, displayName = displayName or model.Name } end local function updateEsp() if not espEnabled then for _, data in pairs(espCache) do if data.highlight then data.highlight.Enabled = false end if data.billboard then data.billboard.Enabled = false end end return end local camPos = workspace.CurrentCamera.CFrame.Position local activeModels = {} -- 1. Scan Players for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then local char = plr.Character local hum = char:FindFirstChildOfClass("Humanoid") local head = char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart") if hum and hum.Health > 0 and head and head:IsDescendantOf(workspace) and hum:GetState() ~= Enum.HumanoidStateType.Dead then activeModels[char] = true if not espCache[char] then createEspForModel(char, false, plr.DisplayName or plr.Name) end local data = espCache[char] if data then data.highlight.Enabled = true data.billboard.Enabled = true data.highlight.FillColor = espFillColor data.highlight.FillTransparency = espFillTransparency data.highlight.OutlineColor = espOutlineColor data.highlight.OutlineTransparency = espOutlineTransparency local dist = math.floor((head.Position - camPos).Magnitude) if espShowDistance then data.nameLabel.Text = string.format("%s [%dm]", data.displayName, dist) else data.nameLabel.Text = data.displayName end data.nameLabel.Visible = espShowNames local hpPercent = math.clamp(hum.Health / math.max(hum.MaxHealth, 1), 0, 1) data.healthFill.Size = UDim2.new(hpPercent, 0, 1, 0) if hpPercent > 0.5 then data.healthFill.BackgroundColor3 = Color3.fromRGB(46, 204, 113) elseif hpPercent > 0.25 then data.healthFill.BackgroundColor3 = Color3.fromRGB(241, 196, 15) else data.healthFill.BackgroundColor3 = Color3.fromRGB(231, 76, 60) end data.healthBg.Visible = espShowHealth local weapon = getWeaponName(char) if weapon then data.weaponLabel.Text = "[" .. weapon .. "]" if weapon:find("Revolver") or weapon:find("Gun") then data.weaponLabel.TextColor3 = Color3.fromRGB(230, 126, 34) else data.weaponLabel.TextColor3 = Color3.fromRGB(52, 152, 219) end data.weaponLabel.Visible = espShowWeapon else data.weaponLabel.Visible = false end end end end end -- 2. Scan Bots / Dummies in workspace.Characters if espTargetBots and workspace:FindFirstChild("Characters") then for _, m in ipairs(workspace.Characters:GetChildren()) do if m:IsA("Model") and m ~= LocalPlayer.Character then local hum = m:FindFirstChildOfClass("Humanoid") local head = m:FindFirstChild("Head") or m:FindFirstChild("HumanoidRootPart") if hum and hum.Health > 0 and head and head:IsDescendantOf(workspace) and hum:GetState() ~= Enum.HumanoidStateType.Dead then activeModels[m] = true if not espCache[m] then createEspForModel(m, true, m.Name) end local data = espCache[m] if data then data.highlight.Enabled = true data.billboard.Enabled = true data.highlight.FillColor = espFillColor data.highlight.FillTransparency = espFillTransparency data.highlight.OutlineColor = espOutlineColor data.highlight.OutlineTransparency = espOutlineTransparency local dist = math.floor((head.Position - camPos).Magnitude) if espShowDistance then data.nameLabel.Text = string.format("%s [%dm]", m.Name, dist) else data.nameLabel.Text = m.Name end data.nameLabel.Visible = espShowNames local hpPercent = math.clamp(hum.Health / math.max(hum.MaxHealth, 1), 0, 1) data.healthFill.Size = UDim2.new(hpPercent, 0, 1, 0) data.healthBg.Visible = espShowHealth local weapon = getWeaponName(m) if weapon then data.weaponLabel.Text = "[" .. weapon .. "]" data.weaponLabel.Visible = espShowWeapon else data.weaponLabel.Visible = false end end end end end end -- 3. Cleanup dead or despawned models for m, _ in pairs(espCache) do if not activeModels[m] then removeEspForModel(m) end end end task.spawn(function() while isAlive do task.wait(0.12) pcall(updateEsp) end end) -- ==================== 8. UI BUILDER WITH LOCALIZATION ==================== local buildMenu buildMenu = function() local Window = Library:CreateWindow({ Title = T("Title"), Center = true, AutoShow = true, TabPadding = 8, MenuFadeTime = 0.2 }) local Tabs = { Rage = Window:AddTab(T("Rage")), Legit = Window:AddTab(T("Legit")), Visuals = Window:AddTab(T("Visuals")), Movement = Window:AddTab(T("Movement")), ["UI Settings"] = Window:AddTab(T("Settings")), } -- 1. RAGE TAB local LeftRage = Tabs.Rage:AddLeftGroupbox(T("SilentAimbot")) local AutoPeekBox = Tabs.Rage:AddLeftGroupbox(T("AutoPeek")) local RightAA = Tabs.Rage:AddRightGroupbox(T("AnglesDesync")) local TargetBox = Tabs.Rage:AddRightGroupbox(T("TargetFilters")) -- Left Column: Silent Aim + Silent Auto-Shot (Triggerbot) LeftRage:AddToggle("SilentAim", { Text = T("EnableSilentAim"), Default = silentAimEnabled, Tooltip = T("SilentAimDesc"), Callback = function(Value) silentAimEnabled = Value end }):AddKeyPicker("SilentAimKey", { Default = "MB2", SyncToggleState = true, Mode = "Toggle", Text = "Silent Aim Keybind", NoUI = false, }) LeftRage:AddDropdown("SilentActivation", { Values = { "Always On", "Hold Keybind" }, Default = silentAimMode == "HoldKey" and 2 or 1, Multi = false, Text = T("ActivationMode"), Callback = function(Value) silentAimMode = (Value == "Hold Keybind" or Value:find("Hold")) and "HoldKey" or "AlwaysOn" end }) LeftRage:AddDivider() -- Silent Auto-Fire (Triggerbot) LeftRage:AddToggle("SilentAutoFire", { Text = T("SilentAutoFire"), Default = silentAutoFire, Tooltip = T("SilentAutoFireDesc"), Callback = function(Value) silentAutoFire = Value end }) LeftRage:AddSlider("AutoFireDelay", { Text = T("AutoFireDelay"), Default = math.floor(silentAutoFireDelay * 100), Min = 10, Max = 100, Rounding = 0, Compact = false, Callback = function(Value) silentAutoFireDelay = Value / 100 end }) LeftRage:AddToggle("MuzzleCheck", { Text = T("MuzzleCheck"), Default = muzzleCheckEnabled, Tooltip = T("MuzzleCheckDesc"), Callback = function(Value) muzzleCheckEnabled = Value end }) LeftRage:AddDivider() LeftRage:AddToggle("WallCheck", { Text = T("WallCheck"), Default = wallCheckEnabled, Tooltip = T("WallCheckDesc"), Callback = function(Value) wallCheckEnabled = Value end }) LeftRage:AddToggle("TeamCheck", { Text = T("TeamCheck"), Default = teamCheckEnabled, Tooltip = T("TeamCheckDesc"), Callback = function(Value) teamCheckEnabled = Value end }) LeftRage:AddToggle("Prediction", { Text = T("Prediction"), Default = predictionEnabled, Tooltip = T("PredictionDesc"), Callback = function(Value) predictionEnabled = Value end }) LeftRage:AddSlider("ProjSpeed", { Text = T("ProjSpeed"), Default = projectileSpeed, Min = 60, Max = 450, Rounding = 0, Compact = false, Callback = function(Value) projectileSpeed = Value end }) -- Auto-Peek Groupbox (Peek Assist) AutoPeekBox:AddToggle("AutoPeek", { Text = T("EnableAutoPeek"), Default = autoPeekEnabled, Tooltip = T("AutoPeekDesc"), Callback = function(Value) autoPeekEnabled = Value if not Value and autoPeekAnchor then autoPeekAnchor = nil autoPeekState = "IDLE" updateAutoPeekVisual() end end }):AddKeyPicker("AutoPeekKey", { Default = "C", SyncToggleState = false, Mode = "Hold", Text = "Auto-Peek Key", NoUI = false, }) AutoPeekBox:AddToggle("AutoPeekMarker", { Text = T("AutoPeekMarker"), Default = autoPeekShowMarker, Tooltip = T("AutoPeekMarkerDesc"), Callback = function(Value) autoPeekShowMarker = Value updateAutoPeekVisual() end }):AddColorPicker("AutoPeekColor", { Default = autoPeekColor, Title = "Marker Color", Callback = function(Value) autoPeekColor = Value if autoPeekVisual then autoPeekVisual.Color = Value end end }) AutoPeekBox:AddSlider("AutoPeekSpeed", { Text = T("AutoPeekSpeed"), Default = math.floor(autoPeekReturnSpeed), Min = 2, Max = 8, Rounding = 0, Compact = false, Callback = function(Value) autoPeekReturnSpeed = Value end }) -- Right Column: Anti-Aim RightAA:AddToggle("EnableAA", { Text = T("EnableAA"), Default = aaEnabled, Tooltip = T("AADesc"), Callback = function(Value) aaEnabled = Value if not Value then resetAntiAim() end end }):AddKeyPicker("AAKey", { Default = "X", SyncToggleState = true, Mode = "Toggle", Text = "Toggle Anti-Aim", NoUI = false, }) RightAA:AddDropdown("YawMode", { Values = { "Spinbot", "Jitter (180 Flip)", "Jitter (Custom Angle)", "Random Jitter", "Backward (180)", "Sideways (90)", "Sway (Sinusoid)" }, Default = 1, Multi = false, Text = T("YawMode"), Callback = function(Value) aaYawMode = Value end }) RightAA:AddDropdown("PitchMode", { Values = { "Down (Head Roll)", "Up (Sky)", "Jitter Pitch", "Zero" }, Default = 1, Multi = false, Text = T("PitchMode"), Callback = function(Value) aaPitchMode = Value if Value == "Zero" then local _, _, _, rj = getCharParts() if rj then rj.C0 = defaultRjC0 end end end }) RightAA:AddSlider("SpinSpeed", { Text = T("SpinSpeed"), Default = spinSpeed, Min = 5, Max = 75, Rounding = 0, Compact = false, Callback = function(Value) spinSpeed = Value end }) RightAA:AddSlider("PitchAngle", { Text = T("PitchAngle"), Default = pitchAngle, Min = -85, Max = 85, Rounding = 0, Compact = false, Callback = function(Value) pitchAngle = Value end }) RightAA:AddSlider("JitterAngle", { Text = T("JitterAngle"), Default = jitterAngle, Min = 30, Max = 180, Rounding = 0, Compact = false, Callback = function(Value) jitterAngle = Value end }) RightAA:AddSlider("SwayFreq", { Text = T("SwayFreq"), Default = swayFreq, Min = 2, Max = 20, Rounding = 0, Compact = false, Callback = function(Value) swayFreq = Value end }) -- Right Column: Target Filters & FOV TargetBox:AddToggle("TargetPlayers", { Text = T("TargetPlayers"), Default = targetPlayers, Callback = function(Value) targetPlayers = Value refreshTargetCache() end }) TargetBox:AddToggle("TargetNoobs", { Text = T("TargetNoobs"), Default = targetNoobs, Callback = function(Value) targetNoobs = Value refreshTargetCache() end }) TargetBox:AddToggle("TargetBullseyes", { Text = T("TargetBullseyes"), Default = targetTargets, Callback = function(Value) targetTargets = Value refreshTargetCache() end }) TargetBox:AddDropdown("TargetPart", { Values = { "Head", "Torso", "HumanoidRootPart" }, Default = targetPartMode == "Head" and 1 or (targetPartMode == "Torso" and 2 or 3), Multi = false, Text = T("HitboxPriority"), Callback = function(Value) targetPartMode = Value end }) TargetBox:AddDivider() TargetBox:AddToggle("ShowFOV", { Text = T("DrawFOV"), Default = showFovCircle, Callback = function(Value) showFovCircle = Value end }):AddColorPicker("FOVColor", { Default = Color3.fromRGB(255, 75, 75), Title = "FOV Color", Callback = function(Value) if fovCircle then fovCircle.Color = Value end end }) TargetBox:AddSlider("FOVRadius", { Text = T("FOVRadius"), Default = fovRadius, Min = 30, Max = 450, Rounding = 0, Compact = false, Callback = function(Value) fovRadius = Value end }) -- 2. LEGIT TAB local LeftLegit = Tabs.Legit:AddLeftGroupbox(T("LegitAimbot")) local RightLegit = Tabs.Legit:AddRightGroupbox(T("LegitTriggerbot")) LeftLegit:AddToggle("LegitAim", { Text = T("EnableLegitAim"), Default = legitAimEnabled, Tooltip = T("LegitAimDesc"), Callback = function(Value) legitAimEnabled = Value end }):AddKeyPicker("LegitAimKey", { Default = "MB2", SyncToggleState = true, Mode = "Hold", Text = "Legit Aim Key", NoUI = false, }) LeftLegit:AddDropdown("LegitAimMode", { Values = { "Hold Keybind", "Always On" }, Default = legitAimMode == "AlwaysOn" and 2 or 1, Multi = false, Text = T("ActivationMode"), Callback = function(Value) legitAimMode = (Value:find("Always") or Value == "Always On") and "AlwaysOn" or "HoldKey" end }) LeftLegit:AddSlider("LegitSmoothness", { Text = T("LegitSmoothness"), Default = legitSmoothness, Min = 1, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) legitSmoothness = Value end }) LeftLegit:AddSlider("LegitFOV", { Text = T("LegitFOV"), Default = legitFovRadius, Min = 20, Max = 250, Rounding = 0, Compact = false, Callback = function(Value) legitFovRadius = Value if legitFovCircle then legitFovCircle.Radius = Value end end }) LeftLegit:AddToggle("DrawLegitFOV", { Text = T("DrawLegitFOV"), Default = legitShowFov, Callback = function(Value) legitShowFov = Value end }):AddColorPicker("LegitFOVColor", { Default = Color3.fromRGB(60, 180, 255), Title = "Legit FOV Color", Callback = function(Value) if legitFovCircle then legitFovCircle.Color = Value end end }) LeftLegit:AddDropdown("LegitHitbox", { Values = { "Head", "Torso", "HumanoidRootPart" }, Default = legitHitbox == "Head" and 1 or (legitHitbox == "Torso" and 2 or 3), Multi = false, Text = T("LegitHitbox"), Callback = function(Value) legitHitbox = Value end }) LeftLegit:AddToggle("LegitWallCheck", { Text = T("LegitWallCheck"), Default = legitWallCheck, Callback = function(Value) legitWallCheck = Value end }) -- Right Legit: Legit Triggerbot RightLegit:AddToggle("LegitTrigger", { Text = T("EnableLegitTrigger"), Default = legitTriggerEnabled, Tooltip = T("LegitTriggerDesc"), Callback = function(Value) legitTriggerEnabled = Value end }):AddKeyPicker("LegitTriggerKey", { Default = "None", SyncToggleState = true, Mode = "Toggle", Text = "Trigger Key", NoUI = false, }) RightLegit:AddSlider("ReactionDelay", { Text = T("ReactionDelay"), Default = math.floor(legitTriggerDelay * 1000), Min = 50, Max = 400, Rounding = 0, Compact = false, Callback = function(Value) legitTriggerDelay = Value / 1000 end }) RightLegit:AddToggle("LegitTriggerTeamCheck", { Text = T("TeamCheck"), Default = legitTriggerTeamCheck, Callback = function(Value) legitTriggerTeamCheck = Value end }) -- 3. MOVEMENT TAB local LeftMove = Tabs.Movement:AddLeftGroupbox(T("BhopStrafes")) local RightMove = Tabs.Movement:AddRightGroupbox(T("MovementBoost")) LeftMove:AddToggle("Bhop", { Text = T("Bhop"), Default = bhopEnabled, Tooltip = T("BhopDesc"), Callback = function(Value) bhopEnabled = Value end }) LeftMove:AddToggle("AirStrafes", { Text = T("AirStrafes"), Default = instantStrafes, Tooltip = T("AirStrafesDesc"), Callback = function(Value) instantStrafes = Value end }) LeftMove:AddSlider("BhopSpeed", { Text = T("BhopSpeed"), Default = bhopSpeed, Min = 23, Max = 150, Rounding = 0, Compact = false, Callback = function(Value) bhopSpeed = Value end }) RightMove:AddToggle("InfJump", { Text = T("InfJump"), Default = infiniteJump, Tooltip = T("InfJumpDesc"), Callback = function(Value) infiniteJump = Value end }) RightMove:AddSlider("WalkSpeed", { Text = T("WalkSpeed"), Default = 23, Min = 23, Max = 150, Rounding = 0, Compact = false, Callback = function(Value) local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = Value end end }) -- 4. VISUALS TAB local LeftVis = Tabs.Visuals:AddLeftGroupbox(T("ThirdPersonCam")) local AmbienceBox = Tabs.Visuals:AddLeftGroupbox(T("AmbienceWorld")) local CrosshairBox = Tabs.Visuals:AddLeftGroupbox(T("CrosshairVisuals")) local ViewmodelBox = Tabs.Visuals:AddLeftGroupbox(T("ViewmodelChams")) local RightVis = Tabs.Visuals:AddRightGroupbox(T("ESPWorld")) local DrawingBox = Tabs.Visuals:AddRightGroupbox(T("DrawingVisuals")) local TracerBox = Tabs.Visuals:AddRightGroupbox(T("BulletTracers")) -- Left Visuals: Third Person LeftVis:AddToggle("ThirdPerson", { Text = T("EnableTP"), Default = thirdPersonEnabled, Tooltip = T("TPDesc"), Callback = function(Value) thirdPersonEnabled = Value applyNativeCamera() end }):AddKeyPicker("TPKey", { Default = "V", SyncToggleState = true, Mode = "Toggle", Text = "Toggle 3rd Person", NoUI = false, }) LeftVis:AddSlider("CamDist", { Text = T("CamDist"), Default = cameraDistance, Min = 5, Max = 30, Rounding = 0, Compact = false, Callback = function(Value) cameraDistance = Value applyNativeCamera() end }) LeftVis:AddSlider("ShoulderX", { Text = T("ShoulderX"), Default = shoulderOffset, Min = -3, Max = 3, Rounding = 1, Compact = false, Callback = function(Value) shoulderOffset = Value applyNativeCamera() end }) LeftVis:AddSlider("HeightY", { Text = T("HeightY"), Default = heightOffset, Min = -1, Max = 4, Rounding = 1, Compact = false, Callback = function(Value) heightOffset = Value applyNativeCamera() end }) LeftVis:AddSlider("FOV", { Text = T("FOV"), Default = customFOV, Min = 70, Max = 120, Rounding = 0, Compact = false, Callback = function(Value) customFOV = Value workspace.CurrentCamera.FieldOfView = Value end }) -- Left Visuals: Custom Ambience & Lighting AmbienceBox:AddToggle("CustomAmbience", { Text = T("EnableAmbience"), Default = customAmbienceEnabled, Tooltip = T("AmbienceDesc"), Callback = function(Value) customAmbienceEnabled = Value applyAmbience() end }) AmbienceBox:AddDropdown("AmbiencePreset", { Values = { "Purple Night", "Sunset", "Blood Moon", "Cyberpunk", "Midnight", "Toxic Green" }, Default = 1, Multi = false, Text = T("AmbiencePreset"), Callback = function(Value) local p = ambiencePresets[Value] if p then customClockTime = p.ClockTime customAmbientColor = p.Ambient customOutdoorAmbientColor = p.OutdoorAmbient customFogColor = p.FogColor customFogDistance = p.FogEnd customTintColor = p.Tint customSaturation = p.Saturation applyAmbience() end end }) AmbienceBox:AddSlider("AmbienceClockTime", { Text = T("ClockTime"), Default = customClockTime, Min = 0, Max = 24, Rounding = 1, Compact = false, Callback = function(Value) customClockTime = Value if customAmbienceEnabled then Lighting.ClockTime = Value end end }) AmbienceBox:AddSlider("AmbienceFogDist", { Text = T("FogDist"), Default = customFogDistance, Min = 100, Max = 3000, Rounding = 0, Compact = false, Callback = function(Value) customFogDistance = Value if customAmbienceEnabled then Lighting.FogEnd = Value end end }) AmbienceBox:AddSlider("AmbienceSaturation", { Text = T("Saturation"), Default = math.floor(customSaturation * 10), Min = -10, Max = 15, Rounding = 0, Compact = false, Callback = function(Value) customSaturation = Value / 10 if customAmbienceEnabled and colorCorrection then colorCorrection.Saturation = Value / 10 end end }) AmbienceBox:AddLabel(T("AmbientColor")):AddColorPicker("AmbientCol", { Default = customAmbientColor, Title = "Ambient Color", Callback = function(Value) customAmbientColor = Value if customAmbienceEnabled then Lighting.Ambient = Value end end }) AmbienceBox:AddLabel(T("OutdoorColor")):AddColorPicker("OutdoorCol", { Default = customOutdoorAmbientColor, Title = "Outdoor Ambient", Callback = function(Value) customOutdoorAmbientColor = Value if customAmbienceEnabled then Lighting.OutdoorAmbient = Value end end }) AmbienceBox:AddLabel(T("FogColor")):AddColorPicker("FogCol", { Default = customFogColor, Title = "Fog Color", Callback = function(Value) customFogColor = Value if customAmbienceEnabled then Lighting.FogColor = Value if atmosphere then atmosphere.Color = Value end end end }) -- Left Visuals: Custom CS Crosshair CrosshairBox:AddToggle("EnableCrosshair", { Text = T("EnableCrosshair"), Default = customCrosshairEnabled, Callback = function(Value) customCrosshairEnabled = Value end }):AddColorPicker("CrosshairColor", { Default = crosshairColor, Title = "Crosshair Color", Callback = function(Value) crosshairColor = Value end }) CrosshairBox:AddSlider("CrosshairSize", { Text = T("CrosshairSize"), Default = crosshairSize, Min = 2, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) crosshairSize = Value end }) CrosshairBox:AddSlider("CrosshairGap", { Text = T("CrosshairGap"), Default = crosshairGap, Min = 0, Max = 15, Rounding = 0, Compact = false, Callback = function(Value) crosshairGap = Value end }) CrosshairBox:AddSlider("CrosshairThickness", { Text = T("CrosshairThickness"), Default = math.floor(crosshairThickness * 10), Min = 10, Max = 40, Rounding = 0, Compact = false, Callback = function(Value) crosshairThickness = Value / 10 end }) CrosshairBox:AddToggle("CrosshairDot", { Text = T("CrosshairDot"), Default = crosshairDotEnabled, Callback = function(Value) crosshairDotEnabled = Value end }) -- Left Visuals: Viewmodel & Weapon Chams ViewmodelBox:AddToggle("WeaponChams", { Text = T("EnableWeaponChams"), Default = weaponChamsEnabled, Tooltip = T("WeaponChamsDesc"), Callback = function(Value) weaponChamsEnabled = Value applyWeaponChams() end }):AddColorPicker("WeaponChamsColor", { Default = weaponChamsColor, Title = T("WeaponColor"), Callback = function(Value) weaponChamsColor = Value if weaponChamsEnabled then applyWeaponChams() end end }) ViewmodelBox:AddToggle("WeaponChamsRainbow", { Text = T("WeaponRainbow"), Default = weaponChamsRainbow, Callback = function(Value) weaponChamsRainbow = Value if not Value and weaponChamsEnabled then applyWeaponChams() end end }) ViewmodelBox:AddDropdown("WeaponMaterial", { Values = { "ForceField", "Neon", "Glass", "Foil", "SmoothPlastic", "Metal" }, Default = 1, Multi = false, Text = T("WeaponMaterial"), Callback = function(Value) weaponChamsMaterial = Value if weaponChamsEnabled then applyWeaponChams() end end }) ViewmodelBox:AddSlider("WeaponTransp", { Text = T("WeaponTransparency"), Default = math.floor(weaponChamsTransparency * 100), Min = 0, Max = 95, Rounding = 0, Compact = false, Callback = function(Value) weaponChamsTransparency = Value / 100 if weaponChamsEnabled then applyWeaponChams() end end }) ViewmodelBox:AddToggle("WeaponRemoveTex", { Text = T("RemoveTextures"), Default = weaponRemoveTextures, Tooltip = T("RemoveTexturesDesc"), Callback = function(Value) weaponRemoveTextures = Value if weaponChamsEnabled then applyWeaponChams() end end }) ViewmodelBox:AddToggle("ArmChams", { Text = T("EnableArmChams"), Default = armChamsEnabled, Tooltip = T("ArmChamsDesc"), Callback = function(Value) armChamsEnabled = Value applyArmChams() end }):AddColorPicker("ArmChamsColor", { Default = armChamsColor, Title = T("ArmColor"), Callback = function(Value) armChamsColor = Value if armChamsEnabled then applyArmChams() end end }) ViewmodelBox:AddToggle("ArmChamsRainbow", { Text = T("ArmRainbow"), Default = armChamsRainbow, Callback = function(Value) armChamsRainbow = Value if not Value and armChamsEnabled then applyArmChams() end end }) ViewmodelBox:AddDropdown("ArmMaterial", { Values = { "ForceField", "Neon", "Glass", "SmoothPlastic" }, Default = 1, Multi = false, Text = T("ArmMaterial"), Callback = function(Value) armChamsMaterial = Value if armChamsEnabled then applyArmChams() end end }) ViewmodelBox:AddSlider("ArmTransp", { Text = T("ArmTransparency"), Default = math.floor(armChamsTransparency * 100), Min = 0, Max = 95, Rounding = 0, Compact = false, Callback = function(Value) armChamsTransparency = Value / 100 if armChamsEnabled then applyArmChams() end end }) ViewmodelBox:AddToggle("ViewmodelOffset", { Text = T("EnableViewmodel"), Default = vmOffsetEnabled, Tooltip = T("ViewmodelDesc"), Callback = function(Value) vmOffsetEnabled = Value if Value then updateViewmodelOffset() else resetViewmodelOffset() end end }) ViewmodelBox:AddDropdown("ViewmodelPreset", { Values = { "Custom", "Default", "CS:GO Classic", "Lowered (Minimal)", "Gangsta (90° Tilt)", "Center / Doom" }, Default = 1, Multi = false, Text = T("ViewmodelPreset"), Callback = function(Value) if Value == "Default" then if Options.ViewmodelX then Options.ViewmodelX:SetValue(0) end if Options.ViewmodelY then Options.ViewmodelY:SetValue(0) end if Options.ViewmodelZ then Options.ViewmodelZ:SetValue(0) end if Options.ViewmodelRoll then Options.ViewmodelRoll:SetValue(0) end if Options.ViewmodelPitch then Options.ViewmodelPitch:SetValue(0) end elseif Value == "CS:GO Classic" then if Options.ViewmodelX then Options.ViewmodelX:SetValue(35) end if Options.ViewmodelY then Options.ViewmodelY:SetValue(-25) end if Options.ViewmodelZ then Options.ViewmodelZ:SetValue(-40) end if Options.ViewmodelRoll then Options.ViewmodelRoll:SetValue(0) end if Options.ViewmodelPitch then Options.ViewmodelPitch:SetValue(0) end elseif Value == "Lowered (Minimal)" then if Options.ViewmodelX then Options.ViewmodelX:SetValue(0) end if Options.ViewmodelY then Options.ViewmodelY:SetValue(-70) end if Options.ViewmodelZ then Options.ViewmodelZ:SetValue(-20) end if Options.ViewmodelRoll then Options.ViewmodelRoll:SetValue(0) end if Options.ViewmodelPitch then Options.ViewmodelPitch:SetValue(0) end elseif Value == "Gangsta (90° Tilt)" then if Options.ViewmodelX then Options.ViewmodelX:SetValue(30) end if Options.ViewmodelY then Options.ViewmodelY:SetValue(-15) end if Options.ViewmodelZ then Options.ViewmodelZ:SetValue(-20) end if Options.ViewmodelRoll then Options.ViewmodelRoll:SetValue(-75) end if Options.ViewmodelPitch then Options.ViewmodelPitch:SetValue(0) end elseif Value == "Center / Doom" then if Options.ViewmodelX then Options.ViewmodelX:SetValue(-45) end if Options.ViewmodelY then Options.ViewmodelY:SetValue(-40) end if Options.ViewmodelZ then Options.ViewmodelZ:SetValue(-30) end if Options.ViewmodelRoll then Options.ViewmodelRoll:SetValue(0) end if Options.ViewmodelPitch then Options.ViewmodelPitch:SetValue(0) end end end }) ViewmodelBox:AddSlider("ViewmodelX", { Text = T("ViewmodelX"), Default = 0, Min = -200, Max = 200, Rounding = 0, Compact = false, Callback = function(Value) vmOffsetX = Value / 100 if vmOffsetEnabled then updateViewmodelOffset() end end }) ViewmodelBox:AddSlider("ViewmodelY", { Text = T("ViewmodelY"), Default = 0, Min = -200, Max = 200, Rounding = 0, Compact = false, Callback = function(Value) vmOffsetY = Value / 100 if vmOffsetEnabled then updateViewmodelOffset() end end }) ViewmodelBox:AddSlider("ViewmodelZ", { Text = T("ViewmodelZ"), Default = 0, Min = -200, Max = 200, Rounding = 0, Compact = false, Callback = function(Value) vmOffsetZ = Value / 100 if vmOffsetEnabled then updateViewmodelOffset() end end }) ViewmodelBox:AddSlider("ViewmodelRoll", { Text = T("ViewmodelRoll"), Default = 0, Min = -180, Max = 180, Rounding = 0, Compact = false, Callback = function(Value) vmRoll = Value if vmOffsetEnabled then updateViewmodelOffset() end end }) ViewmodelBox:AddSlider("ViewmodelPitch", { Text = T("ViewmodelPitch"), Default = 0, Min = -90, Max = 90, Rounding = 0, Compact = false, Callback = function(Value) vmPitch = Value if vmOffsetEnabled then updateViewmodelOffset() end end }) -- Right Visuals: Advanced ESP / Chams RightVis:AddToggle("ESP", { Text = T("EnableESP"), Default = espEnabled, Tooltip = T("ESPDesc"), Callback = function(Value) espEnabled = Value pcall(updateEsp) end }):AddColorPicker("ESPColor", { Default = espFillColor, Title = "ESP Color", Callback = function(Value) espFillColor = Value for _, d in pairs(espCache) do if d.highlight then d.highlight.FillColor = Value end end end }) RightVis:AddToggle("ESPNames", { Text = T("ESPNames"), Default = espShowNames, Tooltip = T("ESPNamesDesc"), Callback = function(Value) espShowNames = Value espShowDistance = Value for _, d in pairs(espCache) do if d.nameLabel then d.nameLabel.Visible = Value end end end }) RightVis:AddToggle("ESPHealth", { Text = T("ESPHealth"), Default = espShowHealth, Tooltip = T("ESPHealthDesc"), Callback = function(Value) espShowHealth = Value for _, d in pairs(espCache) do if d.healthBg then d.healthBg.Visible = Value end end end }) RightVis:AddToggle("ESPWeapon", { Text = T("ESPWeapon"), Default = espShowWeapon, Tooltip = T("ESPWeaponDesc"), Callback = function(Value) espShowWeapon = Value end }) RightVis:AddToggle("ESPBots", { Text = T("ESPBots"), Default = espTargetBots, Callback = function(Value) espTargetBots = Value end }) RightVis:AddSlider("ESPTransp", { Text = T("ChamsTransp"), Default = math.floor(espFillTransparency * 10), Min = 0, Max = 10, Rounding = 0, Compact = false, Callback = function(Value) espFillTransparency = Value / 10 for _, d in pairs(espCache) do if d.highlight then d.highlight.FillTransparency = Value / 10 end end end }) RightVis:AddDivider() RightVis:AddToggle("Fullbright", { Text = T("Fullbright"), Default = fullbrightEnabled, Tooltip = T("FullbrightDesc"), Callback = function(Value) fullbrightEnabled = Value if Value then Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.FogEnd = 100000 Lighting.GlobalShadows = false else Lighting.Brightness = originalBrightness Lighting.ClockTime = originalClockTime Lighting.FogEnd = originalFogEnd Lighting.GlobalShadows = originalGlobalShadows end end }) -- Right Visuals: 2D Box ESP, Snaplines, Head Dots, Target Tracer DrawingBox:AddToggle("BoxESP", { Text = T("BoxESP"), Default = boxEspEnabled, Tooltip = T("BoxESPDesc"), Callback = function(Value) boxEspEnabled = Value if not Value then for _, d in pairs(drawingCache) do if d.box then d.box.Visible = false end end end end }):AddColorPicker("BoxColor", { Default = boxColor, Title = "Box Color", Callback = function(Value) boxColor = Value end }) DrawingBox:AddToggle("Snaplines", { Text = T("Snaplines"), Default = snaplinesEnabled, Tooltip = T("SnaplinesDesc"), Callback = function(Value) snaplinesEnabled = Value if not Value then for _, d in pairs(drawingCache) do if d.line then d.line.Visible = false end end end end }):AddColorPicker("SnaplinesColor", { Default = snaplinesColor, Title = "Snaplines Color", Callback = function(Value) snaplinesColor = Value end }) DrawingBox:AddDropdown("TracerOrigin", { Values = { "Bottom", "Center" }, Default = 1, Multi = false, Text = T("TracerOrigin"), Callback = function(Value) snaplinesOrigin = Value end }) DrawingBox:AddToggle("HeadDots", { Text = T("HeadDots"), Default = headDotsEnabled, Tooltip = T("HeadDotsDesc"), Callback = function(Value) headDotsEnabled = Value if not Value then for _, d in pairs(drawingCache) do if d.dot then d.dot.Visible = false end end end end }):AddColorPicker("HeadDotsColor", { Default = headDotsColor, Title = "Head Dots Color", Callback = function(Value) headDotsColor = Value end }) DrawingBox:AddToggle("TargetLine", { Text = T("TargetLine"), Default = targetLineEnabled, Tooltip = T("TargetLineDesc"), Callback = function(Value) targetLineEnabled = Value if not Value and targetLine then targetLine.Visible = false end end }):AddColorPicker("TargetLineColor", { Default = targetLineColor, Title = "Target Line Color", Callback = function(Value) targetLineColor = Value end }) -- Right Visuals: Bullet Tracers (Hit Tracers) TracerBox:AddToggle("BulletTracers", { Text = T("EnableTracers"), Default = bulletTracersEnabled, Tooltip = T("TracersDesc"), Callback = function(Value) bulletTracersEnabled = Value end }):AddColorPicker("TracerCol", { Default = tracerColor, Title = "Tracer Color", Callback = function(Value) tracerColor = Value end }) TracerBox:AddToggle("TracerImpact", { Text = T("ShowImpact"), Default = tracerShowImpact, Tooltip = T("ShowImpactDesc"), Callback = function(Value) tracerShowImpact = Value end }):AddColorPicker("ImpactCol", { Default = tracerImpactColor, Title = "Impact Color", Callback = function(Value) tracerImpactColor = Value end }) TracerBox:AddSlider("TracerDur", { Text = T("TracerDuration"), Default = math.floor(tracerDuration * 10), Min = 2, Max = 30, Rounding = 0, Compact = false, Callback = function(Value) tracerDuration = Value / 10 end }) TracerBox:AddSlider("TracerThick", { Text = T("TracerThickness"), Default = math.floor(tracerThickness * 100), Min = 5, Max = 40, Rounding = 0, Compact = false, Callback = function(Value) tracerThickness = Value / 100 end }) -- 5. SETTINGS TAB (Separated into Left and Right columns + Config & Theme Manager) local LeftSettings = Tabs["UI Settings"]:AddLeftGroupbox(T("LanguageSettings")) local RightSettings = Tabs["UI Settings"]:AddRightGroupbox(T("UnloadGroup")) LeftSettings:AddDropdown("Language", { Values = { "Русский (RU)", "English (EN)" }, Default = currentLang == "RU" and 1 or 2, Multi = false, Text = T("Language"), Callback = function(Value) local newLang = Value:find("RU") and "RU" or "EN" if newLang ~= currentLang then currentLang = newLang _G.MD_SelectedLanguage = newLang task.defer(function() Library:Unload() buildMenu() end) end end }) LeftSettings:AddDivider() -- Menu Keybind controls local currentKeyName = (_G.MD_MenuToggleKey and _G.MD_MenuToggleKey.Name) or "RightControl" menuKeyLabelRef = LeftSettings:AddLabel(T("MenuKey") .. ": [" .. currentKeyName .. "]") LeftSettings:AddDropdown("QuickMenuKey", { Values = { "RightControl", "Insert", "RightShift", "LeftAlt", "F1", "F4", "Delete", "P", "L" }, Default = (function() local cur = (_G.MD_MenuToggleKey and _G.MD_MenuToggleKey.Name) or "RightControl" local vals = { "RightControl", "Insert", "RightShift", "LeftAlt", "F1", "F4", "Delete", "P", "L" } for i, v in ipairs(vals) do if v == cur then return i end end return 1 end)(), Multi = false, Text = T("QuickKeySelect"), Callback = function(Value) local kc = Enum.KeyCode[Value] if kc then _G.MD_MenuToggleKey = kc if menuKeyLabelRef then menuKeyLabelRef:SetText(T("MenuKey") .. ": [" .. Value .. "]") end Library:Notify(T("KeybindUpdated") .. ": " .. Value, 3) end end }) LeftSettings:AddButton(T("ChangeMenuKey"), function() isListeningForMenuKey = true if menuKeyLabelRef then menuKeyLabelRef:SetText(T("MenuKey") .. ": [" .. T("PressAnyKey") .. "]") end Library:Notify(T("PressAnyKey"), 3) end) RightSettings:AddButton(T("Unload"), function() if _G.MurderDuelsCleanup then _G.MurderDuelsCleanup() end end) -- Integrate ThemeManager and SaveManager on UI Settings Tab pcall(function() ThemeManager:SetLibrary(Library) SaveManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() SaveManager:SetIgnoreIndexes({ "MenuKey", "QuickMenuKey", "Language" }) ThemeManager:SetFolder("MurderDuelsSkeet") SaveManager:SetFolder("MurderDuelsSkeet") SaveManager:BuildConfigSection(Tabs["UI Settings"]) ThemeManager:ApplyToTab(Tabs["UI Settings"]) pcall(function() SaveManager:LoadAutoloadConfig() end) end) Library:SetWatermark(string.format("Murder Duels | Skeet Edition | %s | [%s]", currentLang, (_G.MD_MenuToggleKey and _G.MD_MenuToggleKey.Name) or "RightControl")) Library:SetWatermarkVisibility(true) end -- ==================== 9. GLOBAL KEYBIND LISTENER ==================== table.insert(Connections, UserInputService.InputBegan:Connect(function(input, gpe) if isListeningForMenuKey then if input.UserInputType == Enum.UserInputType.Keyboard then _G.MD_MenuToggleKey = input.KeyCode isListeningForMenuKey = false if menuKeyLabelRef then menuKeyLabelRef:SetText(T("MenuKey") .. ": [" .. input.KeyCode.Name .. "]") end Library:SetWatermark(string.format("Murder Duels | Skeet Edition | %s | [%s]", currentLang, input.KeyCode.Name)) Library:Notify(T("KeybindUpdated") .. ": " .. input.KeyCode.Name, 3) end return end if input.UserInputType == Enum.UserInputType.Keyboard then local targetKey = _G.MD_MenuToggleKey or Enum.KeyCode.RightControl if input.KeyCode == targetKey then Library:Toggle() end end end)) -- Initialize Menu buildMenu() -- Cleanup Handler _G.MD_Running = true _G.MurderDuelsCleanup = function() isAlive = false _G.MD_Running = false LocalPlayer:SetAttribute("MouseUnlocked", nil) resetAntiAim() thirdPersonEnabled = false applyNativeCamera() customAmbienceEnabled = false applyAmbience() pcall(function() local rs = game:GetService("ReplicatedStorage") local revTiming = require(rs.Shared.RevolverTiming) local knifeTiming = require(rs.Shared.KnifeTiming) revTiming.SHOT_COOLDOWN = 2 revTiming.RELOAD_SOUND_FALLBACK = 0.8 knifeTiming.THROW_COOLDOWN = 0.3 knifeTiming.HOLD_TO_THROW_SEC = 0.2 knifeTiming.CHARGE_DUR = 0.5 end) if fovCircle then pcall(function() fovCircle:Remove() end) fovCircle = nil end if legitFovCircle then pcall(function() legitFovCircle:Remove() end) legitFovCircle = nil end if autoPeekVisual then pcall(function() autoPeekVisual:Destroy() end) autoPeekVisual = nil end autoPeekAnchor = nil autoPeekState = "IDLE" if targetLine then pcall(function() targetLine:Remove() end) targetLine = nil end for _, l in pairs(crosshairLines) do pcall(function() l:Remove() end) end crosshairLines = {} for _, d in pairs(drawingCache) do pcall(function() d.box:Remove() end) pcall(function() d.line:Remove() end) pcall(function() d.dot:Remove() end) end drawingCache = {} -- Cleanup active bullet tracers and markers from Camera and Bin for _, container in ipairs({ workspace.CurrentCamera, workspace:FindFirstChild("Bin") }) do if container then for _, child in ipairs(container:GetChildren()) do if child.Name == "MD_BulletTracer" or child.Name == "MD_ImpactDot" or child.Name == "MD_AutoPeekMarker" then pcall(function() child:Destroy() end) end end end end for _, conn in ipairs(Connections) do if conn and conn.Disconnect then conn:Disconnect() end end clearAllEsp() weaponChamsEnabled = false armChamsEnabled = false vmOffsetEnabled = false pcall(applyWeaponChams) pcall(applyArmChams) pcall(resetViewmodelOffset) if fullbrightEnabled then Lighting.Brightness = originalBrightness Lighting.ClockTime = originalClockTime Lighting.FogEnd = originalFogEnd Lighting.GlobalShadows = originalGlobalShadows end pcall(function() Library:Unload() end) _G.MurderDuelsCleanup = nil _G.MD_Unload = nil end _G.MD_Unload = _G.MurderDuelsCleanup Library:Notify(currentLang == "RU" and ("Murder Duels Skeet Hub загружен! [" .. ((_G.MD_MenuToggleKey and _G.MD_MenuToggleKey.Name) or "RightControl") .. "]") or ("Murder Duels Skeet Hub loaded! [" .. ((_G.MD_MenuToggleKey and _G.MD_MenuToggleKey.Name) or "RightControl") .. "]"), 5)