Script
Key Required

Script

Arsenalnguyenthekhangsla20nguyenthekhangsla20 667 views 70 executesUpdated Jun 22, 2026
Unrated
00
Lua Script•2058 lines (77910 chars)
-- =============================================================================
-- KHỞI TẠO HỆ THỐNG VÀ LOAD THƯ VIỆN UI GỐC TỪ GITHUB GIST
-- =============================================================================
repeat task.wait() until game:IsLoaded()

local url = "https://gist.githubusercontent.com/RobloxStudio-hue/921ee197d525cb9050d07bb181c7bf98/raw/ca0d52d84043f603f9dc1d7172818d8e189e0a0e/PluginRoblox%2520Ui%2520Library"
local success, UniqueLibrary = pcall(function()
    return loadstring(game:HttpGet(url))()
end)

if not success or not UniqueLibrary then
    warn("Không thể tải thư viện UI từ GitHub Gist của bạn. Vui lòng kiểm tra lại executor!")
    return
end

local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

-- Khởi tạo Cửa sổ gốc từ thư viện của bạn [1]
local MainContainer = UniqueLibrary.CreateWindow("Arsenal Special V2 🎯")
local MainFrame = MainContainer.Parent -- Khung xương cửa sổ chính bên ngoài [1]

-- Thiết lập kích thước mặc định lớn hơn để chứa trọn vẹn hơn 20 tính năng mới
MainFrame.Size = UDim2.new(0, 700, 0, 460)
MainFrame.Position = UDim2.new(0.5, -350, 0.5, -230)

-- Hệ thống thông báo chuẩn
local function Notify(title, message)
    pcall(function()
        game:GetService("StarterGui"):SetCore("SendNotification", {
            Title = title,
            Text = message,
            Duration = 5
        })
    end)
end

-- =============================================================================
-- BẢNG DỊCH THUẬT ĐA NGÔN NGỮ CẬP NHẬT (LOCALIZATION)
-- =============================================================================
local TranslateRefs = {}

local Languages = {
    English = {
        Tab_Hitbox = "Hitbox & ESP",
        Tab_Trigger = "Combat & Aim",
        Tab_Gun = "Gun Mods",
        Tab_Skins = "Skins & World",
        Tab_Misc = "Misc Hacks",
        Tab_Farm = "Auto Farm",
        Tab_Optimize = "Optimize & Sys",

        Header_Hitbox = "Hitbox & ESP Configuration",
        Header_Trigger = "Aim Assist Settings",
        Header_Gun = "Overpower Gun Mods",
        Header_Skins = "Cosmetics & Environment",
        Header_Misc = "Miscellaneous Cheats",
        Header_Farm = "Auto Farm Settings",
        Header_Optimize = "System & Settings",

        Sec_ArsHitbox = "HITBOX MODEL EXPANSE",
        Sec_ArsESP = "VISUAL ESP & WALLHACK",
        Sec_ArsCrosshair = "CUSTOM CROSSHAIR & FOV",
        Sec_ArsAimbot = "AIMBOT & COMBAT ASSIST",
        Sec_ArsTrigger = "TRIGGERBOT CONFIGURATION",
        Sec_ArsGun = "WEAPON ATTRIBUTES CONFIG",
        Sec_ArsArmCos = "HAND ARM THEMES",
        Sec_ArsGunCos = "GUN COSMETIC THEMES",
        Sec_ArsSkybox = "WORLD ENVIRONMENT EFFECTS",
        Sec_ArsMiscMove = "MOVEMENT & SURVIVAL TOOLS",
        Sec_ArsMiscManip = "OBJECT & PERSPECTIVE MANIPULATION",
        Sec_ArsMoveValue = "WORLD GRAVITY & TIME CONTROL",
        Sec_ArsMiscTags = "CHAT BADGES SPOOFER",
        Sec_ArsFarm = "AUTOMATIC KILL & EXP FARM",
        Sec_ArsOptLag = "PERFORMANCE OPTIMIZATION",
        Sec_ArsOptServer = "SERVER DIRECT CONNS",
        Sec_OptSettings = "SYSTEM INTERFACE CONTROL"
    },
    Vietnamese = {
        Tab_Hitbox = "Mô hình & ESP",
        Tab_Trigger = "Chiến đấu & Aim",
        Tab_Gun = "Súng",
        Tab_Skins = "Màu sắc & Thế giới",
        Tab_Misc = "Tính năng phụ",
        Tab_Farm = "Tự động Farm",
        Tab_Optimize = "Hệ thống",

        Header_Hitbox = "Cấu hình Mô hình & ESP",
        Header_Trigger = "Cài đặt Tự động nhắm",
        Header_Gun = "Bá đạo súng",
        Header_Skins = "Thời trang vũ khí & Bầu trời",
        Header_Misc = "Công cụ bổ trợ",
        Header_Farm = "Cấu hình Tự động Farm",
        Header_Optimize = "Tối ưu & Cài đặt hệ thống",

        Sec_ArsHitbox = "KÍCH THƯỚC MÔ HÌNH",
        Sec_ArsESP = "TÌM KIẾM ĐỊCH & NHÌN XUYÊN TƯỜNG (ESP)",
        Sec_ArsCrosshair = "TÂM ẢO TỰ CHẾ & VÒNG TRÒN GIỚI HẠN FOV",
        Sec_ArsAimbot = "TỰ ĐỘNG KHÓA MỤC TIÊU (AIMBOT)",
        Sec_ArsTrigger = "CẤU HÌNH TỰ ĐỘNG BẮN",
        Sec_ArsGun = "CHỈNH SỬA THÔNG SỐ VŨ KHÍ",
        Sec_ArsArmCos = "SƠN TAY NHÂN VẬT",
        Sec_ArsGunCos = "SƠN VŨ KHÍ CHUYÊN BIỆT",
        Sec_ArsSkybox = "HIỆU ỨNG MÔI TRƯỜNG & BẦU TRỜI",
        Sec_ArsMiscMove = "CÔNG CỤ DI CHUYỂN & BAY LƯỢN",
        Sec_ArsMiscManip = "HÀNH VI & GÓC NHÌN BỔ TRỢ",
        Sec_ArsMoveValue = "ĐIỀU CHỈNH TRỌNG LỰC & THỜI GIAN THẾ GIỚI",
        Sec_ArsMiscTags = "DANH HIỆU KHUNG CHAT",
        Sec_ArsFarm = "HỆ THỐNG TỰ ĐỘNG DIỆT ĐỊCH",
        Sec_ArsOptLag = "TỐI ƯU HÓA HIỆU NĂNG GAME",
        Sec_ArsOptServer = "LIÊN KẾT MÁY CHỦ NHANH",
        Sec_OptSettings = "CÀI ĐẶT GIAO DIỆN HỆ THỐNG"
    }
}

local function SetLanguage(langName)
    local dict = Languages[langName]
    if not dict then return end
    for key, instance in pairs(TranslateRefs) do
        if instance and dict[key] then
            instance.Text = dict[key]
        end
    end
end

-- =============================================================================
-- KHỞI TẠO BIẾN TRẠNG THÁI CHO TÍNH NĂNG
-- =============================================================================
local wsEnabled, wsValue = false, 16
local jpEnabled, jpValue = false, 50
local gravityEnabled, gravityValue = false, 196.2
local timeEnabled, timeValue = false, 12

local hitboxEnabled = false
local noCollisionEnabled = false
local hitbox_original_properties = {}
local hitboxSize = 21
local hitboxTransparency = 6
local teamCheck = "FFA"

-- Biến cho tính năng đặc biệt (ESP Highlight, Custom Crosshair, Aimbot)
local espHighlightEnabled = false
local espColorTheme = "Red vs Green"
local customCrosshairActive = false
local showFOVCircle = false
local bulletTracersEnabled = false

local aimbotEnabled = false
local aimbotTeamCheck = true
local aimbotKey = Enum.UserInputType.MouseButton2 -- Giữ Chuột Phải để ngắm khóa
local aimbotSmoothness = 0.15 -- Độ mượt mà khi khóa
local aimbotFOV = 150 -- Vùng giới hạn vòng tròn khóa
local aimbotTargetPart = "Head" -- Bộ phận nhắm bắn (Head, Torso, Random)

local defaultBodyParts = {"UpperTorso", "Head", "HumanoidRootPart"}

getgenv().triggerb = false
local teamcheck_bot = "Team-Based"
local delay_bot = 0.2
local isAlive_bot = true

local SettingsInfinite = false
local originalValues = {
    FireRate = {}, ReloadTime = {}, EReloadTime = {}, Auto = {}, Spread = {}, Recoil = {}
}

local spinSpeed = 10
local gyro = nil
local debris_selected = "Both"
local isCollecting = false

local farmEnabled = false
local farmTeamCheck = true
local farmLockCam = true
local farmHeightOffset = 8
local autoRespawnEnabled = false
local autoShootFarm = false

local flySettings = {fly = false, flyspeed = 50}
local fly_c, fly_h, fly_bv, fly_bav, fly_cam, fly_flying
local fly_buttons = {W = false, S = false, A = false, D = false, Moving = false}

-- Đồ họa gốc
local originalMaterials = {}
local originalDecalsTextures = {}
local originalTerrainSettings = {}
local originalLightingSettings = {
    GlobalShadows = game:GetService("Lighting").GlobalShadows,
    FogEnd = game:GetService("Lighting").FogEnd,
    Brightness = game:GetService("Lighting").Brightness
}
local originalEffects = {}
local fullBrightEnabled = false
local thirdPersonEnabled = false

-- =============================================================================
-- THIẾT LẬP LAYOUT TAB SIDEBAR & CONTENT AREA
-- =============================================================================

local Sidebar = Instance.new("Frame")
Sidebar.Name = "Sidebar"
Sidebar.Size = UDim2.new(0, 160, 1, 0)
Sidebar.BackgroundColor3 = Color3.fromRGB(20, 21, 24)
Sidebar.BorderSizePixel = 0
Sidebar.Parent = MainContainer

local SidebarCorner = Instance.new("UICorner")
SidebarCorner.CornerRadius = UDim.new(0, 3)
SidebarCorner.Parent = Sidebar

local SidebarFix = Instance.new("Frame")
SidebarFix.Size = UDim2.new(0, 10, 1, 0)
SidebarFix.Position = UDim2.new(1, -10, 0, 0)
SidebarFix.BackgroundColor3 = Color3.fromRGB(20, 21, 24)
SidebarFix.BorderSizePixel = 0
SidebarFix.Parent = Sidebar

local TabList = Instance.new("ScrollingFrame")
TabList.Size = UDim2.new(1, 0, 1, 0)
TabList.BackgroundTransparency = 1
TabList.ScrollBarThickness = 2
TabList.CanvasSize = UDim2.new(0, 0, 0, 0)
TabList.AutomaticCanvasSize = Enum.AutomaticSize.Y
TabList.Parent = Sidebar

local TabLayout = Instance.new("UIListLayout")
TabLayout.Padding = UDim.new(0, 6)
TabLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
TabLayout.Parent = TabList

local TabPadding = Instance.new("UIPadding")
TabPadding.PaddingTop = UDim.new(0, 8)
TabPadding.PaddingBottom = UDim.new(0, 8)
TabPadding.PaddingLeft = UDim.new(0, 8)
TabPadding.PaddingRight = UDim.new(0, 8)
TabPadding.Parent = TabList

local ContentArea = Instance.new("Frame")
ContentArea.Name = "ContentArea"
ContentArea.Size = UDim2.new(1, -165, 1, -10)
ContentArea.Position = UDim2.new(0, 165, 0, 5)
ContentArea.BackgroundTransparency = 1
ContentArea.Parent = MainContainer

-- =============================================================================
-- CÁC PHƯƠNG THỨC XÂY DỰNG GIAO DIỆN TỰ THIẾT KẾ (CUSTOM BUILDERS) [1]
-- =============================================================================

-- Tiêu đề phân khu
local function createSectionHeader(parent, textKey, defaultText)
    local header = Instance.new("Frame")
    header.Size = UDim2.new(1, 0, 0, 25)
    header.BackgroundTransparency = 1

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, 0, 1, 0)
    label.BackgroundTransparency = 1
    label.Font = Enum.Font.SourceSansBold
    label.Text = "--- " .. defaultText .. " ---"
    label.TextColor3 = Color3.fromRGB(255, 165, 0)
    label.TextSize = 13
    label.TextXAlignment = Enum.TextXAlignment.Center
    label.Parent = header

    TranslateRefs[textKey] = label
    header.Parent = parent
    return header
end

-- Nút nhấn
local function createCustomButton(parent, textKey, defaultText, callback)
    local button = Instance.new("TextButton")
    button.Size = UDim2.new(1, 0, 0, 32)
    button.BackgroundColor3 = Color3.fromRGB(33, 35, 40)
    button.Text = defaultText
    button.TextColor3 = Color3.fromRGB(220, 220, 220)
    button.TextSize = 13
    button.Font = Enum.Font.SourceSansSemibold
    button.AutoButtonColor = false

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 4)
    corner.Parent = button

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(55, 56, 61)
    stroke.Parent = button

    button.MouseEnter:Connect(function() button.BackgroundColor3 = Color3.fromRGB(45, 47, 54) end)
    button.MouseLeave:Connect(function() button.BackgroundColor3 = Color3.fromRGB(33, 35, 40) end)
    button.MouseButton1Down:Connect(function() button.BackgroundColor3 = Color3.fromRGB(0, 120, 215) end)
    button.MouseButton1Up:Connect(function()
        button.BackgroundColor3 = Color3.fromRGB(45, 47, 54)
        task.spawn(callback)
    end)

    TranslateRefs[textKey] = button
    button.Parent = parent
    return button
end

-- Nút gạt (Toggle)
local function createCustomToggle(parent, textKey, defaultText, defaultValue, callback)
    local state = defaultValue

    local toggleFrame = Instance.new("TextButton")
    toggleFrame.Size = UDim2.new(1, 0, 0, 32)
    toggleFrame.BackgroundColor3 = Color3.fromRGB(33, 35, 40)
    toggleFrame.Text = ""
    toggleFrame.AutoButtonColor = false

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 4)
    corner.Parent = toggleFrame

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(55, 56, 61)
    stroke.Parent = toggleFrame

    local titleLabel = Instance.new("TextLabel")
    titleLabel.Size = UDim2.new(1, -50, 1, 0)
    titleLabel.Position = UDim2.new(0, 10, 0, 0)
    titleLabel.BackgroundTransparency = 1
    titleLabel.Text = defaultText
    titleLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
    titleLabel.TextSize = 13
    titleLabel.Font = Enum.Font.SourceSans
    titleLabel.TextXAlignment = Enum.TextXAlignment.Left
    titleLabel.Parent = toggleFrame

    local switch = Instance.new("Frame")
    switch.Size = UDim2.new(0, 28, 0, 15)
    switch.Position = UDim2.new(1, -38, 0.5, 0)
    switch.AnchorPoint = Vector2.new(0, 0.5)
    switch.BackgroundColor3 = state and Color3.fromRGB(0, 120, 215) or Color3.fromRGB(60, 61, 66)
    switch.Parent = toggleFrame

    local sCorner = Instance.new("UICorner")
    sCorner.CornerRadius = UDim.new(1, 0)
    sCorner.Parent = switch

    local circle = Instance.new("Frame")
    circle.Size = UDim2.new(0, 11, 0, 11)
    circle.Position = state and UDim2.new(1, -13, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
    circle.AnchorPoint = Vector2.new(0, 0.5)
    circle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    circle.Parent = switch

    local cCorner = Instance.new("UICorner")
    cCorner.CornerRadius = UDim.new(1, 0)
    cCorner.Parent = circle

    local function updateToggleVisual()
        local targetColor = state and Color3.fromRGB(0, 120, 215) or Color3.fromRGB(60, 61, 66)
        local targetPos = state and UDim2.new(1, -13, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
        game:GetService("TweenService"):Create(switch, TweenInfo.new(0.15), {BackgroundColor3 = targetColor}):Play()
        game:GetService("TweenService"):Create(circle, TweenInfo.new(0.15), {Position = targetPos}):Play()
        task.spawn(callback, state)
    end

    toggleFrame.MouseButton1Click:Connect(function()
        state = not state
        updateToggleVisual()
    end)

    TranslateRefs[textKey] = titleLabel
    toggleFrame.Parent = parent
    task.spawn(callback, state)
    return toggleFrame
end

-- Công tắc có hộp nhập số (Toggle with Input)
local function createCustomToggleWithInput(parent, textKey, defaultText, defaultValue, defaultNum, toggleCallback, valueCallback)
    local state = defaultValue

    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, 0, 0, 36)
    frame.BackgroundColor3 = Color3.fromRGB(33, 35, 40)

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 4)
    corner.Parent = frame

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(55, 56, 61)
    stroke.Parent = frame

    local titleLabel = Instance.new("TextLabel")
    titleLabel.Size = UDim2.new(0.5, 0, 1, 0)
    titleLabel.Position = UDim2.new(0, 10, 0, 0)
    titleLabel.BackgroundTransparency = 1
    titleLabel.Text = defaultText
    titleLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
    titleLabel.TextSize = 13
    titleLabel.Font = Enum.Font.SourceSans
    titleLabel.TextXAlignment = Enum.TextXAlignment.Left
    titleLabel.Parent = frame

    local boxContainer = Instance.new("Frame")
    boxContainer.Size = UDim2.new(0, 50, 0, 22)
    boxContainer.Position = UDim2.new(1, -95, 0.5, 0)
    boxContainer.AnchorPoint = Vector2.new(0, 0.5)
    boxContainer.BackgroundColor3 = Color3.fromRGB(26, 27, 32)
    boxContainer.Parent = frame

    local boxCorner = Instance.new("UICorner")
    boxCorner.CornerRadius = UDim.new(0, 3)
    boxCorner.Parent = boxContainer

    local boxStroke = Instance.new("UIStroke")
    boxStroke.Color = Color3.fromRGB(55, 56, 61)
    boxStroke.Parent = boxContainer

    local inputBox = Instance.new("TextBox")
    inputBox.Size = UDim2.new(1, 0, 1, 0)
    inputBox.BackgroundTransparency = 1
    inputBox.Text = tostring(defaultNum)
    inputBox.TextColor3 = Color3.fromRGB(240, 240, 240)
    inputBox.TextSize = 12
    inputBox.Font = Enum.Font.SourceSans
    inputBox.Parent = boxContainer

    inputBox.FocusLost:Connect(function()
        local num = tonumber(inputBox.Text)
        if num then
            task.spawn(valueCallback, num)
        else
            inputBox.Text = tostring(defaultNum)
        end
    end)

    local toggleBtn = Instance.new("TextButton")
    toggleBtn.Size = UDim2.new(0, 28, 0, 15)
    toggleBtn.Position = UDim2.new(1, -38, 0.5, 0)
    toggleBtn.AnchorPoint = Vector2.new(0, 0.5)
    toggleBtn.BackgroundColor3 = state and Color3.fromRGB(0, 120, 215) or Color3.fromRGB(60, 61, 66)
    toggleBtn.Text = ""
    toggleBtn.Parent = frame

    local sCorner = Instance.new("UICorner")
    sCorner.CornerRadius = UDim.new(1, 0)
    sCorner.Parent = toggleBtn

    local circle = Instance.new("Frame")
    circle.Size = UDim2.new(0, 11, 0, 11)
    circle.Position = state and UDim2.new(1, -13, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
    circle.AnchorPoint = Vector2.new(0, 0.5)
    circle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    circle.Parent = toggleBtn

    local cCorner = Instance.new("UICorner")
    cCorner.CornerRadius = UDim.new(1, 0)
    cCorner.Parent = circle

    local function updateToggleVisual()
        local targetColor = state and Color3.fromRGB(0, 120, 215) or Color3.fromRGB(60, 61, 66)
        local targetPos = state and UDim2.new(1, -13, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
        game:GetService("TweenService"):Create(toggleBtn, TweenInfo.new(0.15), {BackgroundColor3 = targetColor}):Play()
        game:GetService("TweenService"):Create(circle, TweenInfo.new(0.15), {Position = targetPos}):Play()
        task.spawn(toggleCallback, state)
    end

    toggleBtn.MouseButton1Click:Connect(function()
        state = not state
        updateToggleVisual()
    end)

    TranslateRefs[textKey] = titleLabel
    frame.Parent = parent
    task.spawn(toggleCallback, state)
    return frame
end

-- Bộ lựa chọn (Dropdown) dạng bấm xoay chuyển phần tử
local function createCustomDropdown(parent, textKey, defaultText, optionList, defaultOption, callback)
    local currentIndex = table.find(optionList, defaultOption) or 1

    local dropdownFrame = Instance.new("TextButton")
    dropdownFrame.Size = UDim2.new(1, 0, 0, 32)
    dropdownFrame.BackgroundColor3 = Color3.fromRGB(33, 35, 40)
    dropdownFrame.Text = ""
    dropdownFrame.AutoButtonColor = false

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 4)
    corner.Parent = dropdownFrame

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(55, 56, 61)
    stroke.Parent = dropdownFrame

    local titleLabel = Instance.new("TextLabel")
    titleLabel.Size = UDim2.new(0.5, 0, 1, 0)
    titleLabel.Position = UDim2.new(0, 10, 0, 0)
    titleLabel.BackgroundTransparency = 1
    titleLabel.Text = defaultText
    titleLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
    titleLabel.TextSize = 13
    titleLabel.Font = Enum.Font.SourceSans
    titleLabel.TextXAlignment = Enum.TextXAlignment.Left
    titleLabel.Parent = dropdownFrame

    local valueLabel = Instance.new("TextLabel")
    valueLabel.Size = UDim2.new(0.4, 0, 1, 0)
    valueLabel.Position = UDim2.new(1, -10, 0, 0)
    valueLabel.AnchorPoint = Vector2.new(1, 0)
    valueLabel.BackgroundTransparency = 1
    valueLabel.Text = defaultOption .. " ⌵"
    valueLabel.TextColor3 = Color3.fromRGB(0, 120, 215)
    valueLabel.TextSize = 13
    valueLabel.Font = Enum.Font.SourceSansSemibold
    valueLabel.TextXAlignment = Enum.TextXAlignment.Right
    valueLabel.Parent = dropdownFrame

    dropdownFrame.MouseButton1Click:Connect(function()
        currentIndex = currentIndex + 1
        if currentIndex > #optionList then currentIndex = 1 end
        local selected = optionList[currentIndex]
        valueLabel.Text = selected .. " ⌵"
        task.spawn(callback, selected)
    end)

    TranslateRefs[textKey] = titleLabel
    dropdownFrame.Parent = parent
    task.spawn(callback, defaultOption)
    return dropdownFrame
end

-- Thanh trượt điều chỉnh giá trị (Slider) [2]
local function createCustomSlider(parent, textKey, defaultText, min, max, default, callback)
    local sliderValue = default
    local sliderFrame = Instance.new("Frame")
    sliderFrame.Size = UDim2.new(1, 0, 0, 42)
    sliderFrame.BackgroundColor3 = Color3.fromRGB(33, 35, 40)

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 4)
    corner.Parent = sliderFrame

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(55, 56, 61)
    stroke.Parent = sliderFrame

    local titleLabel = Instance.new("TextLabel")
    titleLabel.Size = UDim2.new(0.6, 0, 0, 18)
    titleLabel.Position = UDim2.new(0, 10, 0, 3)
    titleLabel.BackgroundTransparency = 1
    titleLabel.Text = defaultText
    titleLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
    titleLabel.TextSize = 13
    titleLabel.Font = Enum.Font.SourceSans
    titleLabel.TextXAlignment = Enum.TextXAlignment.Left
    titleLabel.Parent = sliderFrame

    local valueLabel = Instance.new("TextLabel")
    valueLabel.Size = UDim2.new(0.3, 0, 0, 18)
    valueLabel.Position = UDim2.new(0.7, -10, 0, 3)
    valueLabel.BackgroundTransparency = 1
    valueLabel.Text = tostring(default)
    valueLabel.TextColor3 = Color3.fromRGB(150, 155, 165)
    valueLabel.TextSize = 13
    valueLabel.Font = Enum.Font.SourceSans
    valueLabel.TextXAlignment = Enum.TextXAlignment.Right
    valueLabel.Parent = sliderFrame

    local track = Instance.new("TextButton")
    track.Size = UDim2.new(1, -20, 0, 5)
    track.Position = UDim2.new(0, 10, 0, 26)
    track.BackgroundColor3 = Color3.fromRGB(50, 51, 56)
    track.Text = ""
    track.AutoButtonColor = false
    track.Parent = sliderFrame

    local tCorner = Instance.new("UICorner")
    tCorner.CornerRadius = UDim.new(1, 0)
    tCorner.Parent = track

    local fill = Instance.new("Frame")
    fill.Size = UDim2.new((default - min) / (max - min), 0, 1, 0)
    fill.BackgroundColor3 = Color3.fromRGB(0, 120, 215)
    fill.Parent = track

    local fCorner = Instance.new("UICorner")
    fCorner.CornerRadius = UDim.new(1, 0)
    fCorner.Parent = fill

    local isSliding = false

    local function updateSlider()
        local mousePos = UserInputService:GetMouseLocation()
        local trackAbsolutePos = track.AbsolutePosition.X
        local trackAbsoluteSize = track.AbsoluteSize.X
        local ratio = math.clamp((mousePos.X - trackAbsolutePos) / trackAbsoluteSize, 0, 1)
        local rawValue = min + (max - min) * ratio
        sliderValue = math.floor(rawValue + 0.5)
        fill.Size = UDim2.new(ratio, 0, 1, 0)
        valueLabel.Text = tostring(sliderValue)
        task.spawn(callback, sliderValue)
    end

    track.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            isSliding = true
            updateSlider()
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if isSliding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            updateSlider()
        end
    end)

    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            isSliding = false
        end
    end)

    TranslateRefs[textKey] = titleLabel
    sliderFrame.Parent = parent
    task.spawn(callback, default)
    return sliderFrame
end


-- =============================================================================
-- LOGIC KIỂM SOÁT TABS TRÊN SIDEBAR
-- =============================================================================
local activeTabBtn = nil
local activeTabPage = nil

local function registerTab(name, textKey, defaultText, order)
    local tabBtn = Instance.new("TextButton")
    tabBtn.Size = UDim2.new(1, 0, 0, 36)
    tabBtn.BackgroundColor3 = Color3.fromRGB(33, 35, 40)
    tabBtn.Text = defaultText
    tabBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
    tabBtn.TextSize = 13
    tabBtn.Font = Enum.Font.SourceSansBold
    tabBtn.LayoutOrder = order
    tabBtn.Parent = TabList

    local btnCorner = Instance.new("UICorner")
    btnCorner.CornerRadius = UDim.new(0, 4)
    btnCorner.Parent = tabBtn

    local btnStroke = Instance.new("UIStroke")
    btnStroke.Color = Color3.fromRGB(50, 51, 56)
    btnStroke.Parent = tabBtn

    local page = Instance.new("ScrollingFrame")
    page.Size = UDim2.new(1, 0, 1, 0)
    page.BackgroundTransparency = 1
    page.ScrollBarThickness = 3
    page.ScrollBarImageColor3 = Color3.fromRGB(90, 91, 99)
    page.CanvasSize = UDim2.new(0, 0, 0, 0)
    page.AutomaticCanvasSize = Enum.AutomaticSize.Y
    page.Visible = false
    page.Parent = ContentArea

    local pageLayout = Instance.new("UIListLayout")
    pageLayout.Padding = UDim.new(0, 8)
    pageLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
    pageLayout.Parent = page

    local pagePadding = Instance.new("UIPadding")
    pagePadding.PaddingTop = UDim.new(0, 8)
    pagePadding.PaddingBottom = UDim.new(0, 8)
    pagePadding.PaddingLeft = UDim.new(0, 8)
    pagePadding.PaddingRight = UDim.new(0, 8)
    pagePadding.Parent = page

    TranslateRefs[textKey] = tabBtn

    tabBtn.MouseButton1Click:Connect(function()
        if activeTabBtn then
            activeTabBtn.BackgroundColor3 = Color3.fromRGB(33, 35, 40)
            activeTabBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
        end
        if activeTabPage then
            activeTabPage.Visible = false
        end

        tabBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 215)
        tabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
        page.Visible = true

        activeTabBtn = tabBtn
        activeTabPage = page
    end)

    return page
end

-- =============================================================================
-- LOGIC KIỂM SOÁT HITBOX CHI TIẾT
-- =============================================================================
local function savedPart(player, part)
    pcall(function()
        if not hitbox_original_properties[player] then
            hitbox_original_properties[player] = {}
        end
        if not hitbox_original_properties[player][part.Name] then
            hitbox_original_properties[player][part.Name] = {
                CanCollide = part.CanCollide,
                Transparency = part.Transparency,
                Size = part.Size
            }
        end
    end)
end

local function restoredPart(player)
    pcall(function()
        if hitbox_original_properties[player] then
            for partName, properties in pairs(hitbox_original_properties[player]) do
                local part = player.Character and player.Character:FindFirstChild(partName)
                if part and part:IsA("BasePart") then
                    part.CanCollide = properties.CanCollide
                    part.Transparency = properties.Transparency
                    part.Size = properties.Size
                end
            end
        end
    end)
end

local function findClosestPart(player, partName)
    local target = nil
    pcall(function()
        if player.Character then
            for _, part in ipairs(player.Character:GetChildren()) do
                if part:IsA("BasePart") and part.Name:lower():match(partName:lower()) then
                    target = part
                    break
                end
            end
        end
    end)
    return target
end

local function isEnemy(player)
    if teamCheck == "FFA" or teamCheck == "Everyone" then
        return true
    end
    return player.Team ~= LocalPlayer.Team
end

local function extendHitbox(player)
    pcall(function()
        for _, partName in ipairs(defaultBodyParts) do
            local part = player.Character and (player.Character:FindFirstChild(partName) or findClosestPart(player, partName))
            if part and part:IsA("BasePart") then
                savedPart(player, part)
                part.CanCollide = not noCollisionEnabled
                part.Transparency = hitboxTransparency / 10
                part.Size = Vector3.new(hitboxSize, hitboxSize, hitboxSize)
            end
        end
    end)
end

local function updateHitboxes()
    pcall(function()
        for _, v in ipairs(Players:GetPlayers()) do
            if v ~= LocalPlayer and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then
                if isEnemy(v) then
                    extendHitbox(v)
                else
                    restoredPart(v)
                end
            end
        end
    end)
end

local function checkForDeadPlayers()
    for player, properties in pairs(hitbox_original_properties) do
        pcall(function()
            if not player or not player.Parent or not player.Character or not player.Character:IsDescendantOf(game) then
                restoredPart(player)
                hitbox_original_properties[player] = nil
            end
        end)
    end
end

-- =============================================================================
-- KHAI BÁO CÁC TABS NỘI DUNG VÀ THIẾT LẬP GIAO DIỆN CON
-- =============================================================================

-- [ TAB 1: KÍCH THƯỚC HITBOX & ESP ]
local HitboxPage = registerTab("Hitbox", "Tab_Hitbox", "Hitbox & ESP", 1)

createSectionHeader(HitboxPage, "Sec_ArsHitbox", "HITBOX MODEL EXPANSE")

createCustomButton(HitboxPage, "Ars_HitboxInit", "[BƯỚC 1] Kích hoạt luồng Hitbox", function()
    task.spawn(function()
        while true do
            if hitboxEnabled then
                updateHitboxes()
                checkForDeadPlayers()
            end
            task.wait(0.1)
        end
    end)
    Notify("Hệ Thống", "Luồng xử lý Hitbox đã khởi chạy!")
end)

createCustomToggle(HitboxPage, "Ars_HitboxActive", "Bật Kích thước Hitbox tùy chỉnh", false, function(enabled)
    hitboxEnabled = enabled
    if not enabled then
        for _, player in ipairs(Players:GetPlayers()) do
            restoredPart(player)
        end
        hitbox_original_properties = {}
    else
        updateHitboxes()
    end
end)

createCustomToggleWithInput(HitboxPage, "Ars_HitboxSize", "Kích thước lõi Hitbox", true, 21, function() end, function(val)
    hitboxSize = tonumber(val) or 21
    if hitboxEnabled then updateHitboxes() end
end)

createCustomToggleWithInput(HitboxPage, "Ars_HitboxTransparency", "Độ trong suốt mô hình (1-10)", true, 6, function() end, function(val)
    hitboxTransparency = tonumber(val) or 6
    if hitboxEnabled then updateHitboxes() end
end)

createCustomDropdown(HitboxPage, "Ars_TeamCheck", "Bộ lọc kiểm tra đội địch", {"FFA", "Team-Based", "Everyone"}, "FFA", function(value)
    teamCheck = value
    if hitboxEnabled then updateHitboxes() end
end)

createCustomToggle(HitboxPage, "Ars_NoCollision", "Tắt va chạm ranh giới Hitbox", false, function(enabled)
    noCollisionEnabled = enabled
    task.spawn(function()
        while noCollisionEnabled do
            if hitboxEnabled then updateHitboxes() end
            task.wait(0.01)
        end
        if hitboxEnabled then updateHitboxes() end
    end)
end)

-- Bổ sung tính năng mới ESP Highlights xuyên tường phát quang
createSectionHeader(HitboxPage, "Sec_ArsESP", "VISUAL ESP & WALLHACK")

createCustomToggle(HitboxPage, "Ars_EspHighlight", "Kích hoạt ESP Highlight xuyên tường", false, function(state)
    espHighlightEnabled = state
end)

createCustomDropdown(HitboxPage, "Ars_EspColor", "Tông màu hiển thị ESP", {"Red vs Green", "Cyan vs Pink", "Yellow vs Purple"}, "Red vs Green", function(selected)
    espColorTheme = selected
end)

-- Bổ sung Tâm ảo tự chế & FOV Circle (GUI Nguyên Bản không lag)
createSectionHeader(HitboxPage, "Sec_ArsCrosshair", "CUSTOM CROSSHAIR & FOV")

createCustomToggle(HitboxPage, "Ars_CrosshairActive", "Kích hoạt tâm ngắm ảo (Crosshair)", false, function(state)
    customCrosshairActive = state
end)

createCustomToggle(HitboxPage, "Ars_FOVCircle", "Hiển thị vòng tròn giới hạn ngắm (FOV)", false, function(state)
    showFOVCircle = state
end)


-- [ TAB 2: CHIẾN ĐẤU & AIMBOT ]
local TriggerPage = registerTab("Trigger", "Tab_Trigger", "Combat & Aim", 2)

-- Bổ sung tính năng đặc biệt: Aim Assist (Smooth Camera Lock-On)
createSectionHeader(TriggerPage, "Sec_ArsAimbot", "AIMBOT & COMBAT ASSIST")

createCustomToggle(TriggerPage, "Ars_AimbotActive", "Kích hoạt Aim Assist (Tự khóa mục tiêu)", false, function(state)
    aimbotEnabled = state
end)

createCustomToggle(TriggerPage, "Ars_AimbotTeam", "Aimbot Check Team (Chỉ ngắm kẻ địch)", true, function(state)
    aimbotTeamCheck = state
end)

createCustomDropdown(TriggerPage, "Ars_AimbotPart", "Bộ phận nhắm khóa mục tiêu", {"Head", "UpperTorso", "Random"}, "Head", function(selected)
    aimbotTargetPart = selected
end)

createCustomSlider(TriggerPage, "Ars_AimbotFOV", "Giới hạn vùng khóa (FOV Radius)", 50, 400, 150, function(val)
    aimbotFOV = val
end)

createCustomSlider(TriggerPage, "Ars_AimbotSmooth", "Độ mượt mà ghim mục tiêu", 1, 100, 15, function(val)
    aimbotSmoothness = val / 100
end)

createSectionHeader(TriggerPage, "Sec_ArsTrigger", "TRIGGERBOT CONFIGURATION")

createCustomToggle(TriggerPage, "Ars_Triggerbot", "Bật Tự động bắn (Triggerbot)", false, function(state)
    getgenv().triggerb = state
end)

createCustomDropdown(TriggerPage, "Ars_TriggerTeam", "Chế độ đội Triggerbot", {"FFA", "Team-Based", "Everyone"}, "Team-Based", function(selected)
    teamcheck_bot = selected
end)

createCustomToggleWithInput(TriggerPage, "Ars_TriggerDelay", "Độ trễ phản ứng xả đạn", true, 2, function() end, function(value)
    delay_bot = (tonumber(value) or 2) / 10
end)


-- [ TAB 3: BÁ ĐẠO SÚNG ]
local GunPage = registerTab("Gun", "Tab_Gun", "Gun Mods", 3)

createSectionHeader(GunPage, "Sec_ArsGun", "WEAPON ATTRIBUTES CONFIG")

createCustomToggle(GunPage, "Ars_InfAmmo1", "Vô hạn đạn (Curse Instance)", false, function(v)
    game:GetService("ReplicatedStorage").wkspc.CurrentCurse.Value = v and "Infinite Ammo" or ""
end)

createCustomToggle(GunPage, "Ars_InfAmmo2", "Vô hạn đạn (Memory Spof)", false, function(K)
    SettingsInfinite = K
    if SettingsInfinite then
        game:GetService("RunService").Stepped:Connect(function()
            pcall(function()
                if SettingsInfinite then
                    local playerGui = LocalPlayer.PlayerGui
                    playerGui.GUI.Client.Variables.ammocount.Value = 99
                    playerGui.GUI.Client.Variables.ammocount2.Value = 99
                end
            end)
        end)
    end
end)

createCustomToggle(GunPage, "Ars_FastReload", "Thay đạn ngay lập tức (No Wait)", false, function(x)
    for _, v in pairs(game.ReplicatedStorage.Weapons:GetChildren()) do
        if v:FindFirstChild("ReloadTime") then
            if x then
                if not originalValues.ReloadTime[v] then originalValues.ReloadTime[v] = v.ReloadTime.Value end
                v.ReloadTime.Value = 0.01
            else
                v.ReloadTime.Value = originalValues.ReloadTime[v] or 0.8
            end
        end
        if v:FindFirstChild("EReloadTime") then
            if x then
                if not originalValues.EReloadTime[v] then originalValues.EReloadTime[v] = v.EReloadTime.Value end
                v.EReloadTime.Value = 0.01
            else
                v.EReloadTime.Value = originalValues.EReloadTime[v] or 0.8
            end
        end
    end
end)

createCustomToggle(GunPage, "Ars_FastFire", "Tăng tốc độ xả đạn (Fire Rate)", false, function(state)
    for _, v in pairs(game.ReplicatedStorage.Weapons:GetDescendants()) do
        if v.Name == "FireRate" or v.Name == "BFireRate" then
            if state then
                if not originalValues.FireRate[v] then originalValues.FireRate[v] = v.Value end
                v.Value = 0.02
            else
                v.Value = originalValues.FireRate[v] or 0.8
            end
        end
    end
end)

createCustomToggle(GunPage, "Ars_AlwaysAuto", "Ép súng bắn liên thanh", false, function(state)
    for _, v in pairs(game.ReplicatedStorage.Weapons:GetDescendants()) do
        if v.Name == "Auto" or v.Name == "AutoFire" or v.Name == "Automatic" or v.Name == "AutoShoot" or v.Name == "AutoGun" then
            if state then
                if not originalValues.Auto[v] then originalValues.Auto[v] = v.Value end
                v.Value = true
            else
                v.Value = originalValues.Auto[v] or false
            end
        end
    end
end)

createCustomToggle(GunPage, "Ars_NoSpread", "Bắn chính xác (Không có độ lệch tâm)", false, function(state)
    for _, v in pairs(game:GetService("ReplicatedStorage").Weapons:GetDescendants()) do
        if v.Name == "MaxSpread" or v.Name == "Spread" or v.Name == "SpreadControl" then
            if state then
                if not originalValues.Spread[v] then originalValues.Spread[v] = v.Value end
                v.Value = 0
            else
                v.Value = originalValues.Spread[v] or 1
            end
        end
    end
end)

createCustomToggle(GunPage, "Ars_NoRecoil", "Chống giật tuyệt đối (No Recoil)", false, function(state)
    for _, v in pairs(game:GetService("ReplicatedStorage").Weapons:GetDescendants()) do
        if v.Name == "RecoilControl" or v.Name == "Recoil" then
            if state then
                if not originalValues.Recoil[v] then originalValues.Recoil[v] = v.Value end
                v.Value = 0
            else
                v.Value = originalValues.Recoil[v] or 1
            end
        end
    end
end)

-- Bổ sung: Vết đạn vẽ bằng laser Neon
createCustomToggle(GunPage, "Ars_BulletTracers", "Kích hoạt Vết đạn vẽ Neon rực rỡ", false, function(state)
    bulletTracersEnabled = state
end)


-- [ TAB 4: MÀU SẮC & THẾ GIỚI ]
local SkinsPage = registerTab("Skins", "Tab_Skins", "Màu sắc & Thế giới", 4)

createSectionHeader(SkinsPage, "Sec_ArsArmCos", "HAND ARM THEMES")

local armMat = "Plastic"
local armCol = Color3.fromRGB(50,50,50)
local armCharmsActive = false

createCustomDropdown(SkinsPage, "Ars_ArmMat", "Chất liệu sơn cánh tay", {"Plastic", "ForceField", "Wood", "Grass"}, "Plastic", function(selected)
    armMat = selected
end)

local colorsList = {"Dark Gray", "Soft Pink", "Red", "Green", "Blue", "Yellow", "White"}
local customColors = {
    ["Dark Gray"] = Color3.fromRGB(50, 50, 50),
    ["Soft Pink"] = Color3.fromRGB(255, 128, 128),
    ["Red"] = Color3.fromRGB(255, 0, 0),
    ["Green"] = Color3.fromRGB(0, 255, 0),
    ["Blue"] = Color3.fromRGB(0, 0, 255),
    ["Yellow"] = Color3.fromRGB(255, 255, 0),
    ["White"] = Color3.fromRGB(255, 255, 255)
}

createCustomDropdown(SkinsPage, "Ars_ArmColor", "Màu sắc cánh tay", colorsList, "Dark Gray", function(selected)
    armCol = customColors[selected] or Color3.fromRGB(50,50,50)
end)

createCustomToggle(SkinsPage, "Ars_ArmCharms", "Áp dụng sơn cánh tay tùy chỉnh", false, function(state)
    armCharmsActive = state
    if armCharmsActive then
        task.spawn(function()
            while armCharmsActive do
                task.wait(0.05)
                local cameraArms = workspace.Camera:FindFirstChild("Arms")
                if cameraArms then
                    for _, O in pairs(cameraArms:GetDescendants()) do
                        if O.Name == 'Right Arm' or O.Name == 'Left Arm' then
                            if O:IsA("BasePart") then
                                O.Material = Enum.Material[armMat]
                                O.Color = armCol
                            end
                        elseif O:IsA("SpecialMesh") then
                            if O.TextureId == '' then
                                O.TextureId = 'rbxassetid://0'
                                O.VertexColor = Vector3.new(armCol.R, armCol.G, armCol.B)
                            end
                        elseif O.Name == 'L' or O.Name == 'R' then
                            O:Destroy()
                        end
                    end
                end
            end
        end)
    end
end)

createSectionHeader(SkinsPage, "Sec_ArsGunCos", "GUN COSMETIC THEMES")

local gunMat = "Plastic"
local gunCol = Color3.fromRGB(50,50,50)
local gunCharmsActive = false

createCustomDropdown(SkinsPage, "Ars_GunMat", "Chất liệu thân súng", {"Plastic", "ForceField", "Wood", "Grass"}, "Plastic", function(selected)
    gunMat = selected
end)

createCustomDropdown(SkinsPage, "Ars_GunCol", "Màu sắc thân súng", colorsList, "Dark Gray", function(selected)
    gunCol = customColors[selected] or Color3.fromRGB(50,50,50)
end)

createCustomToggle(SkinsPage, "Ars_GunCharms", "Áp dụng sơn súng tùy chỉnh", false, function(state)
    gunCharmsActive = state
    if gunCharmsActive then
        task.spawn(function()
            while gunCharmsActive do
                task.wait(0.05)
                local cameraArms = workspace.Camera:FindFirstChild("Arms")
                if cameraArms then
                    for _, O in pairs(cameraArms:GetDescendants()) do
                        if O:IsA("MeshPart") then
                            O.Material = Enum.Material[gunMat]
                            O.Color = gunCol
                        end
                    end
                end
            end
        end)
    end
end)

local rainbowActive1 = false
local rainbowActive2 = false
local rainbowVal1 = 1
local rainbowVal2 = 0

createCustomToggle(SkinsPage, "Ars_RainbowGun1", "Súng màu chuyển động vòng lặp chậm (Rainbow v1)", false, function(state)
    rainbowActive1 = state
end)

createCustomToggle(SkinsPage, "Ars_RainbowGun2", "Súng màu chuyển động cực nhanh (Rainbow v2)", false, function(state)
    rainbowActive2 = state
end)

-- Bổ sung: Thay đổi Bầu trời, Xóa Sương Mù (Skybox & Environmental Effects)
createSectionHeader(SkinsPage, "Sec_ArsSkybox", "WORLD ENVIRONMENT EFFECTS")

createCustomDropdown(SkinsPage, "Ars_Skybox", "Chọn kiểu bầu trời mới", {"Default", "Space Purple", "Retro Night"}, "Default", function(selected)
    pcall(function()
        local lighting = game:GetService("Lighting")
        local sky = lighting:FindFirstChildOfClass("Sky")
        if not sky then
            sky = Instance.new("Sky")
            sky.Parent = lighting
        end
        
        if selected == "Default" then
            sky:Destroy()
        elseif selected == "Space Purple" then
            sky.SkyboxBk = "rbxassetid://510645435"
            sky.SkyboxDn = "rbxassetid://510644301"
            sky.SkyboxFt = "rbxassetid://510645227"
            sky.SkyboxLf = "rbxassetid://510645003"
            sky.SkyboxRt = "rbxassetid://510644837"
            sky.SkyboxUp = "rbxassetid://510644615"
        elseif selected == "Retro Night" then
            sky.SkyboxBk = "rbxassetid://12064107"
            sky.SkyboxDn = "rbxassetid://12064152"
            sky.SkyboxFt = "rbxassetid://12064131"
            sky.SkyboxLf = "rbxassetid://12064115"
            sky.SkyboxRt = "rbxassetid://12064124"
            sky.SkyboxUp = "rbxassetid://12064142"
        end
    end)
end)

createCustomToggle(SkinsPage, "Ars_NoFog", "Xóa sương mù bản đồ (No Fog View)", false, function(enabled)
    pcall(function()
        local lighting = game:GetService("Lighting")
        if enabled then
            lighting.FogEnd = 9e9
        else
            lighting.FogEnd = originalLightingSettings.FogEnd
        end
    end)
end)

game:GetService("RunService").RenderStepped:Connect(function()
    local cam = workspace.Camera
    if cam:FindFirstChild('Arms') then
        if rainbowActive1 then
            for _, v in pairs(cam.Arms:GetDescendants()) do
                if v:IsA('MeshPart') then
                    v.Color = Color3.fromHSV(math.acos(math.cos(rainbowVal1 * math.pi)) / math.pi, 1, 1)
                    rainbowVal1 = rainbowVal1 + .0001
                end
            end
        elseif rainbowActive2 then
            rainbowVal2 = (rainbowVal2 + 0.1) % 1
            for _, v in pairs(cam.Arms:GetDescendants()) do
                if v:IsA('MeshPart') then
                    v.Color = Color3.fromHSV(rainbowVal2, 1, 1)
                end
            end
        end
    end
end)


-- [ TAB 5: TÍNH NĂNG PHỤ HỖ TRỢ ]
local MiscPage = registerTab("Misc", "Tab_Misc", "Misc Hacks", 5)

createSectionHeader(MiscPage, "Sec_ArsMiscMove", "MOVEMENT & SURVIVAL TOOLS")

createCustomToggle(MiscPage, "Ars_FlyMod", "Kích hoạt chế độ Bay (Fly)", false, function(state)
    if state then startFly() else endFly() end
end)

createCustomToggleWithInput(MiscPage, "Ars_FlySpeedVal", "Tốc độ bay lơ lửng", true, 50, function() end, function(s)
    flySettings.flyspeed = tonumber(s) or 50
end)

createCustomToggleWithInput(MiscPage, "Player_WalkSpeed", "Tốc độ chạy bộ tùy biến", false, 16, function(state)
    wsEnabled = state
end, function(val)
    wsValue = val
end)

createCustomToggleWithInput(MiscPage, "Player_JumpPower", "Lực bật cao tùy biến", false, 50, function(state)
    jpEnabled = state
end, function(val)
    jpValue = val
end)

createCustomToggle(MiscPage, "Util_InfJump", "Kích hoạt Nhảy vô hạn", false, function(state)
    getgenv().infjumpactive = state
    game:GetService("UserInputService").JumpRequest:Connect(function()
        if getgenv().infjumpactive then
            local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass('Humanoid')
            if hum then hum:ChangeState("Jumping") end
        end
    end)
end)

createCustomToggle(MiscPage, "Ars_NoClip", "Đi xuyên tường (NoClip)", false, function(enabled)
    getgenv().noclip = enabled
    task.spawn(function()
        while getgenv().noclip do
            local char = LocalPlayer.Character
            if char then
                for _, part in pairs(char:GetDescendants()) do
                    if part:IsA("BasePart") then part.CanCollide = false end
                end
            end
            game:GetService("RunService").Stepped:Wait()
        end
    end)
end)

createCustomToggle(MiscPage, "Ars_ToggleXray", "Bật X-Ray nhìn xuyên tường", false, function(enabled)
    if enabled then
        for _, descendant in pairs(workspace:GetDescendants()) do
            if descendant:IsA("BasePart") then
                if not descendant:FindFirstChild("OriginalTransparency") then
                    local originalTransparency = Instance.new("NumberValue", descendant)
                    originalTransparency.Name = "OriginalTransparency"
                    originalTransparency.Value = descendant.Transparency
                end
                descendant.Transparency = 0.5
            end
        end
    else
        for _, descendant in pairs(workspace:GetDescendants()) do
            if descendant:IsA("BasePart") then
                if descendant:FindFirstChild("OriginalTransparency") then
                    descendant.Transparency = descendant.OriginalTransparency.Value
                    descendant.OriginalTransparency:Destroy()
                end
            end
        end
    end
end)

-- Bổ sung: Điều chỉnh trọng lực và thời gian thế giới cục bộ
createSectionHeader(MiscPage, "Sec_ArsMoveValue", "WORLD GRAVITY & TIME CONTROL")

createCustomSlider(MiscPage, "Player_Gravity", "Điều chỉnh Trọng Lực game", 0, 400, 196, function(val)
    gravityEnabled = true
    gravityValue = val
end)

createCustomSlider(MiscPage, "Player_Time", "Thời gian trong ngày (Giờ)", 0, 24, 12, function(val)
    timeEnabled = true
    timeValue = val
end)

createCustomToggle(MiscPage, "Player_ThirdPerson", "Kích hoạt góc nhìn thứ ba", false, function(state)
    thirdPersonEnabled = state
end)

createSectionHeader(MiscPage, "Sec_ArsMiscManip", "OBJECT & PERSPECTIVE MANIPULATION")

createCustomToggle(MiscPage, "Ars_SpinAntiAim", "Bật xoay nhân vật (Spin Anti-Aim)", false, function(value)
    local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
    if value and root then
        local spin = Instance.new("BodyAngularVelocity")
        spin.Name = "AntiAimSpin"
        spin.AngularVelocity = Vector3.new(0, spinSpeed, 0)
        spin.MaxTorque = Vector3.new(0, math.huge, 0)
        spin.P = 500000
        spin.Parent = root

        gyro = Instance.new("BodyGyro")
        gyro.Name = "AntiAimGyro"
        gyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
        gyro.CFrame = root.CFrame
        gyro.P = 3000
        gyro.Parent = root
    else
        if root then
            local s = root:FindFirstChild("AntiAimSpin")
            if s then s:Destroy() end
            if gyro then gyro:Destroy() gyro = nil end
        end
    end
end)

createCustomToggleWithInput(MiscPage, "Ars_SpinSpeed", "Tốc độ tự động xoay vòng", true, 10, function() end, function(value)
    spinSpeed = tonumber(value) or 10
    local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
    if root then
        local s = root:FindFirstChild("AntiAimSpin")
        if s then s.AngularVelocity = Vector3.new(0, spinSpeed, 0) end
    end
end)

createCustomToggle(MiscPage, "Ars_CollectDebris", "Tự hút hạt rơi (Hồi Máu / Đạn)", false, function(enabled)
    isCollecting = enabled
    if enabled then
        task.spawn(function()
            while isCollecting do
                task.wait(0.1)
                pcall(function()
                    local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
                    if root then
                        for _, v in pairs(workspace.Debris:GetChildren()) do
                            if (debris_selected == "DeadHP" and v.Name == "DeadHP") or
                               (debris_selected == "DeadAmmo" and v.Name == "DeadAmmo") or
                               (debris_selected == "Both" and (v.Name == "DeadHP" or v.Name == "DeadAmmo")) then
                                v.CFrame = root.CFrame * CFrame.new(0, 0.2, 0)
                            end
                        end
                    end
                end)
            end
        end)
    end
end)

createCustomDropdown(MiscPage, "Ars_DebrisType", "Loại hạt rơi muốn ưu tiên", {"DeadHP", "DeadAmmo", "Both"}, "Both", function(selection)
    debris_selected = selection
end)

createCustomToggle(MiscPage, "Ars_MaxLevel", "Thay đổi cấp độ hiển thị (Visual level max)", false, function(bool)
    local stats = LocalPlayer:FindFirstChild("CareerStatsCache")
    if stats then
        if bool then
            stats.Score.Value = 1e18
            stats.Kills.Value = 1e14
        else
            stats.Score.Value = 0
            stats.Kills.Value = 0
        end
    end
end)

createSectionHeader(MiscPage, "Sec_ArsMiscTags", "CHAT BADGES SPOOFER")

createCustomToggle(MiscPage, "Ars_Chad", "Danh hiệu IsChad vàng", false, function(x) applyTag("IsChad", x) end)
createCustomToggle(MiscPage, "Ars_VIP", "Danh hiệu VIP danh giá", false, function(x) applyTag("VIP", x) end)
createCustomToggle(MiscPage, "Ars_OldVIP", "Danh hiệu VIP Cổ điển", false, function(x) applyTag("OldVIP", x) end)
createCustomToggle(MiscPage, "Ars_Romin", "Danh hiệu Romin Quản trị viên", false, function(x) applyTag("Romin", x) end)
createCustomToggle(MiscPage, "Ars_IsAdmin", "Nhãn Admin quyền lực", false, function(x) applyTag("IsAdmin", x) end)


-- [ TAB 6: TỰ ĐỘNG FARM EXP VÀ DIỆT ĐỊCH ]
local FarmPage = registerTab("Farm", "Tab_Farm", "Auto Farm", 6)

createSectionHeader(FarmPage, "Sec_ArsFarm", "AUTOMATIC KILL & EXP FARM")

createCustomToggle(FarmPage, "Ars_FarmActive", "Kích hoạt chế độ Tự động Farm", false, function(enabled)
    farmEnabled = enabled
    if not enabled then
        getgenv().triggerb = false
    end
end)

createCustomToggle(FarmPage, "Ars_FarmTeamCheck", "Kiểm tra Đội địch (Không giết đồng đội)", true, function(enabled)
    farmTeamCheck = enabled
end)

createCustomToggle(FarmPage, "Ars_FarmLockCam", "Ghim chặt Camera vào đầu đối phương", true, function(enabled)
    farmLockCam = enabled
end)

createCustomSlider(FarmPage, "Ars_FarmHeight", "Khoảng cách đứng trên đầu đối thủ", 3, 20, 8, function(val)
    farmHeightOffset = val
end)

createCustomToggle(FarmPage, "Ars_AutoRespawn", "Tự động xuất trận ngay lập tức khi chết", false, function(enabled)
    autoRespawnEnabled = enabled
end)

createCustomToggle(FarmPage, "Ars_AutoShoot", "Tự xả đạn khi khóa đối mục tiêu", false, function(enabled)
    autoShootFarm = enabled
end)


-- [ TAB 7: CÀI ĐẶT HỆ THỐNG & TỐI ƯU HÓA ]
local OptimizePage = registerTab("Optimize", "Tab_Optimize", "Optimize & Sys", 7)

createSectionHeader(OptimizePage, "Sec_ArsOptLag", "PERFORMANCE OPTIMIZATION")

createCustomButton(OptimizePage, "Opt_Memory", "Giải phóng rác bộ nhớ (Dọn dẹp RAM)", function()
    pcall(function()
        collectgarbage("collect")
        Notify("Hệ Thống", "Đã giải phóng rác bộ nhớ game thành công!")
    end)
end)

createCustomToggle(OptimizePage, "Opt_AntiLag", "Tải mượt vật liệu bản đồ (Smooth Plastic)", false, function(state)
    if state then
        for _, O in pairs(workspace:GetDescendants()) do
            if O:IsA("BasePart") and not O.Parent:FindFirstChild("Humanoid") then
                originalMaterials[O] = O.Material
                O.Material = Enum.Material.SmoothPlastic
                if O:IsA("Texture") then
                    table.insert(originalDecalsTextures, O)
                    O:Destroy()
                end
            end
        end
    else
        for O, material in pairs(originalMaterials) do
            if O and O:IsA("BasePart") then O.Material = material end
        end
        originalMaterials = {}
    end
end)

createCustomToggle(OptimizePage, "Opt_FPSBoost", "Bật chế độ Tối ưu khung hình (FPS Booster)", false, function(state)
    local l = game:GetService("Lighting")
    local t = workspace.Terrain
    if state then
        originalTerrainSettings.WaterWaterWaveSize = t.WaterWaveSize
        originalTerrainSettings.WaterWaveSpeed = t.WaterWaveSpeed
        originalTerrainSettings.WaterReflectance = t.WaterReflectance
        originalTerrainSettings.WaterTransparency = t.WaterTransparency

        t.WaterWaveSize = 0
        t.WaterWaveSpeed = 0
        t.WaterReflectance = 0
        t.WaterTransparency = 0
        l.GlobalShadows = false
        l.FogEnd = 9e9
        l.Brightness = 0
        pcall(function()
            settings().Rendering.QualityLevel = "Level01"
        end)

        for _, v in pairs(game:GetDescendants()) do
            if v:IsA("Part") or v:IsA("Union") or v:IsA("CornerWedgePart") or v:IsA("TrussPart") then
                originalMaterials[v] = v.Material
                v.Material = "Plastic"
                v.Reflectance = 0
            elseif v:IsA("Decal") or v:IsA("Texture") then
                table.insert(originalDecalsTextures, v)
                v.Transparency = 1
            elseif v:IsA("ParticleEmitter") or v:IsA("Trail") then
                v.Lifetime = NumberRange.new(0)
            elseif v:IsA("Explosion") then
                v.BlastPressure = 1
                v.BlastRadius = 1
            elseif v:IsA("Fire") or v:IsA("SpotLight") or v:IsA("Smoke") then
                v.Enabled = false
            elseif v:IsA("MeshPart") then
                originalMaterials[v] = v.Material
                v.Material = "Plastic"
                v.Reflectance = 0
                v.TextureID = ""
            end
        end

        for _, e in pairs(l:GetChildren()) do
            if e:IsA("BlurEffect") or e:IsA("SunRaysEffect") or e:IsA("ColorCorrectionEffect") or e:IsA("BloomEffect") or e:IsA("DepthOfFieldEffect") then
                originalEffects[e] = e.Enabled
                e.Enabled = false
            end
        end
    else
        t.WaterWaveSize = originalTerrainSettings.WaterWaterWaveSize
        t.WaterWaveSpeed = originalTerrainSettings.WaterWaveSpeed
        t.WaterReflectance = originalTerrainSettings.WaterReflectance
        t.WaterTransparency = originalTerrainSettings.WaterTransparency

        l.GlobalShadows = originalLightingSettings.GlobalShadows
        l.FogEnd = originalLightingSettings.FogEnd
        l.Brightness = originalLightingSettings.Brightness
        pcall(function()
            settings().Rendering.QualityLevel = "Automatic"
        end)

        for v, material in pairs(originalMaterials) do
            if v and v:IsA("BasePart") then
                v.Material = material
                v.Reflectance = 0
            end
        end
        originalMaterials = {}

        for e, enabled in pairs(originalEffects) do
            if e then e.Enabled = enabled end
        end
        originalEffects = {}
        
        for _, v in pairs(originalDecalsTextures) do
            if v and v.Parent then v.Transparency = 0 end
        end
        originalDecalsTextures = {}
    end
end)

createCustomToggle(OptimizePage, "Opt_FullBright", "Khóa sáng toàn bản đồ (Full Bright)", false, function(enabled)
    fullBrightEnabled = enabled 
    local function doFullBright()
        local Light = game:GetService("Lighting")
        if fullBrightEnabled then
            Light.Ambient = Color3.new(1, 1, 1)
            Light.ColorShift_Bottom = Color3.new(1, 1, 1)
            Light.ColorShift_Top = Color3.new(1, 1, 1)
        else
            Light.Ambient = Color3.new(0.5, 0.5, 0.5)
            Light.ColorShift_Bottom = Color3.new(0, 0, 0)
            Light.ColorShift_Top = Color3.new(0, 0, 0)
        end
    end
    doFullBright()
    game:GetService("Lighting").LightingChanged:Connect(doFullBright)
end)

createSectionHeader(OptimizePage, "Sec_ArsOptServer", "SERVER DIRECT CONNS")

createCustomButton(OptimizePage, "Opt_ServerHop", "Chuyển đổi Server khác nhanh (Server Hop)", function()
    local placeID = game.PlaceId
    local allIDs = {}
    local foundAnything = ""
    local actualHour = os.date("!*t").hour

    pcall(function()
        allIDs = game:GetService("HttpService"):JSONDecode(readfile("NotSameServers.json"))
    end)

    table.insert(allIDs, actualHour)
    writefile("NotSameServers.json", game:GetService("HttpService"):JSONEncode(allIDs))

    local function teleportReturner()
        local url = "https://games.roblox.com/v1/games/" .. placeID .. "/servers/Public?sortOrder=Asc&limit=100"
        if foundAnything ~= "" then url = url .. "&cursor=" .. foundAnything end
        local site = game.HttpService:JSONDecode(game:HttpGet(url))

        if site.nextPageCursor and site.nextPageCursor ~= "null" and site.nextPageCursor ~= nil then
            foundAnything = site.nextPageCursor
        end

        for _, v in pairs(site.data) do
            local possible = true
            local serverID = tostring(v.id)

            if tonumber(v.maxPlayers) > tonumber(v.playing) then
                for _, existing in pairs(allIDs) do
                    if serverID == tostring(existing) then possible = false end
                end

                if possible then
                    table.insert(allIDs, serverID)
                    writefile("NotSameServers.json", game:GetService("HttpService"):JSONEncode(allIDs))
                    game:GetService("TeleportService"):TeleportToPlaceInstance(placeID, serverID, LocalPlayer)
                    break
                end
            end
        end
    end

    task.spawn(function()
        while task.wait(1) do
            teleportReturner()
        end
    end)
end)

createCustomButton(OptimizePage, "Opt_Rejoin", "Rejoin lại Server hiện tại ngay lập tức", function()
    game:GetService("TeleportService"):Teleport(game.PlaceId, LocalPlayer)
end)

createSectionHeader(OptimizePage, "Sec_OptSettings", "SYSTEM INTERFACE CONTROL")

createCustomToggle(OptimizePage, "Settings_Blur", "Bật tính năng Làm mờ nền Kính phía sau", true, function(state)
    local targetVal = state and 1 or 0
    MainFrame:SetAttribute("BlurIntensity", targetVal)
end)

createCustomDropdown(OptimizePage, "Settings_Lang", "Ngôn ngữ / Language", {"English", "Tiếng Việt"}, "English", function(selected)
    if selected == "English" then
        SetLanguage("English")
    elseif selected == "Tiếng Việt" then
        SetLanguage("Vietnamese")
    end
end)

createCustomButton(OptimizePage, "Settings_Destroy", "Tắt hoàn toàn bảng điều khiển Hack", function()
    pcall(function()
        if _G.FOVring then _G.FOVring:Remove() _G.FOVring = nil end
    end)
    MainFrame.Visible = false
    MainFrame.Parent:Destroy()
end)


-- =============================================================================
-- LOGIC KIỂM SOÁT CÁC THÀNH PHẦN GUI ĐẶC BIỆT (CROSSHAIR, FOV CIRCLE, PERFORMANCE)
-- =============================================================================

-- 1. Tâm Ngắm Ảo Tự Chế (Gui Custom Crosshair)
local Crosshair = Instance.new("Frame")
Crosshair.Name = "CustomCrosshair"
Crosshair.Size = UDim2.new(0, 6, 0, 6)
Crosshair.AnchorPoint = Vector2.new(0.5, 0.5)
Crosshair.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
Crosshair.BorderSizePixel = 0
Crosshair.Visible = false
Crosshair.ZIndex = 999999
Crosshair.Parent = MainFrame.Parent -- Nhét cùng ScreenGui của thư viện UI

local CrosshairCorner = Instance.new("UICorner")
CrosshairCorner.CornerRadius = UDim.new(1, 0)
CrosshairCorner.Parent = Crosshair

-- 2. Vòng Tròn Giới Hạn ngắm (Gui FOV Circle)
local FOVFrame = Instance.new("Frame")
FOVFrame.Name = "FOVCircle"
FOVFrame.AnchorPoint = Vector2.new(0.5, 0.5)
FOVFrame.BackgroundTransparency = 1
FOVFrame.Visible = false
FOVFrame.ZIndex = 999998
FOVFrame.Parent = MainFrame.Parent

local FOVCorner = Instance.new("UICorner")
FOVCorner.CornerRadius = UDim.new(1, 0)
FOVCorner.Parent = FOVFrame

local FOVStroke = Instance.new("UIStroke")
FOVStroke.Color = Color3.fromRGB(0, 120, 215)
FOVStroke.Thickness = 1.5
FOVStroke.Parent = FOVFrame

-- 3. Chỉ Số Hiệu Năng Thời Gian Thực (FPS & Ping Ticker)
local PerfLabel = Instance.new("TextLabel")
PerfLabel.Size = UDim2.new(0, 180, 0, 22)
PerfLabel.Position = UDim2.new(1, -210, 0, 0)
PerfLabel.BackgroundTransparency = 1
PerfLabel.TextColor3 = Color3.fromRGB(150, 155, 165)
PerfLabel.TextSize = 11
PerfLabel.Font = Enum.Font.SourceSansBold
PerfLabel.TextXAlignment = Enum.TextXAlignment.Right
PerfLabel.TextYAlignment = Enum.TextYAlignment.Center
PerfLabel.Parent = MainFrame:FindFirstChild("Topbar")


-- =============================================================================
-- LOGIC VẬN HÀNH THỜI GIAN THỰC (CORE LOOP & PHYSICAL LISTENERS)
-- =============================================================================

-- Mở mặc định trang thứ nhất là Hitbox & ESP
tabBtn = TabList:GetChildren()[3]
if tabBtn and tabBtn:IsA("TextButton") then
    tabBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 215)
    tabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    ContentArea:GetChildren()[1].Visible = true
    activeTabBtn = tabBtn
    activeTabPage = ContentArea:GetChildren()[1]
end

-- Vòng lặp duy trì các chỉ số vật lý, tâm ảo, FOV, góc nhìn và đo đạc hiệu năng FPS
local lastTime = os.clock()
local fps = 60

RunService.RenderStepped:Connect(function()
    -- Đo lường FPS thời gian thực
    local now = os.clock()
    fps = math.floor(1 / (now - lastTime))
    lastTime = now
    
    if PerfLabel then
        local pingVal = math.floor(LocalPlayer:GetNetworkPing() * 1000)
        PerfLabel.Text = "FPS: " .. tostring(fps) .. " | PING: " .. tostring(pingVal) .. "ms"
    end

    -- Cập nhật vị trí và kích cỡ Crosshair & FOV
    local mousePos = UserInputService:GetMouseLocation()
    if Crosshair then
        Crosshair.Visible = customCrosshairActive
        Crosshair.Position = UDim2.new(0, mousePos.X, 0, mousePos.Y)
    end
    if FOVFrame then
        FOVFrame.Visible = showFOVCircle
        FOVFrame.Size = UDim2.new(0, aimbotFOV * 2, 0, aimbotFOV * 2)
        FOVFrame.Position = UDim2.new(0, mousePos.X, 0, mousePos.Y)
    end

    -- Chế độ góc nhìn thứ ba (Third Person View)
    pcall(function()
        if thirdPersonEnabled then
            LocalPlayer.CameraMaxZoomDistance = 12
            LocalPlayer.CameraMinZoomDistance = 12
        else
            LocalPlayer.CameraMaxZoomDistance = 128
            LocalPlayer.CameraMinZoomDistance = 0.5
        end
    end)
end)

-- Vòng lặp duy trì Walkspeed & JumpPower ổn định
task.spawn(function()
    while task.wait(0.02) do
        pcall(function()
            local char = LocalPlayer.Character
            local hum = char and char:FindFirstChildOfClass("Humanoid")
            
            if hum then
                if wsEnabled then hum.WalkSpeed = wsValue end
                if jpEnabled then
                    hum.UseJumpPower = true
                    hum.JumpPower = jpValue
                end
            end
            if gravityEnabled then workspace.Gravity = gravityValue end
            if timeEnabled then game.Lighting.TimeOfDay = timeValue end
        end)
    end
end)

-- Luồng xử lý ESP Highlight (Xuyên tường phát quang)
local function applyHighlight(player)
    pcall(function()
        if player == LocalPlayer then return end
        local char = player.Character
        if char then
            local highlight = char:FindFirstChild("ESPHighlight")
            if not espHighlightEnabled then
                if highlight then highlight:Destroy() end
                return
            end
            
            if not highlight then
                highlight = Instance.new("Highlight")
                highlight.Name = "ESPHighlight"
                highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
                highlight.OutlineTransparency = 0.2
                highlight.FillTransparency = 0.5
                highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
                highlight.Parent = char
            end
            
            -- Thay đổi màu sắc theo cài đặt Tông màu ESP
            if espColorTheme == "Red vs Green" then
                highlight.FillColor = (player.Team == LocalPlayer.Team) and Color3.fromRGB(0, 255, 128) or Color3.fromRGB(255, 50, 50)
            elseif espColorTheme == "Cyan vs Pink" then
                highlight.FillColor = (player.Team == LocalPlayer.Team) and Color3.fromRGB(0, 240, 255) or Color3.fromRGB(255, 0, 150)
            elseif espColorTheme == "Yellow vs Purple" then
                highlight.FillColor = (player.Team == LocalPlayer.Team) and Color3.fromRGB(255, 255, 0) or Color3.fromRGB(150, 0, 255)
            end
        end
    end)
end

task.spawn(function()
    while task.wait(0.5) do
        if espHighlightEnabled then
            for _, player in ipairs(Players:GetPlayers()) do
                applyHighlight(player)
            end
        else
            for _, player in ipairs(Players:GetPlayers()) do
                pcall(function()
                    local char = player.Character
                    if char then
                        local hl = char:FindFirstChild("ESPHighlight")
                        if hl then hl:Destroy() end
                    end
                end)
            end
        end
    end
end)

-- Thiết lập vẽ Vết đạn Neon rực rỡ (Bullet Tracers)
local function createBulletTracer(startPos, endPos)
    if not bulletTracersEnabled then return end
    pcall(function()
        local distance = (endPos - startPos).Magnitude
        local laser = Instance.new("Part")
        laser.Name = "BulletTracer"
        laser.Anchored = true
        laser.CanCollide = false
        laser.Material = Enum.Material.Neon
        laser.Color = Color3.fromRGB(0, 120, 215)
        laser.Size = Vector3.new(0.08, 0.08, distance)
        laser.CFrame = CFrame.new(startPos:Lerp(endPos, 0.5), endPos)
        laser.Parent = workspace
        
        task.spawn(function()
            for i = 1, 8 do
                task.wait(0.04)
                laser.Transparency = i / 8
            end
            laser:Destroy()
        end)
    end)
end

UserInputService.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 and bulletTracersEnabled then
        pcall(function()
            local char = LocalPlayer.Character
            local cameraArms = workspace.Camera:FindFirstChild("Arms")
            local barrel = char and char:FindFirstChild("Head") -- mặc định vẽ tia từ vị trí của mắt người chơi
            local mouse = LocalPlayer:GetMouse()
            if barrel and mouse.Hit then
                createBulletTracer(barrel.Position - Vector3.new(0, 1, 0), mouse.Hit.Position)
            end
        end)
    end
end)

-- Tìm đối thủ gần tâm chuột nhất phục vụ Aim Assist
local camera = workspace.CurrentCamera
local function getClosestPlayerToCursor()
    local closestTarget = nil
    local shortestDistance = math.huge
    local mousePos = UserInputService:GetMouseLocation()
    
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character then
            local targetPartName = aimbotTargetPart
            if targetPartName == "Random" then
                local parts = {"Head", "UpperTorso", "HumanoidRootPart"}
                targetPartName = parts[math.random(1, #parts)]
            end
            
            local lockPart = player.Character:FindFirstChild(targetPartName)
            if lockPart then
                local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
                if humanoid and humanoid.Health > 0 then
                    if not aimbotTeamCheck or player.Team ~= LocalPlayer.Team then
                        local screenPos, onScreen = camera:WorldToViewportPoint(lockPart.Position)
                        
                        if onScreen then
                            local screenVector = Vector2.new(screenPos.X, screenPos.Y)
                            local dist = (screenVector - mousePos).Magnitude
                            if dist < aimbotFOV and dist < shortestDistance then
                                shortestDistance = dist
                                closestTarget = lockPart
                            end
                        end
                    end
                end
            end
        end
    end
    return closestTarget
end

local isHoldingAimKey = false
UserInputService.InputBegan:Connect(function(input)
    if input.UserInputType == aimbotKey then
        isHoldingAimKey = true
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == aimbotKey then
        isHoldingAimKey = false
    end
end)

-- Vận hành Aim Assist (Smooth Camera Lock) khi giữ Chuột Phải
RunService.RenderStepped:Connect(function()
    if aimbotEnabled and isHoldingAimKey then
        local target = getClosestPlayerToCursor()
        if target then
            local currentCamLook = camera.CFrame.LookVector
            local targetDir = (target.Position - camera.CFrame.Position).Unit
            local nextLook = currentCamLook:Lerp(targetDir, aimbotSmoothness)
            camera.CFrame = CFrame.new(camera.CFrame.Position, camera.CFrame.Position + nextLook)
        end
    end
end)

-- Lắng nghe các phím bấm để di chuyển Bay lượn (Fly)
UserInputService.InputBegan:Connect(function(input, GPE)
    if GPE then return end
    local codeName = input.KeyCode.Name
    if fly_buttons[codeName] ~= nil then
        fly_buttons[codeName] = true
        fly_buttons.Moving = true
    end
end)

UserInputService.InputEnded:Connect(function(input, GPE)
    if GPE then return end
    local codeName = input.KeyCode.Name
    if fly_buttons[codeName] ~= nil then
        fly_buttons[codeName] = false
    end
    local isMoving = false
    for k, v in pairs(fly_buttons) do
        if k ~= "Moving" and v == true then
            isMoving = true
            break
        end
    end
    fly_buttons.Moving = isMoving
end)

RunService.Heartbeat:Connect(function(step)
    if fly_flying and fly_c and fly_c.PrimaryPart then
        local rootPos = fly_c.PrimaryPart.Position
        local cf = fly_cam.CFrame
        local ax, ay, az = cf:ToEulerAnglesXYZ()
        fly_c:SetPrimaryPartCFrame(CFrame.new(rootPos.X, rootPos.Y, rootPos.Z) * CFrame.Angles(ax, ay, az))
        
        if fly_buttons.Moving then
            local t = Vector3.new()
            if fly_buttons.W then t = t + (cf.LookVector * (flySettings.flyspeed / cf.LookVector.Magnitude)) end
            if fly_buttons.S then t = t - (cf.LookVector * (flySettings.flyspeed / cf.LookVector.Magnitude)) end
            if fly_buttons.A then t = t - (cf.RightVector * (flySettings.flyspeed / cf.RightVector.Magnitude)) end
            if fly_buttons.D then t = t + (cf.RightVector * (flySettings.flyspeed / cf.RightVector.Magnitude)) end
            fly_c:TranslateBy(t * step)
        end
    end
end)

-- Lắng nghe bắn Triggerbot tự động
local function isEnemyBot(targetPlayer)
    if teamcheck_bot == "FFA" then
        return true
    elseif teamcheck_bot == "Everyone" then
        return targetPlayer ~= LocalPlayer
    elseif teamcheck_bot == "Team-Based" then
        return targetPlayer.Team ~= LocalPlayer.Team
    end
    return false
end

local function checkHealthLoop()
    local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
    local hum = char:WaitForChild("Humanoid")
    hum.HealthChanged:Connect(function(health)
        isAlive_bot = health > 0
    end)
end
LocalPlayer.CharacterAdded:Connect(checkHealthLoop)
task.spawn(checkHealthLoop)

RunService.RenderStepped:Connect(function()
    if getgenv().triggerb and isAlive_bot then
        local mouse = LocalPlayer:GetMouse()
        local target = mouse.Target
        if target and target.Parent and target.Parent:FindFirstChild("Humanoid") and target.Parent.Name ~= LocalPlayer.Name then
            local targetPlayer = Players:FindFirstChild(target.Parent.Name)
            if targetPlayer and isEnemyBot(targetPlayer) then
                mouse1press()
                task.wait(delay_bot)
                mouse1release()
            end
        end
    end
end)

-- Luồng thời gian thực xử lý xuất trận tự động
task.spawn(function()
    while task.wait(0.5) do
        if autoRespawnEnabled then
            pcall(function()
                local playGui = LocalPlayer:WaitForChild("PlayerGui", 5)
                if playGui then
                    local menugui = playGui:FindFirstChild("Menugui")
                    if menugui and menugui:FindFirstChild("Main") and menugui.Main:FindFirstChild("Deploy") then
                        if menugui.Main.Deploy.Visible then
                            local deployRemote = game:GetService("ReplicatedStorage"):FindFirstChild("Events"):FindFirstChild("JoinTeam")
                            if deployRemote then
                                deployRemote:FireServer("Random")
                            end
                        end
                    end
                end
            end)
        end
    end
end)

-- Luồng thời gian thực xử lý dịch chuyển Auto Farm
task.spawn(function()
    while task.wait(0.01) do
        if farmEnabled then
            pcall(function()
                local char = LocalPlayer.Character
                local root = char and char:FindFirstChild("HumanoidRootPart")
                if root then
                    getgenv().triggerb = true
                    local targetPlayer = nil
                    local shortestDistance = math.huge
                    
                    for _, player in ipairs(Players:GetPlayers()) do
                        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
                            local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
                            if humanoid and humanoid.Health > 0 then
                                local isEnemyTarget = false
                                if not farmTeamCheck then
                                    isEnemyTarget = true
                                else
                                    isEnemyTarget = player.Team ~= LocalPlayer.Team
                                end
                                
                                if isEnemyTarget then
                                    local dist = (player.Character.HumanoidRootPart.Position - root.Position).Magnitude
                                    if dist < shortestDistance then
                                        shortestDistance = dist
                                        targetPlayer = player
                                    end
                                end
                            end
                        end
                    end
                    
                    if targetPlayer and targetPlayer.Character then
                        local enemyRoot = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
                        local enemyHead = targetPlayer.Character:FindFirstChild("Head")
                        
                        if enemyRoot and enemyHead then
                            local targetPos = enemyRoot.Position
                            root.CFrame = CFrame.new(targetPos + Vector3.new(0, farmHeightOffset, 0), targetPos)
                            
                            if farmLockCam then
                                local camera = workspace.CurrentCamera
                                if camera then
                                    camera.CFrame = CFrame.new(camera.CFrame.Position, enemyHead.Position)
                                end
                            end
                            
                            if autoShootFarm then
                                mouse1press()
                                task.wait(0.05)
                                mouse1release()
                            end
                        end
                    end
                end
            end)
        end
    end
end)

-- Dọn dẹp hạt vật lý khi nhân vật chết hoặc respawn
LocalPlayer.CharacterRemoving:Connect(function()
    pcall(function()
        if fly_bv then fly_bv:Destroy() fly_bv = nil end
        if fly_bav then fly_bav:Destroy() fly_bav = nil end
    end)
end)

Features & Information

No key:)
#Hack#*nalHack

Community Comments (0)

No comments yet for this script.

More Scripts for Arsenal