REAL SWAGA SCRIPT
Key Required

REAL SWAGA SCRIPT

[CURE] Violence DistrictHauhLaundHauhLaund 218 views 250 executesUpdated Jul 18, 2026
Unrated
00
Lua Script•2906 lines (99608 chars)
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/Library.lua"))()
local ThemeManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/addons/ThemeManager.lua"))()
local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/addons/SaveManager.lua"))()

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Lighting = game:GetService("Lighting")
local VirtualInputManager = game:GetService("VirtualInputManager")

local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local Camera = Workspace.CurrentCamera

local Window = Library:CreateWindow({
    AutoShow = true,
    Title = "SWAGA SHIT | no TG LOL XD",
    MenuFadeTime = 0.001,
    TabPadding = 0.8,
    Center = true
})

local MainTab = Window:AddTab("!")
local ESPTab = Window:AddTab("ESP")
local SurvivorTab = Window:AddTab("Выживший")
local KillerTab = Window:AddTab("Киллер")
local FunctionsTab = Window:AddTab("Функции")
local VisualTab = Window:AddTab("Visual")
local TeleportTab = Window:AddTab("Teleport")
local CombatTab = Window:AddTab("Combat")
local FunTab = Window:AddTab("Fun")
local UITab = Window:AddTab("UI")

-- ========== ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ==========
local function GetCharacter()
    return LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
end

local function GetHumanoid()
    local char = GetCharacter()
    return char and char:FindFirstChildOfClass("Humanoid")
end

local function GetHumanoidRootPart()
    local char = GetCharacter()
    return char and char:FindFirstChild("HumanoidRootPart")
end

local function GetTeamName()
    return LocalPlayer.Team and LocalPlayer.Team.Name or ""
end

local function IsSurvivor()
    return GetTeamName():lower():find("survivor") ~= nil
end

local function IsKiller()
    return GetTeamName():lower():find("killer") ~= nil
end

local function GetPlayers()
    local list = {}
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character then
            table.insert(list, player)
        end
    end
    return list
end

local function GetNearestPlayer(radius)
    local hrp = GetHumanoidRootPart()
    if not hrp then return nil end
    local nearest, dist = nil, radius or math.huge
    for _, player in ipairs(GetPlayers()) do
        local targetHrp = player.Character:FindFirstChild("HumanoidRootPart")
        if targetHrp then
            local d = (targetHrp.Position - hrp.Position).Magnitude
            if d < dist then
                dist = d
                nearest = player
            end
        end
    end
    return nearest, dist
end

local function IsPlayerVisible(player)
    if not player or not player.Character then return false end
    local hrp = player.Character:FindFirstChild("HumanoidRootPart")
    if not hrp then return false end
    local origin = Camera.CFrame.Position
    local direction = (hrp.Position - origin).Unit
    local ray = Ray.new(origin, direction * 1000)
    local hit, pos = Workspace:FindPartOnRay(ray, LocalPlayer.Character)
    if hit then
        local hitPlayer = Players:GetPlayerFromCharacter(hit.Parent)
        return hitPlayer == player
    end
    return true
end

local function GetViewportCenter()
    return Camera.ViewportSize / 2
end

-- ========== ПЕРЕМЕННЫЕ ДЛЯ ТОГГЛОВ ==========
local Toggles = {}
local Options = {}
getgenv().Toggles = Toggles
getgenv().Options = Options

local Connections = {}
local Running = true

-- ========== СОЗДАНИЕ ВКЛАДОК И ГРУПП ==========
local InfoLeft = MainTab:AddLeftGroupbox("Информация")
local InfoRight = MainTab:AddRightGroupbox("Действия")

InfoLeft:AddLabel("SWAGA SHIT")
InfoLeft:AddLabel("Версия: DeepSeek")
InfoLeft:AddLabel("Telegram: @swagashits")
InfoLeft:AddLabel("Интерфейс: Linoria Lib")
InfoLeft:AddDivider()
InfoLeft:AddLabel("Статус: Система активна")

InfoRight:AddButton("Скопировать Telegram", function()
    setclipboard("https://t.me/swagashits")
    Library:Notify("Telegram скопирован: @swagashits", 4)
end)

InfoRight:AddButton("Проверить обновления", function()
    Library:Notify("Версия DeepSeek (последняя)", 3)
end)

InfoRight:AddButton("Быстрый перезапуск", function()
    Library:Notify("У разраба SWAGA SCRIPT не хватило ума поменять ссылку на собственную! Лол!", 3)
end)

-- ========== ВКЛАДКА ВЫЖИВШИЙ ==========
local SurvivorLeft = SurvivorTab:AddLeftGroupbox("Авто-победа")
local SurvivorRight = SurvivorTab:AddRightGroupbox("Защита")
local SurvivorLeft2 = SurvivorTab:AddLeftGroupbox("Парри")
local SurvivorRight2 = SurvivorTab:AddRightGroupbox("Прочее")

-- Авто-победа
SurvivorLeft:AddToggle("AutoVictory", {
    Text = "Авто-победа (телепорт)",
    Default = false,
    Callback = function(val)
        Toggles.AutoVictory = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.AutoVictory then conn:Disconnect() return end
                local hrp = GetHumanoidRootPart()
                if hrp then
                    local map = Workspace:FindFirstChild("Map")
                    if map and map:FindFirstChild("RooftopHitbox") then
                        local pos = Vector3.new(3098.16, 454.04, -4918.74)
                        hrp.CFrame = CFrame.new(pos + Vector3.new(0, 3, 0))
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

SurvivorLeft:AddToggle("AutoVictoryV2", {
    Text = "Авто-победа V2 (сигнал)",
    Default = false,
    Callback = function(val)
        Toggles.AutoVictoryV2 = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.AutoVictoryV2 then conn:Disconnect() return end
                pcall(function()
                    local showresults = ReplicatedStorage:FindFirstChild("Remotes") and 
                                        ReplicatedStorage.Remotes:FindFirstChild("Game") and
                                        ReplicatedStorage.Remotes.Game:FindFirstChild("showresults")
                    if showresults then
                        showresults:FireServer()
                    end
                end)
            end)
            table.insert(Connections, conn)
        end
    end
})

-- Защита
SurvivorRight:AddToggle("NoSlowdown", {
    Text = "No Slowdown (без замедлений)",
    Default = false,
    Callback = function(val)
        Toggles.NoSlowdown = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.NoSlowdown then
                local hum = GetHumanoid()
                if hum then
                    hum:SetAttribute("NoSlowdown", true)
                    hum.WalkSpeed = 16
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

SurvivorRight:AddToggle("NoFall", {
    Text = "No Fall (нет урона от падения)",
    Default = false,
    Callback = function(val)
        Toggles.NoFall = val
        if val then
            local FallRemote = ReplicatedStorage:FindFirstChild("Remotes") and
                              ReplicatedStorage.Remotes:FindFirstChild("Mechanics") and
                              ReplicatedStorage.Remotes.Mechanics:FindFirstChild("Fall")
            if FallRemote then
                local mt = getrawmetatable(game)
                local oldNamecall = mt.__namecall
                setreadonly(mt, false)
                mt.__namecall = newcclosure(function(self, ...)
                    if self == FallRemote then return end
                    return oldNamecall(self, ...)
                end)
                setreadonly(mt, true)
            end
        end
    end
})

SurvivorRight:AddToggle("NoHitbox", {
    Text = "No Hitbox (нельзя задеть)",
    Default = false,
    Callback = function(val)
        Toggles.NoHitbox = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.NoHitbox then
                local char = GetCharacter()
                if char then
                    for _, part in ipairs(char:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.CanTouch = false
                        end
                    end
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

-- Парри
SurvivorLeft2:AddToggle("AutoParry", {
    Text = "Авто-парри (по анимациям)",
    Default = false,
    Callback = function(val)
        Toggles.AutoParry = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.AutoParry then conn:Disconnect() return end
                for _, player in ipairs(GetPlayers()) do
                    if player.Character then
                        local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
                        if humanoid then
                            local animator = humanoid:FindFirstChildOfClass("Animator")
                            if animator then
                                for _, track in ipairs(animator:GetPlayingAnimationTracks()) do
                                    if track.Animation and track.Animation.AnimationId then
                                        local id = track.Animation.AnimationId:lower()
                                        if id:find("attack") or id:find("swing") or id:find("slash") then
                                            pcall(function()
                                                local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                                                if remotes and remotes.Attacks and remotes.Attacks.Parry then
                                                    remotes.Attacks.Parry:FireServer()
                                                end
                                            end)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

SurvivorLeft2:AddSlider("ParryRange", {
    Text = "Дальность парри",
    Default = 10,
    Min = 0,
    Max = 20,
    Rounding = 1,
    Callback = function(val)
        Options.ParryRange = val
    end
})

SurvivorLeft2:AddToggle("AutoParryV2", {
    Text = "Авто-парри V2 (по движению руки)",
    Default = false,
    Callback = function(val)
        Toggles.AutoParryV2 = val
        if val then
            local lastPositions = {}
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.AutoParryV2 then conn:Disconnect() return end
                for _, player in ipairs(GetPlayers()) do
                    if player.Character then
                        local rightArm = player.Character:FindFirstChild("Right Arm") or 
                                        player.Character:FindFirstChild("RightHand") or
                                        player.Character:FindFirstChild("Handle")
                        if rightArm then
                            local pos = rightArm.Position
                            if lastPositions[player] then
                                local speed = (pos - lastPositions[player]).Magnitude / 0.05
                                if speed > 30 then
                                    pcall(function()
                                        local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                                        if remotes and remotes.Attacks and remotes.Attacks.Parry then
                                            remotes.Attacks.Parry:FireServer()
                                        end
                                    end)
                                end
                            end
                            lastPositions[player] = pos
                        end
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

SurvivorLeft2:AddSlider("ParryV2Range", {
    Text = "Дальность V2",
    Default = 20,
    Min = 0,
    Max = 30,
    Rounding = 1,
    Callback = function(val)
        Options.ParryV2Range = val
    end
})

SurvivorLeft2:AddToggle("FakeParry", {
    Text = "Фейк-парри (анимация)",
    Default = false,
    Callback = function(val)
        Toggles.FakeParry = val
        if val then
            local function PlayParryAnim()
                local hum = GetHumanoid()
                if hum then
                    local anim = Instance.new("Animation")
                    anim.AnimationId = "rbxassetid://127096285501517"
                    local track = hum:LoadAnimation(anim)
                    if track then
                        track:Play()
                        track.Stopped:Connect(function()
                            if Toggles.FakeParry then track:Play() end
                        end)
                    end
                end
            end
            PlayParryAnim()
            local conn = CharacterAdded:Connect(function()
                task.wait(0.5)
                if Toggles.FakeParry then PlayParryAnim() end
            end)
            table.insert(Connections, conn)
        end
    end
})

SurvivorRight2:AddToggle("TwistSilentAim", {
    Text = "Twist Silent Aim",
    Default = false,
    Callback = function(val)
        Toggles.TwistSilentAim = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.TwistSilentAim then conn:Disconnect() return end
                local target, dist = GetNearestPlayer()
                if target and dist < 50 and target.Team and target.Team.Name == "Killer" then
                    pcall(function()
                        local twist = ReplicatedStorage:FindFirstChild("Remotes") and
                                      ReplicatedStorage.Remotes:FindFirstChild("Items") and
                                      ReplicatedStorage.Remotes.Items:FindFirstChild("Twist of Fate")
                        if twist then
                            local fire = twist:FindFirstChild("Fire")
                            if fire then fire:FireServer() end
                        end
                    end)
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

SurvivorRight2:AddToggle("ParryCircleVisual", {
    Text = "Визуальная дальность парри",
    Default = false,
    Callback = function(val)
        Toggles.ParryCircleVisual = val
        if val then
            local circle = Instance.new("Part")
            circle.Name = "ParryCircle"
            circle.Anchored = true
            circle.CanCollide = false
            circle.CastShadow = false
            circle.Material = Enum.Material.Neon
            circle.Color = Color3.fromRGB(0, 255, 80)
            circle.Transparency = 0.58
            circle.Shape = Enum.PartType.Cylinder
            circle.Parent = Workspace

            local billboard = Instance.new("BillboardGui")
            billboard.Size = UDim2.new(0, 200, 0, 32)
            billboard.StudsOffset = Vector3.new(0, 4, 0)
            billboard.AlwaysOnTop = true
            billboard.Parent = circle

            local label = Instance.new("TextLabel", billboard)
            label.Size = UDim2.new(1, 0, 1, 0)
            label.BackgroundTransparency = 1
            label.TextColor3 = Color3.fromRGB(0, 255, 80)
            label.TextStrokeTransparency = 0
            label.Font = Enum.Font.GothamBold
            label.TextSize = 14

            local conn = RunService.RenderStepped:Connect(function()
                if not Toggles.ParryCircleVisual then
                    circle:Destroy()
                    conn:Disconnect()
                    return
                end
                local hrp = GetHumanoidRootPart()
                if hrp then
                    local radius = Options.ParryRange or 10
                    circle.CFrame = CFrame.new(hrp.Position.X, hrp.Position.Y - 2.9, hrp.Position.Z) * CFrame.Angles(0, 0, math.pi/2)
                    circle.Size = Vector3.new(0.2, radius * 2, radius * 2)
                    
                    local killerName = "---"
                    for _, player in ipairs(Players:GetPlayers()) do
                        if player ~= LocalPlayer and player.Team and player.Team.Name == "Killer" and player.Character then
                            local targetHrp = player.Character:FindFirstChild("HumanoidRootPart")
                            if targetHrp then
                                local d = (targetHrp.Position - hrp.Position).Magnitude
                                if d < radius then
                                    killerName = player.Name
                                    circle.Color = Color3.fromRGB(255, 50, 50)
                                    label.TextColor3 = Color3.fromRGB(255, 80, 80)
                                end
                            end
                        end
                    end
                    label.Text = string.format("r: %.1f  |  killer: %s", radius, killerName)
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

-- ========== ВКЛАДКА КИЛЛЕР ==========
local KillerLeft = KillerTab:AddLeftGroupbox("Основное")
local KillerRight = KillerTab:AddRightGroupbox("Бой и способности")
local KillerLeft2 = KillerTab:AddLeftGroupbox("Утилиты")
local MaskedGroup = KillerTab:AddRightGroupbox("Маски (Masked)")

KillerLeft:AddToggle("SpearCrosshair", {
    Text = "Прицел для копья (Veil)",
    Default = false,
    Callback = function(val)
        Toggles.SpearCrosshair = val
        if val then
            local gui = Instance.new("ScreenGui")
            gui.Name = "SpearCrosshair"
            gui.ResetOnSpawn = false
            gui.Parent = LocalPlayer:WaitForChild("PlayerGui")

            local frame = Instance.new("Frame")
            frame.Name = "CrosshairFrame"
            frame.BackgroundTransparency = 1
            frame.Size = UDim2.new(0, 40, 0, 40)
            frame.Position = UDim2.new(0.5, -20, 0.5, -20)
            frame.Parent = gui

            local x = Instance.new("Frame")
            x.Name = "CrosshairX"
            x.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
            x.BorderSizePixel = 0
            x.Size = UDim2.new(1, 0, 0, 2)
            x.Position = UDim2.new(0, 0, 0.5, -1)
            x.Parent = frame

            local y = Instance.new("Frame")
            y.Name = "CrosshairY"
            y.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
            y.BorderSizePixel = 0
            y.Size = UDim2.new(0, 2, 1, 0)
            y.Position = UDim2.new(0.5, -1, 0, 0)
            y.Parent = frame

            local function UpdateCrosshair()
                local char = GetCharacter()
                if char then
                    local mode = char:GetAttribute("spearmode")
                    frame.Visible = (mode == "spearing")
                end
            end

            local conn1 = RunService.RenderStepped:Connect(UpdateCrosshair)
            table.insert(Connections, conn1)

            local char = GetCharacter()
            if char then
                local conn2 = char:GetAttributeChangedSignal("spearmode"):Connect(UpdateCrosshair)
                table.insert(Connections, conn2)
            end
        end
    end
})

KillerLeft:AddToggle("NoSlowdownKiller", {
    Text = "No Slowdown (киллер)",
    Default = false,
    Callback = function(val)
        Toggles.NoSlowdownKiller = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.NoSlowdownKiller then
                local hum = GetHumanoid()
                if hum then
                    hum:SetAttribute("NoSlowdown", true)
                    hum.WalkSpeed = 16
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

KillerLeft:AddToggle("ThirdPersonKiller", {
    Text = "Третье лицо (киллер)",
    Default = false,
    Callback = function(val)
        Toggles.ThirdPersonKiller = val
        if val then
            Camera.CameraType = Enum.CameraType.Follow
            Camera.Focus = CFrame.new(GetHumanoidRootPart().Position)
        else
            Camera.CameraType = Enum.CameraType.Custom
        end
    end
})

KillerLeft:AddToggle("AntiBlind", {
    Text = "Анти-ослепление",
    Default = false,
    Callback = function(val)
        Toggles.AntiBlind = val
        if val then
            local mt = getrawmetatable(game)
            local oldNamecall = mt.__namecall
            setreadonly(mt, false)
            mt.__namecall = newcclosure(function(self, ...)
                local method = getnamecallmethod()
                if method and string.lower(method):find("blind") then return end
                return oldNamecall(self, ...)
            end)
            setreadonly(mt, true)
        end
    end
})

-- Бой
KillerRight:AddToggle("NoPalletStun", {
    Text = "Нет оглушения от паллет",
    Default = false,
    Callback = function(val)
        Toggles.NoPalletStun = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if Toggles.NoPalletStun then
                    local hum = GetHumanoid()
                    if hum then hum:SetAttribute("NoStun", true) end
                else
                    conn:Disconnect()
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

KillerRight:AddToggle("BeatGame", {
    Text = "Beat Game (авто-охота)",
    Default = false,
    Callback = function(val)
        Toggles.BeatGame = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.BeatGame then conn:Disconnect() return end
                local target, dist = GetNearestPlayer()
                if target and dist < 50 then
                    local hrp = GetHumanoidRootPart()
                    if hrp then
                        local targetHrp = target.Character:FindFirstChild("HumanoidRootPart")
                        if targetHrp then
                            local dir = (targetHrp.Position - hrp.Position).Unit
                            hrp.Velocity = dir * 50
                        end
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

KillerRight:AddToggle("SpearAimbot", {
    Text = "Аимбот для копья",
    Default = false,
    Callback = function(val)
        Toggles.SpearAimbot = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.SpearAimbot then conn:Disconnect() return end
                local target, dist = GetNearestPlayer()
                if target and dist < 100 then
                    local targetHrp = target.Character:FindFirstChild("HumanoidRootPart")
                    if targetHrp then
                        local pos, onScreen = Camera:WorldToScreenPoint(targetHrp.Position)
                        if onScreen then
                            pcall(function()
                                local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                                if remotes and remotes.Killers and remotes.Killers.Veil then
                                    local spear = remotes.Killers.Veil:FindFirstChild("Spearthrow")
                                    if spear then spear:FireServer(targetHrp.Position) end
                                end
                            end)
                        end
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

KillerRight:AddToggle("AutoAttack", {
    Text = "Auto Attack (авто-атака)",
    Default = false,
    Callback = function(val)
        Toggles.AutoAttack = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.AutoAttack then conn:Disconnect() return end
                local target, dist = GetNearestPlayer(Options.AutoAttackRange or 12)
                if target then
                    pcall(function()
                        local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                        if remotes and remotes.Attacks and remotes.Attacks.BasicAttack then
                            remotes.Attacks.BasicAttack:FireServer(false)
                        end
                    end)
                    task.wait(0.2)
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

KillerRight:AddSlider("AutoAttackRange", {
    Text = "Дальность атаки",
    Default = 12,
    Min = 5,
    Max = 25,
    Rounding = 1,
    Callback = function(val)
        Options.AutoAttackRange = val
    end
})

KillerRight:AddToggle("DoubleLunge", {
    Text = "Double Lunge (ускоренный рывок)",
    Default = false,
    Callback = function(val)
        Toggles.DoubleLunge = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.DoubleLunge then conn:Disconnect() return end
                local hrp = GetHumanoidRootPart()
                if hrp then
                    local target, dist = GetNearestPlayer()
                    if target and dist < 20 then
                        local dir = (target.Character.HumanoidRootPart.Position - hrp.Position).Unit
                        hrp.Velocity = dir * 100
                        task.wait(0.1)
                        hrp.Velocity = dir * 100
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

KillerRight:AddToggle("AutoHook", {
    Text = "Auto Hook (подбор на крюк)",
    Default = false,
    Callback = function(val)
        Toggles.AutoHook = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.AutoHook then conn:Disconnect() return end
                local hrp = GetHumanoidRootPart()
                if hrp then
                    for _, hook in ipairs(Workspace:GetDescendants()) do
                        if hook:IsA("BasePart") and hook.Name:lower():find("hook") then
                            if (hook.Position - hrp.Position).Magnitude < 5 then
                                pcall(function()
                                    local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                                    if remotes and remotes.Killers then
                                        for _, child in ipairs(remotes.Killers:GetChildren()) do
                                            if child.Name:lower():find("hook") then
                                                child:FireServer(hook)
                                            end
                                        end
                                    end
                                end)
                            end
                        end
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

-- Утилиты
KillerLeft2:AddToggle("UseFakeSaw", {
    Text = "Фейковая пила (Masked)",
    Default = false,
    Callback = function(val)
        Toggles.UseFakeSaw = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.UseFakeSaw then conn:Disconnect() return end
                local char = GetCharacter()
                if char then
                    local saw = char:FindFirstChild("SawEffect")
                    if not saw then
                        saw = Instance.new("Part")
                        saw.Name = "SawEffect"
                        saw.Size = Vector3.new(2, 0.5, 2)
                        saw.Material = Enum.Material.Neon
                        saw.Color = Color3.fromRGB(255, 0, 0)
                        saw.Anchored = false
                        saw.CanCollide = false
                        saw.Transparency = 0.5
                        saw.Parent = char
                        
                        local weld = Instance.new("Weld")
                        weld.Part0 = char:FindFirstChild("HumanoidRootPart")
                        weld.Part1 = saw
                        weld.C0 = CFrame.new(0, 0, 0)
                        weld.Parent = saw
                    end
                    saw.Transparency = math.sin(tick() * 10) * 0.3 + 0.5
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

KillerLeft2:AddToggle("AbysswalkerCorrupt", {
    Text = "Abysswalker Corrupt (без КД, клавиша Q)",
    Default = false,
    Callback = function(val)
        Toggles.AbysswalkerCorrupt = val
        if val then
            local conn = UserInputService.InputBegan:Connect(function(input, processed)
                if processed then return end
                if input.KeyCode == Enum.KeyCode.Q and Toggles.AbysswalkerCorrupt then
                    pcall(function()
                        local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                        if remotes and remotes.Killers then
                            for _, child in ipairs(remotes.Killers:GetChildren()) do
                                if child.Name:lower():find("activatepower") or child.Name:lower():find("ability") then
                                    child:FireServer()
                                end
                            end
                        end
                    end)
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

-- Маски
local maskedList = {"Alex", "Tony", "Brandon", "Jake", "Richter", "Graham", "Richard"}
for _, name in ipairs(maskedList) do
    MaskedGroup:AddButton(name, function()
        if IsKiller() then
            pcall(function()
                local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                if remotes and remotes.Killers and remotes.Killers.Masked and remotes.Killers.Masked.Activatepower then
                    remotes.Killers.Masked.Activatepower:FireServer(name)
                    Library:Notify("Активирована маска: " .. name, 2)
                end
            end)
        else
            Library:Notify("Вы должны быть киллером!", 3)
        end
    end)
end

-- ========== ВКЛАДКА ESP ==========
local ESPLeft = ESPTab:AddLeftGroupbox("Настройки ESP")
local ESPRight = ESPTab:AddRightGroupbox("Объекты ESP")
local ESPColors = ESPTab:AddLeftGroupbox("Цвета")

ESPLeft:AddToggle("SurvivorESP", {
    Text = "ESP Выживших",
    Default = false,
    Callback = function(val)
        Toggles.SurvivorESP = val
    end
})

ESPLeft:AddToggle("KillerESP", {
    Text = "ESP Убийцы",
    Default = false,
    Callback = function(val)
        Toggles.KillerESP = val
    end
})

ESPLeft:AddToggle("Tracers", {
    Text = "Трейсеры (сверху экрана)",
    Default = false,
    Callback = function(val)
        Toggles.Tracers = val
    end
})

ESPRight:AddToggle("GeneratorESP", {
    Text = "Подсветка генераторов",
    Default = false,
    Callback = function(val)
        Toggles.GeneratorESP = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.GeneratorESP then
                for _, desc in ipairs(Workspace:GetDescendants()) do
                    if desc.Name:lower():find("generator") and desc:IsA("Model") then
                        local hl = desc:FindFirstChild("GenHL")
                        if not hl then
                            hl = Instance.new("Highlight")
                            hl.Name = "GenHL"
                            hl.FillColor = Options.GenColor or Color3.fromRGB(0, 255, 255)
                            hl.OutlineColor = Color3.new(1, 1, 1)
                            hl.FillTransparency = 0.5
                            hl.Adornee = desc
                            hl.Parent = desc
                        end
                    end
                end
            else
                for _, desc in ipairs(Workspace:GetDescendants()) do
                    if desc:IsA("Model") then
                        local hl = desc:FindFirstChild("GenHL")
                        if hl then hl:Destroy() end
                    end
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

ESPRight:AddToggle("PalletESP", {
    Text = "Подсветка паллет",
    Default = false,
    Callback = function(val)
        Toggles.PalletESP = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.PalletESP then
                for _, desc in ipairs(Workspace:GetDescendants()) do
                    if desc.Name:lower():find("pallet") and desc:IsA("Model") then
                        local hl = desc:FindFirstChild("PalletHL")
                        if not hl then
                            hl = Instance.new("Highlight")
                            hl.Name = "PalletHL"
                            hl.FillColor = Options.PalletColor or Color3.fromRGB(127, 0, 255)
                            hl.OutlineColor = Color3.new(1, 1, 1)
                            hl.FillTransparency = 0.4
                            hl.Adornee = desc
                            hl.Parent = desc
                        end
                    end
                end
            else
                for _, desc in ipairs(Workspace:GetDescendants()) do
                    if desc:IsA("Model") then
                        local hl = desc:FindFirstChild("PalletHL")
                        if hl then hl:Destroy() end
                    end
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

ESPRight:AddToggle("GenProgress", {
    Text = "Показывать % ремонта генераторов",
    Default = false,
    Callback = function(val)
        Toggles.GenProgress = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.GenProgress then
                for _, desc in ipairs(Workspace:GetDescendants()) do
                    if desc.Name:lower():find("generator") and desc:IsA("Model") then
                        local progress = desc:GetAttribute("RepairProgress")
                        if progress then
                            local gui = desc:FindFirstChild("GenProgressUI")
                            if not gui then
                                gui = Instance.new("BillboardGui")
                                gui.Name = "GenProgressUI"
                                gui.Size = UDim2.new(0, 100, 0, 40)
                                gui.StudsOffset = Vector3.new(0, 8, 0)
                                gui.AlwaysOnTop = true
                                gui.Parent = desc
                                
                                local label = Instance.new("TextLabel")
                                label.Size = UDim2.new(1, 0, 1, 0)
                                label.BackgroundTransparency = 1
                                label.Font = Enum.Font.GothamBold
                                label.TextSize = 16
                                label.TextColor3 = Options.ProgressColor or Color3.fromRGB(255, 255, 255)
                                label.Parent = gui
                            end
                            local label = gui:FindFirstChild("TextLabel")
                            if label then
                                label.Text = string.format("%.0f%%", progress * 100)
                            end
                        end
                    end
                end
            else
                for _, desc in ipairs(Workspace:GetDescendants()) do
                    if desc:IsA("Model") then
                        local gui = desc:FindFirstChild("GenProgressUI")
                        if gui then gui:Destroy() end
                    end
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

-- Цвета
ESPColors:AddLabel("Цвет выживших"):AddColorPicker("SurvivorColor", {
    Default = Color3.fromRGB(0, 255, 0),
    Title = "Цвет выживших",
    Callback = function(col)
        Options.SurvivorColor = col
    end
})

ESPColors:AddLabel("Цвет убийцы"):AddColorPicker("KillerColor", {
    Default = Color3.fromRGB(255, 0, 0),
    Title = "Цвет убийцы",
    Callback = function(col)
        Options.KillerColor = col
    end
})

ESPColors:AddLabel("Цвет генераторов"):AddColorPicker("GenColor", {
    Default = Color3.fromRGB(0, 255, 255),
    Title = "Цвет генераторов",
    Callback = function(col)
        Options.GenColor = col
    end
})

ESPColors:AddLabel("Цвет паллет"):AddColorPicker("PalletColor", {
    Default = Color3.fromRGB(127, 0, 255),
    Title = "Цвет паллет",
    Callback = function(col)
        Options.PalletColor = col
    end
})

ESPColors:AddLabel("Цвет процентов"):AddColorPicker("ProgressColor", {
    Default = Color3.fromRGB(255, 255, 255),
    Title = "Цвет процентов",
    Callback = function(col)
        Options.ProgressColor = col
    end
})

-- ========== ВКЛАДКА ФУНКЦИИ ==========
local FuncLeft = FunctionsTab:AddLeftGroupbox("Движение")
local FuncRight = FunctionsTab:AddRightGroupbox("Боевые функции")
local FuncRight2 = FunctionsTab:AddRightGroupbox("Утилиты")
local FuncCamera = FunctionsTab:AddLeftGroupbox("Камера")

-- Движение
FuncLeft:AddToggle("Fly", {
    Text = "Полёт",
    Default = false,
    Callback = function(val)
        Toggles.Fly = val
        local bv, bg
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.Fly then
                    if bv then bv:Destroy() end
                    if bg then bg:Destroy() end
                    conn:Disconnect()
                    return
                end
                local hrp = GetHumanoidRootPart()
                if not hrp then return end
                if not bv then
                    bv = Instance.new("BodyVelocity")
                    bv.MaxForce = Vector3.new(40000, 40000, 40000)
                    bv.P = 1e4
                    bv.Parent = hrp
                    bg = Instance.new("BodyGyro")
                    bg.MaxTorque = Vector3.new(40000, 40000, 40000)
                    bg.P = 1e4
                    bg.D = 1e3
                    bg.Parent = hrp
                end
                local speed = Options.FlySpeed or 60
                local move = Vector3.new()
                if UserInputService:IsKeyDown(Enum.KeyCode.W) then move = move + Camera.CFrame.LookVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.S) then move = move - Camera.CFrame.LookVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.A) then move = move - Camera.CFrame.RightVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.D) then move = move + Camera.CFrame.RightVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0, 1, 0) end
                if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then move = move - Vector3.new(0, 1, 0) end
                if move.Magnitude > 0 then
                    bv.Velocity = move.Unit * speed
                else
                    bv.Velocity = Vector3.new(0, 0, 0)
                end
                bg.CFrame = CFrame.new(hrp.Position, hrp.Position + Camera.CFrame.LookVector)
            end)
            table.insert(Connections, conn)
        end
    end
})

FuncLeft:AddSlider("FlySpeed", {
    Text = "Скорость полёта",
    Default = 60,
    Min = 20,
    Max = 200,
    Rounding = 1,
    Callback = function(val)
        Options.FlySpeed = val
    end
})

FuncLeft:AddToggle("NoClip", {
    Text = "NoClip",
    Default = false,
    Callback = function(val)
        Toggles.NoClip = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.NoClip then
                local char = GetCharacter()
                if char then
                    for _, part in ipairs(char:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.CanCollide = false
                        end
                    end
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
}):AddKeyPicker("NoClipKey", {
    Text = "Клавиша NoClip",
    Mode = "Toggle",
    Default = "V",
    SyncToggleState = true
})

FuncLeft:AddToggle("Spinbot", {
    Text = "Spinbot",
    Default = false,
    Callback = function(val)
        Toggles.Spinbot = val
        local angle = 0
        local conn = RunService.RenderStepped:Connect(function()
            if Toggles.Spinbot then
                local hrp = GetHumanoidRootPart()
                if hrp then
                    angle = angle + (Options.SpinbotSpeed or 10) * 0.01
                    hrp.CFrame = CFrame.new(hrp.Position) * CFrame.Angles(0, angle, 0)
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

FuncLeft:AddSlider("SpinbotSpeed", {
    Text = "Скорость вращения",
    Default = 10,
    Min = 1,
    Max = 50,
    Rounding = 1,
    Callback = function(val)
        Options.SpinbotSpeed = val
    end
})

FuncLeft:AddToggle("Moonwalk", {
    Text = "Мунволк (зажми S, чтобы вилять)",
    Default = false,
    Callback = function(val)
        Toggles.Moonwalk = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.Moonwalk then 
					if conn then
						conn:Disconnect() 
					end
					return 
				end
                if UserInputService:IsKeyDown(Enum.KeyCode.S) then
                    VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.A, false, game)
                    task.wait(0.07)
                    VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.A, false, game)
                    VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.D, false, game)
                    task.wait(0.07)
                    VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.D, false, game)
                end
            end)
            table.insert(Connections, conn)
        end
    end
}):AddKeyPicker("MoonwalkKey", {
    Text = "Клавиша Moonwalk",
    Mode = "Toggle",
    Default = "M",
    SyncToggleState = true
})

FuncLeft:AddToggle("SpeedGlitch", {
    Text = "Speed Glitch",
    Default = false,
    Callback = function(val)
        Toggles.SpeedGlitch = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.SpeedGlitch then conn:Disconnect() return end
                local hrp = GetHumanoidRootPart()
                if hrp then
                    local move = Vector3.new()
                    if UserInputService:IsKeyDown(Enum.KeyCode.W) then move = move + Camera.CFrame.LookVector end
                    if UserInputService:IsKeyDown(Enum.KeyCode.A) then move = move - Camera.CFrame.RightVector end
                    if UserInputService:IsKeyDown(Enum.KeyCode.D) then move = move + Camera.CFrame.RightVector end
                    if UserInputService:IsKeyDown(Enum.KeyCode.S) then move = move - Camera.CFrame.LookVector end
                    if move.Magnitude > 0 then
                        hrp.Velocity = move.Unit * (Options.SpeedGlitchValue or 60)
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

FuncLeft:AddSlider("SpeedGlitchValue", {
    Text = "Скорость Glitch",
    Default = 60,
    Min = 16,
    Max = 300,
    Rounding = 1,
    Callback = function(val)
        Options.SpeedGlitchValue = val
    end
})

FuncLeft:AddToggle("SuperJump", {
    Text = "Super Jump",
    Default = false,
    Callback = function(val)
        Toggles.SuperJump = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if Toggles.SuperJump then
                    local hum = GetHumanoid()
                    if hum and hum.Jump then
                        local hrp = GetHumanoidRootPart()
                        if hrp then
                            hrp.Velocity = Vector3.new(hrp.Velocity.X, Options.SuperJumpPower or 100, hrp.Velocity.Z)
                        end
                    end
                else
                    conn:Disconnect()
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

FuncLeft:AddSlider("SuperJumpPower", {
    Text = "Сила прыжка",
    Default = 100,
    Min = 50,
    Max = 500,
    Rounding = 1,
    Callback = function(val)
        Options.SuperJumpPower = val
    end
})

-- Боевые функции
FuncRight:AddToggle("GodMode", {
    Text = "GodMode",
    Default = false,
    Callback = function(val)
        Toggles.GodMode = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.GodMode then
                local hum = GetHumanoid()
                if hum then
                    hum:SetAttribute("godmode", true)
                    hum.Health = hum.MaxHealth
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

FuncRight:AddButton("Восстановить здоровье", function()
    local hum = GetHumanoid()
    if hum then
        hum.Health = hum.MaxHealth
        Library:Notify("Здоровье восстановлено", 2)
    end
end)

-- Утилиты
FuncRight2:AddToggle("TeleportForward", {
    Text = "Телепорт вперёд",
    Default = false,
    Callback = function(val)
        Toggles.TeleportForward = val
        if val then
            local conn = UserInputService.InputBegan:Connect(function(input, processed)
                if processed then return end
                if input.KeyCode == Enum.KeyCode.T and Toggles.TeleportForward then
                    local hrp = GetHumanoidRootPart()
                    if hrp then
                        hrp.CFrame = hrp.CFrame + hrp.CFrame.LookVector * (Options.TeleportDistance or 50)
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
}):AddKeyPicker("TeleportKey", {
    Text = "Клавиша телепорта",
    Mode = "Press",
    Default = "T",
    SyncToggleState = false
})

FuncRight2:AddSlider("TeleportDistance", {
    Text = "Дистанция",
    Default = 50,
    Min = 10,
    Max = 200,
    Rounding = 1,
    Callback = function(val)
        Options.TeleportDistance = val
    end
})

FuncRight2:AddSlider("WalkSpeed", {
    Text = "Скорость бега",
    Default = 16,
    Min = 16,
    Max = 500,
    Rounding = 1,
    Callback = function(val)
        Options.WalkSpeed = val
        local hum = GetHumanoid()
        if hum then hum.WalkSpeed = val end
    end
})

FuncRight2:AddSlider("VaultSpeed", {
    Text = "Скорость перепрыгивания окон",
    Default = 1,
    Min = 1,
    Max = 20,
    Rounding = 1,
    Callback = function(val)
        Options.VaultSpeed = val
        local char = GetCharacter()
        if char then
            char:SetAttribute("vaultspeed", val)
        end
        Library:Notify("Скорость перепрыгивания: " .. val, 2)
    end
})

FuncRight2:AddToggle("AutoSkillcheck", {
    Text = "Auto Skillcheck (Great)",
    Default = false,
    Callback = function(val)
        Toggles.AutoSkillcheck = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.AutoSkillcheck then conn:Disconnect() return end
                local screenGui = LocalPlayer.PlayerGui:FindFirstChild("Skillcheck")
                if screenGui then
                    local frame = screenGui:FindFirstChild("Frame")
                    if frame then
                        local indicator = frame:FindFirstChild("Indicator")
                        if indicator and indicator.Visible then
                            VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Space, false, game)
                            task.wait(0.05)
                            VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Space, false, game)
                        end
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

FuncRight2:AddButton("Установка всех бустов в 100", function()
    local char = GetCharacter()
    if char then
        char:SetAttribute("repairboost", 100)
        char:SetAttribute("speedboost", 100)
        char:SetAttribute("healboost", 100)
        char:SetAttribute("bleedboost", 100)
        Library:Notify("Все бусты установлены в 100", 2)
    end
end)

-- Камера
FuncCamera:AddToggle("ShiftLock", {
    Text = "Shift Lock",
    Default = false,
    Callback = function(val)
        Toggles.ShiftLock = val
        if val then
            UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
        else
            UserInputService.MouseBehavior = Enum.MouseBehavior.Default
        end
    end
}):AddKeyPicker("ShiftLockKey", {
    Text = "Клавиша Shift Lock",
    Mode = "Toggle",
    Default = "LeftShift",
    SyncToggleState = true
})

-- ========== ВКЛАДКА VISUAL ==========
local VisLeft = VisualTab:AddLeftGroupbox("Визуальные эффекты")
local VisRight = VisualTab:AddRightGroupbox("Окружение")
local VisRight2 = VisualTab:AddRightGroupbox("Эффекты трейлов")
local VisRight3 = VisualTab:AddRightGroupbox("Аура эффекты")
local VisLeft2 = VisualTab:AddLeftGroupbox("Прочие визуалы")
local VisLeft3 = VisualTab:AddLeftGroupbox("Камера")

VisLeft:AddToggle("FOV", {
    Text = "Увеличенный FOV",
    Default = false,
    Callback = function(val)
        Toggles.FOV = val
        if val then
            Camera.FieldOfView = Options.FOVValue or 90
        else
            Camera.FieldOfView = 70
        end
    end
})

VisLeft:AddSlider("FOVValue", {
    Text = "Значение FOV",
    Default = 90,
    Min = 70,
    Max = 120,
    Rounding = 1,
    Callback = function(val)
        Options.FOVValue = val
        if Toggles.FOV then Camera.FieldOfView = val end
    end
})

VisLeft:AddToggle("Crosshair", {
    Text = "Прицел",
    Default = false,
    Callback = function(val)
        Toggles.Crosshair = val
        if val then
            local gui = Instance.new("ScreenGui")
            gui.Name = "CrosshairGUI"
            gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
            gui.ResetOnSpawn = false

            local frame = Instance.new("Frame")
            frame.Size = UDim2.new(0, 8, 0, 8)
            frame.Position = UDim2.new(0.5, -4, 0.5, -4)
            frame.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
            frame.BorderSizePixel = 0
            frame.BackgroundTransparency = 0.3
            local corner = Instance.new("UICorner")
            corner.CornerRadius = UDim.new(1, 0)
            corner.Parent = frame
            frame.Parent = gui
        end
    end
})

VisLeft:AddToggle("PinkParticles", {
    Text = "Розовые частички",
    Default = false,
    Callback = function(val)
        Toggles.PinkParticles = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.PinkParticles then conn:Disconnect() return end
                local hrp = GetHumanoidRootPart()
                if hrp then
                    local particle = Instance.new("ParticleEmitter")
                    particle.Texture = "rbxassetid://3993571700"
                    particle.Color = ColorSequence.new(Color3.fromRGB(255, 0, 255))
                    particle.Rate = 100
                    particle.Lifetime = NumberRange.new(1)
                    particle.SpreadAngle = Vector2.new(360, 360)
                    particle.VelocityInheritance = 0
                    particle.Parent = hrp
                    task.wait(0.1)
                    particle:Destroy()
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

VisLeft:AddToggle("Rainbow", {
    Text = "Радужный персонаж",
    Default = false,
    Callback = function(val)
        Toggles.Rainbow = val
        local hue = 0
        local conn = RunService.RenderStepped:Connect(function()
            if Toggles.Rainbow then
                local char = GetCharacter()
                if char then
                    hue = hue + (Options.RainbowSpeed or 5) * 0.001
                    if hue > 1 then hue = 0 end
                    for _, part in ipairs(char:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.Color = Color3.fromHSV(hue, 1, 1)
                        end
                    end
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

VisLeft:AddSlider("RainbowSpeed", {
    Text = "Скорость смены цвета",
    Default = 5,
    Min = 1,
    Max = 20,
    Rounding = 1,
    Callback = function(val)
        Options.RainbowSpeed = val
    end
})

-- Трейлы
VisRight2:AddToggle("ShadowTrail", {
    Text = "Тень-трейл",
    Default = false,
    Callback = function(val)
        Toggles.ShadowTrail = val
        local trailParts = {}
        local conn = RunService.RenderStepped:Connect(function()
            if not Toggles.ShadowTrail then
                for _, p in ipairs(trailParts) do p:Destroy() end
                trailParts = {}
                conn:Disconnect()
                return
            end
            local hrp = GetHumanoidRootPart()
            if hrp then
                local p = Instance.new("Part")
                p.Size = Vector3.new(1, 0.2, 1)
                p.CFrame = hrp.CFrame
                p.Anchored = true
                p.CanCollide = false
                p.Material = Enum.Material.SmoothPlastic
                p.Color = Options.ShadowColor or Color3.fromRGB(0, 0, 0)
                p.Transparency = Options.ShadowTransparency or 0.7
                p.Parent = Workspace
                table.insert(trailParts, p)
                if #trailParts > (Options.ShadowLength or 10) then
                    trailParts[1]:Destroy()
                    table.remove(trailParts, 1)
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

VisRight2:AddSlider("ShadowTrailLength", {
    Text = "Длина трейла",
    Default = 10,
    Min = 5,
    Max = 30,
    Rounding = 1,
    Callback = function(val)
        Options.ShadowLength = val
    end
})

VisRight2:AddSlider("ShadowTrailTransparency", {
    Text = "Прозрачность",
    Default = 0.7,
    Min = 0.1,
    Max = 0.9,
    Rounding = 2,
    Callback = function(val)
        Options.ShadowTransparency = val
    end
})

VisRight2:AddLabel("Цвет тени"):AddColorPicker("ShadowColor", {
    Default = Color3.fromRGB(0, 0, 0),
    Title = "Цвет тени",
    Callback = function(col)
        Options.ShadowColor = col
    end
})

-- Аура
VisRight3:AddToggle("Aura", {
    Text = "Аура",
    Default = false,
    Callback = function(val)
        Toggles.Aura = val
        local sphere
        local conn = RunService.Heartbeat:Connect(function()
            if not Toggles.Aura then
                if sphere then sphere:Destroy() end
                return
            end
            local hrp = GetHumanoidRootPart()
            if not hrp then return end
            if not sphere then
                sphere = Instance.new("Part")
                sphere.Name = "AuraSphere"
                sphere.Shape = Enum.PartType.Ball
                sphere.Material = Enum.Material.Neon
                sphere.Anchored = true
                sphere.CanCollide = false
                sphere.Parent = Workspace
            end
            sphere.Size = Vector3.new(Options.AuraRadius or 10, Options.AuraRadius or 10, Options.AuraRadius or 10)
            sphere.Position = hrp.Position
            sphere.Transparency = Options.AuraTransparency or 0.3
            sphere.Color = Options.AuraColor or Color3.fromRGB(255, 255, 0)
        end)
        table.insert(Connections, conn)
    end
})

VisRight3:AddSlider("AuraRadius", {
    Text = "Радиус ауры",
    Default = 10,
    Min = 5,
    Max = 25,
    Rounding = 1,
    Callback = function(val)
        Options.AuraRadius = val
    end
})

VisRight3:AddSlider("AuraTransparency", {
    Text = "Прозрачность",
    Default = 0.3,
    Min = 0.1,
    Max = 0.8,
    Rounding = 2,
    Callback = function(val)
        Options.AuraTransparency = val
    end
})

VisRight3:AddLabel("Цвет ауры"):AddColorPicker("AuraColor", {
    Default = Color3.fromRGB(255, 255, 0),
    Title = "Цвет ауры",
    Callback = function(col)
        Options.AuraColor = col
    end
})

VisRight3:AddButton("Случайный цвет ауры", function()
    Options.AuraColor = Color3.fromRGB(math.random(0, 255), math.random(0, 255), math.random(0, 255))
    Library:Notify("Цвет ауры изменён", 2)
end)

-- Окружение
VisRight:AddToggle("TimeChange", {
    Text = "Изменение времени",
    Default = false,
    Callback = function(val)
        Toggles.TimeChange = val
        if val then
            Lighting.ClockTime = Options.TimeValue or 0
        end
    end
})

VisRight:AddSlider("TimeValue", {
    Text = "Время (часы)",
    Default = 0,
    Min = 0,
    Max = 24,
    Rounding = 0,
    Callback = function(val)
        Options.TimeValue = val
        if Toggles.TimeChange then Lighting.ClockTime = val end
    end
})

VisRight:AddToggle("Sky", {
    Text = "Красивое небо",
    Default = false,
    Callback = function(val)
        Toggles.Sky = val
        if val then
            local sky = Lighting:FindFirstChildOfClass("Sky")
            if not sky then
                sky = Instance.new("Sky")
                sky.Parent = Lighting
            end
            sky.MoonTextureId = "rbxassetid://2939736288"
            sky.SunTextureId = "rbxassetid://5265134585"
            sky.StarCount = 1000
        else
            local sky = Lighting:FindFirstChildOfClass("Sky")
            if sky then sky:Destroy() end
        end
    end
})

VisRight:AddToggle("NoFog", {
    Text = "No Fog (туман)",
    Default = false,
    Callback = function(val)
        Toggles.NoFog = val
        if val then
            Lighting.FogEnd = 1e6
            Lighting.FogStart = 0
            for _, obj in ipairs(Workspace:GetDescendants()) do
                if obj:IsA("Atmosphere") then
                    obj:Destroy()
                end
            end
        else
            Lighting.FogEnd = 100000
            Lighting.FogStart = 0
        end
    end
})

VisRight:AddToggle("Fullbright", {
    Text = "Fullbright (полная яркость)",
    Default = false,
    Callback = function(val)
        Toggles.Fullbright = val
        if val then
            Lighting.Brightness = 2
            Lighting.ClockTime = 14
            Lighting.GlobalShadows = false
        else
            Lighting.Brightness = 1
            Lighting.GlobalShadows = true
        end
    end
})

VisRight:AddToggle("NoShadow", {
    Text = "No Shadow (без теней)",
    Default = false,
    Callback = function(val)
        Toggles.NoShadow = val
        Lighting.GlobalShadows = not val
        for _, light in ipairs(Lighting:GetDescendants()) do
            if light:IsA("Light") then
                light.Shadows = not val
            end
        end
    end
})

VisRight:AddToggle("RektskyAmbience", {
    Text = "Rektsky Ambience (кислотный свет)",
    Default = false,
    Callback = function(val)
        Toggles.RektskyAmbience = val
        local cc = Lighting:FindFirstChildOfClass("ColorCorrectionEffect")
        if val then
            if not cc then
                cc = Instance.new("ColorCorrectionEffect")
                cc.Parent = Lighting
            end
            cc.Enabled = true
            cc.TintColor = Color3.fromRGB(0, 255, 255)
            cc.Brightness = 1.5
        else
            if cc then cc:Destroy() end
        end
    end
})

-- Прочие визуалы
VisLeft2:AddToggle("ChinaHat", {
    Text = "China Hat (вращающаяся шляпа)",
    Default = false,
    Callback = function(val)
        Toggles.ChinaHat = val
        if val then
            local function CreateHat()
                local head = GetCharacter():FindFirstChild("Head")
                if head then
                    local hat = Instance.new("Part")
                    hat.Name = "ChinaHat"
                    hat.Size = Vector3.new(2, 0.25, 2)
                    hat.CanCollide = false
                    hat.Anchored = false
                    hat.Material = Enum.Material.ForceField
                    hat.Color = Color3.fromRGB(255, 0, 255)

                    local mesh = Instance.new("SpecialMesh")
                    mesh.MeshId = "rbxassetid://84530303562911"
                    mesh.TextureId = "rbxassetid://89342168321397"
                    mesh.MeshType = Enum.MeshType.FileMesh
                    mesh.Parent = hat

                    local weld = Instance.new("Weld")
                    weld.Part0 = head
                    weld.Part1 = hat
                    weld.C0 = CFrame.new(0, 0.35, 0)
                    weld.Parent = hat
                    hat.Parent = GetCharacter()
                end
            end
            CreateHat()
            local conn = CharacterAdded:Connect(function()
                task.wait(0.5)
                if Toggles.ChinaHat then CreateHat() end
            end)
            table.insert(Connections, conn)
        end
    end
})

VisLeft2:AddToggle("ChamsSelf", {
    Text = "Chams (свой персонаж)",
    Default = false,
    Callback = function(val)
        Toggles.ChamsSelf = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.ChamsSelf then
                local char = GetCharacter()
                if char then
                    for _, part in ipairs(char:GetDescendants()) do
                        if part:IsA("BasePart") and part.Name ~= "ChinaHat" then
                            part.Material = Enum.Material.ForceField
                            part.Color = Color3.fromRGB(255, 0, 255)
                        end
                    end
                end
            else
                local char = GetCharacter()
                if char then
                    for _, part in ipairs(char:GetDescendants()) do
                        if part:IsA("BasePart") and part.Name ~= "ChinaHat" then
                            part.Material = Enum.Material.Plastic
                            part.Color = Color3.new(1, 1, 1)
                        end
                    end
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

VisLeft2:AddToggle("ChamsOthers", {
    Text = "Chams (другие игроки)",
    Default = false,
    Callback = function(val)
        Toggles.ChamsOthers = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.ChamsOthers then
                for _, player in ipairs(GetPlayers()) do
                    if player.Character then
                        for _, part in ipairs(player.Character:GetDescendants()) do
                            if part:IsA("BasePart") and part.Name ~= "ChinaHat" then
                                part.Material = Enum.Material.ForceField
                                part.Color = Color3.fromRGB(255, 0, 255)
                            end
                        end
                    end
                end
            else
                for _, player in ipairs(GetPlayers()) do
                    if player.Character then
                        for _, part in ipairs(player.Character:GetDescendants()) do
                            if part:IsA("BasePart") and part.Name ~= "ChinaHat" then
                                part.Material = Enum.Material.Plastic
                                part.Color = Color3.new(1, 1, 1)
                            end
                        end
                    end
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

VisLeft2:AddToggle("ESP_simple", {
    Text = "ESP (простой highlight)",
    Default = false,
    Callback = function(val)
        Toggles.ESP_simple = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.ESP_simple then
                for _, player in ipairs(Players:GetPlayers()) do
                    if player ~= LocalPlayer and player.Character then
                        local hl = player.Character:FindFirstChild("Highlight")
                        if not hl then
                            hl = Instance.new("Highlight")
                            hl.FillColor = Color3.fromRGB(255, 0, 255)
                            hl.OutlineColor = Color3.new(1, 1, 1)
                            hl.FillTransparency = 0.3
                            hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
                            hl.Adornee = player.Character
                            hl.Parent = player.Character
                        end
                    end
                end
            else
                for _, player in ipairs(Players:GetPlayers()) do
                    if player ~= LocalPlayer and player.Character then
                        local hl = player.Character:FindFirstChild("Highlight")
                        if hl then hl:Destroy() end
                    end
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

VisLeft2:AddToggle("WorldTint", {
    Text = "World Tint (цвет мира)",
    Default = false,
    Callback = function(val)
        Toggles.WorldTint = val
        local cc = Lighting:FindFirstChildOfClass("ColorCorrectionEffect")
        if val then
            if not cc then
                cc = Instance.new("ColorCorrectionEffect")
                cc.Parent = Lighting
            end
            cc.Enabled = true
            cc.TintColor = Color3.new(
                Options.TintRed or 1,
                Options.TintGreen or 0.784,
                Options.TintBlue or 0.784
            )
            cc.Brightness = Options.TintBrightness or 1
        else
            if cc then cc:Destroy() end
        end
    end
})

VisLeft2:AddSlider("TintRed", {
    Text = "Красный",
    Default = 255,
    Min = 0,
    Max = 255,
    Rounding = 0,
    Callback = function(val)
        Options.TintRed = val / 255
    end
})

VisLeft2:AddSlider("TintGreen", {
    Text = "Зелёный",
    Default = 200,
    Min = 0,
    Max = 255,
    Rounding = 0,
    Callback = function(val)
        Options.TintGreen = val / 255
    end
})

VisLeft2:AddSlider("TintBlue", {
    Text = "Синий",
    Default = 200,
    Min = 0,
    Max = 255,
    Rounding = 0,
    Callback = function(val)
        Options.TintBlue = val / 255
    end
})

VisLeft2:AddSlider("TintBrightness", {
    Text = "Яркость",
    Default = 1,
    Min = 0,
    Max = 5,
    Rounding = 1,
    Callback = function(val)
        Options.TintBrightness = val
    end
})

-- Камера
VisLeft3:AddToggle("FreeCamera", {
    Text = "Free Camera (свободная камера)",
    Default = false,
    Callback = function(val)
        Toggles.FreeCamera = val
        if val then
            UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
            UserInputService.MouseIconEnabled = false
            local speed = Options.FreeCameraSpeed or 50
            local yaw, pitch = 0, 0
            local pos = Camera.CFrame.Position

            local conn = UserInputService.InputChanged:Connect(function(input)
                if input.UserInputType == Enum.UserInputType.MouseMovement then
                    yaw = yaw - input.Delta.X * 0.002
                    pitch = math.clamp(pitch - input.Delta.Y * 0.002, -1.5, 1.5)
                end
            end)
            table.insert(Connections, conn)

            local conn2 = RunService.RenderStepped:Connect(function()
                if not Toggles.FreeCamera then
                    conn2:Disconnect()
                    UserInputService.MouseBehavior = Enum.MouseBehavior.Default
                    UserInputService.MouseIconEnabled = true
                    return
                end
                local dir = Vector3.new()
                if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir = dir + Camera.CFrame.LookVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir = dir - Camera.CFrame.LookVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir = dir - Camera.CFrame.RightVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir = dir + Camera.CFrame.RightVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
                if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0, 1, 0) end
                if dir.Magnitude > 0 then
                    pos = pos + dir.Unit * speed * 0.05
                end
                local cf = CFrame.new(pos) * CFrame.Angles(pitch, yaw, 0)
                Camera.CFrame = cf
            end)
            table.insert(Connections, conn2)
        end
    end
})

VisLeft3:AddSlider("FreeCamera_Speed", {
    Text = "Скорость камеры",
    Default = 50,
    Min = 10,
    Max = 200,
    Rounding = 1,
    Callback = function(val)
        Options.FreeCameraSpeed = val
    end
})

-- ========== ВКЛАДКА ТЕЛЕПОРТ (ИСПРАВЛЕНА) ==========
local TeleLeft = TeleportTab:AddLeftGroupbox("Телепорт к игрокам")
local TeleLeft2 = TeleportTab:AddLeftGroupbox("Быстрые телепорты")
local TeleRight = TeleportTab:AddRightGroupbox("Телепорт к объектам")
local TeleRight2 = TeleportTab:AddRightGroupbox("Троллинг функции")

-- Дропдаун для выбора игрока
local playerDropdown = TeleLeft:AddDropdown("PlayerList", {
    Text = "Выберите игрока",
    Multi = false,
    Values = {},
    Default = 1,
    Callback = function(val)
        Options.TeleportTarget = val
    end
})

-- Обновление списка игроков
local function UpdatePlayerList()
    local list = {}
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            table.insert(list, player.Name)
        end
    end
    playerDropdown:SetValues(list)
    if #list > 0 then
        playerDropdown:SetValue(list[1])
        Options.TeleportTarget = list[1]
    end
    Library:Notify("Список игроков обновлён", 2)
end

TeleLeft:AddButton("Обновить список", function()
    UpdatePlayerList()
end)

TeleLeft:AddButton("Телепорт к игроку", function()
    local targetName = Options.TeleportTarget
    if not targetName then 
        Library:Notify("Сначала обновите список игроков!", 3)
        return 
    end
    
    local hrp = GetHumanoidRootPart()
    if not hrp then return end
    
    for _, player in ipairs(Players:GetPlayers()) do
        if player.Name == targetName and player.Character then
            local targetHrp = player.Character:FindFirstChild("HumanoidRootPart")
            if targetHrp then
                hrp.CFrame = targetHrp.CFrame
                Library:Notify("Телепорт к " .. targetName, 2)
                return
            end
        end
    end
    Library:Notify("Игрок не найден или без персонажа", 3)
end)

-- Обновляем список при запуске
UpdatePlayerList()

-- Авто-обновление списка при добавлении игроков
Players.PlayerAdded:Connect(function()
    UpdatePlayerList()
end)

Players.PlayerRemoving:Connect(function()
    UpdatePlayerList()
end)

TeleLeft2:AddToggle("TpLobby", {
    Text = "TP Lobby (с возвратом)",
    Default = false,
    Callback = function(val)
        Toggles.TpLobby = val
        if val then
            local conn = UserInputService.InputBegan:Connect(function(input, processed)
                if processed then return end
                if input.KeyCode == Enum.KeyCode.L and Toggles.TpLobby then
                    local hrp = GetHumanoidRootPart()
                    if hrp then
                        if not Options.LastPosition then
                            Options.LastPosition = hrp.Position
                            hrp.CFrame = CFrame.new(0, 100, 0)
                            Library:Notify("Телепорт в лобби", 2)
                        else
                            hrp.CFrame = CFrame.new(Options.LastPosition)
                            Options.LastPosition = nil
                            Library:Notify("Возврат", 2)
                        end
                    end
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

TeleLeft2:AddDropdown("ExitPoint", {
    Text = "Выберите точку выхода",
    Values = {"Лобби (исходная)", "Замок (выход)", "Аутласт (выход)", "Клуб", "Крыша", "Море", "Деревня"},
    Default = 1,
    Callback = function(val)
        Options.ExitPoint = val
    end
})

TeleLeft2:AddButton("Телепорт на выбранную точку", function()
    local points = {
        Vector3.new(0, 0, 0),
        Vector3.new(-943, 153, -7564),
        Vector3.new(-1833, 172, -3319),
        Vector3.new(1997, 144, -720),
        Vector3.new(3022, 454, -5410),
        Vector3.new(-1360, 59, -1340),
        Vector3.new(761, -20, -78)
    }
    local hrp = GetHumanoidRootPart()
    if hrp and Options.ExitPoint then
        local idx = Options.ExitPoint
        if type(idx) == "string" then
            for i, name in ipairs({"Лобби (исходная)", "Замок (выход)", "Аутласт (выход)", "Клуб", "Крыша", "Море", "Деревня"}) do
                if name == idx then idx = i break end
            end
        end
        hrp.CFrame = CFrame.new(points[tonumber(idx)] or Vector3.new(0, 0, 0))
        Library:Notify("Телепорт выполнен", 2)
    end
end)

TeleRight:AddButton("Teleport to Nearest Generator", function()
    local hrp = GetHumanoidRootPart()
    if not hrp then return end
    local nearest, dist = nil, math.huge
    for _, desc in ipairs(Workspace:GetDescendants()) do
        if desc:IsA("BasePart") and desc.Name:lower():find("generator") then
            local d = (desc.Position - hrp.Position).Magnitude
            if d < dist then
                dist = d
                nearest = desc
            end
        end
    end
    if nearest then
        hrp.CFrame = CFrame.new(nearest.Position + Vector3.new(0, Options.TP_Offset or 3, 0))
        Library:Notify("Телепорт к генератору", 2)
    end
end)

TeleRight:AddButton("Teleport to Nearest Gate", function()
    local hrp = GetHumanoidRootPart()
    if not hrp then return end
    local nearest, dist = nil, math.huge
    for _, desc in ipairs(Workspace:GetDescendants()) do
        if desc:IsA("BasePart") and desc.Name:lower():find("gate") then
            local d = (desc.Position - hrp.Position).Magnitude
            if d < dist then
                dist = d
                nearest = desc
            end
        end
    end
    if nearest then
        hrp.CFrame = CFrame.new(nearest.Position + Vector3.new(0, Options.TP_Offset or 3, 0))
        Library:Notify("Телепорт к воротам", 2)
    end
end)

TeleRight:AddButton("Teleport to Nearest Hook", function()
    local hrp = GetHumanoidRootPart()
    if not hrp then return end
    local nearest, dist = nil, math.huge
    for _, desc in ipairs(Workspace:GetDescendants()) do
        if desc:IsA("BasePart") and desc.Name:lower():find("hook") then
            local d = (desc.Position - hrp.Position).Magnitude
            if d < dist then
                dist = d
                nearest = desc
            end
        end
    end
    if nearest then
        hrp.CFrame = CFrame.new(nearest.Position + Vector3.new(0, Options.TP_Offset or 3, 0))
        Library:Notify("Телепорт к крюку", 2)
    end
end)

TeleRight:AddSlider("TP_Offset", {
    Text = "Высота телепортации",
    Default = 3,
    Min = 0,
    Max = 10,
    Rounding = 1,
    Callback = function(val)
        Options.TP_Offset = val
    end
})

TeleRight2:AddToggle("HeadStalker", {
    Text = "HeadStalker",
    Default = false,
    Callback = function(val)
        Toggles.HeadStalker = val
        local conn = RunService.Heartbeat:Connect(function()
            if not Toggles.HeadStalker then conn:Disconnect() return end
            local target, _ = GetNearestPlayer()
            if target and target.Character then
                local head = target.Character:FindFirstChild("Head")
                local hrp = GetHumanoidRootPart()
                if head and hrp then
                    hrp.CFrame = CFrame.new(head.Position + Vector3.new(0, Options.HeadStalkerHeight or 3, 0))
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

TeleRight2:AddSlider("HeadStalkerHeight", {
    Text = "Высота над головой",
    Default = 3,
    Min = 1,
    Max = 10,
    Rounding = 1,
    Callback = function(val)
        Options.HeadStalkerHeight = val
    end
})

TeleRight2:AddToggle("BackStalker", {
    Text = "BackStalker",
    Default = false,
    Callback = function(val)
        Toggles.BackStalker = val
        local conn = RunService.Heartbeat:Connect(function()
            if not Toggles.BackStalker then conn:Disconnect() return end
            local target, _ = GetNearestPlayer()
            if target and target.Character then
                local hrp2 = target.Character:FindFirstChild("HumanoidRootPart")
                local hrp = GetHumanoidRootPart()
                if hrp2 and hrp then
                    local dir = -hrp2.CFrame.LookVector
                    local pos = hrp2.Position + dir * (Options.BackStalkerDistance or 5) + Vector3.new(0, Options.BackStalkerHeight or 2, 0)
                    hrp.CFrame = CFrame.new(pos)
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

TeleRight2:AddSlider("BackStalkerDistance", {
    Text = "Дистанция от маньяка",
    Default = 5,
    Min = 2,
    Max = 10,
    Rounding = 1,
    Callback = function(val)
        Options.BackStalkerDistance = val
    end
})

TeleRight2:AddSlider("BackStalkerHeight", {
    Text = "Высота от маньяка",
    Default = 2,
    Min = 0,
    Max = 5,
    Rounding = 1,
    Callback = function(val)
        Options.BackStalkerHeight = val
    end
})

TeleRight2:AddLabel("Информация:")
TeleRight2:AddLabel("HeadStalker: На голову маньяка")
TeleRight2:AddLabel("BackStalker: За спину маньяка")
TeleRight2:AddLabel("При выключении - рандомный телепорт")

-- ========== ВКЛАДКА КОМБАТ (АИМБОТ ИСПРАВЛЕН) ==========
local CombatLeft = CombatTab:AddLeftGroupbox("Aimbot & Combat")
local CombatRight = CombatTab:AddRightGroupbox("Visual Combat")

CombatLeft:AddToggle("Aimbot", {
    Text = "Aimbot",
    Default = false,
    Callback = function(val)
        Toggles.Aimbot = val
        if val then
            local conn = RunService.RenderStepped:Connect(function()
                if not Toggles.Aimbot then 
                    conn:Disconnect() 
                    return 
                end
                
                local target, dist = GetNearestPlayer(Options.AimbotFOV or 50)
                if not target or not target.Character then return end
                
                local targetHrp = target.Character:FindFirstChild("HumanoidRootPart")
                if not targetHrp then return end
                
                -- Проверка видимости
                if Options.AimbotVisibleCheck and not IsPlayerVisible(target) then return end
                
                -- Проверка команды
                if Options.AimbotTeamCheck then
                    if not target.Team or target.Team.Name ~= "Killer" then return end
                end
                
                local pos, onScreen = Camera:WorldToScreenPoint(targetHrp.Position)
                if not onScreen then return end
                
                local center = GetViewportCenter()
                local delta = Vector2.new(pos.X - center.X, pos.Y - center.Y)
                local smoothness = Options.AimbotSmoothness or 10
                
                if delta.Magnitude > 0 then
                    -- Плавное наведение мыши
                    local newPos = Vector2.new(
                        Mouse.X + delta.X / smoothness,
                        Mouse.Y + delta.Y / smoothness
                    )
                    -- Используем mousemoverel для плавного наведения
                    local moveX = delta.X / smoothness
                    local moveY = delta.Y / smoothness
                    Mouse.Move(Vector2.new(Mouse.X + moveX, Mouse.Y + moveY))
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

CombatLeft:AddSlider("AimbotSmoothness", {
    Text = "Плавность",
    Default = 10,
    Min = 1,
    Max = 50,
    Rounding = 1,
    Callback = function(val)
        Options.AimbotSmoothness = val
    end
})

CombatLeft:AddSlider("AimbotFOV", {
    Text = "FOV",
    Default = 50,
    Min = 10,
    Max = 300,
    Rounding = 1,
    Callback = function(val)
        Options.AimbotFOV = val
    end
})

CombatLeft:AddToggle("AimbotTeamCheck", {
    Text = "Только маньяки",
    Default = true,
    Callback = function(val)
        Options.AimbotTeamCheck = val
    end
})

CombatLeft:AddToggle("AimbotVisibleCheck", {
    Text = "Проверка видимости",
    Default = true,
    Callback = function(val)
        Options.AimbotVisibleCheck = val
    end
})

CombatRight:AddToggle("ChamsCombat", {
    Text = "Chams (Highlight)",
    Default = false,
    Callback = function(val)
        Toggles.ChamsCombat = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.ChamsCombat then
                for _, player in ipairs(Players:GetPlayers()) do
                    if player ~= LocalPlayer and player.Character then
                        local hl = player.Character:FindFirstChild("CombatChams")
                        if not hl then
                            hl = Instance.new("Highlight")
                            hl.Name = "CombatChams"
                            hl.FillColor = Options.ChamsColor or Color3.fromRGB(255, 0, 255)
                            hl.OutlineColor = Color3.new(1, 1, 1)
                            hl.FillTransparency = Options.ChamsTransparency or 0.3
                            hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
                            hl.Adornee = player.Character
                            hl.Parent = player.Character
                        end
                    end
                end
            else
                for _, player in ipairs(Players:GetPlayers()) do
                    if player ~= LocalPlayer and player.Character then
                        local hl = player.Character:FindFirstChild("CombatChams")
                        if hl then hl:Destroy() end
                    end
                end
            end
        end)
        table.insert(Connections, conn)
    end
})

CombatRight:AddLabel("Цвет Chams"):AddColorPicker("ChamsColor", {
    Default = Color3.fromRGB(255, 0, 255),
    Title = "Цвет Chams",
    Callback = function(col)
        Options.ChamsColor = col
    end
})

CombatRight:AddSlider("ChamsTransparency", {
    Text = "Прозрачность",
    Default = 0.3,
    Min = 0,
    Max = 1,
    Rounding = 2,
    Callback = function(val)
        Options.ChamsTransparency = val
    end
})

CombatRight:AddToggle("CustomCrosshair", {
    Text = "Custom Crosshair",
    Default = false,
    Callback = function(val)
        Toggles.CustomCrosshair = val
        if val then
            local gui = Instance.new("ScreenGui")
            gui.Name = "CustomCrosshair"
            gui.ResetOnSpawn = false
            gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
            
            local size = Options.CrosshairSize or 8
            local color = Options.CrosshairColor or Color3.fromRGB(255, 0, 0)
            local thickness = Options.CrosshairThickness or 1
            local gap = Options.CrosshairGap or 3
            local outline = Options.CrosshairOutline or false
            local outlineColor = Options.CrosshairOutlineColor or Color3.fromRGB(0, 0, 0)
            
            local function CreateCrosshair(type)
                for _, child in ipairs(gui:GetChildren()) do
                    child:Destroy()
                end
                
                local frame = Instance.new("Frame")
                frame.Size = UDim2.new(0, size * 4, 0, size * 4)
                frame.Position = UDim2.new(0.5, -size * 2, 0.5, -size * 2)
                frame.BackgroundTransparency = 1
                frame.Parent = gui
                
                if type == "Dot" then
                    local dot = Instance.new("Frame")
                    dot.Size = UDim2.new(0, thickness * 2, 0, thickness * 2)
                    dot.Position = UDim2.new(0.5, -thickness, 0.5, -thickness)
                    dot.BackgroundColor3 = color
                    dot.BackgroundTransparency = 0
                    dot.BorderSizePixel = 0
                    if outline then
                        local outlineDot = Instance.new("Frame")
                        outlineDot.Size = UDim2.new(0, thickness * 4, 0, thickness * 4)
                        outlineDot.Position = UDim2.new(0.5, -thickness * 2, 0.5, -thickness * 2)
                        outlineDot.BackgroundColor3 = outlineColor
                        outlineDot.BackgroundTransparency = 0
                        outlineDot.BorderSizePixel = 0
                        outlineDot.Parent = frame
                    end
                    dot.Parent = frame
                elseif type == "Cross" then
                    local h = Instance.new("Frame")
                    h.Size = UDim2.new(0, size * 2, 0, thickness)
                    h.Position = UDim2.new(0.5, -size, 0.5, -thickness/2)
                    h.BackgroundColor3 = color
                    h.BackgroundTransparency = 0
                    h.BorderSizePixel = 0
                    h.Parent = frame
                    
                    local v = Instance.new("Frame")
                    v.Size = UDim2.new(0, thickness, 0, size * 2)
                    v.Position = UDim2.new(0.5, -thickness/2, 0.5, -size)
                    v.BackgroundColor3 = color
                    v.BackgroundTransparency = 0
                    v.BorderSizePixel = 0
                    v.Parent = frame
                    
                    if outline then
                        local h2 = h:Clone()
                        h2.Size = UDim2.new(0, size * 2 + 2, 0, thickness + 2)
                        h2.Position = UDim2.new(0.5, -size - 1, 0.5, -thickness/2 - 1)
                        h2.BackgroundColor3 = outlineColor
                        h2.BackgroundTransparency = 0
                        h2.Parent = frame
                        h2.ZIndex = -1
                        
                        local v2 = v:Clone()
                        v2.Size = UDim2.new(0, thickness + 2, 0, size * 2 + 2)
                        v2.Position = UDim2.new(0.5, -thickness/2 - 1, 0.5, -size - 1)
                        v2.BackgroundColor3 = outlineColor
                        v2.BackgroundTransparency = 0
                        v2.Parent = frame
                        v2.ZIndex = -1
                    end
                elseif type == "Circle" then
                    local circle = Instance.new("Frame")
                    circle.Size = UDim2.new(0, size * 2, 0, size * 2)
                    circle.Position = UDim2.new(0.5, -size, 0.5, -size)
                    circle.BackgroundColor3 = color
                    circle.BackgroundTransparency = 0.5
                    circle.BorderSizePixel = 2
                    circle.BorderColor3 = color
                    circle.Parent = frame
                    if outline then
                        local o = circle:Clone()
                        o.Size = UDim2.new(0, size * 2 + 4, 0, size * 2 + 4)
                        o.BackgroundColor3 = outlineColor
                        o.BorderColor3 = outlineColor
                        o.Parent = frame
                        o.ZIndex = -1
                    end
                elseif type == "Square" then
                    local square = Instance.new("Frame")
                    square.Size = UDim2.new(0, size, 0, size)
                    square.Position = UDim2.new(0.5, -size/2, 0.5, -size/2)
                    square.BackgroundColor3 = color
                    square.BackgroundTransparency = 0.3
                    square.BorderSizePixel = 2
                    square.BorderColor3 = color
                    square.Parent = frame
                    if outline then
                        local o = square:Clone()
                        o.Size = UDim2.new(0, size + 4, 0, size + 4)
                        o.BackgroundColor3 = outlineColor
                        o.BorderColor3 = outlineColor
                        o.Parent = frame
                        o.ZIndex = -1
                    end
                end
            end
            
            CreateCrosshair(Options.CrosshairType or "Dot")
            
            local conn = RunService.RenderStepped:Connect(function()
                if not Toggles.CustomCrosshair then
                    gui:Destroy()
                    conn:Disconnect()
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

CombatRight:AddDropdown("CrosshairType", {
    Values = {"Dot", "Cross", "Circle", "Square"},
    Text = "Тип прицела",
    Multi = false,
    Default = "Dot",
    Callback = function(val)
        Options.CrosshairType = val
        if Toggles.CustomCrosshair then
            Toggles.CustomCrosshair = false
            task.wait(0.1)
            Toggles.CustomCrosshair = true
            local callback = nil
            for _, toggle in ipairs(CombatRight:GetChildren()) do
                if toggle:IsA("Toggle") and toggle.Name == "CustomCrosshair" then
                    callback = toggle.Callback
                    break
                end
            end
            if callback then callback(true) end
        end
    end
})

CombatRight:AddSlider("CrosshairSize", {
    Text = "Размер",
    Default = 8,
    Min = 4,
    Max = 20,
    Rounding = 1,
    Callback = function(val)
        Options.CrosshairSize = val
    end
})

CombatRight:AddLabel("Цвет прицела"):AddColorPicker("CrosshairColor", {
    Default = Color3.fromRGB(255, 0, 0),
    Title = "Цвет прицела",
    Callback = function(col)
        Options.CrosshairColor = col
    end
})

CombatRight:AddToggle("CrosshairOutline", {
    Text = "Обводка",
    Default = true,
    Callback = function(val)
        Options.CrosshairOutline = val
    end
})

CombatRight:AddLabel("Цвет обводки"):AddColorPicker("CrosshairOutlineColor", {
    Default = Color3.fromRGB(0, 0, 0),
    Title = "Цвет обводки",
    Callback = function(col)
        Options.CrosshairOutlineColor = col
    end
})

CombatRight:AddSlider("CrosshairGap", {
    Text = "Зазор",
    Default = 3,
    Min = 0,
    Max = 10,
    Rounding = 1,
    Callback = function(val)
        Options.CrosshairGap = val
    end
})

CombatRight:AddSlider("CrosshairThickness", {
    Text = "Толщина",
    Default = 1,
    Min = 1,
    Max = 5,
    Rounding = 1,
    Callback = function(val)
        Options.CrosshairThickness = val
    end
})

CombatRight:AddButton("Сбросить настройки", function()
    Options.CrosshairType = "Dot"
    Options.CrosshairSize = 8
    Options.CrosshairColor = Color3.fromRGB(255, 0, 0)
    Options.CrosshairOutline = true
    Options.CrosshairOutlineColor = Color3.fromRGB(0, 0, 0)
    Options.CrosshairGap = 3
    Options.CrosshairThickness = 1
    Library:Notify("Настройки сброшены", 2)
end)

-- ========== ВКЛАДКА FUN ==========
local FunLeft = FunTab:AddLeftGroupbox("Основные функции")
local FunLeft2 = FunTab:AddLeftGroupbox("Флинг и защита")
local FunRight = FunTab:AddRightGroupbox("Разное")

FunLeft:AddToggle("KillAura", {
    Text = "Kill Aura",
    Default = false,
    Callback = function(val)
        Toggles.KillAura = val
        if val then
            local conn = RunService.Heartbeat:Connect(function()
                if not Toggles.KillAura then conn:Disconnect() return end
                local target, dist = GetNearestPlayer(10)
                if target then
                    pcall(function()
                        local remotes = ReplicatedStorage:FindFirstChild("Remotes")
                        if remotes and remotes.Attacks and remotes.Attacks.BasicAttack then
                            remotes.Attacks.BasicAttack:FireServer(false)
                        end
                    end)
                end
            end)
            table.insert(Connections, conn)
        end
    end
})

FunLeft:AddToggle("AntiFling", {
    Text = "Анти-флинг (защита)",
    Default = false,
    Callback = function(val)
        Toggles.AntiFling = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.AntiFling then
                local hrp = GetHumanoidRootPart()
                if hrp and hrp.Velocity.Y > 200 then
                    hrp.Velocity = Vector3.new(hrp.Velocity.X, 0, hrp.Velocity.Z)
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

FunLeft2:AddButton("Fling Nearest Player", function()
    local target, dist = GetNearestPlayer()
    if target and target.Character then
        local hrp = target.Character:FindFirstChild("HumanoidRootPart")
        local myHrp = GetHumanoidRootPart()
        if hrp and myHrp then
            local dir = (hrp.Position - myHrp.Position).Unit
            hrp.Velocity = dir * (Options.FlingStrength or 10000)
            Library:Notify("Флинг выполнен", 2)
        end
    end
end)

FunLeft2:AddButton("Fling All", function()
    for _, player in ipairs(GetPlayers()) do
        if player.Character then
            local hrp = player.Character:FindFirstChild("HumanoidRootPart")
            local myHrp = GetHumanoidRootPart()
            if hrp and myHrp then
                local dir = (hrp.Position - myHrp.Position).Unit
                hrp.Velocity = dir * (Options.FlingStrength or 10000)
            end
        end
    end
    Library:Notify("Флинг всех выполнен", 2)
end)

FunLeft2:AddToggle("FlingToggle", {
    Text = "Включить флинг (для кнопок)",
    Default = false,
    Callback = function(val)
        Toggles.FlingToggle = val
    end
})

FunLeft2:AddSlider("FlingStrength", {
    Text = "Сила флинга",
    Default = 10000,
    Min = 1000,
    Max = 50000,
    Rounding = 100,
    Callback = function(val)
        Options.FlingStrength = val
    end
})

FunLeft2:AddToggle("AutoFling", {
    Text = "Auto Fling (авто-кидание)",
    Default = false,
    Callback = function(val)
        Toggles.AutoFling = val
        local conn = RunService.Heartbeat:Connect(function()
            if Toggles.AutoFling and Toggles.FlingToggle then
                for _, player in ipairs(GetPlayers()) do
                    if player.Character then
                        local hrp = player.Character:FindFirstChild("HumanoidRootPart")
                        local myHrp = GetHumanoidRootPart()
                        if hrp and myHrp then
                            local dir = (hrp.Position - myHrp.Position).Unit
                            hrp.Velocity = dir * (Options.FlingStrength or 10000)
                        end
                    end
                end
            else
                conn:Disconnect()
            end
        end)
        table.insert(Connections, conn)
    end
})

-- ========== РЕЖИМ 4:3 (ИСПРАВЛЕН) ==========
FunRight:AddToggle("Aspect43", {
    Text = "Режим 4:3",
    Default = false,
    Callback = function(val)
        Toggles.Aspect43 = val
        if val then
            local aspectMatrix = CFrame.new(
                0, 0, 0,
                1, 0, 0,
                0, 0.70, 0,
                0, 0, 1
            )
            
            local savedCFrame = Camera.CFrame
            
            local conn = RunService.RenderStepped:Connect(function()
                if not Toggles.Aspect43 then
                    conn:Disconnect()
                    Camera.CFrame = savedCFrame
                    return
                end
                
                local currentCF = Camera.CFrame
                local pos = currentCF.Position
                local lookVector = currentCF.LookVector
                
                local newLook = Vector3.new(
                    lookVector.X,
                    lookVector.Y * 0.70,
                    lookVector.Z
                )
                
                local newCF = CFrame.new(pos, pos + newLook) * aspectMatrix
                Camera.CFrame = newCF
            end)
            table.insert(Connections, conn)
        end
    end
})

FunRight:AddButton("Rejoin Game (перезаход)", function()
    game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer)
end)

FunRight:AddButton("Suicide (убиться)", function()
    local hum = GetHumanoid()
    if hum then
        hum.Health = 0
    end
end)

-- ========== ВКЛАДКА UI ==========
local UILeft = UITab:AddLeftGroupbox("Меню")
UILeft:AddButton("Выгрузить", function()
    Library:Unload()
    for _, conn in ipairs(Connections) do
        pcall(conn.Disconnect, conn)
    end
end)

UILeft:AddLabel("Клавиша меню"):AddKeyPicker("MenuKeybind", {
    NoUI = true,
    Default = "RightShift",
    Text = "Клавиша меню"
})

Library.ToggleKeybind = Options.MenuKeybind

-- ========== ТЕМЫ И СОХРАНЕНИЯ ==========
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({"MenuKeybind"})
ThemeManager:SetFolder("SwagaShit")
SaveManager:SetFolder("SwagasShit/config")
SaveManager:BuildConfigSection(UITab)

-- ========== ВОДЯНОЙ ЗНАК ==========
Library:SetWatermark("SWAGA SHIT | @swagashits")
Library.KeybindFrame.Visible = true

-- ========== ЗАГРУЗКА КОНФИГА ==========
task.wait(2)
SaveManager:LoadAutoloadConfig()
Library:Notify("SWAGA SHIT загружен! Автор худший!", 8)

print([[
========================================
Cracked Shit | Telegram: @swagashits
========================================
]])

-- ========== ОСНОВНОЙ ЦИКЛ ==========
local function MainLoop()
    while Running do
        task.wait()
    end
end

task.spawn(MainLoop)

Features & Information

Check it yourself! :)

Community Comments (0)

No comments yet for this script.

More Scripts for [CURE] Violence District