--[[ 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) - Client-Side Weapon Skin Changer: * Equips any revolver and knife skin in the game (82+ Knives, 62+ Revolvers) * Full 3D meshes, PBR SurfaceAppearance, particles, beams, glow and neon * Custom weapon animations (Equip, Shoot, Slash, Inspect) & sounds (Firing, Reload, Equip) * Auto-persists on round change and respawns ]] 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 -- Weapon timings & instant knife charging 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.01 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 = "Задержка выстрела (сек)", KnifeHoldDuration = "Зажатие ножа (сек)", KnifeHoldDurationDesc = "Сколько удерживать ЛКМ для броска ножа в триггерботе (сек)", MuzzleCheck = "Проверка дула револьвера (Muzzle Check)", MuzzleCheckDesc = "Стрелять только когда конец револьвера чисто видит цель (не стреляет в углы и стены)", WallCheck = "Строгая проверка стен (Wall Check)", WallCheckDesc = "Не стрелять если враг за стеной или препятствием", TeamCheck = "Проверка команды (Team Check)", TeamCheckDesc = "Не целиться в союзников", Prediction = "Упреждение движения (Prediction)", PredictionDesc = "Упреждение полета ножа/пули по скорости цели", ProjSpeed = "Скорость снаряда", MaxKnifePower = "Всегда макс. сила ножа (Always Max Power)", MaxKnifePowerDesc = "Нож всегда летит с максимальной скоростью и дальностью, даже при слабом броске", InstantKnifeCharge = "Мгновенный заряд ножа (Instant Charge)", InstantKnifeChargeDesc = "Прицел мгновенно сужается за 0.01 сек при замахе ножа", 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)", -- Auto-Win / Kill Aura AutoWinGroup = "Авто-Вин / Килл Аура", EnableAutoWin = "Включить Auto-Win", AutoWinDesc = "Моментальное убийство противника в раунде (авто-победа)", AutoWinMode = "Режим автовина", AutoWinKey = "Клавиша Auto-Win", AutoWinReturn = "Возврат на место после ТП", AutoWinReturnDesc = "После удара со спины мгновенно возвращает на исходную точку", AutoWinEquip = "Авто-доставать нож", AutoWinEquipDesc = "Автоматически берет нож в руку перед атакой", AutoWinDelay = "Задержка повтора (сек)", -- 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 = "Цвет тумана", -- Settings MenuSettings = "Настройки интерфейса", LanguageSettings = "Язык меню и Бинд", UnloadGroup = "Управление скриптом", Language = "Выбор языка", Unload = "Выгрузить меню (Unload)", MenuKey = "Клавиша меню", QuickKeySelect = "Быстрый выбор клавиши меню", ChangeMenuKey = "Нажмите для смены клавиши (Любая)", PressAnyKey = "Нажмите любую клавишу...", KeybindUpdated = "Клавиша меню изменена на", -- Skins Tab Skins = "Скины", SkinChanger = "Скинченджер оружия (Client-Side)", EnableSkinChanger = "Включить Скинченджер", SkinChangerDesc = "Визуально надевает любой скин на револьвер и нож (3D модели, PBR-текстуры, звуки и анимации)", RevolverSkinsGroup = "Скины на Револьвер", KnifeSkinsGroup = "Скины на Нож", RevolverSkinSelect = "Выбор скина револьвера", KnifeSkinSelect = "Выбор скина ножа", ApplySkins = "Применить скины", SaveAsAutoload = "Сохранить как автозагрузку", AutoloadSaved = "Скины сохранены в автозагрузку!", AutoSaveSkins = "Авто-сохранение скинов", AutoSaveSkinsDesc = "Автоматически сохранять выбранные скины в автозагрузку", AutoloadStatus = "Автозагрузка", -- Viewmodel & Weapon Scale ViewmodelGroup = "Кастомный Viewmodel (Положение оружия)", EnableViewmodel = "Включить Viewmodel", ViewmodelDesc = "Смещение и наклон оружия в руках от 1-го и 3-го лица", HideArms = "Скрыть руки (Hide Arms)", HideArmsDesc = "Делает руки полностью невидимыми (парящее оружие)", VMMode = "Режим смещения", VMArmAndWeapon = "Рука и оружие (Вместе)", VMWeaponOnly = "Только оружие", VMPreset = "Пресеты Viewmodel", VMOffsetX = "Смещение X (Влево / Вправо)", VMOffsetY = "Смещение Y (Вверх / Вниз)", VMOffsetZ = "Смещение Z (Вперед / Назад)", VMPitch = "Наклон Pitch (Вверх / Вниз)", VMYaw = "Поворот Yaw (Влево / Вправо)", VMRoll = "Крен Roll (Gangster Tilt)", WeaponScaleGroup = "Размер оружия (Weapon Scale)", EnableWeaponScale = "Включить изменение размера", WeaponScaleDesc = "Увеличивает или уменьшает 3D модель ножа и револьвера", WeaponScale = "Масштаб размера (Scale)", ScalePreset = "Пресеты размера", ResetViewmodel = "Сбросить по умолчанию", }, 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)", KnifeHoldDuration = "Knife Hold Time (sec)", KnifeHoldDurationDesc = "Duration triggerbot holds attack to throw knife (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", MaxKnifePower = "Always Max Knife Power", MaxKnifePowerDesc = "Knife throws always have maximum velocity (420) and range even on weak taps", InstantKnifeCharge = "Instant Knife Charge", InstantKnifeChargeDesc = "Charges knife instantly in 0.01s with zero crosshair bloom", 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", -- Auto-Win / Kill Aura AutoWinGroup = "Auto-Win / Kill Aura", EnableAutoWin = "Enable Auto-Win", AutoWinDesc = "Instantly eliminates the opponent to win the round automatically", AutoWinMode = "Auto-Win Mode", AutoWinKey = "Auto-Win Keybind", AutoWinReturn = "Return to Origin After TP", AutoWinReturnDesc = "Instantly snaps character back to original position after backstab", AutoWinEquip = "Auto-Equip Knife", AutoWinEquipDesc = "Automatically pulls out the knife before attacking", AutoWinDelay = "Repeat Delay (sec)", -- 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", -- 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", -- Skins Tab Skins = "Skins", SkinChanger = "Weapon Skin Changer (Client-Side)", EnableSkinChanger = "Enable Skin Changer", SkinChangerDesc = "Visually equips any revolver & knife skin (3D models, PBR textures, sounds & animations)", RevolverSkinsGroup = "Revolver Skins", KnifeSkinsGroup = "Knife Skins", RevolverSkinSelect = "Select Revolver Skin", KnifeSkinSelect = "Select Knife Skin", ApplySkins = "Apply Skins", SaveAsAutoload = "Set as Autoload", AutoloadSaved = "Skins saved to autoload!", AutoSaveSkins = "Auto-Save Skins", AutoSaveSkinsDesc = "Automatically save selected skins to autoload", AutoloadStatus = "Autoload", -- Viewmodel & Weapon Scale ViewmodelGroup = "Custom Viewmodel (Weapon Position)", EnableViewmodel = "Enable Viewmodel Offset", ViewmodelDesc = "Offset and angle of weapon in hands (1st & 3rd person)", HideArms = "Hide Arms / Hands", HideArmsDesc = "Makes arms fully invisible (floating weapon view)", VMMode = "Offset Mode", VMArmAndWeapon = "Arm & Weapon (Together)", VMWeaponOnly = "Weapon Only", VMPreset = "Viewmodel Presets", VMOffsetX = "Offset X (Left / Right)", VMOffsetY = "Offset Y (Up / Down)", VMOffsetZ = "Offset Z (Forward / Back)", VMPitch = "Pitch Tilt (Up / Down)", VMYaw = "Yaw Angle (Left / Right)", VMRoll = "Roll Angle (Gangster Tilt)", WeaponScaleGroup = "Weapon Scale (Size)", EnableWeaponScale = "Enable Weapon Scale", WeaponScaleDesc = "Scales the 3D model size of knife and revolver", WeaponScale = "Scale Multiplier", ScalePreset = "Scale Presets", ResetViewmodel = "Reset to Default", } } 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 wallbangEnabled = false local targetPlayers = true local targetNoobs = true local targetTargets = true local targetPartMode = "Head" local fovRadius = 160 local showFovCircle = true local silentAimMode = "AlwaysOn" local alwaysMaxKnifePower = true local instantKnifeCharge = true local knifeSpeed = 6.5 _G.MD_AlwaysMaxKnifePower = true _G.MD_KnifeSpeed = 6.5 _G.MD_WallbangEnabled = wallbangEnabled -- Silent Auto-Fire (Triggerbot without camera snapping) local silentAutoFire = false local silentAutoFireDelay = 0.25 local knifeHoldDuration = 0.24 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" -- Auto-Win / Kill Aura State local autoWinEnabled = false local autoWinMode = "TP Backstab" local autoWinDelay = 0.15 local autoWinReturn = true local autoWinEquip = true local lastAutoWinTime = 0 local isAutoWinExecuting = false 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 isKnifeThrowing = false local function fireWeapon() local myChar = LocalPlayer.Character local tool = myChar and myChar:FindFirstChildOfClass("Tool") local isKnife = tool and (tool.Name:lower():find("knife") ~= nil) local im = nil pcall(function() im = require(game:GetService("ReplicatedStorage"):WaitForChild("Extensions"):WaitForChild("InputMap")) end) if isKnife then if isKnifeThrowing then return end isKnifeThrowing = true if im and im.fire then im.fire("Attack", true) end pcall(mouse1press) task.delay(knifeHoldDuration, function() if im and im.fire then im.fire("Attack", false) end pcall(mouse1release) task.delay(0.20, function() isKnifeThrowing = false end) end) else if im and im.tap then im.tap("Attack") else pcall(function() mouse1click() end) 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 colorCorrection = Lighting:FindFirstChildOfClass("ColorCorrectionEffect") local atmosphere = Lighting:FindFirstChildOfClass("Atmosphere") local origLighting = { Ambient = Lighting.Ambient, OutdoorAmbient = Lighting.OutdoorAmbient, Brightness = Lighting.Brightness, ClockTime = Lighting.ClockTime, FogColor = Lighting.FogColor, FogEnd = Lighting.FogEnd, GlobalShadows = Lighting.GlobalShadows, TintColor = colorCorrection and colorCorrection.TintColor or Color3.fromRGB(255, 255, 255), Saturation = colorCorrection and colorCorrection.Saturation or 0, AtmoColor = atmosphere and atmosphere.Color or Color3.fromRGB(200, 200, 200), AtmoDecay = atmosphere and atmosphere.Decay or Color3.fromRGB(100, 100, 100), } -- Custom Ambience State local customAmbienceEnabled = false local customLighting = { ClockTime = 0, Ambient = Color3.fromRGB(90, 20, 140), OutdoorAmbient = Color3.fromRGB(45, 10, 80), FogColor = Color3.fromRGB(35, 5, 55), FogDistance = 450, TintColor = Color3.fromRGB(230, 200, 255), Saturation = 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 = origLighting.ClockTime Lighting.Ambient = origLighting.Ambient Lighting.OutdoorAmbient = origLighting.OutdoorAmbient Lighting.FogColor = origLighting.FogColor Lighting.FogEnd = origLighting.FogEnd if colorCorrection then colorCorrection.TintColor = origLighting.TintColor colorCorrection.Saturation = origLighting.Saturation end if atmosphere then atmosphere.Color = origLighting.AtmoColor atmosphere.Decay = origLighting.AtmoDecay end return end Lighting.ClockTime = customLighting.ClockTime Lighting.Ambient = customLighting.Ambient Lighting.OutdoorAmbient = customLighting.OutdoorAmbient Lighting.FogColor = customLighting.FogColor Lighting.FogEnd = customLighting.FogDistance if not colorCorrection then colorCorrection = Instance.new("ColorCorrectionEffect", Lighting) end colorCorrection.TintColor = customLighting.TintColor colorCorrection.Saturation = customLighting.Saturation if atmosphere then atmosphere.Color = customLighting.FogColor atmosphere.Decay = customLighting.OutdoorAmbient 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 -- ==================== CLIENT-SIDE SKIN CHANGER STATE & LOGIC ==================== local skinChangerEnabled = false local selectedRevolverSkin = "ChromaSniper" local selectedKnifeSkin = "ChromaKatana" -- Viewmodel & Weapon Scale State local viewmodelEnabled = false local hideArmsEnabled = false local vmTargetMode = "ArmAndWeapon" -- "ArmAndWeapon" or "WeaponOnly" local defaultRSC1 = CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local vm = { x = 0, y = 0, z = 0, pitch = 0, yaw = 0, roll = 0 } local weaponScaleEnabled = false local weaponScale = 1.0 local skinsConfigFile = "MurderDuelsSkeet/skins_autoload.json" local function saveSkinsAutoload() pcall(function() if not isfolder("MurderDuelsSkeet") then pcall(makefolder, "MurderDuelsSkeet") end local data = { enabled = (skinChangerEnabled == true), revolver = selectedRevolverSkin or "ChromaSniper", knife = selectedKnifeSkin or "ChromaKatana", } writefile(skinsConfigFile, game:GetService("HttpService"):JSONEncode(data)) end) end local function loadSkinsAutoload() local loaded = false pcall(function() if isfile(skinsConfigFile) then local content = readfile(skinsConfigFile) local data = game:GetService("HttpService"):JSONDecode(content) if typeof(data) == "table" then if data.enabled ~= nil then skinChangerEnabled = (data.enabled == true) end if data.revolver and data.revolver ~= "" then selectedRevolverSkin = data.revolver end if data.knife and data.knife ~= "" then selectedKnifeSkin = data.knife end loaded = true end end end) return loaded end loadSkinsAutoload() local originalRevolverSkin = LocalPlayer:GetAttribute("RevolverSkin") or "Default" local originalKnifeSkin = LocalPlayer:GetAttribute("KnifeSkin") or "Default" local availableKnives, availableRevolvers do local topKnives = { "ChromaKatana", "CorruptedChromaKatana", "Voidreaver", "Balisong", "GalaxyKarambit", "Karambit", "GoldenStiletto", "RedStiletto", "Kunai", "Saber", "Solaris", "Seraphim", "Default" } local topRevolvers = { "ChromaSniper", "MurderNote", "GoldenLuger", "RedLuger", "PurpleLuger", "ChampionSniper", "Deagle", "InfinityRay", "RayGun", "Voidcaster", "Default" } local function buildSkinList(folderName, topPriority) local list = {} local seen = {} local folder = game:GetService("ReplicatedStorage"):FindFirstChild(folderName) if folder then for _, name in ipairs(topPriority) do if folder:FindFirstChild(name) then table.insert(list, name) seen[name] = true end end local rest = {} for _, child in ipairs(folder:GetChildren()) do if child:IsA("Model") and not seen[child.Name] and not child.Name:find("Root") and not child.Name:find("Test") then table.insert(rest, child.Name) end end table.sort(rest) for _, name in ipairs(rest) do table.insert(list, name) end end if #list == 0 then list = topPriority end return list end availableKnives = buildSkinList("Knives", topKnives) availableRevolvers = buildSkinList("Revolvers", topRevolvers) end local function updateSlotPreview(slotName, folderName, skinName, isKnife) local playerGui = LocalPlayer:FindFirstChild("PlayerGui") if not playerGui then return end local inMatchUI = playerGui:FindFirstChild("InMatchUI") if not inMatchUI then return end local abilities = inMatchUI:FindFirstChild("Abilities") if not abilities then return end local slot = abilities:FindFirstChild(slotName) if not slot then return end local icon = slot:FindFirstChild("WeaponIcon") local existingVp = slot:FindFirstChild("MD_SkinViewport") if not skinChangerEnabled or not skinName or skinName == "Default" or skinName == "" then if existingVp then pcall(function() existingVp:Destroy() end) end if icon then icon.ImageTransparency = 0 end return end local folder = game:GetService("ReplicatedStorage"):FindFirstChild(folderName) if not folder then return end local skinModel = folder:FindFirstChild(skinName) if not skinModel then return end if icon then icon.ImageTransparency = 1 end local vp = existingVp if not vp then vp = Instance.new("ViewportFrame") vp.Name = "MD_SkinViewport" vp.Size = UDim2.fromScale(0.88, 0.88) vp.Position = UDim2.fromScale(0.5, 0.5) vp.AnchorPoint = Vector2.new(0.5, 0.5) vp.BackgroundTransparency = 1 vp.BorderSizePixel = 0 vp.ZIndex = (icon and icon.ZIndex or 5) + 1 vp.Parent = slot end vp.Visible = true vp:ClearAllChildren() local clone = skinModel:Clone() for _, d in ipairs(clone:GetDescendants()) do if d:IsA("Sound") or d:IsA("ParticleEmitter") or d:IsA("Light") or d:IsA("Script") or d:IsA("LocalScript") or d:IsA("Trail") then pcall(function() d:Destroy() end) elseif d:IsA("BasePart") then d.CanCollide = false d.Anchored = true end end local rootName = isKnife and "KnifeRoot" or "RevolverRoot" local root = clone:FindFirstChild(rootName, true) local minB = Vector3.new(math.huge, math.huge, math.huge) local maxB = Vector3.new(-math.huge, -math.huge, -math.huge) local rootPos = root and root.Position local tipPos = rootPos local maxDistFromRoot = 0 for _, p in ipairs(clone:GetDescendants()) do if p:IsA("BasePart") and p.Transparency < 0.9 and p.Name ~= "BoundingBox" and not p.Name:lower():find("hitbox") then local cf = p.CFrame local h = p.Size * 0.5 for x = -1, 1, 2 do for y = -1, 1, 2 do for z = -1, 1, 2 do local pt = cf:PointToWorldSpace(Vector3.new(x*h.X, y*h.Y, z*h.Z)) minB = Vector3.new(math.min(minB.X, pt.X), math.min(minB.Y, pt.Y), math.min(minB.Z, pt.Z)) maxB = Vector3.new(math.max(maxB.X, pt.X), math.max(maxB.Y, pt.Y), math.max(maxB.Z, pt.Z)) end end end if rootPos then local d = (p.Position - rootPos).Magnitude if d > maxDistFromRoot then maxDistFromRoot = d tipPos = p.Position end end end end local center = (minB + maxB) * 0.5 local size = maxB - minB for _, p in ipairs(clone:GetDescendants()) do if p:IsA("BasePart") then p.CFrame = p.CFrame - center end end clone.Parent = vp local forwardDir if rootPos and tipPos and (tipPos - rootPos).Magnitude > 0.1 then forwardDir = (tipPos - rootPos).Unit else if size.X >= size.Y and size.X >= size.Z then forwardDir = Vector3.new(1,0,0) elseif size.Y >= size.X and size.Y >= size.Z then forwardDir = Vector3.new(0,1,0) else forwardDir = Vector3.new(0,0,1) end end local axes = { { axis = Vector3.new(1, 0, 0), len = size.X }, { axis = Vector3.new(0, 1, 0), len = size.Y }, { axis = Vector3.new(0, 0, 1), len = size.Z } } table.sort(axes, function(a, b) return a.len < b.len end) local thinAxis = axes[1].axis local normal = (thinAxis - forwardDir * thinAxis:Dot(forwardDir)) if normal.Magnitude < 0.01 then normal = (axes[2].axis - forwardDir * axes[2].axis:Dot(forwardDir)) end normal = normal.Unit local S = normal:Cross(forwardDir).Unit if not isKnife then local trueUp = (root and root.CFrame.UpVector) or Vector3.new(0, 1, 0) if S:Dot(trueUp) < 0 then S = -S normal = -normal end end local F = forwardDir local camRight, camUp if isKnife then camRight = (-F * 0.707 + S * 0.707).Unit camUp = ( F * 0.707 + S * 0.707).Unit else camRight = (-F * 0.92 + S * 0.38).Unit camUp = ( F * 0.38 + S * 0.92).Unit end local camLook = camRight:Cross(camUp).Unit local maxSpan = math.sqrt(size.X*size.X + size.Y*size.Y + size.Z*size.Z) * 0.65 if maxSpan < 0.1 then maxSpan = 1 end local cam = Instance.new("Camera") cam.FieldOfView = 25 local dist = (maxSpan * 0.5) / math.tan(math.rad(12.5)) * 1.25 cam.CFrame = CFrame.fromMatrix(-camLook * dist, camRight, camUp, -camLook) cam.Parent = vp vp.CurrentCamera = cam vp.LightColor = Color3.fromRGB(255, 255, 255) vp.LightDirection = (-camLook + Vector3.new(0.4, 0.4, 0.4)).Unit vp.Ambient = Color3.fromRGB(200, 200, 200) end local function applySkins() if skinChangerEnabled then if selectedRevolverSkin and selectedRevolverSkin ~= "" then LocalPlayer:SetAttribute("RevolverSkin", selectedRevolverSkin) LocalPlayer:SetAttribute("RevolverName", selectedRevolverSkin) end if selectedKnifeSkin and selectedKnifeSkin ~= "" then LocalPlayer:SetAttribute("KnifeSkin", selectedKnifeSkin) LocalPlayer:SetAttribute("KnifeName", selectedKnifeSkin) end else LocalPlayer:SetAttribute("RevolverSkin", originalRevolverSkin) LocalPlayer:SetAttribute("KnifeSkin", originalKnifeSkin) end pcall(function() updateSlotPreview("Gun", "Revolvers", selectedRevolverSkin, false) updateSlotPreview("Knife", "Knives", selectedKnifeSkin, true) end) end _G.MD_SetSkin = function(gun, knife) skinChangerEnabled = true if gun then selectedRevolverSkin = gun end if knife then selectedKnifeSkin = knife end saveSkinsAutoload() applySkins() end if skinChangerEnabled then task.spawn(function() task.wait(0.15) applySkins() end) end table.insert(Connections, LocalPlayer:GetAttributeChangedSignal("RevolverSkin"):Connect(function() if skinChangerEnabled and selectedRevolverSkin and selectedRevolverSkin ~= "" and LocalPlayer:GetAttribute("RevolverSkin") ~= selectedRevolverSkin then LocalPlayer:SetAttribute("RevolverSkin", selectedRevolverSkin) LocalPlayer:SetAttribute("RevolverName", selectedRevolverSkin) end end)) table.insert(Connections, LocalPlayer:GetAttributeChangedSignal("KnifeSkin"):Connect(function() if skinChangerEnabled and selectedKnifeSkin and selectedKnifeSkin ~= "" and LocalPlayer:GetAttribute("KnifeSkin") ~= selectedKnifeSkin then LocalPlayer:SetAttribute("KnifeSkin", selectedKnifeSkin) LocalPlayer:SetAttribute("KnifeName", selectedKnifeSkin) end end)) table.insert(Connections, LocalPlayer.CharacterAdded:Connect(function() task.wait(0.25) if skinChangerEnabled then applySkins() end end)) do local inMatchUIObj = LocalPlayer:FindFirstChild("PlayerGui") and LocalPlayer.PlayerGui:FindFirstChild("InMatchUI") if inMatchUIObj then table.insert(Connections, inMatchUIObj:GetPropertyChangedSignal("Enabled"):Connect(function() if inMatchUIObj.Enabled and skinChangerEnabled then task.wait(0.1) applySkins() end end)) local abilitiesObj = inMatchUIObj:FindFirstChild("Abilities") if abilitiesObj then table.insert(Connections, abilitiesObj:GetPropertyChangedSignal("Visible"):Connect(function() if abilitiesObj.Visible and skinChangerEnabled then task.wait(0.1) applySkins() end end)) end end if LocalPlayer:FindFirstChild("PlayerGui") then table.insert(Connections, LocalPlayer.PlayerGui.ChildAdded:Connect(function(child) if child.Name == "InMatchUI" and skinChangerEnabled then task.wait(0.2) applySkins() end end)) end end -- 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 -- ==================== 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 = false _G.MD_CurrentWeaponIsKnife = false local getAnyEnemyTarget = nil _G.MD_NIL = _G.MD_NIL or newproxy() -- Dynamic Metamethod Dispatchers (Ultra-optimized, zero allocations on non-target calls) _G.MD_OnNamecall = function(self, method, ...) if method ~= "FireServer" and method ~= "Fire" and method ~= "ViewportPointToRay" and method ~= "Raycast" then return nil end if method == "Raycast" then if _G.MD_WallbangEnabled then local origin, direction, rayParams = ... if typeof(rayParams) == "RaycastParams" and rayParams.FilterType == Enum.RaycastFilterType.Exclude then -- Bypasses obstacle/wall collision for knife and bullet in ProjectilesController return _G.MD_NIL end end 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 return Ray.new(camPos, (targetPos - camPos).Unit) end end return nil end if method == "Fire" then if self.Name == "SpawnKnife" then local shotData = ... if typeof(shotData) == "table" then shotData.power = _G.MD_KnifeSpeed or 6.5 if _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget local targetPos = tgt.Position local origin = shotData.origin or workspace.CurrentCamera.CFrame.Position shotData.target = origin + (targetPos - origin).Unit * 1000 end end return nil end if self.Name == "SpawnBullet" then local shotData = ... if typeof(shotData) == "table" and _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget shotData.hitInstance = tgt shotData.hitPos = tgt.Position shotData.to = tgt.Position shotData.isCharacterHit = true if typeof(shotData.segments) == "table" then for _, seg in ipairs(shotData.segments) do seg.hitInstance = tgt seg.hitPos = tgt.Position seg.isCharacterHit = true end end end return nil end return nil end if method == "FireServer" then if self.Name == "ThrowReplicate" then local shotData = ... if typeof(shotData) == "table" then shotData.power = 1.0 if _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget local targetPos = tgt.Position local origin = shotData.origin or workspace.CurrentCamera.CFrame.Position shotData.target = origin + (targetPos - origin).Unit * 1000 end end end if self.Name == "ShootReplicate" then local shotData = ... if typeof(shotData) == "table" and _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget shotData.hitInstance = tgt shotData.hitPos = tgt.Position shotData.to = tgt.Position shotData.isCharacterHit = true if typeof(shotData.segments) == "table" then for _, seg in ipairs(shotData.segments) do seg.hitInstance = tgt seg.hitPos = tgt.Position seg.isCharacterHit = true end end end end 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 or shotData.target) then _G.MD_OnShotFired(shotData.origin, shotData.hitPos or shotData.to or shotData.target) 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 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 == _G.MD_NIL then return nil elseif 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 wallbangEnabled then return true end 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 getAnyEnemyTarget = function() local myChar = LocalPlayer.Character local myHRP = myChar and (myChar:FindFirstChild("HumanoidRootPart") or myChar:FindFirstChild("Torso")) if not myHRP then return nil end local myPos = myHRP.Position local mySide = LocalPlayer:GetAttribute("MatchSide") local best = nil local bestDist = math.huge local function checkModel(m) if not m or not m:IsA("Model") or m == myChar then return end if m:FindFirstChildOfClass("ForceField") then return end local hum = m:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 or hum:GetState() == Enum.HumanoidStateType.Dead then return end local hrp = m:FindFirstChild("HumanoidRootPart") or m:FindFirstChild("Torso") or m:FindFirstChild("UpperTorso") if not hrp then return end local plr = Players:GetPlayerFromCharacter(m) if plr then if not isEnemy(plr) then return end else if mySide and m:GetAttribute("MatchSide") == mySide then return end if not targetNoobs and m.Name == "Noob" then return end end local aimPart = getTargetAimPart(m) or hrp local dist = (hrp.Position - myPos).Magnitude if dist < bestDist then bestDist = dist best = { char = m, hrp = hrp, part = aimPart, player = plr, dist = dist } end end for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and isEnemy(plr) and plr.Character then checkModel(plr.Character) end end if workspace:FindFirstChild("Characters") then for _, m in ipairs(workspace.Characters:GetChildren()) do checkModel(m) end end return best end local function executeAutoWin() if isAutoWinExecuting then return end local myChar = LocalPlayer.Character if not myChar then return end local myHRP = myChar:FindFirstChild("HumanoidRootPart") or myChar:FindFirstChild("Torso") local myHum = myChar:FindFirstChildOfClass("Humanoid") if not myHRP or not myHum or myHum.Health <= 0 then return end local target = getAnyEnemyTarget() if not target or not target.hrp or not target.char then return end isAutoWinExecuting = true local bp = LocalPlayer:FindFirstChild("Backpack") local currentTool = myChar:FindFirstChildOfClass("Tool") local currentToolName = currentTool and currentTool.Name:lower() or "" local knifeInBp = bp and bp:FindFirstChild("Knife") local revInBp = bp and bp:FindFirstChild("Revolver") local hasKnife = currentToolName:find("knife") ~= nil or knifeInBp ~= nil if autoWinEquip then if autoWinMode == "TP Backstab" and knifeInBp and currentToolName:find("knife") == nil then myHum:EquipTool(knifeInBp) task.wait(0.04) elseif autoWinMode == "360° Auto-Throw" then if not currentTool then local tToEquip = knifeInBp or revInBp if tToEquip then myHum:EquipTool(tToEquip) task.wait(0.04) end end end end currentTool = myChar:FindFirstChildOfClass("Tool") currentToolName = currentTool and currentTool.Name:lower() or "" if autoWinMode == "TP Backstab" and hasKnife then local originalCFrame = myHRP.CFrame local targetHRP = target.hrp local targetChar = target.char local targetPlr = target.player local targetLook = targetHRP.CFrame.LookVector local behindPos = targetHRP.Position - (targetLook * 1.5) myHRP.CFrame = CFrame.lookAt(behindPos, targetHRP.Position) myHRP.AssemblyLinearVelocity = Vector3.zero 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(mouse1click) end pcall(function() local Remotes = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes") local ReportHit = Remotes and Remotes:FindFirstChild("ReportHit") if ReportHit then ReportHit:FireServer({ kind = "melee", targetUserId = targetPlr and targetPlr.UserId or 0, targetModel = targetChar, direction = myHRP.CFrame.LookVector, at = workspace:GetServerTimeNow(), backstab = true }) end end) if autoWinReturn then task.delay(0.06, function() if myHRP and myHRP.Parent and originalCFrame then myHRP.CFrame = originalCFrame myHRP.AssemblyLinearVelocity = Vector3.zero end task.delay(0.1, function() isAutoWinExecuting = false end) end) else task.delay(0.15, function() isAutoWinExecuting = false end) end else _G.MD_SilentAimTarget = target.part or target.hrp _G.MD_SilentAimEnabled = true _G.MD_WallbangEnabled = true fireWeapon() task.delay(0.25, function() isAutoWinExecuting = false end) end 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 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_WallbangEnabled = wallbangEnabled _G.MD_KnifeSpeed = knifeSpeed local myChar = LocalPlayer.Character local activeTool = myChar and myChar:FindFirstChildOfClass("Tool") local tName = activeTool and activeTool.Name:lower() or "" local isKnife = (tName:find("knife") ~= nil) _G.MD_CurrentWeaponIsKnife = isKnife -- Viewmodel & Weapon Scale Execution if myChar then local torso = myChar:FindFirstChild("Torso") local rightArm = myChar:FindFirstChild("Right Arm") or myChar:FindFirstChild("RightHand") local leftArm = myChar:FindFirstChild("Left Arm") or myChar:FindFirstChild("LeftHand") local rs = torso and torso:FindFirstChild("Right Shoulder") local attach = rightArm and (rightArm:FindFirstChild("Knife_HandAttach") or rightArm:FindFirstChild("Revolver_HandAttach")) -- 1. Hide Arms if hideArmsEnabled then if rightArm then rightArm.LocalTransparencyModifier = 1 end if leftArm then leftArm.LocalTransparencyModifier = 1 end else if rightArm and rightArm.LocalTransparencyModifier == 1 then rightArm.LocalTransparencyModifier = 0 end if leftArm and leftArm.LocalTransparencyModifier == 1 then leftArm.LocalTransparencyModifier = 0 end end -- 2. Viewmodel Offset if viewmodelEnabled then local offsetCF = CFrame.new(vm.x, vm.y, vm.z) * CFrame.Angles(math.rad(vm.pitch), math.rad(vm.yaw), math.rad(vm.roll)) if vmTargetMode == "ArmAndWeapon" then if rs and rs:IsA("Motor6D") then local targetRSC1 = offsetCF:Inverse() * defaultRSC1 if rs.C1 ~= targetRSC1 then rs.C1 = targetRSC1 end end if attach and attach:IsA("Motor6D") and attach.C1 ~= CFrame.identity then attach.C1 = CFrame.identity end else if rs and rs:IsA("Motor6D") and rs.C1 ~= defaultRSC1 then rs.C1 = defaultRSC1 end if attach and attach:IsA("Motor6D") and attach.C1 ~= offsetCF then attach.C1 = offsetCF end end else if rs and rs:IsA("Motor6D") and rs.C1 ~= defaultRSC1 then rs.C1 = defaultRSC1 end if attach and attach:IsA("Motor6D") and attach.C1 ~= CFrame.identity then attach.C1 = CFrame.identity end end -- 3. Weapon Scale local targetScale = (weaponScaleEnabled and weaponScale) or 1.0 local knifeRig = myChar:FindFirstChild("KnifeRig") if knifeRig and knifeRig:IsA("Model") then if math.abs(knifeRig:GetScale() - targetScale) > 0.01 then pcall(function() knifeRig:ScaleTo(targetScale) end) end end local revRig = myChar:FindFirstChild("RevolverRig") if revRig and revRig:IsA("Model") then if math.abs(revRig:GetScale() - targetScale) > 0.01 then pcall(function() revRig:ScaleTo(targetScale) end) end end end -- Silent Auto-Fire (Triggerbot: Fires automatically WITHOUT camera snapping) if silentAutoFire and isAimActive and silentAimTargetPart then local now = tick() local fireDelay = isKnife and math.max(silentAutoFireDelay, knifeHoldDuration + 0.12) or silentAutoFireDelay if (now - lastSilentFireTime >= fireDelay) then -- Muzzle clearance check: skip when wallbang is on (we spoof origin anyway) if wallbangEnabled or isKnife or 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 -- Auto-Win / Kill Aura Execution local isAutoWinKeyActive = Options.AutoWinKey and Options.AutoWinKey:GetState() if (autoWinEnabled or isAutoWinKeyActive) and not isAutoWinExecuting then local now = tick() if (now - lastAutoWinTime >= autoWinDelay) then lastAutoWinTime = now task.spawn(executeAutoWin) end end -- Legit FOV Circle if legitFovCircle then legitFovCircle.Position = screenCenter legitFovCircle.Radius = legitFovRadius legitFovCircle.Visible = legitAimEnabled and legitShowFov and (not isMenuOpen) 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")), Skins = Window:AddTab(T("Skins")), Movement = Window:AddTab(T("Movement")), ["UI Settings"] = Window:AddTab(T("Settings")), } -- 1. RAGE TAB local LeftRage = Tabs.Rage:AddLeftGroupbox(T("SilentAimbot")) local AutoWinBox = Tabs.Rage:AddLeftGroupbox(T("AutoWinGroup")) 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:AddSlider("KnifeHoldDuration", { Text = T("KnifeHoldDuration"), Default = math.floor(knifeHoldDuration * 100), Min = 10, Max = 60, Rounding = 0, Compact = false, Tooltip = T("KnifeHoldDurationDesc"), Callback = function(Value) knifeHoldDuration = 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("Wallbang", { Text = "Wallbang", Default = wallbangEnabled, Tooltip = "Shoot through walls / bypass line of sight raycasts", Callback = function(Value) wallbangEnabled = Value end }) LeftRage:AddToggle("MaxKnifePower", { Text = T("MaxKnifePower"), Default = alwaysMaxKnifePower, Tooltip = T("MaxKnifePowerDesc"), Callback = function(Value) alwaysMaxKnifePower = Value _G.MD_AlwaysMaxKnifePower = Value end }) LeftRage:AddToggle("InstantKnifeCharge", { Text = T("InstantKnifeCharge"), Default = instantKnifeCharge, Tooltip = T("InstantKnifeChargeDesc"), Callback = function(Value) instantKnifeCharge = Value pcall(function() local rs = game:GetService("ReplicatedStorage") local kt = require(rs.Shared.KnifeTiming) kt.CHARGE_DUR = Value and 0.01 or 0.5 kt.HOLD_TO_THROW_SEC = 0.2 end) end }) LeftRage:AddSlider("KnifeSpeed", { Text = currentLang == "RU" and "Скорость ножа (как у ревика)" or "Knife Speed (Revolver Speed)", Default = 65, Min = 10, Max = 100, Rounding = 0, Compact = false, Callback = function(Value) knifeSpeed = Value / 10 _G.MD_KnifeSpeed = knifeSpeed end }) -- Auto-Win / Kill Aura Groupbox AutoWinBox:AddToggle("EnableAutoWin", { Text = T("EnableAutoWin"), Default = autoWinEnabled, Tooltip = T("AutoWinDesc"), Callback = function(Value) autoWinEnabled = Value end }):AddKeyPicker("AutoWinKey", { Default = "None", SyncToggleState = false, Mode = "Hold", Text = T("AutoWinKey"), NoUI = false, }) AutoWinBox:AddDropdown("AutoWinMode", { Values = { "TP Backstab", "360° Auto-Throw" }, Default = 1, Multi = false, Text = T("AutoWinMode"), Callback = function(Value) autoWinMode = Value end }) AutoWinBox:AddSlider("AutoWinDelay", { Text = T("AutoWinDelay"), Default = math.floor(autoWinDelay * 100), Min = 5, Max = 100, Rounding = 0, Compact = false, Callback = function(Value) autoWinDelay = Value / 100 end }) AutoWinBox:AddToggle("AutoWinReturn", { Text = T("AutoWinReturn"), Default = autoWinReturn, Tooltip = T("AutoWinReturnDesc"), Callback = function(Value) autoWinReturn = Value end }) AutoWinBox:AddToggle("AutoWinEquip", { Text = T("AutoWinEquip"), Default = autoWinEquip, Tooltip = T("AutoWinEquipDesc"), Callback = function(Value) autoWinEquip = 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 if fovCircle and not Value then fovCircle.Visible = false end 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 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 customLighting.ClockTime = p.ClockTime customLighting.Ambient = p.Ambient customLighting.OutdoorAmbient = p.OutdoorAmbient customLighting.FogColor = p.FogColor customLighting.FogDistance = p.FogEnd customLighting.TintColor = p.Tint customLighting.Saturation = p.Saturation applyAmbience() end end }) AmbienceBox:AddSlider("AmbienceClockTime", { Text = T("ClockTime"), Default = customLighting.ClockTime, Min = 0, Max = 24, Rounding = 1, Compact = false, Callback = function(Value) customLighting.ClockTime = Value if customAmbienceEnabled then Lighting.ClockTime = Value end end }) AmbienceBox:AddSlider("AmbienceFogDist", { Text = T("FogDist"), Default = customLighting.FogDistance, Min = 100, Max = 3000, Rounding = 0, Compact = false, Callback = function(Value) customLighting.FogDistance = Value if customAmbienceEnabled then Lighting.FogEnd = Value end end }) AmbienceBox:AddSlider("AmbienceSaturation", { Text = T("Saturation"), Default = math.floor(customLighting.Saturation * 10), Min = -10, Max = 15, Rounding = 0, Compact = false, Callback = function(Value) customLighting.Saturation = Value / 10 if customAmbienceEnabled and colorCorrection then colorCorrection.Saturation = Value / 10 end end }) AmbienceBox:AddLabel(T("AmbientColor")):AddColorPicker("AmbientCol", { Default = customLighting.Ambient, Title = "Ambient Color", Callback = function(Value) customLighting.Ambient = Value if customAmbienceEnabled then Lighting.Ambient = Value end end }) AmbienceBox:AddLabel(T("OutdoorColor")):AddColorPicker("OutdoorCol", { Default = customLighting.OutdoorAmbient, Title = "Outdoor Ambient", Callback = function(Value) customLighting.OutdoorAmbient = Value if customAmbienceEnabled then Lighting.OutdoorAmbient = Value end end }) AmbienceBox:AddLabel(T("FogColor")):AddColorPicker("FogCol", { Default = customLighting.FogColor, Title = "Fog Color", Callback = function(Value) customLighting.FogColor = 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 }) -- 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 = origLighting.Brightness Lighting.ClockTime = origLighting.ClockTime Lighting.FogEnd = origLighting.FogEnd Lighting.GlobalShadows = origLighting.GlobalShadows 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. SKINS TAB local LeftSkins = Tabs.Skins:AddLeftGroupbox(T("RevolverSkinsGroup")) local RightSkins = Tabs.Skins:AddRightGroupbox(T("KnifeSkinsGroup")) local function findSkinIdx(list, targetName) for i, v in ipairs(list) do if v == targetName then return i end end return 1 end LeftSkins:AddToggle("EnableSkinChanger", { Text = T("EnableSkinChanger"), Default = skinChangerEnabled, Tooltip = T("SkinChangerDesc"), Callback = function(Value) skinChangerEnabled = Value saveSkinsAutoload() applySkins() end }) LeftSkins:AddDropdown("RevolverSkinSelect", { Values = availableRevolvers, Default = findSkinIdx(availableRevolvers, selectedRevolverSkin), Multi = false, Text = T("RevolverSkinSelect"), Callback = function(Value) selectedRevolverSkin = Value saveSkinsAutoload() if skinChangerEnabled then applySkins() end end }) LeftSkins:AddButton(T("ApplySkins"), function() applySkins() end) LeftSkins:AddButton(T("SaveAsAutoload"), function() saveSkinsAutoload() Library:Notify(T("AutoloadSaved") .. string.format("\n[%s | %s]", selectedRevolverSkin, selectedKnifeSkin), 3) end) RightSkins:AddDropdown("KnifeSkinSelect", { Values = availableKnives, Default = findSkinIdx(availableKnives, selectedKnifeSkin), Multi = false, Text = T("KnifeSkinSelect"), Callback = function(Value) selectedKnifeSkin = Value saveSkinsAutoload() if skinChangerEnabled then applySkins() end end }) RightSkins:AddButton(T("ApplySkins"), function() applySkins() end) RightSkins:AddButton(T("SaveAsAutoload"), function() saveSkinsAutoload() Library:Notify(T("AutoloadSaved") .. string.format("\n[%s | %s]", selectedRevolverSkin, selectedKnifeSkin), 3) end) -- Viewmodel Settings (Left Column) local ViewmodelBox = Tabs.Skins:AddLeftGroupbox(T("ViewmodelGroup")) ViewmodelBox:AddToggle("EnableViewmodel", { Text = T("EnableViewmodel"), Default = viewmodelEnabled, Tooltip = T("ViewmodelDesc"), Callback = function(Value) viewmodelEnabled = Value end }) ViewmodelBox:AddToggle("HideArms", { Text = T("HideArms"), Default = hideArmsEnabled, Tooltip = T("HideArmsDesc"), Callback = function(Value) hideArmsEnabled = Value end }) ViewmodelBox:AddDropdown("VMMode", { Values = { T("VMArmAndWeapon"), T("VMWeaponOnly") }, Default = (vmTargetMode == "ArmAndWeapon") and 1 or 2, Multi = false, Text = T("VMMode"), Callback = function(Value) if Value == T("VMWeaponOnly") or Value:find("Weapon") or Value:find("Только") then vmTargetMode = "WeaponOnly" else vmTargetMode = "ArmAndWeapon" end end }) ViewmodelBox:AddDropdown("VMPreset", { Values = { "Default", "Left Hand", "Centered / Doom", "Gangster Tilt", "Extended" }, Default = 1, Multi = false, Text = T("VMPreset"), Callback = function(Value) if Value == "Default" then vm.x, vm.y, vm.z = 0, 0, 0 vm.pitch, vm.yaw, vm.roll = 0, 0, 0 elseif Value == "Left Hand" then vm.x, vm.y, vm.z = -1.3, -0.1, 0.2 vm.pitch, vm.yaw, vm.roll = 0, 0, -15 elseif Value == "Centered / Doom" then vm.x, vm.y, vm.z = -0.85, -0.2, 0.4 vm.pitch, vm.yaw, vm.roll = 5, 0, 0 elseif Value == "Gangster Tilt" then vm.x, vm.y, vm.z = 0.1, 0.1, 0.2 vm.pitch, vm.yaw, vm.roll = 0, 10, 40 elseif Value == "Extended" then vm.x, vm.y, vm.z = 0, -0.1, -1.2 vm.pitch, vm.yaw, vm.roll = 0, 0, 0 end pcall(function() if Options.VMOffsetX then Options.VMOffsetX:SetValue(math.floor(vm.x * 10)) end if Options.VMOffsetY then Options.VMOffsetY:SetValue(math.floor(vm.y * 10)) end if Options.VMOffsetZ then Options.VMOffsetZ:SetValue(math.floor(vm.z * 10)) end if Options.VMPitch then Options.VMPitch:SetValue(vm.pitch) end if Options.VMYaw then Options.VMYaw:SetValue(vm.yaw) end if Options.VMRoll then Options.VMRoll:SetValue(vm.roll) end end) end }) ViewmodelBox:AddSlider("VMOffsetX", { Text = T("VMOffsetX"), Default = math.floor(vm.x * 10), Min = -25, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) vm.x = Value / 10 end }) ViewmodelBox:AddSlider("VMOffsetY", { Text = T("VMOffsetY"), Default = math.floor(vm.y * 10), Min = -25, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) vm.y = Value / 10 end }) ViewmodelBox:AddSlider("VMOffsetZ", { Text = T("VMOffsetZ"), Default = math.floor(vm.z * 10), Min = -25, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) vm.z = Value / 10 end }) ViewmodelBox:AddSlider("VMPitch", { Text = T("VMPitch"), Default = vm.pitch, Min = -45, Max = 45, Rounding = 0, Compact = false, Callback = function(Value) vm.pitch = Value end }) ViewmodelBox:AddSlider("VMYaw", { Text = T("VMYaw"), Default = vm.yaw, Min = -45, Max = 45, Rounding = 0, Compact = false, Callback = function(Value) vm.yaw = Value end }) ViewmodelBox:AddSlider("VMRoll", { Text = T("VMRoll"), Default = vm.roll, Min = -45, Max = 45, Rounding = 0, Compact = false, Callback = function(Value) vm.roll = Value end }) ViewmodelBox:AddButton(T("ResetViewmodel"), function() vm.x, vm.y, vm.z = 0, 0, 0 vm.pitch, vm.yaw, vm.roll = 0, 0, 0 pcall(function() if Options.VMOffsetX then Options.VMOffsetX:SetValue(0) end if Options.VMOffsetY then Options.VMOffsetY:SetValue(0) end if Options.VMOffsetZ then Options.VMOffsetZ:SetValue(0) end if Options.VMPitch then Options.VMPitch:SetValue(0) end if Options.VMYaw then Options.VMYaw:SetValue(0) end if Options.VMRoll then Options.VMRoll:SetValue(0) end end) end) -- Weapon Scale (Right Column) local ScaleBox = Tabs.Skins:AddRightGroupbox(T("WeaponScaleGroup")) ScaleBox:AddToggle("EnableWeaponScale", { Text = T("EnableWeaponScale"), Default = weaponScaleEnabled, Tooltip = T("WeaponScaleDesc"), Callback = function(Value) weaponScaleEnabled = Value end }) ScaleBox:AddDropdown("ScalePreset", { Values = { "Default (1.0x)", "Compact / Mini (0.5x)", "Medium (1.5x)", "Giant Buster (2.5x)", "Colossal (3.5x)" }, Default = 1, Multi = false, Text = T("ScalePreset"), Callback = function(Value) if Value:find("Default") then weaponScale = 1.0 elseif Value:find("Mini") or Value:find("Compact") then weaponScale = 0.5 elseif Value:find("Medium") then weaponScale = 1.5 elseif Value:find("Giant") then weaponScale = 2.5 elseif Value:find("Colossal") then weaponScale = 3.5 end pcall(function() if Options.WeaponScaleSlider then Options.WeaponScaleSlider:SetValue(math.floor(weaponScale * 100)) end end) end }) ScaleBox:AddSlider("WeaponScaleSlider", { Text = T("WeaponScale"), Default = math.floor(weaponScale * 100), Min = 20, Max = 350, Rounding = 0, Compact = false, Callback = function(Value) weaponScale = Value / 100 end }) ScaleBox:AddButton(T("ResetViewmodel"), function() weaponScale = 1.0 pcall(function() if Options.WeaponScaleSlider then Options.WeaponScaleSlider:SetValue(100) end end) end) -- 6. 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() if originalRevolverSkin then LocalPlayer:SetAttribute("RevolverSkin", originalRevolverSkin) LocalPlayer:SetAttribute("RevolverName", originalRevolverSkin) end if originalKnifeSkin then LocalPlayer:SetAttribute("KnifeSkin", originalKnifeSkin) LocalPlayer:SetAttribute("KnifeName", originalKnifeSkin) end end) 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() if fullbrightEnabled then Lighting.Brightness = origLighting.Brightness Lighting.ClockTime = origLighting.ClockTime Lighting.FogEnd = origLighting.FogEnd Lighting.GlobalShadows = origLighting.GlobalShadows end -- Cleanup Skin Changer Viewports & restore hotbar icons & attributes pcall(function() local playerGui = LocalPlayer:FindFirstChild("PlayerGui") local inMatchUI = playerGui and playerGui:FindFirstChild("InMatchUI") local abilities = inMatchUI and inMatchUI:FindFirstChild("Abilities") if abilities then for _, slotName in ipairs({ "Knife", "Gun" }) do local slot = abilities:FindFirstChild(slotName) if slot then local vp = slot:FindFirstChild("MD_SkinViewport") if vp then pcall(function() vp:Destroy() end) end local icon = slot:FindFirstChild("WeaponIcon") if icon then icon.ImageTransparency = 0 end end end end end) if originalRevolverSkin then LocalPlayer:SetAttribute("RevolverSkin", originalRevolverSkin) end if originalKnifeSkin then LocalPlayer:SetAttribute("KnifeSkin", originalKnifeSkin) 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) --[[ 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) - Client-Side Weapon Skin Changer: * Equips any revolver and knife skin in the game (82+ Knives, 62+ Revolvers) * Full 3D meshes, PBR SurfaceAppearance, particles, beams, glow and neon * Custom weapon animations (Equip, Shoot, Slash, Inspect) & sounds (Firing, Reload, Equip) * Auto-persists on round change and respawns ]] 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 -- Weapon timings & instant knife charging 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.01 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 = "Задержка выстрела (сек)", KnifeHoldDuration = "Зажатие ножа (сек)", KnifeHoldDurationDesc = "Сколько удерживать ЛКМ для броска ножа в триггерботе (сек)", MuzzleCheck = "Проверка дула револьвера (Muzzle Check)", MuzzleCheckDesc = "Стрелять только когда конец револьвера чисто видит цель (не стреляет в углы и стены)", WallCheck = "Строгая проверка стен (Wall Check)", WallCheckDesc = "Не стрелять если враг за стеной или препятствием", TeamCheck = "Проверка команды (Team Check)", TeamCheckDesc = "Не целиться в союзников", Prediction = "Упреждение движения (Prediction)", PredictionDesc = "Упреждение полета ножа/пули по скорости цели", ProjSpeed = "Скорость снаряда", MaxKnifePower = "Всегда макс. сила ножа (Always Max Power)", MaxKnifePowerDesc = "Нож всегда летит с максимальной скоростью и дальностью, даже при слабом броске", InstantKnifeCharge = "Мгновенный заряд ножа (Instant Charge)", InstantKnifeChargeDesc = "Прицел мгновенно сужается за 0.01 сек при замахе ножа", 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)", -- Auto-Win / Kill Aura AutoWinGroup = "Авто-Вин / Килл Аура", EnableAutoWin = "Включить Auto-Win", AutoWinDesc = "Моментальное убийство противника в раунде (авто-победа)", AutoWinMode = "Режим автовина", AutoWinKey = "Клавиша Auto-Win", AutoWinReturn = "Возврат на место после ТП", AutoWinReturnDesc = "После удара со спины мгновенно возвращает на исходную точку", AutoWinEquip = "Авто-доставать нож", AutoWinEquipDesc = "Автоматически берет нож в руку перед атакой", AutoWinDelay = "Задержка повтора (сек)", -- 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 = "Цвет тумана", -- Settings MenuSettings = "Настройки интерфейса", LanguageSettings = "Язык меню и Бинд", UnloadGroup = "Управление скриптом", Language = "Выбор языка", Unload = "Выгрузить меню (Unload)", MenuKey = "Клавиша меню", QuickKeySelect = "Быстрый выбор клавиши меню", ChangeMenuKey = "Нажмите для смены клавиши (Любая)", PressAnyKey = "Нажмите любую клавишу...", KeybindUpdated = "Клавиша меню изменена на", -- Skins Tab Skins = "Скины", SkinChanger = "Скинченджер оружия (Client-Side)", EnableSkinChanger = "Включить Скинченджер", SkinChangerDesc = "Визуально надевает любой скин на револьвер и нож (3D модели, PBR-текстуры, звуки и анимации)", RevolverSkinsGroup = "Скины на Револьвер", KnifeSkinsGroup = "Скины на Нож", RevolverSkinSelect = "Выбор скина револьвера", KnifeSkinSelect = "Выбор скина ножа", ApplySkins = "Применить скины", SaveAsAutoload = "Сохранить как автозагрузку", AutoloadSaved = "Скины сохранены в автозагрузку!", AutoSaveSkins = "Авто-сохранение скинов", AutoSaveSkinsDesc = "Автоматически сохранять выбранные скины в автозагрузку", AutoloadStatus = "Автозагрузка", -- Viewmodel & Weapon Scale ViewmodelGroup = "Кастомный Viewmodel (Положение оружия)", EnableViewmodel = "Включить Viewmodel", ViewmodelDesc = "Смещение и наклон оружия в руках от 1-го и 3-го лица", HideArms = "Скрыть руки (Hide Arms)", HideArmsDesc = "Делает руки полностью невидимыми (парящее оружие)", VMMode = "Режим смещения", VMArmAndWeapon = "Рука и оружие (Вместе)", VMWeaponOnly = "Только оружие", VMPreset = "Пресеты Viewmodel", VMOffsetX = "Смещение X (Влево / Вправо)", VMOffsetY = "Смещение Y (Вверх / Вниз)", VMOffsetZ = "Смещение Z (Вперед / Назад)", VMPitch = "Наклон Pitch (Вверх / Вниз)", VMYaw = "Поворот Yaw (Влево / Вправо)", VMRoll = "Крен Roll (Gangster Tilt)", WeaponScaleGroup = "Размер оружия (Weapon Scale)", EnableWeaponScale = "Включить изменение размера", WeaponScaleDesc = "Увеличивает или уменьшает 3D модель ножа и револьвера", WeaponScale = "Масштаб размера (Scale)", ScalePreset = "Пресеты размера", ResetViewmodel = "Сбросить по умолчанию", }, 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)", KnifeHoldDuration = "Knife Hold Time (sec)", KnifeHoldDurationDesc = "Duration triggerbot holds attack to throw knife (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", MaxKnifePower = "Always Max Knife Power", MaxKnifePowerDesc = "Knife throws always have maximum velocity (420) and range even on weak taps", InstantKnifeCharge = "Instant Knife Charge", InstantKnifeChargeDesc = "Charges knife instantly in 0.01s with zero crosshair bloom", 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", -- Auto-Win / Kill Aura AutoWinGroup = "Auto-Win / Kill Aura", EnableAutoWin = "Enable Auto-Win", AutoWinDesc = "Instantly eliminates the opponent to win the round automatically", AutoWinMode = "Auto-Win Mode", AutoWinKey = "Auto-Win Keybind", AutoWinReturn = "Return to Origin After TP", AutoWinReturnDesc = "Instantly snaps character back to original position after backstab", AutoWinEquip = "Auto-Equip Knife", AutoWinEquipDesc = "Automatically pulls out the knife before attacking", AutoWinDelay = "Repeat Delay (sec)", -- 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", -- 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", -- Skins Tab Skins = "Skins", SkinChanger = "Weapon Skin Changer (Client-Side)", EnableSkinChanger = "Enable Skin Changer", SkinChangerDesc = "Visually equips any revolver & knife skin (3D models, PBR textures, sounds & animations)", RevolverSkinsGroup = "Revolver Skins", KnifeSkinsGroup = "Knife Skins", RevolverSkinSelect = "Select Revolver Skin", KnifeSkinSelect = "Select Knife Skin", ApplySkins = "Apply Skins", SaveAsAutoload = "Set as Autoload", AutoloadSaved = "Skins saved to autoload!", AutoSaveSkins = "Auto-Save Skins", AutoSaveSkinsDesc = "Automatically save selected skins to autoload", AutoloadStatus = "Autoload", -- Viewmodel & Weapon Scale ViewmodelGroup = "Custom Viewmodel (Weapon Position)", EnableViewmodel = "Enable Viewmodel Offset", ViewmodelDesc = "Offset and angle of weapon in hands (1st & 3rd person)", HideArms = "Hide Arms / Hands", HideArmsDesc = "Makes arms fully invisible (floating weapon view)", VMMode = "Offset Mode", VMArmAndWeapon = "Arm & Weapon (Together)", VMWeaponOnly = "Weapon Only", VMPreset = "Viewmodel Presets", VMOffsetX = "Offset X (Left / Right)", VMOffsetY = "Offset Y (Up / Down)", VMOffsetZ = "Offset Z (Forward / Back)", VMPitch = "Pitch Tilt (Up / Down)", VMYaw = "Yaw Angle (Left / Right)", VMRoll = "Roll Angle (Gangster Tilt)", WeaponScaleGroup = "Weapon Scale (Size)", EnableWeaponScale = "Enable Weapon Scale", WeaponScaleDesc = "Scales the 3D model size of knife and revolver", WeaponScale = "Scale Multiplier", ScalePreset = "Scale Presets", ResetViewmodel = "Reset to Default", } } 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 wallbangEnabled = false local targetPlayers = true local targetNoobs = true local targetTargets = true local targetPartMode = "Head" local fovRadius = 160 local showFovCircle = true local silentAimMode = "AlwaysOn" local alwaysMaxKnifePower = true local instantKnifeCharge = true local knifeSpeed = 6.5 _G.MD_AlwaysMaxKnifePower = true _G.MD_KnifeSpeed = 6.5 _G.MD_WallbangEnabled = wallbangEnabled -- Silent Auto-Fire (Triggerbot without camera snapping) local silentAutoFire = false local silentAutoFireDelay = 0.25 local knifeHoldDuration = 0.24 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" -- Auto-Win / Kill Aura State local autoWinEnabled = false local autoWinMode = "TP Backstab" local autoWinDelay = 0.15 local autoWinReturn = true local autoWinEquip = true local lastAutoWinTime = 0 local isAutoWinExecuting = false 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 isKnifeThrowing = false local function fireWeapon() local myChar = LocalPlayer.Character local tool = myChar and myChar:FindFirstChildOfClass("Tool") local isKnife = tool and (tool.Name:lower():find("knife") ~= nil) local im = nil pcall(function() im = require(game:GetService("ReplicatedStorage"):WaitForChild("Extensions"):WaitForChild("InputMap")) end) if isKnife then if isKnifeThrowing then return end isKnifeThrowing = true if im and im.fire then im.fire("Attack", true) end pcall(mouse1press) task.delay(knifeHoldDuration, function() if im and im.fire then im.fire("Attack", false) end pcall(mouse1release) task.delay(0.20, function() isKnifeThrowing = false end) end) else if im and im.tap then im.tap("Attack") else pcall(function() mouse1click() end) 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 colorCorrection = Lighting:FindFirstChildOfClass("ColorCorrectionEffect") local atmosphere = Lighting:FindFirstChildOfClass("Atmosphere") local origLighting = { Ambient = Lighting.Ambient, OutdoorAmbient = Lighting.OutdoorAmbient, Brightness = Lighting.Brightness, ClockTime = Lighting.ClockTime, FogColor = Lighting.FogColor, FogEnd = Lighting.FogEnd, GlobalShadows = Lighting.GlobalShadows, TintColor = colorCorrection and colorCorrection.TintColor or Color3.fromRGB(255, 255, 255), Saturation = colorCorrection and colorCorrection.Saturation or 0, AtmoColor = atmosphere and atmosphere.Color or Color3.fromRGB(200, 200, 200), AtmoDecay = atmosphere and atmosphere.Decay or Color3.fromRGB(100, 100, 100), } -- Custom Ambience State local customAmbienceEnabled = false local customLighting = { ClockTime = 0, Ambient = Color3.fromRGB(90, 20, 140), OutdoorAmbient = Color3.fromRGB(45, 10, 80), FogColor = Color3.fromRGB(35, 5, 55), FogDistance = 450, TintColor = Color3.fromRGB(230, 200, 255), Saturation = 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 = origLighting.ClockTime Lighting.Ambient = origLighting.Ambient Lighting.OutdoorAmbient = origLighting.OutdoorAmbient Lighting.FogColor = origLighting.FogColor Lighting.FogEnd = origLighting.FogEnd if colorCorrection then colorCorrection.TintColor = origLighting.TintColor colorCorrection.Saturation = origLighting.Saturation end if atmosphere then atmosphere.Color = origLighting.AtmoColor atmosphere.Decay = origLighting.AtmoDecay end return end Lighting.ClockTime = customLighting.ClockTime Lighting.Ambient = customLighting.Ambient Lighting.OutdoorAmbient = customLighting.OutdoorAmbient Lighting.FogColor = customLighting.FogColor Lighting.FogEnd = customLighting.FogDistance if not colorCorrection then colorCorrection = Instance.new("ColorCorrectionEffect", Lighting) end colorCorrection.TintColor = customLighting.TintColor colorCorrection.Saturation = customLighting.Saturation if atmosphere then atmosphere.Color = customLighting.FogColor atmosphere.Decay = customLighting.OutdoorAmbient 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 -- ==================== CLIENT-SIDE SKIN CHANGER STATE & LOGIC ==================== local skinChangerEnabled = false local selectedRevolverSkin = "ChromaSniper" local selectedKnifeSkin = "ChromaKatana" -- Viewmodel & Weapon Scale State local viewmodelEnabled = false local hideArmsEnabled = false local vmTargetMode = "ArmAndWeapon" -- "ArmAndWeapon" or "WeaponOnly" local defaultRSC1 = CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local vm = { x = 0, y = 0, z = 0, pitch = 0, yaw = 0, roll = 0 } local weaponScaleEnabled = false local weaponScale = 1.0 local skinsConfigFile = "MurderDuelsSkeet/skins_autoload.json" local function saveSkinsAutoload() pcall(function() if not isfolder("MurderDuelsSkeet") then pcall(makefolder, "MurderDuelsSkeet") end local data = { enabled = (skinChangerEnabled == true), revolver = selectedRevolverSkin or "ChromaSniper", knife = selectedKnifeSkin or "ChromaKatana", } writefile(skinsConfigFile, game:GetService("HttpService"):JSONEncode(data)) end) end local function loadSkinsAutoload() local loaded = false pcall(function() if isfile(skinsConfigFile) then local content = readfile(skinsConfigFile) local data = game:GetService("HttpService"):JSONDecode(content) if typeof(data) == "table" then if data.enabled ~= nil then skinChangerEnabled = (data.enabled == true) end if data.revolver and data.revolver ~= "" then selectedRevolverSkin = data.revolver end if data.knife and data.knife ~= "" then selectedKnifeSkin = data.knife end loaded = true end end end) return loaded end loadSkinsAutoload() local originalRevolverSkin = LocalPlayer:GetAttribute("RevolverSkin") or "Default" local originalKnifeSkin = LocalPlayer:GetAttribute("KnifeSkin") or "Default" local availableKnives, availableRevolvers do local topKnives = { "ChromaKatana", "CorruptedChromaKatana", "Voidreaver", "Balisong", "GalaxyKarambit", "Karambit", "GoldenStiletto", "RedStiletto", "Kunai", "Saber", "Solaris", "Seraphim", "Default" } local topRevolvers = { "ChromaSniper", "MurderNote", "GoldenLuger", "RedLuger", "PurpleLuger", "ChampionSniper", "Deagle", "InfinityRay", "RayGun", "Voidcaster", "Default" } local function buildSkinList(folderName, topPriority) local list = {} local seen = {} local folder = game:GetService("ReplicatedStorage"):FindFirstChild(folderName) if folder then for _, name in ipairs(topPriority) do if folder:FindFirstChild(name) then table.insert(list, name) seen[name] = true end end local rest = {} for _, child in ipairs(folder:GetChildren()) do if child:IsA("Model") and not seen[child.Name] and not child.Name:find("Root") and not child.Name:find("Test") then table.insert(rest, child.Name) end end table.sort(rest) for _, name in ipairs(rest) do table.insert(list, name) end end if #list == 0 then list = topPriority end return list end availableKnives = buildSkinList("Knives", topKnives) availableRevolvers = buildSkinList("Revolvers", topRevolvers) end local function updateSlotPreview(slotName, folderName, skinName, isKnife) local playerGui = LocalPlayer:FindFirstChild("PlayerGui") if not playerGui then return end local inMatchUI = playerGui:FindFirstChild("InMatchUI") if not inMatchUI then return end local abilities = inMatchUI:FindFirstChild("Abilities") if not abilities then return end local slot = abilities:FindFirstChild(slotName) if not slot then return end local icon = slot:FindFirstChild("WeaponIcon") local existingVp = slot:FindFirstChild("MD_SkinViewport") if not skinChangerEnabled or not skinName or skinName == "Default" or skinName == "" then if existingVp then pcall(function() existingVp:Destroy() end) end if icon then icon.ImageTransparency = 0 end return end local folder = game:GetService("ReplicatedStorage"):FindFirstChild(folderName) if not folder then return end local skinModel = folder:FindFirstChild(skinName) if not skinModel then return end if icon then icon.ImageTransparency = 1 end local vp = existingVp if not vp then vp = Instance.new("ViewportFrame") vp.Name = "MD_SkinViewport" vp.Size = UDim2.fromScale(0.88, 0.88) vp.Position = UDim2.fromScale(0.5, 0.5) vp.AnchorPoint = Vector2.new(0.5, 0.5) vp.BackgroundTransparency = 1 vp.BorderSizePixel = 0 vp.ZIndex = (icon and icon.ZIndex or 5) + 1 vp.Parent = slot end vp.Visible = true vp:ClearAllChildren() local clone = skinModel:Clone() for _, d in ipairs(clone:GetDescendants()) do if d:IsA("Sound") or d:IsA("ParticleEmitter") or d:IsA("Light") or d:IsA("Script") or d:IsA("LocalScript") or d:IsA("Trail") then pcall(function() d:Destroy() end) elseif d:IsA("BasePart") then d.CanCollide = false d.Anchored = true end end local rootName = isKnife and "KnifeRoot" or "RevolverRoot" local root = clone:FindFirstChild(rootName, true) local minB = Vector3.new(math.huge, math.huge, math.huge) local maxB = Vector3.new(-math.huge, -math.huge, -math.huge) local rootPos = root and root.Position local tipPos = rootPos local maxDistFromRoot = 0 for _, p in ipairs(clone:GetDescendants()) do if p:IsA("BasePart") and p.Transparency < 0.9 and p.Name ~= "BoundingBox" and not p.Name:lower():find("hitbox") then local cf = p.CFrame local h = p.Size * 0.5 for x = -1, 1, 2 do for y = -1, 1, 2 do for z = -1, 1, 2 do local pt = cf:PointToWorldSpace(Vector3.new(x*h.X, y*h.Y, z*h.Z)) minB = Vector3.new(math.min(minB.X, pt.X), math.min(minB.Y, pt.Y), math.min(minB.Z, pt.Z)) maxB = Vector3.new(math.max(maxB.X, pt.X), math.max(maxB.Y, pt.Y), math.max(maxB.Z, pt.Z)) end end end if rootPos then local d = (p.Position - rootPos).Magnitude if d > maxDistFromRoot then maxDistFromRoot = d tipPos = p.Position end end end end local center = (minB + maxB) * 0.5 local size = maxB - minB for _, p in ipairs(clone:GetDescendants()) do if p:IsA("BasePart") then p.CFrame = p.CFrame - center end end clone.Parent = vp local forwardDir if rootPos and tipPos and (tipPos - rootPos).Magnitude > 0.1 then forwardDir = (tipPos - rootPos).Unit else if size.X >= size.Y and size.X >= size.Z then forwardDir = Vector3.new(1,0,0) elseif size.Y >= size.X and size.Y >= size.Z then forwardDir = Vector3.new(0,1,0) else forwardDir = Vector3.new(0,0,1) end end local axes = { { axis = Vector3.new(1, 0, 0), len = size.X }, { axis = Vector3.new(0, 1, 0), len = size.Y }, { axis = Vector3.new(0, 0, 1), len = size.Z } } table.sort(axes, function(a, b) return a.len < b.len end) local thinAxis = axes[1].axis local normal = (thinAxis - forwardDir * thinAxis:Dot(forwardDir)) if normal.Magnitude < 0.01 then normal = (axes[2].axis - forwardDir * axes[2].axis:Dot(forwardDir)) end normal = normal.Unit local S = normal:Cross(forwardDir).Unit if not isKnife then local trueUp = (root and root.CFrame.UpVector) or Vector3.new(0, 1, 0) if S:Dot(trueUp) < 0 then S = -S normal = -normal end end local F = forwardDir local camRight, camUp if isKnife then camRight = (-F * 0.707 + S * 0.707).Unit camUp = ( F * 0.707 + S * 0.707).Unit else camRight = (-F * 0.92 + S * 0.38).Unit camUp = ( F * 0.38 + S * 0.92).Unit end local camLook = camRight:Cross(camUp).Unit local maxSpan = math.sqrt(size.X*size.X + size.Y*size.Y + size.Z*size.Z) * 0.65 if maxSpan < 0.1 then maxSpan = 1 end local cam = Instance.new("Camera") cam.FieldOfView = 25 local dist = (maxSpan * 0.5) / math.tan(math.rad(12.5)) * 1.25 cam.CFrame = CFrame.fromMatrix(-camLook * dist, camRight, camUp, -camLook) cam.Parent = vp vp.CurrentCamera = cam vp.LightColor = Color3.fromRGB(255, 255, 255) vp.LightDirection = (-camLook + Vector3.new(0.4, 0.4, 0.4)).Unit vp.Ambient = Color3.fromRGB(200, 200, 200) end local function applySkins() if skinChangerEnabled then if selectedRevolverSkin and selectedRevolverSkin ~= "" then LocalPlayer:SetAttribute("RevolverSkin", selectedRevolverSkin) LocalPlayer:SetAttribute("RevolverName", selectedRevolverSkin) end if selectedKnifeSkin and selectedKnifeSkin ~= "" then LocalPlayer:SetAttribute("KnifeSkin", selectedKnifeSkin) LocalPlayer:SetAttribute("KnifeName", selectedKnifeSkin) end else LocalPlayer:SetAttribute("RevolverSkin", originalRevolverSkin) LocalPlayer:SetAttribute("KnifeSkin", originalKnifeSkin) end pcall(function() updateSlotPreview("Gun", "Revolvers", selectedRevolverSkin, false) updateSlotPreview("Knife", "Knives", selectedKnifeSkin, true) end) end _G.MD_SetSkin = function(gun, knife) skinChangerEnabled = true if gun then selectedRevolverSkin = gun end if knife then selectedKnifeSkin = knife end saveSkinsAutoload() applySkins() end if skinChangerEnabled then task.spawn(function() task.wait(0.15) applySkins() end) end table.insert(Connections, LocalPlayer:GetAttributeChangedSignal("RevolverSkin"):Connect(function() if skinChangerEnabled and selectedRevolverSkin and selectedRevolverSkin ~= "" and LocalPlayer:GetAttribute("RevolverSkin") ~= selectedRevolverSkin then LocalPlayer:SetAttribute("RevolverSkin", selectedRevolverSkin) LocalPlayer:SetAttribute("RevolverName", selectedRevolverSkin) end end)) table.insert(Connections, LocalPlayer:GetAttributeChangedSignal("KnifeSkin"):Connect(function() if skinChangerEnabled and selectedKnifeSkin and selectedKnifeSkin ~= "" and LocalPlayer:GetAttribute("KnifeSkin") ~= selectedKnifeSkin then LocalPlayer:SetAttribute("KnifeSkin", selectedKnifeSkin) LocalPlayer:SetAttribute("KnifeName", selectedKnifeSkin) end end)) table.insert(Connections, LocalPlayer.CharacterAdded:Connect(function() task.wait(0.25) if skinChangerEnabled then applySkins() end end)) do local inMatchUIObj = LocalPlayer:FindFirstChild("PlayerGui") and LocalPlayer.PlayerGui:FindFirstChild("InMatchUI") if inMatchUIObj then table.insert(Connections, inMatchUIObj:GetPropertyChangedSignal("Enabled"):Connect(function() if inMatchUIObj.Enabled and skinChangerEnabled then task.wait(0.1) applySkins() end end)) local abilitiesObj = inMatchUIObj:FindFirstChild("Abilities") if abilitiesObj then table.insert(Connections, abilitiesObj:GetPropertyChangedSignal("Visible"):Connect(function() if abilitiesObj.Visible and skinChangerEnabled then task.wait(0.1) applySkins() end end)) end end if LocalPlayer:FindFirstChild("PlayerGui") then table.insert(Connections, LocalPlayer.PlayerGui.ChildAdded:Connect(function(child) if child.Name == "InMatchUI" and skinChangerEnabled then task.wait(0.2) applySkins() end end)) end end -- 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 -- ==================== 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 = false _G.MD_CurrentWeaponIsKnife = false local getAnyEnemyTarget = nil _G.MD_NIL = _G.MD_NIL or newproxy() -- Dynamic Metamethod Dispatchers (Ultra-optimized, zero allocations on non-target calls) _G.MD_OnNamecall = function(self, method, ...) if method ~= "FireServer" and method ~= "Fire" and method ~= "ViewportPointToRay" and method ~= "Raycast" then return nil end if method == "Raycast" then if _G.MD_WallbangEnabled then local origin, direction, rayParams = ... if typeof(rayParams) == "RaycastParams" and rayParams.FilterType == Enum.RaycastFilterType.Exclude then -- Bypasses obstacle/wall collision for knife and bullet in ProjectilesController return _G.MD_NIL end end 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 return Ray.new(camPos, (targetPos - camPos).Unit) end end return nil end if method == "Fire" then if self.Name == "SpawnKnife" then local shotData = ... if typeof(shotData) == "table" then shotData.power = _G.MD_KnifeSpeed or 6.5 if _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget local targetPos = tgt.Position local origin = shotData.origin or workspace.CurrentCamera.CFrame.Position shotData.target = origin + (targetPos - origin).Unit * 1000 end end return nil end if self.Name == "SpawnBullet" then local shotData = ... if typeof(shotData) == "table" and _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget shotData.hitInstance = tgt shotData.hitPos = tgt.Position shotData.to = tgt.Position shotData.isCharacterHit = true if typeof(shotData.segments) == "table" then for _, seg in ipairs(shotData.segments) do seg.hitInstance = tgt seg.hitPos = tgt.Position seg.isCharacterHit = true end end end return nil end return nil end if method == "FireServer" then if self.Name == "ThrowReplicate" then local shotData = ... if typeof(shotData) == "table" then shotData.power = 1.0 if _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget local targetPos = tgt.Position local origin = shotData.origin or workspace.CurrentCamera.CFrame.Position shotData.target = origin + (targetPos - origin).Unit * 1000 end end end if self.Name == "ShootReplicate" then local shotData = ... if typeof(shotData) == "table" and _G.MD_SilentAimEnabled and _G.MD_SilentAimTarget then local tgt = _G.MD_SilentAimTarget shotData.hitInstance = tgt shotData.hitPos = tgt.Position shotData.to = tgt.Position shotData.isCharacterHit = true if typeof(shotData.segments) == "table" then for _, seg in ipairs(shotData.segments) do seg.hitInstance = tgt seg.hitPos = tgt.Position seg.isCharacterHit = true end end end end 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 or shotData.target) then _G.MD_OnShotFired(shotData.origin, shotData.hitPos or shotData.to or shotData.target) 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 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 == _G.MD_NIL then return nil elseif 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 wallbangEnabled then return true end 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 getAnyEnemyTarget = function() local myChar = LocalPlayer.Character local myHRP = myChar and (myChar:FindFirstChild("HumanoidRootPart") or myChar:FindFirstChild("Torso")) if not myHRP then return nil end local myPos = myHRP.Position local mySide = LocalPlayer:GetAttribute("MatchSide") local best = nil local bestDist = math.huge local function checkModel(m) if not m or not m:IsA("Model") or m == myChar then return end if m:FindFirstChildOfClass("ForceField") then return end local hum = m:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 or hum:GetState() == Enum.HumanoidStateType.Dead then return end local hrp = m:FindFirstChild("HumanoidRootPart") or m:FindFirstChild("Torso") or m:FindFirstChild("UpperTorso") if not hrp then return end local plr = Players:GetPlayerFromCharacter(m) if plr then if not isEnemy(plr) then return end else if mySide and m:GetAttribute("MatchSide") == mySide then return end if not targetNoobs and m.Name == "Noob" then return end end local aimPart = getTargetAimPart(m) or hrp local dist = (hrp.Position - myPos).Magnitude if dist < bestDist then bestDist = dist best = { char = m, hrp = hrp, part = aimPart, player = plr, dist = dist } end end for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and isEnemy(plr) and plr.Character then checkModel(plr.Character) end end if workspace:FindFirstChild("Characters") then for _, m in ipairs(workspace.Characters:GetChildren()) do checkModel(m) end end return best end local function executeAutoWin() if isAutoWinExecuting then return end local myChar = LocalPlayer.Character if not myChar then return end local myHRP = myChar:FindFirstChild("HumanoidRootPart") or myChar:FindFirstChild("Torso") local myHum = myChar:FindFirstChildOfClass("Humanoid") if not myHRP or not myHum or myHum.Health <= 0 then return end local target = getAnyEnemyTarget() if not target or not target.hrp or not target.char then return end isAutoWinExecuting = true local bp = LocalPlayer:FindFirstChild("Backpack") local currentTool = myChar:FindFirstChildOfClass("Tool") local currentToolName = currentTool and currentTool.Name:lower() or "" local knifeInBp = bp and bp:FindFirstChild("Knife") local revInBp = bp and bp:FindFirstChild("Revolver") local hasKnife = currentToolName:find("knife") ~= nil or knifeInBp ~= nil if autoWinEquip then if autoWinMode == "TP Backstab" and knifeInBp and currentToolName:find("knife") == nil then myHum:EquipTool(knifeInBp) task.wait(0.04) elseif autoWinMode == "360° Auto-Throw" then if not currentTool then local tToEquip = knifeInBp or revInBp if tToEquip then myHum:EquipTool(tToEquip) task.wait(0.04) end end end end currentTool = myChar:FindFirstChildOfClass("Tool") currentToolName = currentTool and currentTool.Name:lower() or "" if autoWinMode == "TP Backstab" and hasKnife then local originalCFrame = myHRP.CFrame local targetHRP = target.hrp local targetChar = target.char local targetPlr = target.player local targetLook = targetHRP.CFrame.LookVector local behindPos = targetHRP.Position - (targetLook * 1.5) myHRP.CFrame = CFrame.lookAt(behindPos, targetHRP.Position) myHRP.AssemblyLinearVelocity = Vector3.zero 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(mouse1click) end pcall(function() local Remotes = game:GetService("ReplicatedStorage"):FindFirstChild("Remotes") local ReportHit = Remotes and Remotes:FindFirstChild("ReportHit") if ReportHit then ReportHit:FireServer({ kind = "melee", targetUserId = targetPlr and targetPlr.UserId or 0, targetModel = targetChar, direction = myHRP.CFrame.LookVector, at = workspace:GetServerTimeNow(), backstab = true }) end end) if autoWinReturn then task.delay(0.06, function() if myHRP and myHRP.Parent and originalCFrame then myHRP.CFrame = originalCFrame myHRP.AssemblyLinearVelocity = Vector3.zero end task.delay(0.1, function() isAutoWinExecuting = false end) end) else task.delay(0.15, function() isAutoWinExecuting = false end) end else _G.MD_SilentAimTarget = target.part or target.hrp _G.MD_SilentAimEnabled = true _G.MD_WallbangEnabled = true fireWeapon() task.delay(0.25, function() isAutoWinExecuting = false end) end 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 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_WallbangEnabled = wallbangEnabled _G.MD_KnifeSpeed = knifeSpeed local myChar = LocalPlayer.Character local activeTool = myChar and myChar:FindFirstChildOfClass("Tool") local tName = activeTool and activeTool.Name:lower() or "" local isKnife = (tName:find("knife") ~= nil) _G.MD_CurrentWeaponIsKnife = isKnife -- Viewmodel & Weapon Scale Execution if myChar then local torso = myChar:FindFirstChild("Torso") local rightArm = myChar:FindFirstChild("Right Arm") or myChar:FindFirstChild("RightHand") local leftArm = myChar:FindFirstChild("Left Arm") or myChar:FindFirstChild("LeftHand") local rs = torso and torso:FindFirstChild("Right Shoulder") local attach = rightArm and (rightArm:FindFirstChild("Knife_HandAttach") or rightArm:FindFirstChild("Revolver_HandAttach")) -- 1. Hide Arms if hideArmsEnabled then if rightArm then rightArm.LocalTransparencyModifier = 1 end if leftArm then leftArm.LocalTransparencyModifier = 1 end else if rightArm and rightArm.LocalTransparencyModifier == 1 then rightArm.LocalTransparencyModifier = 0 end if leftArm and leftArm.LocalTransparencyModifier == 1 then leftArm.LocalTransparencyModifier = 0 end end -- 2. Viewmodel Offset if viewmodelEnabled then local offsetCF = CFrame.new(vm.x, vm.y, vm.z) * CFrame.Angles(math.rad(vm.pitch), math.rad(vm.yaw), math.rad(vm.roll)) if vmTargetMode == "ArmAndWeapon" then if rs and rs:IsA("Motor6D") then local targetRSC1 = offsetCF:Inverse() * defaultRSC1 if rs.C1 ~= targetRSC1 then rs.C1 = targetRSC1 end end if attach and attach:IsA("Motor6D") and attach.C1 ~= CFrame.identity then attach.C1 = CFrame.identity end else if rs and rs:IsA("Motor6D") and rs.C1 ~= defaultRSC1 then rs.C1 = defaultRSC1 end if attach and attach:IsA("Motor6D") and attach.C1 ~= offsetCF then attach.C1 = offsetCF end end else if rs and rs:IsA("Motor6D") and rs.C1 ~= defaultRSC1 then rs.C1 = defaultRSC1 end if attach and attach:IsA("Motor6D") and attach.C1 ~= CFrame.identity then attach.C1 = CFrame.identity end end -- 3. Weapon Scale local targetScale = (weaponScaleEnabled and weaponScale) or 1.0 local knifeRig = myChar:FindFirstChild("KnifeRig") if knifeRig and knifeRig:IsA("Model") then if math.abs(knifeRig:GetScale() - targetScale) > 0.01 then pcall(function() knifeRig:ScaleTo(targetScale) end) end end local revRig = myChar:FindFirstChild("RevolverRig") if revRig and revRig:IsA("Model") then if math.abs(revRig:GetScale() - targetScale) > 0.01 then pcall(function() revRig:ScaleTo(targetScale) end) end end end -- Silent Auto-Fire (Triggerbot: Fires automatically WITHOUT camera snapping) if silentAutoFire and isAimActive and silentAimTargetPart then local now = tick() local fireDelay = isKnife and math.max(silentAutoFireDelay, knifeHoldDuration + 0.12) or silentAutoFireDelay if (now - lastSilentFireTime >= fireDelay) then -- Muzzle clearance check: skip when wallbang is on (we spoof origin anyway) if wallbangEnabled or isKnife or 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 -- Auto-Win / Kill Aura Execution local isAutoWinKeyActive = Options.AutoWinKey and Options.AutoWinKey:GetState() if (autoWinEnabled or isAutoWinKeyActive) and not isAutoWinExecuting then local now = tick() if (now - lastAutoWinTime >= autoWinDelay) then lastAutoWinTime = now task.spawn(executeAutoWin) end end -- Legit FOV Circle if legitFovCircle then legitFovCircle.Position = screenCenter legitFovCircle.Radius = legitFovRadius legitFovCircle.Visible = legitAimEnabled and legitShowFov and (not isMenuOpen) 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")), Skins = Window:AddTab(T("Skins")), Movement = Window:AddTab(T("Movement")), ["UI Settings"] = Window:AddTab(T("Settings")), } -- 1. RAGE TAB local LeftRage = Tabs.Rage:AddLeftGroupbox(T("SilentAimbot")) local AutoWinBox = Tabs.Rage:AddLeftGroupbox(T("AutoWinGroup")) 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:AddSlider("KnifeHoldDuration", { Text = T("KnifeHoldDuration"), Default = math.floor(knifeHoldDuration * 100), Min = 10, Max = 60, Rounding = 0, Compact = false, Tooltip = T("KnifeHoldDurationDesc"), Callback = function(Value) knifeHoldDuration = 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("Wallbang", { Text = "Wallbang", Default = wallbangEnabled, Tooltip = "Shoot through walls / bypass line of sight raycasts", Callback = function(Value) wallbangEnabled = Value end }) LeftRage:AddToggle("MaxKnifePower", { Text = T("MaxKnifePower"), Default = alwaysMaxKnifePower, Tooltip = T("MaxKnifePowerDesc"), Callback = function(Value) alwaysMaxKnifePower = Value _G.MD_AlwaysMaxKnifePower = Value end }) LeftRage:AddToggle("InstantKnifeCharge", { Text = T("InstantKnifeCharge"), Default = instantKnifeCharge, Tooltip = T("InstantKnifeChargeDesc"), Callback = function(Value) instantKnifeCharge = Value pcall(function() local rs = game:GetService("ReplicatedStorage") local kt = require(rs.Shared.KnifeTiming) kt.CHARGE_DUR = Value and 0.01 or 0.5 kt.HOLD_TO_THROW_SEC = 0.2 end) end }) LeftRage:AddSlider("KnifeSpeed", { Text = currentLang == "RU" and "Скорость ножа (как у ревика)" or "Knife Speed (Revolver Speed)", Default = 65, Min = 10, Max = 100, Rounding = 0, Compact = false, Callback = function(Value) knifeSpeed = Value / 10 _G.MD_KnifeSpeed = knifeSpeed end }) -- Auto-Win / Kill Aura Groupbox AutoWinBox:AddToggle("EnableAutoWin", { Text = T("EnableAutoWin"), Default = autoWinEnabled, Tooltip = T("AutoWinDesc"), Callback = function(Value) autoWinEnabled = Value end }):AddKeyPicker("AutoWinKey", { Default = "None", SyncToggleState = false, Mode = "Hold", Text = T("AutoWinKey"), NoUI = false, }) AutoWinBox:AddDropdown("AutoWinMode", { Values = { "TP Backstab", "360° Auto-Throw" }, Default = 1, Multi = false, Text = T("AutoWinMode"), Callback = function(Value) autoWinMode = Value end }) AutoWinBox:AddSlider("AutoWinDelay", { Text = T("AutoWinDelay"), Default = math.floor(autoWinDelay * 100), Min = 5, Max = 100, Rounding = 0, Compact = false, Callback = function(Value) autoWinDelay = Value / 100 end }) AutoWinBox:AddToggle("AutoWinReturn", { Text = T("AutoWinReturn"), Default = autoWinReturn, Tooltip = T("AutoWinReturnDesc"), Callback = function(Value) autoWinReturn = Value end }) AutoWinBox:AddToggle("AutoWinEquip", { Text = T("AutoWinEquip"), Default = autoWinEquip, Tooltip = T("AutoWinEquipDesc"), Callback = function(Value) autoWinEquip = 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 if fovCircle and not Value then fovCircle.Visible = false end 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 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 customLighting.ClockTime = p.ClockTime customLighting.Ambient = p.Ambient customLighting.OutdoorAmbient = p.OutdoorAmbient customLighting.FogColor = p.FogColor customLighting.FogDistance = p.FogEnd customLighting.TintColor = p.Tint customLighting.Saturation = p.Saturation applyAmbience() end end }) AmbienceBox:AddSlider("AmbienceClockTime", { Text = T("ClockTime"), Default = customLighting.ClockTime, Min = 0, Max = 24, Rounding = 1, Compact = false, Callback = function(Value) customLighting.ClockTime = Value if customAmbienceEnabled then Lighting.ClockTime = Value end end }) AmbienceBox:AddSlider("AmbienceFogDist", { Text = T("FogDist"), Default = customLighting.FogDistance, Min = 100, Max = 3000, Rounding = 0, Compact = false, Callback = function(Value) customLighting.FogDistance = Value if customAmbienceEnabled then Lighting.FogEnd = Value end end }) AmbienceBox:AddSlider("AmbienceSaturation", { Text = T("Saturation"), Default = math.floor(customLighting.Saturation * 10), Min = -10, Max = 15, Rounding = 0, Compact = false, Callback = function(Value) customLighting.Saturation = Value / 10 if customAmbienceEnabled and colorCorrection then colorCorrection.Saturation = Value / 10 end end }) AmbienceBox:AddLabel(T("AmbientColor")):AddColorPicker("AmbientCol", { Default = customLighting.Ambient, Title = "Ambient Color", Callback = function(Value) customLighting.Ambient = Value if customAmbienceEnabled then Lighting.Ambient = Value end end }) AmbienceBox:AddLabel(T("OutdoorColor")):AddColorPicker("OutdoorCol", { Default = customLighting.OutdoorAmbient, Title = "Outdoor Ambient", Callback = function(Value) customLighting.OutdoorAmbient = Value if customAmbienceEnabled then Lighting.OutdoorAmbient = Value end end }) AmbienceBox:AddLabel(T("FogColor")):AddColorPicker("FogCol", { Default = customLighting.FogColor, Title = "Fog Color", Callback = function(Value) customLighting.FogColor = 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 }) -- 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 = origLighting.Brightness Lighting.ClockTime = origLighting.ClockTime Lighting.FogEnd = origLighting.FogEnd Lighting.GlobalShadows = origLighting.GlobalShadows 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. SKINS TAB local LeftSkins = Tabs.Skins:AddLeftGroupbox(T("RevolverSkinsGroup")) local RightSkins = Tabs.Skins:AddRightGroupbox(T("KnifeSkinsGroup")) local function findSkinIdx(list, targetName) for i, v in ipairs(list) do if v == targetName then return i end end return 1 end LeftSkins:AddToggle("EnableSkinChanger", { Text = T("EnableSkinChanger"), Default = skinChangerEnabled, Tooltip = T("SkinChangerDesc"), Callback = function(Value) skinChangerEnabled = Value saveSkinsAutoload() applySkins() end }) LeftSkins:AddDropdown("RevolverSkinSelect", { Values = availableRevolvers, Default = findSkinIdx(availableRevolvers, selectedRevolverSkin), Multi = false, Text = T("RevolverSkinSelect"), Callback = function(Value) selectedRevolverSkin = Value saveSkinsAutoload() if skinChangerEnabled then applySkins() end end }) LeftSkins:AddButton(T("ApplySkins"), function() applySkins() end) LeftSkins:AddButton(T("SaveAsAutoload"), function() saveSkinsAutoload() Library:Notify(T("AutoloadSaved") .. string.format("\n[%s | %s]", selectedRevolverSkin, selectedKnifeSkin), 3) end) RightSkins:AddDropdown("KnifeSkinSelect", { Values = availableKnives, Default = findSkinIdx(availableKnives, selectedKnifeSkin), Multi = false, Text = T("KnifeSkinSelect"), Callback = function(Value) selectedKnifeSkin = Value saveSkinsAutoload() if skinChangerEnabled then applySkins() end end }) RightSkins:AddButton(T("ApplySkins"), function() applySkins() end) RightSkins:AddButton(T("SaveAsAutoload"), function() saveSkinsAutoload() Library:Notify(T("AutoloadSaved") .. string.format("\n[%s | %s]", selectedRevolverSkin, selectedKnifeSkin), 3) end) -- Viewmodel Settings (Left Column) local ViewmodelBox = Tabs.Skins:AddLeftGroupbox(T("ViewmodelGroup")) ViewmodelBox:AddToggle("EnableViewmodel", { Text = T("EnableViewmodel"), Default = viewmodelEnabled, Tooltip = T("ViewmodelDesc"), Callback = function(Value) viewmodelEnabled = Value end }) ViewmodelBox:AddToggle("HideArms", { Text = T("HideArms"), Default = hideArmsEnabled, Tooltip = T("HideArmsDesc"), Callback = function(Value) hideArmsEnabled = Value end }) ViewmodelBox:AddDropdown("VMMode", { Values = { T("VMArmAndWeapon"), T("VMWeaponOnly") }, Default = (vmTargetMode == "ArmAndWeapon") and 1 or 2, Multi = false, Text = T("VMMode"), Callback = function(Value) if Value == T("VMWeaponOnly") or Value:find("Weapon") or Value:find("Только") then vmTargetMode = "WeaponOnly" else vmTargetMode = "ArmAndWeapon" end end }) ViewmodelBox:AddDropdown("VMPreset", { Values = { "Default", "Left Hand", "Centered / Doom", "Gangster Tilt", "Extended" }, Default = 1, Multi = false, Text = T("VMPreset"), Callback = function(Value) if Value == "Default" then vm.x, vm.y, vm.z = 0, 0, 0 vm.pitch, vm.yaw, vm.roll = 0, 0, 0 elseif Value == "Left Hand" then vm.x, vm.y, vm.z = -1.3, -0.1, 0.2 vm.pitch, vm.yaw, vm.roll = 0, 0, -15 elseif Value == "Centered / Doom" then vm.x, vm.y, vm.z = -0.85, -0.2, 0.4 vm.pitch, vm.yaw, vm.roll = 5, 0, 0 elseif Value == "Gangster Tilt" then vm.x, vm.y, vm.z = 0.1, 0.1, 0.2 vm.pitch, vm.yaw, vm.roll = 0, 10, 40 elseif Value == "Extended" then vm.x, vm.y, vm.z = 0, -0.1, -1.2 vm.pitch, vm.yaw, vm.roll = 0, 0, 0 end pcall(function() if Options.VMOffsetX then Options.VMOffsetX:SetValue(math.floor(vm.x * 10)) end if Options.VMOffsetY then Options.VMOffsetY:SetValue(math.floor(vm.y * 10)) end if Options.VMOffsetZ then Options.VMOffsetZ:SetValue(math.floor(vm.z * 10)) end if Options.VMPitch then Options.VMPitch:SetValue(vm.pitch) end if Options.VMYaw then Options.VMYaw:SetValue(vm.yaw) end if Options.VMRoll then Options.VMRoll:SetValue(vm.roll) end end) end }) ViewmodelBox:AddSlider("VMOffsetX", { Text = T("VMOffsetX"), Default = math.floor(vm.x * 10), Min = -25, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) vm.x = Value / 10 end }) ViewmodelBox:AddSlider("VMOffsetY", { Text = T("VMOffsetY"), Default = math.floor(vm.y * 10), Min = -25, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) vm.y = Value / 10 end }) ViewmodelBox:AddSlider("VMOffsetZ", { Text = T("VMOffsetZ"), Default = math.floor(vm.z * 10), Min = -25, Max = 25, Rounding = 0, Compact = false, Callback = function(Value) vm.z = Value / 10 end }) ViewmodelBox:AddSlider("VMPitch", { Text = T("VMPitch"), Default = vm.pitch, Min = -45, Max = 45, Rounding = 0, Compact = false, Callback = function(Value) vm.pitch = Value end }) ViewmodelBox:AddSlider("VMYaw", { Text = T("VMYaw"), Default = vm.yaw, Min = -45, Max = 45, Rounding = 0, Compact = false, Callback = function(Value) vm.yaw = Value end }) ViewmodelBox:AddSlider("VMRoll", { Text = T("VMRoll"), Default = vm.roll, Min = -45, Max = 45, Rounding = 0, Compact = false, Callback = function(Value) vm.roll = Value end }) ViewmodelBox:AddButton(T("ResetViewmodel"), function() vm.x, vm.y, vm.z = 0, 0, 0 vm.pitch, vm.yaw, vm.roll = 0, 0, 0 pcall(function() if Options.VMOffsetX then Options.VMOffsetX:SetValue(0) end if Options.VMOffsetY then Options.VMOffsetY:SetValue(0) end if Options.VMOffsetZ then Options.VMOffsetZ:SetValue(0) end if Options.VMPitch then Options.VMPitch:SetValue(0) end if Options.VMYaw then Options.VMYaw:SetValue(0) end if Options.VMRoll then Options.VMRoll:SetValue(0) end end) end) -- Weapon Scale (Right Column) local ScaleBox = Tabs.Skins:AddRightGroupbox(T("WeaponScaleGroup")) ScaleBox:AddToggle("EnableWeaponScale", { Text = T("EnableWeaponScale"), Default = weaponScaleEnabled, Tooltip = T("WeaponScaleDesc"), Callback = function(Value) weaponScaleEnabled = Value end }) ScaleBox:AddDropdown("ScalePreset", { Values = { "Default (1.0x)", "Compact / Mini (0.5x)", "Medium (1.5x)", "Giant Buster (2.5x)", "Colossal (3.5x)" }, Default = 1, Multi = false, Text = T("ScalePreset"), Callback = function(Value) if Value:find("Default") then weaponScale = 1.0 elseif Value:find("Mini") or Value:find("Compact") then weaponScale = 0.5 elseif Value:find("Medium") then weaponScale = 1.5 elseif Value:find("Giant") then weaponScale = 2.5 elseif Value:find("Colossal") then weaponScale = 3.5 end pcall(function() if Options.WeaponScaleSlider then Options.WeaponScaleSlider:SetValue(math.floor(weaponScale * 100)) end end) end }) ScaleBox:AddSlider("WeaponScaleSlider", { Text = T("WeaponScale"), Default = math.floor(weaponScale * 100), Min = 20, Max = 350, Rounding = 0, Compact = false, Callback = function(Value) weaponScale = Value / 100 end }) ScaleBox:AddButton(T("ResetViewmodel"), function() weaponScale = 1.0 pcall(function() if Options.WeaponScaleSlider then Options.WeaponScaleSlider:SetValue(100) end end) end) -- 6. 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() if originalRevolverSkin then LocalPlayer:SetAttribute("RevolverSkin", originalRevolverSkin) LocalPlayer:SetAttribute("RevolverName", originalRevolverSkin) end if originalKnifeSkin then LocalPlayer:SetAttribute("KnifeSkin", originalKnifeSkin) LocalPlayer:SetAttribute("KnifeName", originalKnifeSkin) end end) 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() if fullbrightEnabled then Lighting.Brightness = origLighting.Brightness Lighting.ClockTime = origLighting.ClockTime Lighting.FogEnd = origLighting.FogEnd Lighting.GlobalShadows = origLighting.GlobalShadows end -- Cleanup Skin Changer Viewports & restore hotbar icons & attributes pcall(function() local playerGui = LocalPlayer:FindFirstChild("PlayerGui") local inMatchUI = playerGui and playerGui:FindFirstChild("InMatchUI") local abilities = inMatchUI and inMatchUI:FindFirstChild("Abilities") if abilities then for _, slotName in ipairs({ "Knife", "Gun" }) do local slot = abilities:FindFirstChild(slotName) if slot then local vp = slot:FindFirstChild("MD_SkinViewport") if vp then pcall(function() vp:Destroy() end) end local icon = slot:FindFirstChild("WeaponIcon") if icon then icon.ImageTransparency = 0 end end end end end) if originalRevolverSkin then LocalPlayer:SetAttribute("RevolverSkin", originalRevolverSkin) end if originalKnifeSkin then LocalPlayer:SetAttribute("KnifeSkin", originalKnifeSkin) 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)