adk script

🧩 Syntax:
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()

local Window = Rayfield:CreateWindow({
    Name = " adk.230's hub - TEST EDITION ⚡",
    LoadingTitle = "🔥 adk230's hub loading... 🔥",
    LoadingSubtitle = "✨ by adk.230s ✨",
    ConfigurationSaving = {
        Enabled = true,
        FolderName = "ADK230Hub",
        FileName = "config"
    },
    Discord = {
        Enabled = false
    },
    KeySystem = false
})

-- Services
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TeleportService = game:GetService("TeleportService")
local Lighting = game:GetService("Lighting")

local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()

-- Variables globales pour le personnage
local Humanoid, RootPart

-- Fonction pour mettre à jour les références du personnage
-- Appelée lorsque le personnage est ajouté ou réapparaît
local function UpdateCharacterReferences()
    if LocalPlayer.Character then
        Humanoid = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
        RootPart = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
    else
        Humanoid = nil
        RootPart = nil
    end
end

-- Connecter la mise à jour des références du personnage
LocalPlayer.CharacterAdded:Connect(function(character)
    -- Attendre explicitement le Humanoid et le RootPart
    local hum = character:WaitForChild("Humanoid")
    local root = character:WaitForChild("HumanoidRootPart")
    Humanoid = hum
    RootPart = root

    -- Réappliquer WalkSpeed et JumpPower
    Humanoid.WalkSpeed = WalkSpeed
    Humanoid.JumpPower = JumpPower

    -- Désactive le fly proprement si le joueur respawn
    if BodyVelocity then
        BodyVelocity:Destroy()
        BodyVelocity = nil
    end
    Humanoid.PlatformStand = false

    -- Si FlyEnabled était activé avant la mort, relance le fly automatiquement
    if FlyEnabled then
        task.wait(0.5)
        BodyVelocity = Instance.new("BodyVelocity")
        BodyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
        BodyVelocity.Parent = RootPart
        Humanoid.PlatformStand = true
    end

    -- Réappliquer GodMode si besoin
    if GodModeEnabled then
        Humanoid.MaxHealth = math.huge
        Humanoid.Health = math.huge
    end
end)


-- Appeler une première fois au chargement
UpdateCharacterReferences()

-- Variables pour les toggles
local GodModeEnabled = false
local FlyEnabled = false
local NoclipEnabled = false
local InfiniteJumpEnabled = false
local WalkOnWaterEnabled = false
local ClimbWallsEnabled = false
local InvisibleModeEnabled = false -- Invisibilité côté client (transparence)
local ClickTeleportEnabled = false
local FullbrightEnabled = false
local HighlightEnabled = false

-- Fly variables
local FlySpeed = 50
local BodyVelocity

-- Movement variables
local WalkSpeed = 16
local JumpPower = 50

-- Correction : appliquer en continu WalkSpeed et JumpPower
RunService.RenderStepped:Connect(function()
    if Humanoid then
        if Humanoid.WalkSpeed ~= WalkSpeed then
            Humanoid.WalkSpeed = WalkSpeed
        end
        if Humanoid.JumpPower ~= JumpPower then
            Humanoid.JumpPower = JumpPower
        end
    end
end)

-- ESP variables
local HighlightConnections = {}

-- Variables pour Walk on Water (optimisation)
local WaterWalkPart = nil -- Déclarer la variable ici pour la réutiliser

-- Notification function
local function Notify(title, content, duration)
    Rayfield:Notify({
        Title = "🎯 " .. title,
        Content = content,
        Duration = duration or 3,
        Image = 4483362458 -- Image par défaut, peut être changée
    })
end

-- MAIN TAB
local MainTab = Window:CreateTab("🏠 Main", 4483362458)

MainTab:CreateToggle({
    Name = "🛡️ God Mode",
    CurrentValue = false,
    Flag = "GodMode",
    Callback = function(Value)
        GodModeEnabled = Value
        if LocalPlayer.Character and Humanoid then -- Vérification de Humanoid
            if GodModeEnabled then
                Humanoid.MaxHealth = math.huge
                Humanoid.Health = math.huge
                Notify("God Mode", "✅ Activated", 2)
            else
                Humanoid.MaxHealth = 100
                Humanoid.Health = 100
                Notify("God Mode", "❌ Deactivated", 2)
            end
        else
            Notify("God Mode", "❌ Character or Humanoid not found!", 2)
        end
    end
})

MainTab:CreateToggle({
    Name = "🕊️ Fly",
    CurrentValue = false,
    Flag = "Fly",
    Callback = function(Value)
        FlyEnabled = Value
        if FlyEnabled then
            if RootPart then
                BodyVelocity = Instance.new("BodyVelocity")
                BodyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
                BodyVelocity.Parent = RootPart
                if Humanoid then Humanoid.PlatformStand = true end
                Notify("Fly", "✅ Activé - WASD + Space/Shift", 3)
            else
                Notify("Fly", "❌ RootPart introuvable !", 2)
                FlyEnabled = false
            end
        else
            if BodyVelocity then BodyVelocity:Destroy() BodyVelocity = nil end
            if Humanoid then Humanoid.PlatformStand = false end
            Notify("Fly", "❌ Désactivé", 2)
        end
    end
})

MainTab:CreateToggle({
    Name = "👻 Noclip",
    CurrentValue = false,
    Flag = "Noclip",
    Callback = function(Value)
        NoclipEnabled = Value
        Notify("Noclip", Value and "✅ Activated" or "❌ Deactivated", 2)
        -- Appliquer/désappliquer immédiatement pour les parties existantes
        if LocalPlayer.Character then
            for _, part in pairs(LocalPlayer.Character:GetChildren()) do
                if part:IsA("BasePart") then
                    part.CanCollide = not NoclipEnabled
                end
            end
        end
    end
})

MainTab:CreateToggle({
    Name = "🦘 Infinite Jump",
    CurrentValue = false,
    Flag = "InfiniteJump",
    Callback = function(Value)
        InfiniteJumpEnabled = Value
        Notify("Infinite Jump", Value and "✅ Activated" or "❌ Deactivated", 2)
    end
})

MainTab:CreateToggle({
    Name = "🌊 Walk on Water",
    CurrentValue = false,
    Flag = "WalkOnWater",
    Callback = function(Value)
        WalkOnWaterEnabled = Value
        if Value then
            -- Créer la partie WaterWalk une seule fois si elle n'existe pas
            if not WaterWalkPart then
                WaterWalkPart = Instance.new("Part")
                WaterWalkPart.Name = "WaterWalkPlatform"
                WaterWalkPart.Size = Vector3.new(10, 0.2, 10)
                WaterWalkPart.Material = Enum.Material.ForceField
                WaterWalkPart.CanCollide = true
                WaterWalkPart.Anchored = true
                WaterWalkPart.Parent = workspace -- Parenté à workspace pour un meilleur contrôle
            end
            WaterWalkPart.Transparency = 0.5 -- Rendre visible
            Notify("Walk on Water", "✅ Activated", 2)
        else
            if WaterWalkPart then
                WaterWalkPart.Transparency = 1 -- Rendre invisible
            end
            Notify("Walk on Water", "❌ Deactivated", 2)
        end
    end
})

MainTab:CreateToggle({
    Name = "🧗 Climb Walls",
    CurrentValue = false,
    Flag = "ClimbWalls",
    Callback = function(Value)
        ClimbWallsEnabled = Value
        Notify("Climb Walls", Value and "✅ Activated" or "❌ Deactivated", 2)
    end
})

MainTab:CreateToggle({
    Name = "🫥 Invisible Mode",
    CurrentValue = false,
    Flag = "InvisibleMode",
    Callback = function(Value)
        InvisibleModeEnabled = Value
        if LocalPlayer.Character then
            for _, part in pairs(LocalPlayer.Character:GetChildren()) do
                if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
                    part.Transparency = InvisibleModeEnabled and 1 or 0
                elseif part:IsA("Accessory") then
                    part.Handle.Transparency = InvisibleModeEnabled and 1 or 0
                end
            end
            Notify("Invisible Mode", Value and "✅ Activated" or "❌ Deactivated", 2)
        end
    end
})

MainTab:CreateSlider({
    Name = "🏃‍♂️ Walk Speed",
    Range = {1, 500},
    Increment = 1,
    Suffix = "",
    CurrentValue = 16,
    Flag = "WalkSpeed",
    Callback = function(Value)
        WalkSpeed = Value
        if Humanoid then
            Humanoid.WalkSpeed = WalkSpeed
        end
    end
})

MainTab:CreateSlider({
    Name = "⬆️ Jump Power",
    Range = {1, 500},
    Increment = 1,
    Suffix = "",
    CurrentValue = 50,
    Flag = "JumpPower",
    Callback = function(Value)
        JumpPower = Value
        if Humanoid then
            Humanoid.JumpPower = JumpPower
        end
    end
})

MainTab:CreateSlider({
    Name = "✈️ Fly Speed",
    Range = {1, 200},
    Increment = 1,
    Suffix = "",
    CurrentValue = 50,
    Flag = "FlySpeed",
    Callback = function(Value)
        FlySpeed = Value
    end
})

MainTab:CreateToggle({
    Name = "📍 Click Teleport",
    CurrentValue = false,
    Flag = "ClickTeleport",
    Callback = function(Value)
        ClickTeleportEnabled = Value
        Notify("Click Teleport", Value and "✅ Activated - Ctrl+Click 🖱️" or "❌ Deactivated", 2)
    end
})

MainTab:CreateButton({
    Name = "🔄 Reset Character",
    Callback = function()
        if LocalPlayer.Character and Humanoid then
            Humanoid.Health = 0
            Notify("Character", "🔄 Reset successfully", 2)
        else
            Notify("Character", "❌ Character or Humanoid not found!", 2)
        end
    end
})

MainTab:CreateButton({
    Name = "🚪 Rejoin Server",
    Callback = function()
        TeleportService:Teleport(game.PlaceId, LocalPlayer)
    end
})

-- ANIMATIONS TAB
local AnimTab = Window:CreateTab("💃 Animations", 4483362458)

AnimTab:CreateButton({
    Name = "🎭 Qapacity's Tools",
    Callback = function()
        local success, err = pcall(function()
            loadstring(game:HttpGet("https://raw.githubusercontent.com/Team-Noxious/Team-Symphysis/refs/heads/main/qapacity's%20animations%20%7C%20qapacity"))()
        end)
        if success then
            Notify("Qapacity's Tools", "✅ Loaded successfully 🎭", 3)
        else
            Notify("Qapacity's Tools", "❌ Failed to load: " .. tostring(err), 5)
        end
    end
})

AnimTab:CreateButton({
    Name = "🤪 Goofy Animations",
    Callback = function()
        local success, err = pcall(function()
            loadstring(game:HttpGet("https://pastebin.com/raw/UQhaBfEZ"))()
        end)
        if success then
            Notify("Goofy Animations", "✅ Loaded successfully 🤪", 3)
        else
            Notify("Goofy Animations", "❌ Failed to load: " .. tostring(err), 5)
        end
    end
})

AnimTab:CreateButton({
    Name = "🎪 XVC Hub",
    Callback = function()
        local success, err = pcall(function()
            loadstring(game:HttpGet("https://pastebin.com/raw/Piw5bqGq"))()
        end)
        if success then
            Notify("XVC Hub", "✅ Loaded successfully 🎪", 3)
        else
            Notify("XVC Hub", "❌ Failed to load: " .. tostring(err), 5)
        end
    end
})

-- SKINS TAB
local SkinsTab = Window:CreateTab("👤 Skins", 4483362458)

-- Fonction utilitaire pour appliquer un skin de manière plus robuste
local function applySkinRobust(userId)
    if not LocalPlayer.Character or not Humanoid then
        Notify("Skin Error", "❌ Character or Humanoid not found!", 2)
        return
    end

    local success, humanoidDescription = pcall(function()
        return Players:GetHumanoidDescriptionFromUserId(userId)
    end)

    if not success or not humanoidDescription then
        Notify("Skin Error", "❌ Failed to get HumanoidDescription for UserID: " .. userId, 3)
        return
    end

    -- Tenter d'appliquer la description
    Humanoid:ApplyDescription(humanoidDescription)
    Notify("Skin Applied", "Attempting to apply skin...", 1)

    -- Attendre un court instant pour la réplication initiale
    task.wait(0.1)

    -- Supprimer les accessoires existants et réappliquer pour forcer la mise à jour
    -- C'est une technique courante pour contourner les problèmes de réplication des accessoires.
    for _, child in pairs(LocalPlayer.Character:GetChildren()) do
        if child:IsA("Accessory") then
            child:Destroy()
        end
    end
    task.wait(0.1) -- Petite pause avant de réappliquer
    Humanoid:ApplyDescription(humanoidDescription) -- Réappliquer pour s'assurer que les accessoires sont chargés

    Notify("Skin Applied", "✅ Skin applied (attempted robustly)!", 3)
end

local DefaultSkins = {
    ["👤 Guest"] = 1,
    ["🔨 Builderman"] = 156,
    ["🤖 Roblox"] = 261,
    ["❓ John Doe"] = 2,
    ["❓ Jane Doe"] = 3
}

for skinName, userId in pairs(DefaultSkins) do
    SkinsTab:CreateButton({
        Name = skinName,
        Callback = function()
            applySkinRobust(userId)
        end
    })
end

local UsernameInput = ""

SkinsTab:CreateInput({
    Name = "📝 Username to Copy",
    PlaceholderText = "Enter username...",
    RemoveTextAfterFocusLost = false,
    Callback = function(Text)
        UsernameInput = Text
    end
})

SkinsTab:CreateButton({
    Name = "🎭 Copy User Appearance",
    Callback = function()
        if UsernameInput == "" then
            Notify("Error", "❌ Please enter a username 📝", 2)
            return
        end

        local success, userId = pcall(function()
            return Players:GetUserIdFromNameAsync(UsernameInput)
        end)

        if not success or not userId then
            Notify("Error", "❌ User not found: " .. UsernameInput, 3)
            return
        end

        applySkinRobust(userId)
        Notify("Copy Success", "✅ Copied " .. UsernameInput .. "'s appearance (attempted robustly)!", 3)
    end
})

SkinsTab:CreateButton({
    Name = "🔄 Force Rejoin for Skin Update",
    Description = "Use this if skin changes don't apply. This will rejoin the server.",
    Callback = function()
        Notify("Rejoining", "🔄 Rejoining server to force skin update...", 3)
        TeleportService:Teleport(game.PlaceId, LocalPlayer)
    end
})


-- OTHER SCRIPTS TAB
local OtherTab = Window:CreateTab("🔧 Other Scripts", 4483362458)

OtherTab:CreateButton({
    Name = "🌪️ FLING",
    Callback = function()
        pcall(function()
            --[[
    KILASIK's Multi-Target Fling Exploit
    Based on the working fling mechanism from zqyDSUWX
    Features:
    - Select multiple targets
    - Continuous flinging until stopped
    - Preserves player mobility (no teleporting to targets)
    - Flings targets very far
    - Compatible with JJSploit, Synapse X, etc.
]]
-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Player = Players.LocalPlayer
-- GUI Setup
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "KilasikFlingGUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = game:GetService("CoreGui")
-- Main Frame
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 300, 0, 350)
MainFrame.Position = UDim2.new(0.5, -150, 0.5, -175)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui
-- Title Bar
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 30)
TitleBar.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = MainFrame
-- Title
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -30, 1, 0)
Title.BackgroundTransparency = 1
Title.Text = "adk.230's MULTI-FLING"
Title.TextColor3 = Color3.fromRGB(255, 80, 80)
Title.Font = Enum.Font.SourceSansBold
Title.TextSize = 18
Title.Parent = TitleBar
-- Close Button
local CloseButton = Instance.new("TextButton")
CloseButton.Position = UDim2.new(1, -30, 0, 0)
CloseButton.Size = UDim2.new(0, 30, 0, 30)
CloseButton.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
CloseButton.BorderSizePixel = 0
CloseButton.Text = "X"
CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseButton.Font = Enum.Font.SourceSansBold
CloseButton.TextSize = 18
CloseButton.Parent = TitleBar
-- Status Label
local StatusLabel = Instance.new("TextLabel")
StatusLabel.Position = UDim2.new(0, 10, 0, 40)
StatusLabel.Size = UDim2.new(1, -20, 0, 25)
StatusLabel.BackgroundTransparency = 1
StatusLabel.Text = "Select targets to fling"
StatusLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
StatusLabel.Font = Enum.Font.SourceSans
StatusLabel.TextSize = 16
StatusLabel.TextXAlignment = Enum.TextXAlignment.Left
StatusLabel.Parent = MainFrame
-- Player Selection Frame
local SelectionFrame = Instance.new("Frame")
SelectionFrame.Position = UDim2.new(0, 10, 0, 70)
SelectionFrame.Size = UDim2.new(1, -20, 0, 200)
SelectionFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
SelectionFrame.BorderSizePixel = 0
SelectionFrame.Parent = MainFrame
-- Player List ScrollFrame
local PlayerScrollFrame = Instance.new("ScrollingFrame")
PlayerScrollFrame.Position = UDim2.new(0, 5, 0, 5)
PlayerScrollFrame.Size = UDim2.new(1, -10, 1, -10)
PlayerScrollFrame.BackgroundTransparency = 1
PlayerScrollFrame.BorderSizePixel = 0
PlayerScrollFrame.ScrollBarThickness = 6
PlayerScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
PlayerScrollFrame.Parent = SelectionFrame
-- Start Fling Button
local StartButton = Instance.new("TextButton")
StartButton.Position = UDim2.new(0, 10, 0, 280)
StartButton.Size = UDim2.new(0.5, -15, 0, 40)
StartButton.BackgroundColor3 = Color3.fromRGB(0, 180, 0)
StartButton.BorderSizePixel = 0
StartButton.Text = "START FLING"
StartButton.TextColor3 = Color3.fromRGB(255, 255, 255)
StartButton.Font = Enum.Font.SourceSansBold
StartButton.TextSize = 18
StartButton.Parent = MainFrame
-- Stop Fling Button
local StopButton = Instance.new("TextButton")
StopButton.Position = UDim2.new(0.5, 5, 0, 280)
StopButton.Size = UDim2.new(0.5, -15, 0, 40)
StopButton.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
StopButton.BorderSizePixel = 0
StopButton.Text = "STOP FLING"
StopButton.TextColor3 = Color3.fromRGB(255, 255, 255)
StopButton.Font = Enum.Font.SourceSansBold
StopButton.TextSize = 18
StopButton.Parent = MainFrame
-- Select/Deselect Buttons
local SelectAllButton = Instance.new("TextButton")
SelectAllButton.Position = UDim2.new(0, 10, 0, 330)
SelectAllButton.Size = UDim2.new(0.5, -15, 0, 30)
SelectAllButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
SelectAllButton.BorderSizePixel = 0
SelectAllButton.Text = "SELECT ALL"
SelectAllButton.TextColor3 = Color3.fromRGB(255, 255, 255)
SelectAllButton.Font = Enum.Font.SourceSans
SelectAllButton.TextSize = 14
SelectAllButton.Parent = MainFrame
local DeselectAllButton = Instance.new("TextButton")
DeselectAllButton.Position = UDim2.new(0.5, 5, 0, 330)
DeselectAllButton.Size = UDim2.new(0.5, -15, 0, 30)
DeselectAllButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
DeselectAllButton.BorderSizePixel = 0
DeselectAllButton.Text = "DESELECT ALL"
DeselectAllButton.TextColor3 = Color3.fromRGB(255, 255, 255)
DeselectAllButton.Font = Enum.Font.SourceSans
DeselectAllButton.TextSize = 14
DeselectAllButton.Parent = MainFrame
-- Variables
local SelectedTargets = {}
local PlayerCheckboxes = {}
local FlingActive = false
local FlingConnection = nil
getgenv().OldPos = nil
getgenv().FPDH = workspace.FallenPartsDestroyHeight
-- Function to update player list
local function RefreshPlayerList()
    -- Clear existing player entries
    for _, child in pairs(PlayerScrollFrame:GetChildren()) do
        child:Destroy()
    end
    PlayerCheckboxes = {}
    
    -- Get players and sort them
    local PlayerList = Players:GetPlayers()
    table.sort(PlayerList, function(a, b) return a.Name:lower() < b.Name:lower() end)
    
    -- Create entries for each player
    local yPosition = 5
    for _, player in ipairs(PlayerList) do
        if player ~= Player then -- Don't include yourself
            -- Create player entry frame
            local PlayerEntry = Instance.new("Frame")
            PlayerEntry.Size = UDim2.new(1, -10, 0, 30)
            PlayerEntry.Position = UDim2.new(0, 5, 0, yPosition)
            PlayerEntry.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
            PlayerEntry.BorderSizePixel = 0
            PlayerEntry.Parent = PlayerScrollFrame
            
            -- Create checkbox
            local Checkbox = Instance.new("TextButton")
            Checkbox.Size = UDim2.new(0, 24, 0, 24)
            Checkbox.Position = UDim2.new(0, 3, 0.5, -12)
            Checkbox.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
            Checkbox.BorderSizePixel = 0
            Checkbox.Text = ""
            Checkbox.Parent = PlayerEntry
            
            -- Checkmark (initially invisible)
            local Checkmark = Instance.new("TextLabel")
            Checkmark.Size = UDim2.new(1, 0, 1, 0)
            Checkmark.BackgroundTransparency = 1
            Checkmark.Text = "✓"
            Checkmark.TextColor3 = Color3.fromRGB(0, 255, 0)
            Checkmark.TextSize = 18
            Checkmark.Font = Enum.Font.SourceSansBold
            Checkmark.Visible = SelectedTargets[player.Name] ~= nil
            Checkmark.Parent = Checkbox
            
            -- Player name label
            local NameLabel = Instance.new("TextLabel")
            NameLabel.Size = UDim2.new(1, -35, 1, 0)
            NameLabel.Position = UDim2.new(0, 30, 0, 0)
            NameLabel.BackgroundTransparency = 1
            NameLabel.Text = player.Name
            NameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
            NameLabel.TextSize = 16
            NameLabel.Font = Enum.Font.SourceSans
            NameLabel.TextXAlignment = Enum.TextXAlignment.Left
            NameLabel.Parent = PlayerEntry
            
            -- Make entire entry clickable
            local ClickArea = Instance.new("TextButton")
            ClickArea.Size = UDim2.new(1, 0, 1, 0)
            ClickArea.BackgroundTransparency = 1
            ClickArea.Text = ""
            ClickArea.ZIndex = 2
            ClickArea.Parent = PlayerEntry
            
            -- Selection toggle on click
            ClickArea.MouseButton1Click:Connect(function()
                if SelectedTargets[player.Name] then
                    SelectedTargets[player.Name] = nil
                    Checkmark.Visible = false
                else
                    SelectedTargets[player.Name] = player
                    Checkmark.Visible = true
                end
                
                UpdateStatus()
            end)
            
            -- Store reference to this player's UI
            PlayerCheckboxes[player.Name] = {
                Entry = PlayerEntry,
                Checkmark = Checkmark
            }
            
            yPosition = yPosition + 35
        end
    end
    
    -- Update scrollframe canvas size
    PlayerScrollFrame.CanvasSize = UDim2.new(0, 0, 0, yPosition + 5)
end
-- Count selected targets
local function CountSelectedTargets()
    local count = 0
    for _ in pairs(SelectedTargets) do
        count = count + 1
    end
    return count
end
-- Update status display
local function UpdateStatus()
    local count = CountSelectedTargets()
    if FlingActive then
        StatusLabel.Text = "Flinging " .. count .. " target(s)"
        StatusLabel.TextColor3 = Color3.fromRGB(255, 80, 80)
    else
        StatusLabel.Text = count .. " target(s) selected" 
        StatusLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    end
end
-- Function to select/deselect all players
local function ToggleAllPlayers(select)
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= Player then
            local checkboxData = PlayerCheckboxes[player.Name]
            if checkboxData then
                if select then
                    SelectedTargets[player.Name] = player
                    checkboxData.Checkmark.Visible = true
                else
                    SelectedTargets[player.Name] = nil
                    checkboxData.Checkmark.Visible = false
                end
            end
        end
    end
    
    UpdateStatus()
end
-- Show notification
local function Message(Title, Text, Time)
    game:GetService("StarterGui"):SetCore("SendNotification", {
        Title = Title,
        Text = Text,
        Duration = Time or 5
    })
end
-- The fling function from zqyDSUWX
local function SkidFling(TargetPlayer)
    local Character = Player.Character
    local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid")
    local RootPart = Humanoid and Humanoid.RootPart
    local TCharacter = TargetPlayer.Character
    if not TCharacter then return end
    
    local THumanoid
    local TRootPart
    local THead
    local Accessory
    local Handle
    if TCharacter:FindFirstChildOfClass("Humanoid") then
        THumanoid = TCharacter:FindFirstChildOfClass("Humanoid")
    end
    if THumanoid and THumanoid.RootPart then
        TRootPart = THumanoid.RootPart
    end
    if TCharacter:FindFirstChild("Head") then
        THead = TCharacter.Head
    end
    if TCharacter:FindFirstChildOfClass("Accessory") then
        Accessory = TCharacter:FindFirstChildOfClass("Accessory")
    end
    if Accessory and Accessory:FindFirstChild("Handle") then
        Handle = Accessory.Handle
    end
    if Character and Humanoid and RootPart then
        if RootPart.Velocity.Magnitude < 50 then
            getgenv().OldPos = RootPart.CFrame
        end
        
        if THumanoid and THumanoid.Sit then
            return Message("Error", TargetPlayer.Name .. " is sitting", 2)
        end
        
        if THead then
            workspace.CurrentCamera.CameraSubject = THead
        elseif Handle then
            workspace.CurrentCamera.CameraSubject = Handle
        elseif THumanoid and TRootPart then
            workspace.CurrentCamera.CameraSubject = THumanoid
        end
        
        if not TCharacter:FindFirstChildWhichIsA("BasePart") then
            return
        end
        
        local FPos = function(BasePart, Pos, Ang)
            RootPart.CFrame = CFrame.new(BasePart.Position) * Pos * Ang
            Character:SetPrimaryPartCFrame(CFrame.new(BasePart.Position) * Pos * Ang)
            RootPart.Velocity = Vector3.new(9e7, 9e7 * 10, 9e7)
            RootPart.RotVelocity = Vector3.new(9e8, 9e8, 9e8)
        end
        
        local SFBasePart = function(BasePart)
            local TimeToWait = 2
            local Time = tick()
            local Angle = 0
            repeat
                if RootPart and THumanoid then
                    if BasePart.Velocity.Magnitude < 50 then
                        Angle = Angle + 100
                        FPos(BasePart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle),0 ,0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle),0 ,0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection, CFrame.Angles(math.rad(Angle),0 ,0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection, CFrame.Angles(math.rad(Angle), 0, 0))
                        task.wait()
                    else
                        FPos(BasePart, CFrame.new(0, 1.5, THumanoid.WalkSpeed), CFrame.Angles(math.rad(90), 0, 0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, -1.5, -THumanoid.WalkSpeed), CFrame.Angles(0, 0, 0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, 1.5, THumanoid.WalkSpeed), CFrame.Angles(math.rad(90), 0, 0))
                        task.wait()
                        
                        FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(math.rad(90), 0, 0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(0, 0, 0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(math.rad(90), 0, 0))
                        task.wait()
                        FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(0, 0, 0))
                        task.wait()
                    end
                end
            until Time + TimeToWait < tick() or not FlingActive
        end
        
        workspace.FallenPartsDestroyHeight = 0/0
        
        local BV = Instance.new("BodyVelocity")
        BV.Parent = RootPart
        BV.Velocity = Vector3.new(0, 0, 0)
        BV.MaxForce = Vector3.new(9e9, 9e9, 9e9)
        
        Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, false)
        
        if TRootPart then
            SFBasePart(TRootPart)
        elseif THead then
            SFBasePart(THead)
        elseif Handle then
            SFBasePart(Handle)
        else
            return Message("Error", TargetPlayer.Name .. " has no valid parts", 2)
        end
        
        BV:Destroy()
        Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, true)
        workspace.CurrentCamera.CameraSubject = Humanoid
        
        -- Reset character position
        if getgenv().OldPos then
            repeat
                RootPart.CFrame = getgenv().OldPos * CFrame.new(0, .5, 0)
                Character:SetPrimaryPartCFrame(getgenv().OldPos * CFrame.new(0, .5, 0))
                Humanoid:ChangeState("GettingUp")
                for _, part in pairs(Character:GetChildren()) do
                    if part:IsA("BasePart") then
                        part.Velocity, part.RotVelocity = Vector3.new(), Vector3.new()
                    end
                end
                task.wait()
            until (RootPart.Position - getgenv().OldPos.p).Magnitude < 25
            workspace.FallenPartsDestroyHeight = getgenv().FPDH
        end
    else
        return Message("Error", "Your character is not ready", 2)
    end
end
-- Start flinging selected targets
local function StartFling()
    if FlingActive then return end
    
    local count = CountSelectedTargets()
    if count == 0 then
        StatusLabel.Text = "No targets selected!"
        wait(1)
        StatusLabel.Text = "Select targets to fling"
        return
    end
    
    FlingActive = true
    UpdateStatus()
    Message("Started", "Flinging " .. count .. " targets", 2)
    
    -- Start flinger in separate thread
    spawn(function()
        while FlingActive do
            local validTargets = {}
            
            -- Process all targets first to determine which are valid
            for name, player in pairs(SelectedTargets) do
                if player and player.Parent then
                    validTargets[name] = player
                else
                    -- Remove players who left
                    SelectedTargets[name] = nil
                    local checkbox = PlayerCheckboxes[name]
                    if checkbox then
                        checkbox.Checkmark.Visible = false
                    end
                end
            end
            
            -- Then attempt to fling each valid target
            for _, player in pairs(validTargets) do
                if FlingActive then
                    SkidFling(player)
                    -- Brief wait between targets to allow movement to reset
                    wait(0.1)
                else
                    break
                end
            end
            
            -- Update status periodically
            UpdateStatus()
            
            -- Wait a moment before starting next fling cycle
            wait(0.5)
        end
    end)
end
-- Stop flinging
local function StopFling()
    if not FlingActive then return end
    
    FlingActive = false
    
    UpdateStatus()
    Message("Stopped", "Fling has been stopped", 2)
end
-- Set up button connections
StartButton.MouseButton1Click:Connect(StartFling)
StopButton.MouseButton1Click:Connect(StopFling)
SelectAllButton.MouseButton1Click:Connect(function() ToggleAllPlayers(true) end)
DeselectAllButton.MouseButton1Click:Connect(function() ToggleAllPlayers(false) end)
CloseButton.MouseButton1Click:Connect(function()
    StopFling()
    ScreenGui:Destroy()
end)
-- Handle player joining/leaving
Players.PlayerAdded:Connect(RefreshPlayerList)
Players.PlayerRemoving:Connect(function(player)
    if SelectedTargets[player.Name] then
        SelectedTargets[player.Name] = nil
    end
    RefreshPlayerList()
    UpdateStatus()
end)
-- Initialize
RefreshPlayerList()
UpdateStatus()
-- Success message
Message("Loaded", "adk.230's Multi-Target Fling GUI loaded!", 3)
            Notify("FLING", "✅ Script loaded 🌪️", 3)
        end)
    end
})

OtherTab:CreateButton({
    Name = "♾️ Infinite Yield",
    Callback = function()
        local success, err = pcall(function()
            loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))()
        end)
        if success then
            Notify("Infinite Yield", "✅ Script loaded ♾️", 3)
        else
            Notify("Infinite Yield", "❌ Failed to load: " .. tostring(err), 5)
        end
    end
})

OtherTab:CreateButton({
    Name = "🐋 Orca Hub",
    Callback = function()
        local success, err = pcall(function()
            loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/richie0866/orca/master/public/latest.lua"))()
        end)
        if success then
            Notify("Orca Hub", "✅ Script loaded 🐋", 3)
        else
            Notify("Orca Hub", "❌ Failed to load: " .. tostring(err), 5)
        end
    end
})

OtherTab:CreateButton({
    Name = "🦉 Owl Hub",
    Callback = function()
        local success, err = pcall(function()
            loadstring(game:HttpGet("https://raw.githubusercontent.com/CriShoux/OwlHub/master/OwlHub.txt"))()
        end)
        if success then
            Notify("Owl Hub", "✅ Script loaded 🦉", 3)
        else
            Notify("Owl Hub", "❌ Failed to load: " .. tostring(err), 5)
        end
    end
})

OtherTab:CreateButton({
    Name = "👻 INVISIBLE",
    Callback = function()
        pcall(function()
            local key = Enum.KeyCode.X -- key to toggle invisibility

--// dont edit script below
local invis_on = false
local defaultSpeed = 16 -- Default walk speed
local boostedSpeed = 48 -- 3x the default speed (16 * 3)
local isSpeedBoosted = false

-- Создание GUI
local player = game.Players.LocalPlayer
local screenGui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
local frame = Instance.new("Frame", screenGui)
local toggleButton = Instance.new("TextButton", frame)
local closeButton = Instance.new("TextButton", frame)
local signatureLabel = Instance.new("TextLabel", frame)
local speedButton = Instance.new("TextButton", frame) -- Fixed typo: Instance.New to Instance.new

screenGui.ResetOnSpawn = false

frame.Size = UDim2.new(0, 100, 0, 110)
frame.Position = UDim2.new(0.5, -110, 0.5, -60)
frame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
frame.Active = true
frame.Draggable = true

toggleButton.Size = UDim2.new(0, 80, 0, 30)
toggleButton.Position = UDim2.new(0, 10, 0, 30)
toggleButton.Text = "INVISIBLE"
toggleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleButton.Font = Enum.Font.SourceSans
toggleButton.TextScaled = true

closeButton.Size = UDim2.new(0, 20, 0, 20)
closeButton.Position = UDim2.new(1, -30, 0, 5)
closeButton.Text = "X"
closeButton.BackgroundColor3 = Color3.fromRGB(255, 123, 0)
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.Font = Enum.Font.SourceSans
closeButton.TextSize = 18

signatureLabel.Size = UDim2.new(0, 100, 0, 10)
signatureLabel.Position = UDim2.new(0, 0, 0.9, 0)
signatureLabel.Text = "By: adk.230s"
signatureLabel.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
signatureLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
signatureLabel.Font = Enum.Font.SourceSans
signatureLabel.TextScaled = true
signatureLabel.Transparency = 0.3

speedButton.Size = UDim2.new(0, 80, 0, 30)
speedButton.Position = UDim2.new(0, 10, 0, 65) -- Adjusted position to avoid overlap
speedButton.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
speedButton.Text = "SPEED BOOST"
speedButton.TextScaled = true
speedButton.TextColor3 = Color3.fromRGB(255, 255, 255)
speedButton.Font = Enum.Font.SourceSans

-- Создание звукового объекта
local sound = Instance.new("Sound", player:WaitForChild("PlayerGui"))
sound.SoundId = "rbxassetid://942127495"
sound.Volume = 1

local function setTransparency(character, transparency)
    for _, part in pairs(character:GetDescendants()) do
        if part:IsA("BasePart") or part:IsA("Decal") then
            part.Transparency = transparency
        end
    end
end

local function toggleInvisibility()
    invis_on = not invis_on
    sound:Play()
    if invis_on then
        local savedpos = game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame
        wait()
        game.Players.LocalPlayer.Character:MoveTo(Vector3.new(-25.95, 84, 3537.55))
        wait(.15)
        local Seat = Instance.new('Seat', game.Workspace)
        Seat.Anchored = false
        Seat.CanCollide = false
        Seat.Name = 'invischair'
        Seat.Transparency = 1
        Seat.Position = Vector3.new(-25.95, 84, 3537.55) -- Fixed typo in position
        local Weld = Instance.new("Weld", Seat)
        Weld.Part0 = Seat
        Weld.Part1 = game.Players.LocalPlayer.Character:FindFirstChild("Torso") or game.Players.LocalPlayer.Character.UpperTorso
        wait()
        Seat.CFrame = savedpos
        setTransparency(game.Players.LocalPlayer.Character, 0.5)
        game.StarterGui:SetCore("SendNotification", {
            Title = "Invis (on)",
            Duration = 3,
            Text = "STATUS:"
        })
    else
        local invisChair = workspace:FindFirstChild('invischair')
        if invisChair then
            invisChair:Destroy()
        end
        setTransparency(game.Players.LocalPlayer.Character, 0)
        game.StarterGui:SetCore("SendNotification", {
            Title = "Invis (off)",
            Duration = 3,
            Text = "STATUS:"
        })
    end
end

local function toggleSpeedBoost()
    isSpeedBoosted = not isSpeedBoosted
    sound:Play()
    local humanoid = player.Character and player.Character:FindFirstChild("Humanoid")
    if humanoid then
        if isSpeedBoosted then
            humanoid.WalkSpeed = boostedSpeed
            speedButton.BackgroundColor3 = Color3.fromRGB(0, 255, 0) -- Green when active
            game.StarterGui:SetCore("SendNotification", {
                Title = "Speed Boost (on)",
                Duration = 3,
                Text = "Speed: " .. boostedSpeed
            })
        else
            humanoid.WalkSpeed = defaultSpeed
            speedButton.BackgroundColor3 = Color3.fromRGB(255, 0, 0) -- Red when inactive
            game.StarterGui:SetCore("SendNotification", {
                Title = "Speed Boost (off)",
                Duration = 3,
                Text = "Speed: " .. defaultSpeed
            })
        end
    end
end

-- Подписка на события
toggleButton.MouseButton1Click:Connect(toggleInvisibility)
speedButton.MouseButton1Click:Connect(toggleSpeedBoost)
closeButton.MouseButton1Click:Connect(function()
    frame.Visible = false
end)

-- Reset speed when character respawns
player.CharacterAdded:Connect(function(character)
    isSpeedBoosted = false
    local humanoid = character:WaitForChild("Humanoid")
    humanoid.WalkSpeed = defaultSpeed
    speedButton.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
end)
            Notify("INVISIBLE", "✅ Script loaded 👻", 3)
        end)
    end
})

-- ESP TAB
local ESPTab = Window:CreateTab("👁️ ESP", 4483362458)

ESPTab:CreateToggle({
    Name = "💡 Fullbright",
    CurrentValue = false,
    Flag = "Fullbright",
    Callback = function(Value)
        FullbrightEnabled = Value
        if FullbrightEnabled then
            Lighting.Brightness = 2
            Lighting.ClockTime = 14
            Lighting.FogEnd = 100000
            Lighting.GlobalShadows = false
            Lighting.OutdoorAmbient = Color3.fromRGB(128, 128, 128)
            Notify("Fullbright", "✅ Activated 💡", 2)
        else
            -- Restaurer les valeurs par défaut de Roblox (approximatives)
            Lighting.Brightness = 1
            Lighting.ClockTime = 14 -- Laisser à 14 pour ne pas changer l'heure du jour
            Lighting.FogEnd = 100000 -- Laisser à 100000 pour ne pas réintroduire le brouillard
            Lighting.GlobalShadows = true
            Lighting.OutdoorAmbient = Color3.fromRGB(70, 70, 70)
            Notify("Fullbright", "❌ Deactivated", 2)
        end
    end
})

ESPTab:CreateToggle({
    Name = "🔴 Player Highlight",
    CurrentValue = false,
    Flag = "PlayerHighlight",
    Callback = function(Value)
        HighlightEnabled = Value
        if HighlightEnabled then
            for _, player in pairs(Players:GetPlayers()) do
                if player ~= LocalPlayer and player.Character then
                    local highlight = Instance.new("Highlight")
                    highlight.Parent = player.Character
                    highlight.FillColor = Color3.fromRGB(255, 0, 0)
                    highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
                    HighlightConnections[player] = highlight
                end
            end
            Notify("Player Highlight", "✅ Activated 🔴", 2)
        else
            for player, highlight in pairs(HighlightConnections) do
                if highlight and highlight.Parent then -- Vérifier si l'highlight existe et a un parent
                    highlight:Destroy()
                end
            end
            HighlightConnections = {}
            Notify("Player Highlight", "❌ Deactivated", 2)
        end
    end
})

-- FUN TAB
local FunTab = Window:CreateTab("🎮 Fun", 4483362458)

FunTab:CreateButton({
    Name = "🚗 CAR FE",
    Callback = function()
        local success, err = pcall(function()
            loadstring(game:HttpGet("https://raw.githubusercontent.com/AstraOutlight/my-scripts/refs/heads/main/fe%20car%20v3"))()
        end)
        if success then
            Notify("CAR FE", "✅ Script loaded successfully 🚗", 3)
        else
            Notify("CAR FE", "❌ Failed to load: " .. tostring(err), 5)
        end
    end
})

-- SETTINGS TAB
local SettingsTab = Window:CreateTab("⚙️ Settings", 4483362458)

SettingsTab:CreateButton({
    Name = "💥 Destroy GUI",
    Callback = function()
        Rayfield:Destroy()
    end
})

SettingsTab:CreateKeybind({
    Name = "🔄 Toggle GUI",
    CurrentKeybind = "RightControl",
    HoldToPress = false,
    Flag = "ToggleGUI",
    Callback = function()
        Rayfield:Toggle()
    end
})

-- Main Logic Loops
RunService.Heartbeat:Connect(function()
    -- Noclip
    if NoclipEnabled and LocalPlayer.Character then
        for _, part in pairs(LocalPlayer.Character:GetChildren()) do
            if part:IsA("BasePart") then
                part.CanCollide = false
            end
        end
    end
    
    -- Fly controls améliorés
    if FlyEnabled and BodyVelocity and RootPart then
        local camera = workspace.CurrentCamera
        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
            move = move.Unit
        end
        BodyVelocity.Velocity = move * FlySpeed
    end
    
    -- God Mode maintenance
    if GodModeEnabled and Humanoid then
        Humanoid.Health = Humanoid.MaxHealth
    end
    
    -- Walk on Water
    if WalkOnWaterEnabled and RootPart then
        local raycast = workspace:Raycast(RootPart.Position, Vector3.new(0, -1000, 0))
        if raycast and raycast.Instance and raycast.Instance.Material == Enum.Material.Water then
            if not WaterWalkPart then -- Créer la partie si elle n'existe pas encore
                WaterWalkPart = Instance.new("Part")
                WaterWalkPart.Name = "WaterWalkPlatform"
                WaterWalkPart.Size = Vector3.new(10, 0.2, 10)
                WaterWalkPart.Material = Enum.Material.ForceField
                WaterWalkPart.CanCollide = true
                WaterWalkPart.Anchored = true
                WaterWalkPart.Parent = workspace
            end
            WaterWalkPart.Position = Vector3.new(RootPart.Position.X, raycast.Position.Y + 2, RootPart.Position.Z)
            WaterWalkPart.Transparency = 0.5 -- S'assurer qu'il est visible sur l'eau
        else
            if WaterWalkPart then
                WaterWalkPart.Transparency = 1 -- Cacher s'il n'y a pas d'eau en dessous
            end
        end
    end
    
    -- Climb Walls
    if ClimbWallsEnabled and RootPart then
        RootPart.Velocity = Vector3.new(RootPart.Velocity.X, 16, RootPart.Velocity.Z)
    end
end)

-- Input handling
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    
    -- Infinite Jump
    if input.KeyCode == Enum.KeyCode.Space and InfiniteJumpEnabled and Humanoid then
        Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
    end
    
    -- Click Teleport
    if input.UserInputType == Enum.UserInputType.MouseButton1 and ClickTeleportEnabled then
        if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) and RootPart then
            local mouseHit = Mouse.Hit -- Utiliser Mouse.Hit directement
            if mouseHit then
                RootPart.CFrame = CFrame.new(mouseHit.Position + Vector3.new(0, 3, 0))
            end
        end
    end
end)

-- Player connections for ESP
Players.PlayerAdded:Connect(function(player)
    if HighlightEnabled then
        player.CharacterAdded:Connect(function(character)
            wait(1) -- Attendre que le personnage soit complètement chargé
            if HighlightEnabled and character then
                local highlight = Instance.new("Highlight")
                highlight.Parent = character
                highlight.FillColor = Color3.fromRGB(255, 0, 0)
                highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
                HighlightConnections[player] = highlight
            end
        end)
    end
end)

Players.PlayerRemoving:Connect(function(player)
    if HighlightConnections[player] then
        if HighlightConnections[player] and HighlightConnections[player].Parent then
            HighlightConnections[player]:Destroy()
        end
        HighlightConnections[player] = nil
    end
end)

Notify("adk230's hub", "🎉 Successfully loaded! Enjoy! 🚀", 5)