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

-- Variables
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

-- State Variables
local IsAutoMaxMoney = false
local IsAutoCleanMoney = false
local InstantInteraction = false
local InstantInteractionConnection = nil
local InstantRespawnEnabled = false

-- Gun Modification Variables
local InfiniteAmmo = false
local AlwaysAutomatic = false
local NoRecoil = false
local NoSpread = false
local FireRateBoost = false
local InfiniteDamage = false
local WeaponTables = {}

-- ESP Variables
local ESPEnabled = false
local PlayerESP = false
local NPCBoxes = false
local NPCHealth = false
local NPCDistance = false
local NPCNames = false
local ESPConnections = {}
local ESPObjects = {}

-- Duping-related global removed (kept only what's still used)
getgenv().SwimMethod = true
getgenv().TeleportSettings = {
    Speed = 0.15
}

-- ============================================
-- LOADING SCREEN WITH PROFILE
-- ============================================

local LoadingGui = Instance.new("ScreenGui")
LoadingGui.Name = "ScriptHouse 2.0"
LoadingGui.ResetOnSpawn = false
LoadingGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
LoadingGui.Parent = PlayerGui

local LoadingFrame = Instance.new("Frame")
LoadingFrame.Name = "ScriptHouse 2.0"
LoadingFrame.Size = UDim2.new(1, 0, 1, 0)
LoadingFrame.Position = UDim2.new(0, 0, 0, 0)
LoadingFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 15)
LoadingFrame.BorderSizePixel = 0
LoadingFrame.ZIndex = 1000
LoadingFrame.Parent = LoadingGui

-- Gradient background
local LoadingGradient = Instance.new("UIGradient")
LoadingGradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(50, 100, 200)),
    ColorSequenceKeypoint.new(0.5, Color3.fromRGB(100, 50, 200)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(50, 100, 200))
}
LoadingGradient.Rotation = 45
LoadingGradient.Parent = LoadingFrame

-- Animate the gradient
task.spawn(function()
    while LoadingFrame and LoadingFrame.Parent do
        for i = 0, 360, 2 do
            if LoadingGradient and LoadingGradient.Parent then
                LoadingGradient.Rotation = i
            end
            task.wait(0.02)
        end
    end
end)

-- Player Avatar (Center)
local AvatarFrame = Instance.new("Frame")
AvatarFrame.Size = UDim2.new(0, 150, 0, 150)
AvatarFrame.Position = UDim2.new(0.5, -75, 0.35, -75)
AvatarFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
AvatarFrame.BorderSizePixel = 0
AvatarFrame.ZIndex = 1001
AvatarFrame.Parent = LoadingFrame

local AvatarCorner = Instance.new("UICorner")
AvatarCorner.CornerRadius = UDim.new(0, 75)
AvatarCorner.Parent = AvatarFrame

local AvatarStroke = Instance.new("UIStroke")
AvatarStroke.Thickness = 4
AvatarStroke.Color = Color3.fromRGB(0, 150, 255)
AvatarStroke.Parent = AvatarFrame

-- Glow effect for avatar
task.spawn(function()
    while AvatarStroke and AvatarStroke.Parent do
        for i = 0, 1, 0.05 do
            if AvatarStroke and AvatarStroke.Parent then
                AvatarStroke.Transparency = 0.2 + (math.sin(i * math.pi * 2) * 0.3)
            end
            task.wait(0.05)
        end
    end
end)

local AvatarImage = Instance.new("ImageLabel")
AvatarImage.Size = UDim2.new(1, -8, 1, -8)
AvatarImage.Position = UDim2.new(0, 4, 0, 4)
AvatarImage.BackgroundTransparency = 1
AvatarImage.Image = Players:GetUserThumbnailAsync(LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)
AvatarImage.ZIndex = 1002
AvatarImage.Parent = AvatarFrame

local AvatarImageCorner = Instance.new("UICorner")
AvatarImageCorner.CornerRadius = UDim.new(0, 71)
AvatarImageCorner.Parent = AvatarImage

-- Username below avatar
local UsernameText = Instance.new("TextLabel")
UsernameText.Size = UDim2.new(0, 400, 0, 40)
UsernameText.Position = UDim2.new(0.5, -200, 0.55, 0)
UsernameText.BackgroundTransparency = 1
UsernameText.Text = "@" .. LocalPlayer.Name
UsernameText.TextColor3 = Color3.fromRGB(255, 255, 255)
UsernameText.TextSize = 28
UsernameText.Font = Enum.Font.GothamBold
UsernameText.TextTransparency = 0
UsernameText.ZIndex = 1001
UsernameText.Parent = LoadingFrame

-- Loading text
local LoadingText = Instance.new("TextLabel")
LoadingText.Size = UDim2.new(0, 400, 0, 50)
LoadingText.Position = UDim2.new(0.5, -200, 0.65, 0)
LoadingText.BackgroundTransparency = 1
LoadingText.Text = "Loading..."
LoadingText.TextColor3 = Color3.fromRGB(0, 150, 255)
LoadingText.TextSize = 24
LoadingText.Font = Enum.Font.GothamBold
LoadingText.TextTransparency = 0
LoadingText.ZIndex = 1001
LoadingText.Parent = LoadingFrame

-- Credits
local CreditsText = Instance.new("TextLabel")
CreditsText.Size = UDim2.new(0, 500, 0, 40)
CreditsText.Position = UDim2.new(0.5, -250, 0.75, 0)
CreditsText.BackgroundTransparency = 1
CreditsText.Text = "ScriptHouse 2.0"
CreditsText.TextColor3 = Color3.fromRGB(180, 180, 180)
CreditsText.TextSize = 18
CreditsText.Font = Enum.Font.Gotham
CreditsText.TextTransparency = 0
CreditsText.ZIndex = 1001
CreditsText.Parent = LoadingFrame

-- Loading dots animation
task.spawn(function()
    local dots = {"Loading.", "Loading..", "Loading..."}
    local index = 1
    while LoadingFrame.Parent and LoadingText.TextTransparency < 0.9 do
        LoadingText.Text = dots[index]
        index = index + 1
        if index > 3 then index = 1 end
        task.wait(0.4)
    end
end)

-- Fade out after 3 seconds
task.spawn(function()
    task.wait(3)
    
    -- Fade out animation
    local fadeInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    
    local frameTween = TweenService:Create(LoadingFrame, fadeInfo, {BackgroundTransparency = 1})
    local textTween = TweenService:Create(LoadingText, fadeInfo, {TextTransparency = 1})
    local creditsTween = TweenService:Create(CreditsText, fadeInfo, {TextTransparency = 1})
    local usernameTween = TweenService:Create(UsernameText, fadeInfo, {TextTransparency = 1})
    
    frameTween:Play()
    textTween:Play()
    creditsTween:Play()
    usernameTween:Play()
    
    frameTween.Completed:Connect(function()
        LoadingGui:Destroy()
    end)
end)

-- ============================================
-- WAIT FOR LOADING TO COMPLETE
-- ============================================
task.wait(3.2)

-- ============================================
-- UTILITY FUNCTIONS
-- ============================================

local function _fireproximityprompt(prompt)
    if prompt and prompt:IsA("ProximityPrompt") then
        fireproximityprompt(prompt)
    end
end

function FastTP(input)
    local char = LocalPlayer.Character
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    local humanoid = char and char:FindFirstChild("Humanoid")

    if not hrp or not humanoid then return end

    local destinationCFrame

    if typeof(input) == "Vector3" then
        destinationCFrame = CFrame.new(input)
    elseif typeof(input) == "CFrame" then
        destinationCFrame = input
    else
        return
    end

    getgenv().SwimMethod = true
    humanoid:ChangeState(0)
    repeat task.wait(0.0001) until not LocalPlayer:GetAttribute("LastACPos")
    hrp.CFrame = destinationCFrame
end

getgenv().Teleportt = function(CF)
    local player = LocalPlayer
    if not player.Character then return end

    local character = player.Character
    local humanoid = character:FindFirstChild("Humanoid")
    local hrp = character:FindFirstChild("HumanoidRootPart")

    if not humanoid or not hrp then return end

    humanoid:ChangeState(0)

    if player:GetAttribute("LastACPos") ~= nil then
        repeat task.wait() until not player:GetAttribute("LastACPos")
    end

    hrp.CFrame = CF
    task.wait()
    humanoid:ChangeState(2)

    return true
end

getgenv().Teleport = function(CF)
    if not LocalPlayer.Character then return end
    local hum = LocalPlayer.Character:FindFirstChild("Humanoid")
    local hrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")

    getgenv().SwimMethod = true

    if not hum or not hrp then return end
    hum.WalkSpeed = 0
    hum.JumpPower = 0
    hum.AutoRotate = false
    task.wait(0.5)

    hum:ChangeState(0)
    repeat task.wait() until not LocalPlayer:GetAttribute("LastACPos")

    hrp.CFrame = CF

    task.wait(0.5)
    hum:ChangeState(2)
    hum.WalkSpeed = 16
    hum.JumpPower = 50
    hum.AutoRotate = true

    getgenv().SwimMethod = false

    task.wait()
    hrp.Anchored = false
    hum.PlatformStand = false

    return true
end

-- ============================================
-- INSTANT INTERACTION SETUP
-- ============================================
local function enableInstantInteraction()
    for _, v in ipairs(workspace:GetDescendants()) do
        if v:IsA("ProximityPrompt") then
            v.HoldDuration = 0
        end
    end
    
    if InstantInteractionConnection then
        InstantInteractionConnection:Disconnect()
    end
    
    InstantInteractionConnection = workspace.DescendantAdded:Connect(function(v)
        if v:IsA("ProximityPrompt") and InstantInteraction then
            v.HoldDuration = 0
        end
    end)
end

local function disableInstantInteraction()
    if InstantInteractionConnection then
        InstantInteractionConnection:Disconnect()
        InstantInteractionConnection = nil
    end
end

-- ============================================
-- INSTANT RESPAWN FUNCTION
-- ============================================
local function SetInstantRespawn(state)
    InstantRespawnEnabled = state
    
    if state then
        task.spawn(function()
            while InstantRespawnEnabled do
                local character = game:GetService("Players").LocalPlayer.Character
                if character and character:FindFirstChild("Humanoid") then
                    if character.Humanoid.Health <= 0 then
                        task.wait(0.1)  
                        game:GetService("ReplicatedStorage").RespawnRE:FireServer()
                    end
                end
                task.wait(0.1) 
            end
        end)
    end
end

-- ============================================
-- GUN MODIFICATION FUNCTIONS
-- ============================================

-- Scan for weapon tables in game memory
task.spawn(function()
    while true do
        local found = {}
        for _, obj in ipairs(getgc(true)) do
            if typeof(obj) == 'table' and rawget(obj, 'FireRate') then
                table.insert(found, obj)
            end
        end
        WeaponTables = found
        task.wait(5)
    end
end)

-- Apply gun modifications continuously
task.spawn(function()
    while true do
        for _, weapon in ipairs(WeaponTables) do
            pcall(function()
                -- Always Automatic
                if AlwaysAutomatic then
                    rawset(weapon, 'Auto', true)
                    rawset(weapon, 'FireMode', 'Auto')
                    rawset(weapon, 'BurstAmount', 1)
                    rawset(weapon, 'ShotsPerBurst', 1)
                end

                -- No Recoil
                if NoRecoil then
                    rawset(weapon, 'CameraRecoilingEnabled', false)
                    rawset(weapon, 'Recoil', 0)
                end

                -- No Spread
                if NoSpread then
                    rawset(weapon, 'Accuracy', 0)
                end

                -- Fire Rate Boost
                if FireRateBoost then
                    rawset(weapon, 'FireRate', 0.01)
                    rawset(weapon, 'FireAnimationSpeed', 100)
                end

                -- Infinite Ammo
                if InfiniteAmmo then
                    rawset(weapon, 'LimitedAmmoEnabled', false)
                    rawset(weapon, 'MaxAmmo', 10000)
                    rawset(weapon, 'AmmoPerMag', 10000)
                    rawset(weapon, 'Ammo', 10000)
                end

                -- Infinite Damage
                if InfiniteDamage then
                    rawset(weapon, 'BaseDamage', 9e9)
                end
            end)
        end
        task.wait(0.3)
    end
end)

-- ============================================
-- ESP FUNCTIONS
-- ============================================

local function createESP(object, isPlayer)
    if ESPObjects[object] then return end
    
    local billboardGui = Instance.new("BillboardGui")
    billboardGui.Name = "ESP"
    billboardGui.AlwaysOnTop = true
    billboardGui.Size = UDim2.new(0, 200, 0, 50)
    billboardGui.StudsOffset = Vector3.new(0, 3, 0)
    billboardGui.Parent = object
    
    local nameLabel = Instance.new("TextLabel")
    nameLabel.Size = UDim2.new(1, 0, 0.5, 0)
    nameLabel.BackgroundTransparency = 1
    nameLabel.TextColor3 = Color3.fromRGB(0, 150, 255)
    nameLabel.TextSize = 14
    nameLabel.Font = Enum.Font.GothamBold
    nameLabel.TextStrokeTransparency = 0.5
    nameLabel.Parent = billboardGui
    
    local distanceLabel = Instance.new("TextLabel")
    distanceLabel.Size = UDim2.new(1, 0, 0.5, 0)
    distanceLabel.Position = UDim2.new(0, 0, 0.5, 0)
    distanceLabel.BackgroundTransparency = 1
    distanceLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    distanceLabel.TextSize = 12
    distanceLabel.Font = Enum.Font.Gotham
    distanceLabel.TextStrokeTransparency = 0.5
    distanceLabel.Parent = billboardGui
    
    local highlight = Instance.new("Highlight")
    highlight.Name = "ESPHighlight"
    highlight.FillColor = Color3.fromRGB(0, 150, 255)
    highlight.OutlineColor = Color3.fromRGB(0, 150, 255)
    highlight.FillTransparency = 0.7
    highlight.OutlineTransparency = 0
    highlight.Parent = object
    
    ESPObjects[object] = {
        BillboardGui = billboardGui,
        NameLabel = nameLabel,
        DistanceLabel = distanceLabel,
        Highlight = highlight,
        IsPlayer = isPlayer
    }
    
    task.spawn(function()
        while ESPObjects[object] and object.Parent do
            if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
                local distance = (object.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude
                
                if NPCNames or (isPlayer and PlayerESP) then
                    nameLabel.Text = object.Parent.Name
                    nameLabel.Visible = true
                else
                    nameLabel.Visible = false
                end
                
                if NPCDistance or (isPlayer and PlayerESP) then
                    distanceLabel.Text = string.format("%.1f studs", distance)
                    distanceLabel.Visible = true
                else
                    distanceLabel.Visible = false
                end
                
                if NPCBoxes or (isPlayer and PlayerESP) then
                    highlight.Enabled = true
                else
                    highlight.Enabled = false
                end
            end
            task.wait(0.1)
        end
    end)
end

local function removeESP(object)
    if ESPObjects[object] then
        if ESPObjects[object].BillboardGui then
            ESPObjects[object].BillboardGui:Destroy()
        end
        if ESPObjects[object].Highlight then
            ESPObjects[object].Highlight:Destroy()
        end
        ESPObjects[object] = nil
    end
end

local function clearAllESP()
    for object, _ in pairs(ESPObjects) do
        removeESP(object)
    end
end

local function updateESP()
    clearAllESP()
    
    if not ESPEnabled then return end
    
    if PlayerESP then
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= LocalPlayer and player.Character then
                local hrp = player.Character:FindFirstChild("HumanoidRootPart")
                if hrp then
                    createESP(hrp, true)
                end
            end
        end
    end
    
    if NPCBoxes or NPCNames or NPCDistance or NPCHealth then
        for _, npc in ipairs(workspace:GetChildren()) do
            if npc:FindFirstChild("Humanoid") and npc:FindFirstChild("HumanoidRootPart") and not Players:GetPlayerFromCharacter(npc) then
                createESP(npc.HumanoidRootPart, false)
            end
        end
    end
end

-- ============================================
-- ICE FRUIT FUNCTIONS
-- ============================================

local function GetFruitCup()
    for _, item in ipairs(LocalPlayer.Backpack:GetChildren()) do
        if item.Name == "Ice-Fruit Cupz" then
            return true, item
        end
    end
    for _, item in ipairs(LocalPlayer.Character:GetChildren()) do
        if item.Name == "Ice-Fruit Cupz" then
            return true, item
        end
    end
    return false, nil
end

local function FreezeCharacter()
    local char = LocalPlayer.Character
    if not char then return end

    local hum = char:FindFirstChild("Humanoid")
    local hrp = char:FindFirstChild("HumanoidRootPart")

    if hum then
        hum.WalkSpeed = 0
        hum.JumpPower = 0
        hum.AutoRotate = false
    end

    if hrp then
        hrp.Anchored = true
    end
end

local function UnfreezeCharacter()
    local char = LocalPlayer.Character
    if not char then return end

    local hum = char:FindFirstChild("Humanoid")
    local hrp = char:FindFirstChild("HumanoidRootPart")

    if hum then
        hum.WalkSpeed = 16
        hum.JumpPower = 50
        hum.AutoRotate = true
    end

    if hrp then
        hrp.Anchored = false
    end
end

local function IceFruitSell()
    local Found, Cup = GetFruitCup()

    if Cup and Found then
        local OLDCFrame = LocalPlayer.Character.HumanoidRootPart.CFrame

        if Cup.Parent == LocalPlayer.Backpack then
            LocalPlayer.Character.Humanoid:EquipTool(Cup)
            task.wait(1)
        end

        FastTP(Workspace["IceFruit Sell"].CFrame)
        task.wait(0.5)

        for i = 1, 1900 do
            task.spawn(function()
                _fireproximityprompt(Workspace["IceFruit Sell"].ProximityPrompt)
            end)
        end

        Teleportt(OLDCFrame)
    else
        local OLDCFrame = LocalPlayer.Character.HumanoidRootPart.CFrame

        local Itemz = {"FijiWater", "FreshWater", "Ice-Fruit Bag", "Ice-Fruit Cupz"}
        local Stove

        for _, v in Workspace.CookingPots:GetChildren() do
            if v:IsA("Model") then
                local Prompt = v:FindFirstChildWhichIsA("ProximityPrompt", true)
                if Prompt and Prompt.ActionText == "Turn On" and Prompt.Enabled then
                    Stove = v
                    break
                end
            end
        end

        for _, item in Itemz do
            if not LocalPlayer.Backpack:FindFirstChild(item) then
                ReplicatedStorage.ExoticShopRemote:InvokeServer(item)
                task.wait(0.1)
            end
        end

        for _, item in Itemz do
            if not LocalPlayer.Backpack:FindFirstChild(item) then
                return
            end
        end

        Teleportt(Stove.CookPart.CFrame)
        task.wait(1)
        FreezeCharacter()

        fireproximityprompt(Stove:FindFirstChildWhichIsA("ProximityPrompt", true))
        task.wait(2)

        for _, item in {"FijiWater", "FreshWater", "Ice-Fruit Bag"} do
            LocalPlayer.Character.Humanoid:EquipTool(LocalPlayer.Backpack[item])
            task.wait(1)
            fireproximityprompt(Stove:FindFirstChildWhichIsA("ProximityPrompt", true))
            task.wait(3)
        end

        repeat task.wait() until Stove.CookPart.Steam.LoadUI.Enabled == false

        LocalPlayer.Character.Humanoid:EquipTool(LocalPlayer.Backpack["Ice-Fruit Cupz"])
        task.wait(1)
        fireproximityprompt(Stove:FindFirstChildWhichIsA("ProximityPrompt", true))

        task.wait(3)
        UnfreezeCharacter()

        Teleportt(Workspace["IceFruit Sell"].CFrame)
        task.wait(1)
        FreezeCharacter()

        Workspace["IceFruit Sell"].ProximityPrompt.HoldDuration = 0

        for i = 1, 1900 do
            task.spawn(function()
                _fireproximityprompt(Workspace["IceFruit Sell"].ProximityPrompt)
            end)
        end

        UnfreezeCharacter()
        FastTP(OLDCFrame)
    end
end

-- ============================================
-- AUTO CLEAN MONEY FUNCTIONS
-- ============================================

local function GetGoodCleaner()
    local CounterInstance

    for Index, Value in Workspace["1# Map"]:GetChildren() do
        if Value:FindFirstChild("CounterM") then
            CounterInstance = Value
        end
    end

    for Index, Value in next, {Workspace.CounterBag:GetChildren(), CounterInstance:GetChildren()} do
        for _Index, _Value in Value do
            if _Value:FindFirstChild("CashPrompt", true) and _Value:FindFirstChild("CashPrompt", true).Enabled and _Value:FindFirstChild("CashPrompt", true).ObjectText == "Count Bread" and _Value:FindFirstChild("GrabPrompt", true) and not _Value:FindFirstChild("GrabPrompt", true).Enabled then
                return _Value
            end
        end
    end
end

local function CleanMoney()
    local character = LocalPlayer.Character
    local humanoid = character and character:FindFirstChild("Humanoid")

    if not LocalPlayer.stored.FilthyStack or LocalPlayer.stored.FilthyStack.Value == 0 then
        return
    end

    if not character or not character:FindFirstChild("HumanoidRootPart") or not humanoid or humanoid.Health == 0 then
        return
    end

    local Cleaner = GetGoodCleaner()
    if not Cleaner then
        return
    end

    local OldCF = character.HumanoidRootPart.CFrame

    FastTP(Cleaner.WorldPivot)
    task.wait(0.4)
    fireproximityprompt(Cleaner:FindFirstChild("CashPrompt", true))

    repeat task.wait() until Cleaner:FindFirstChild("On", true).Color == Color3.fromRGB(74,156,69)
    task.wait(0.5)
    fireproximityprompt(Cleaner:FindFirstChild("CashPrompt", true))
    task.wait(0.25)

    FastTP(Cleaner.WorldPivot)
    task.wait(0.4)

    repeat task.wait() until LocalPlayer.Backpack:FindFirstChild("MoneyReady")
    humanoid:EquipTool(LocalPlayer.Backpack["MoneyReady"])

    repeat
        fireproximityprompt(Cleaner:FindFirstChild("GrabPrompt", true))
        task.wait(3)
    until not character:FindFirstChild("MoneyReady")

    repeat task.wait() until LocalPlayer.Backpack:FindFirstChild("BagOfMoney")
    FastTP(CFrame.new(-222.29, 283.81, -1200.90))
    humanoid:EquipTool(LocalPlayer.Backpack["BagOfMoney"])
    task.wait(1)
    fireproximityprompt(Workspace.ATMMoney.Prompt)

    FastTP(OldCF)
end

-- ============================================
-- GUI + ENHANCED PARTICLES
-- ============================================

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "ScriptHouse 2.0"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

-- Enhanced Falling Particles
local ParticleFrame = Instance.new("Frame")
ParticleFrame.Name = "Particles"
ParticleFrame.Size = UDim2.new(1, 0, 1, 0)
ParticleFrame.BackgroundTransparency = 1
ParticleFrame.ZIndex = -10
ParticleFrame.Parent = ScreenGui

-- Create multiple particle emitters for layered effect
for i = 1, 3 do
    local particle = Instance.new("ParticleEmitter")
    particle.Texture = "rbxassetid://114102372151784"
    
    -- Vary colors for depth
    if i == 1 then
        particle.Color = ColorSequence.new(Color3.new(0.2, 0.5, 1))
    elseif i == 2 then
        particle.Color = ColorSequence.new(Color3.new(0.3, 0.6, 1))
    else
        particle.Color = ColorSequence.new(Color3.new(0.4, 0.7, 1))
    end
    
    particle.Lifetime = NumberRange.new(10 + i*2, 16 + i*2)
    particle.Rate = 25 + i*5
    particle.RotSpeed = NumberRange.new(-50, 50)
    particle.Rotation = NumberRange.new(0, 360)
    particle.Size = NumberSequence.new(0.3 + i*0.1, 0.3 + i*0.1)
    particle.Speed = NumberRange.new(18 + i*3, 28 + i*3)
    particle.SpreadAngle = Vector2.new(0, 360)
    particle.VelocitySpread = 360
    particle.Acceleration = Vector3.new(0, -12 - i*2, 0)
    particle.Drag = 1.5 + i*0.2
    particle.LightEmission = 0.3 + i*0.1
    particle.LightInfluence = 0
    particle.Transparency = NumberSequence.new(0.3 + i*0.2, 0.9)
    particle.Enabled = true
    particle.ZOffset = -5 - i
    particle.Parent = ParticleFrame
end

-- Main GUI container - SQUARE
local GradientContainer = Instance.new("Frame")
GradientContainer.Name = "GradientContainer"
GradientContainer.Size = UDim2.new(315, 195)
GradientContainer.Position = UDim2.new(0.5, -210, 0.5, -240)
GradientContainer.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
GradientContainer.BorderSizePixel = 0
GradientContainer.Visible = false
GradientContainer.Active = true
GradientContainer.Draggable = true
GradientContainer.ClipsDescendants = true
GradientContainer.Parent = ScreenGui

local GradientCorner = Instance.new("UICorner")
GradientCorner.CornerRadius = UDim.new(0, 12)
GradientCorner.Parent = GradientContainer

-- BLUE NEON STROKE
local GradientBorder = Instance.new("UIStroke")
GradientBorder.Thickness = 3
GradientBorder.Transparency = 0
GradientBorder.Color = Color3.fromRGB(0, 150, 255)
GradientBorder.Parent = GradientContainer

-- Animate the blue neon glow
task.spawn(function()
    while GradientContainer and GradientContainer.Parent do
        for i = 0, 1, 0.05 do
            if GradientBorder and GradientBorder.Parent then
                GradientBorder.Transparency = 0.2 + (math.sin(i * math.pi * 2) * 0.25)
            end
            task.wait(0.05)
        end
    end
end)

-- Background gradient overlay
local BackgroundGradient = Instance.new("Frame")
BackgroundGradient.Size = UDim2.new(1,0,1,0)
BackgroundGradient.BackgroundTransparency = 0.3
BackgroundGradient.BorderSizePixel = 0
BackgroundGradient.Parent = GradientContainer

local BGCorner = Instance.new("UICorner")
BGCorner.CornerRadius = UDim.new(0, 12)
BGCorner.Parent = BackgroundGradient

local BGGradient = Instance.new("UIGradient")
BGGradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(20, 25, 40)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(10, 15, 25))
}
BGGradient.Rotation = 135
BGGradient.Parent = BackgroundGradient

-- Title Bar
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 45)
TitleBar.BackgroundTransparency = 1
TitleBar.ZIndex = 10
TitleBar.Parent = GradientContainer

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -50, 1, 0)
Title.Position = UDim2.new(0, 15, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "ScriptHouse 2.0"
Title.TextColor3 = Color3.fromRGB(0, 150, 255)
Title.TextSize = 24
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.ZIndex = 11
Title.Parent = TitleBar

local CloseButton = Instance.new("TextButton")
CloseButton.Size = UDim2.new(0, 35, 0, 35)
CloseButton.Position = UDim2.new(1, -42, 0, 5)
CloseButton.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
CloseButton.Text = "✕"
CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseButton.TextSize = 18
CloseButton.Font = Enum.Font.GothamBold
CloseButton.BorderSizePixel = 0
CloseButton.ZIndex = 11
CloseButton.Parent = TitleBar

local CloseCorner = Instance.new("UICorner")
CloseCorner.CornerRadius = UDim.new(0, 8)
CloseCorner.Parent = CloseButton

-- Content Frame
local ContentFrame = Instance.new("ScrollingFrame")
ContentFrame.Size = UDim2.new(1, -24, 1, -115)
ContentFrame.Position = UDim2.new(0, 12, 0, 50)
ContentFrame.BackgroundTransparency = 1
ContentFrame.ScrollBarThickness = 4
ContentFrame.ScrollBarImageColor3 = Color3.fromRGB(0, 150, 255)
ContentFrame.CanvasSize = UDim2.new(0, 0, 0, 500)
ContentFrame.ZIndex = 10
ContentFrame.Parent = GradientContainer

local ContentLayout = Instance.new("UIListLayout")
ContentLayout.SortOrder = Enum.SortOrder.LayoutOrder
ContentLayout.Padding = UDim.new(0, 10)
ContentLayout.Parent = ContentFrame

ContentLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    ContentFrame.CanvasSize = UDim2.new(0, 0, 0, ContentLayout.AbsoluteContentSize.Y + 20)
end)

-- ============================================
-- USER PROFILE AT BOTTOM
-- ============================================

local ProfileFrame = Instance.new("Frame")
ProfileFrame.Size = UDim2.new(1, 0, 0, 55)
ProfileFrame.Position = UDim2.new(0, 0, 1, -55)
ProfileFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 23)
ProfileFrame.BorderSizePixel = 0
ProfileFrame.ZIndex = 10
ProfileFrame.Parent = GradientContainer

local ProfileCorner = Instance.new("UICorner")
ProfileCorner.CornerRadius = UDim.new(0, 0)
ProfileCorner.Parent = ProfileFrame

local ProfileTopStroke = Instance.new("Frame")
ProfileTopStroke.Size = UDim2.new(1, 0, 0, 2)
ProfileTopStroke.Position = UDim2.new(0, 0, 0, 0)
ProfileTopStroke.BackgroundColor3 = Color3.fromRGB(0, 150, 255)
ProfileTopStroke.BorderSizePixel = 0
ProfileTopStroke.ZIndex = 11
ProfileTopStroke.Parent = ProfileFrame

-- Avatar in bottom left
local BottomAvatarFrame = Instance.new("Frame")
BottomAvatarFrame.Size = UDim2.new(0, 40, 0, 40)
BottomAvatarFrame.Position = UDim2.new(0, 8, 0.5, -20)
BottomAvatarFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
BottomAvatarFrame.BorderSizePixel = 0
BottomAvatarFrame.ZIndex = 11
BottomAvatarFrame.Parent = ProfileFrame

local BottomAvatarCorner = Instance.new("UICorner")
BottomAvatarCorner.CornerRadius = UDim.new(0, 20)
BottomAvatarCorner.Parent = BottomAvatarFrame

local BottomAvatarStroke = Instance.new("UIStroke")
BottomAvatarStroke.Thickness = 2
BottomAvatarStroke.Color = Color3.fromRGB(0, 150, 255)
BottomAvatarStroke.Transparency = 0.4
BottomAvatarStroke.Parent = BottomAvatarFrame

local BottomAvatarImage = Instance.new("ImageLabel")
BottomAvatarImage.Size = UDim2.new(1, -4, 1, -4)
BottomAvatarImage.Position = UDim2.new(0, 2, 0, 2)
BottomAvatarImage.BackgroundTransparency = 1
BottomAvatarImage.Image = Players:GetUserThumbnailAsync(LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)
BottomAvatarImage.ZIndex = 12
BottomAvatarImage.Parent = BottomAvatarFrame

local BottomAvatarImageCorner = Instance.new("UICorner")
BottomAvatarImageCorner.CornerRadius = UDim.new(0, 18)
BottomAvatarImageCorner.Parent = BottomAvatarImage

-- Username next to avatar
local BottomUsernameLabel = Instance.new("TextLabel")
BottomUsernameLabel.Size = UDim2.new(0, 200, 0, 20)
BottomUsernameLabel.Position = UDim2.new(0, 55, 0, 10)
BottomUsernameLabel.BackgroundTransparency = 1
BottomUsernameLabel.Text = LocalPlayer.DisplayName
BottomUsernameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
BottomUsernameLabel.TextSize = 14
BottomUsernameLabel.Font = Enum.Font.GothamBold
BottomUsernameLabel.TextXAlignment = Enum.TextXAlignment.Left
BottomUsernameLabel.ZIndex = 11
BottomUsernameLabel.Parent = ProfileFrame

local BottomUsernameTag = Instance.new("TextLabel")
BottomUsernameTag.Size = UDim2.new(0, 200, 0, 16)
BottomUsernameTag.Position = UDim2.new(0, 55, 0, 28)
BottomUsernameTag.BackgroundTransparency = 1
BottomUsernameTag.Text = "@" .. LocalPlayer.Name
BottomUsernameTag.TextColor3 = Color3.fromRGB(150, 150, 150)
BottomUsernameTag.TextSize = 11
BottomUsernameTag.Font = Enum.Font.Gotham
BottomUsernameTag.TextXAlignment = Enum.TextXAlignment.Left
BottomUsernameTag.ZIndex = 11
BottomUsernameTag.Parent = ProfileFrame

-- ============================================
-- INSTANT INTERACTION SECTION
-- ============================================

local InstantSection = Instance.new("Frame")
InstantSection.Size = UDim2.new(1, 0, 0, 88)
InstantSection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
InstantSection.BorderSizePixel = 0
InstantSection.ZIndex = 10
InstantSection.Parent = ContentFrame

local InstantCorner = Instance.new("UICorner")
InstantCorner.CornerRadius = UDim.new(0, 10)
InstantCorner.Parent = InstantSection

local InstantStroke = Instance.new("UIStroke")
InstantStroke.Color = Color3.fromRGB(40, 40, 50)
InstantStroke.Thickness = 1
InstantStroke.Transparency = 0.5
InstantStroke.Parent = InstantSection

local InstantTitle = Instance.new("TextLabel")
InstantTitle.Size = UDim2.new(1, -16, 0, 24)
InstantTitle.Position = UDim2.new(0, 8, 0, 4)
InstantTitle.BackgroundTransparency = 1
InstantTitle.Text = "⚡ Instant Interaction"
InstantTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
InstantTitle.TextSize = 15
InstantTitle.Font = Enum.Font.GothamBold
InstantTitle.TextXAlignment = Enum.TextXAlignment.Left
InstantTitle.ZIndex = 11
InstantTitle.Parent = InstantSection

local InstantStatus = Instance.new("TextLabel")
InstantStatus.Size = UDim2.new(1, -16, 0, 16)
InstantStatus.Position = UDim2.new(0, 8, 0, 28)
InstantStatus.BackgroundTransparency = 1
InstantStatus.Text = "No hold time on proximity prompts"
InstantStatus.TextColor3 = Color3.fromRGB(180, 180, 180)
InstantStatus.TextSize = 11
InstantStatus.Font = Enum.Font.Gotham
InstantStatus.TextXAlignment = Enum.TextXAlignment.Left
InstantStatus.ZIndex = 11
InstantStatus.Parent = InstantSection

local InstantToggle = Instance.new("TextButton")
InstantToggle.Size = UDim2.new(1, -16, 0, 32)
InstantToggle.Position = UDim2.new(0, 8, 0, 48)
InstantToggle.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
InstantToggle.Text = "START"
InstantToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
InstantToggle.TextSize = 13
InstantToggle.Font = Enum.Font.GothamBold
InstantToggle.BorderSizePixel = 0
InstantToggle.ZIndex = 11
InstantToggle.Parent = InstantSection

local InstantToggleCorner = Instance.new("UICorner")
InstantToggleCorner.CornerRadius = UDim.new(0, 6)
InstantToggleCorner.Parent = InstantToggle

local InstantToggleStroke = Instance.new("UIStroke")
InstantToggleStroke.Color = Color3.fromRGB(0, 150, 255)
InstantToggleStroke.Thickness = 2
InstantToggleStroke.Transparency = 0.6
InstantToggleStroke.Parent = InstantToggle

-- ============================================
-- FAST RESPAWN SECTION
-- ============================================

local FastRespawnSection = Instance.new("Frame")
FastRespawnSection.Size = UDim2.new(1, 0, 0, 88)
FastRespawnSection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
FastRespawnSection.BorderSizePixel = 0
FastRespawnSection.ZIndex = 10
FastRespawnSection.Parent = ContentFrame

local FastRespawnCorner = Instance.new("UICorner")
FastRespawnCorner.CornerRadius = UDim.new(0, 10)
FastRespawnCorner.Parent = FastRespawnSection

local FastRespawnStroke = Instance.new("UIStroke")
FastRespawnStroke.Color = Color3.fromRGB(40, 40, 50)
FastRespawnStroke.Thickness = 1
FastRespawnStroke.Transparency = 0.5
FastRespawnStroke.Parent = FastRespawnSection

local FastRespawnTitle = Instance.new("TextLabel")
FastRespawnTitle.Size = UDim2.new(1, -16, 0, 24)
FastRespawnTitle.Position = UDim2.new(0, 8, 0, 4)
FastRespawnTitle.BackgroundTransparency = 1
FastRespawnTitle.Text = "⚡ Fast Respawn"
FastRespawnTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
FastRespawnTitle.TextSize = 15
FastRespawnTitle.Font = Enum.Font.GothamBold
FastRespawnTitle.TextXAlignment = Enum.TextXAlignment.Left
FastRespawnTitle.ZIndex = 11
FastRespawnTitle.Parent = FastRespawnSection

local FastRespawnStatus = Instance.new("TextLabel")
FastRespawnStatus.Size = UDim2.new(1, -16, 0, 16)
FastRespawnStatus.Position = UDim2.new(0, 8, 0, 28)
FastRespawnStatus.BackgroundTransparency = 1
FastRespawnStatus.Text = "Instantly respawn on death"
FastRespawnStatus.TextColor3 = Color3.fromRGB(180, 180, 180)
FastRespawnStatus.TextSize = 11
FastRespawnStatus.Font = Enum.Font.Gotham
FastRespawnStatus.TextXAlignment = Enum.TextXAlignment.Left
FastRespawnStatus.ZIndex = 11
FastRespawnStatus.Parent = FastRespawnSection

local FastRespawnToggle = Instance.new("TextButton")
FastRespawnToggle.Size = UDim2.new(1, -16, 0, 32)
FastRespawnToggle.Position = UDim2.new(0, 8, 0, 48)
FastRespawnToggle.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
FastRespawnToggle.Text = "START"
FastRespawnToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
FastRespawnToggle.TextSize = 13
FastRespawnToggle.Font = Enum.Font.GothamBold
FastRespawnToggle.BorderSizePixel = 0
FastRespawnToggle.ZIndex = 11
FastRespawnToggle.Parent = FastRespawnSection

local FastRespawnToggleCorner = Instance.new("UICorner")
FastRespawnToggleCorner.CornerRadius = UDim.new(0, 6)
FastRespawnToggleCorner.Parent = FastRespawnToggle

local FastRespawnToggleStroke = Instance.new("UIStroke")
FastRespawnToggleStroke.Color = Color3.fromRGB(0, 150, 255)
FastRespawnToggleStroke.Thickness = 2
FastRespawnToggleStroke.Transparency = 0.6
FastRespawnToggleStroke.Parent = FastRespawnToggle

-- ============================================
-- AUTO MAX MONEY SECTION
-- ============================================

local MaxMoneySection = Instance.new("Frame")
MaxMoneySection.Size = UDim2.new(1, 0, 0, 88)
MaxMoneySection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
MaxMoneySection.BorderSizePixel = 0
MaxMoneySection.ZIndex = 10
MaxMoneySection.Parent = ContentFrame

local MaxMoneyCorner = Instance.new("UICorner")
MaxMoneyCorner.CornerRadius = UDim.new(0, 10)
MaxMoneyCorner.Parent = MaxMoneySection

local MaxMoneyStroke = Instance.new("UIStroke")
MaxMoneyStroke.Color = Color3.fromRGB(40, 40, 50)
MaxMoneyStroke.Thickness = 1
MaxMoneyStroke.Transparency = 0.5
MaxMoneyStroke.Parent = MaxMoneySection

local MaxMoneyTitle = Instance.new("TextLabel")
MaxMoneyTitle.Size = UDim2.new(1, -16, 0, 24)
MaxMoneyTitle.Position = UDim2.new(0, 8, 0, 4)
MaxMoneyTitle.BackgroundTransparency = 1
MaxMoneyTitle.Text = "💰 Auto Max Money"
MaxMoneyTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
MaxMoneyTitle.TextSize = 15
MaxMoneyTitle.Font = Enum.Font.GothamBold
MaxMoneyTitle.TextXAlignment = Enum.TextXAlignment.Left
MaxMoneyTitle.ZIndex = 11
MaxMoneyTitle.Parent = MaxMoneySection

local MaxMoneyStatus = Instance.new("TextLabel")
MaxMoneyStatus.Size = UDim2.new(1, -16, 0, 16)
MaxMoneyStatus.Position = UDim2.new(0, 8, 0, 28)
MaxMoneyStatus.BackgroundTransparency = 1
MaxMoneyStatus.Text = "Auto farm ice fruit for max money"
MaxMoneyStatus.TextColor3 = Color3.fromRGB(180, 180, 180)
MaxMoneyStatus.TextSize = 11
MaxMoneyStatus.Font = Enum.Font.Gotham
MaxMoneyStatus.TextXAlignment = Enum.TextXAlignment.Left
MaxMoneyStatus.ZIndex = 11
MaxMoneyStatus.Parent = MaxMoneySection

local MaxMoneyToggle = Instance.new("TextButton")
MaxMoneyToggle.Size = UDim2.new(1, -16, 0, 32)
MaxMoneyToggle.Position = UDim2.new(0, 8, 0, 48)
MaxMoneyToggle.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
MaxMoneyToggle.Text = "START"
MaxMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
MaxMoneyToggle.TextSize = 13
MaxMoneyToggle.Font = Enum.Font.GothamBold
MaxMoneyToggle.BorderSizePixel = 0
MaxMoneyToggle.ZIndex = 11
MaxMoneyToggle.Parent = MaxMoneySection

local MaxMoneyToggleCorner = Instance.new("UICorner")
MaxMoneyToggleCorner.CornerRadius = UDim.new(0, 6)
MaxMoneyToggleCorner.Parent = MaxMoneyToggle

local MaxMoneyToggleStroke = Instance.new("UIStroke")
MaxMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
MaxMoneyToggleStroke.Thickness = 2
MaxMoneyToggleStroke.Transparency = 0.6
MaxMoneyToggleStroke.Parent = MaxMoneyToggle

-- ============================================
-- AUTO CLEAN MONEY SECTION
-- ============================================

local CleanMoneySection = Instance.new("Frame")
CleanMoneySection.Size = UDim2.new(1, 0, 0, 88)
CleanMoneySection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
CleanMoneySection.BorderSizePixel = 0
CleanMoneySection.ZIndex = 10
CleanMoneySection.Parent = ContentFrame

local CleanMoneyCorner = Instance.new("UICorner")
CleanMoneyCorner.CornerRadius = UDim.new(0, 10)
CleanMoneyCorner.Parent = CleanMoneySection

local CleanMoneyStroke = Instance.new("UIStroke")
CleanMoneyStroke.Color = Color3.fromRGB(40, 40, 50)
CleanMoneyStroke.Thickness = 1
CleanMoneyStroke.Transparency = 0.5
CleanMoneyStroke.Parent = CleanMoneySection

local CleanMoneyTitle = Instance.new("TextLabel")
CleanMoneyTitle.Size = UDim2.new(1, -16, 0, 24)
CleanMoneyTitle.Position = UDim2.new(0, 8, 0, 4)
CleanMoneyTitle.BackgroundTransparency = 1
CleanMoneyTitle.Text = "💵 Auto Clean Money"
CleanMoneyTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
CleanMoneyTitle.TextSize = 15
CleanMoneyTitle.Font = Enum.Font.GothamBold
CleanMoneyTitle.TextXAlignment = Enum.TextXAlignment.Left
CleanMoneyTitle.ZIndex = 11
CleanMoneyTitle.Parent = CleanMoneySection

local CleanMoneyStatus = Instance.new("TextLabel")
CleanMoneyStatus.Size = UDim2.new(1, -16, 0, 16)
CleanMoneyStatus.Position = UDim2.new(0, 8, 0, 28)
CleanMoneyStatus.BackgroundTransparency = 1
CleanMoneyStatus.Text = "Auto clean dirty money"
CleanMoneyStatus.TextColor3 = Color3.fromRGB(180, 180, 180)
CleanMoneyStatus.TextSize = 11
CleanMoneyStatus.Font = Enum.Font.Gotham
CleanMoneyStatus.TextXAlignment = Enum.TextXAlignment.Left
CleanMoneyStatus.ZIndex = 11
CleanMoneyStatus.Parent = CleanMoneySection

local CleanMoneyToggle = Instance.new("TextButton")
CleanMoneyToggle.Size = UDim2.new(1, -16, 0, 32)
CleanMoneyToggle.Position = UDim2.new(0, 8, 0, 48)
CleanMoneyToggle.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
CleanMoneyToggle.Text = "START"
CleanMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
CleanMoneyToggle.TextSize = 13
CleanMoneyToggle.Font = Enum.Font.GothamBold
CleanMoneyToggle.BorderSizePixel = 0
CleanMoneyToggle.ZIndex = 11
CleanMoneyToggle.Parent = CleanMoneySection

local CleanMoneyToggleCorner = Instance.new("UICorner")
CleanMoneyToggleCorner.CornerRadius = UDim.new(0, 6)
CleanMoneyToggleCorner.Parent = CleanMoneyToggle

local CleanMoneyToggleStroke = Instance.new("UIStroke")
CleanMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
CleanMoneyToggleStroke.Thickness = 2
CleanMoneyToggleStroke.Transparency = 0.6
CleanMoneyToggleStroke.Parent = CleanMoneyToggle

-- ============================================
-- GUN MODS SECTION (DROPDOWN)
-- ============================================

local GunModsSection = Instance.new("Frame")
GunModsSection.Size = UDim2.new(1, 0, 0, 78)
GunModsSection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
GunModsSection.BorderSizePixel = 0
GunModsSection.ZIndex = 10
GunModsSection.Parent = ContentFrame

local GunModsCorner = Instance.new("UICorner")
GunModsCorner.CornerRadius = UDim.new(0, 10)
GunModsCorner.Parent = GunModsSection

local GunModsStroke = Instance.new("UIStroke")
GunModsStroke.Color = Color3.fromRGB(40, 40, 50)
GunModsStroke.Thickness = 1
GunModsStroke.Transparency = 0.5
GunModsStroke.Parent = GunModsSection

local GunModsTitle = Instance.new("TextLabel")
GunModsTitle.Size = UDim2.new(1, -16, 0, 24)
GunModsTitle.Position = UDim2.new(0, 8, 0, 4)
GunModsTitle.BackgroundTransparency = 1
GunModsTitle.Text = "🔫 GUN MODS"
GunModsTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
GunModsTitle.TextSize = 14
GunModsTitle.Font = Enum.Font.GothamBold
GunModsTitle.TextXAlignment = Enum.TextXAlignment.Left
GunModsTitle.ZIndex = 11
GunModsTitle.Parent = GunModsSection

local GunModsDropdown = Instance.new("TextButton")
GunModsDropdown.Size = UDim2.new(1, -16, 0, 36)
GunModsDropdown.Position = UDim2.new(0, 8, 0, 32)
GunModsDropdown.BackgroundColor3 = Color3.fromRGB(28, 28, 33)
GunModsDropdown.Text = "Select Gun Mod ▼"
GunModsDropdown.TextColor3 = Color3.fromRGB(200, 200, 200)
GunModsDropdown.TextSize = 12
GunModsDropdown.Font = Enum.Font.GothamBold
GunModsDropdown.BorderSizePixel = 0
GunModsDropdown.ZIndex = 11
GunModsDropdown.Parent = GunModsSection

local GunModsDropdownCorner = Instance.new("UICorner")
GunModsDropdownCorner.CornerRadius = UDim.new(0, 6)
GunModsDropdownCorner.Parent = GunModsDropdown

local GunModsList = Instance.new("ScrollingFrame")
GunModsList.Size = UDim2.new(1, -16, 0, 0)
GunModsList.Position = UDim2.new(0, 8, 0, 73)
GunModsList.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
GunModsList.BorderSizePixel = 0
GunModsList.ScrollBarThickness = 3
GunModsList.ScrollBarImageColor3 = Color3.fromRGB(0, 150, 255)
GunModsList.Visible = false
GunModsList.CanvasSize = UDim2.new(0, 0, 0, 0)
GunModsList.ZIndex = 11
GunModsList.Parent = GunModsSection

local GunModsListCorner = Instance.new("UICorner")
GunModsListCorner.CornerRadius = UDim.new(0, 6)
GunModsListCorner.Parent = GunModsList

local GunModsListLayout = Instance.new("UIListLayout")
GunModsListLayout.SortOrder = Enum.SortOrder.LayoutOrder
GunModsListLayout.Padding = UDim.new(0, 2)
GunModsListLayout.Parent = GunModsList

local GunModOptions = {
    {name = "∞ Infinite Ammo", var = "InfiniteAmmo"},
    {name = "⚡ Always Automatic", var = "AlwaysAutomatic"},
    {name = "🎯 No Recoil", var = "NoRecoil"},
    {name = "📐 No Spread", var = "NoSpread"},
    {name = "🔥 Fire Rate Boost", var = "FireRateBoost"},
    {name = "💀 Infinite Damage", var = "InfiniteDamage"},
}

GunModsListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    GunModsList.CanvasSize = UDim2.new(0, 0, 0, GunModsListLayout.AbsoluteContentSize.Y + 5)
end)

for i, option in ipairs(GunModOptions) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -8, 0, 28)
    btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
    btn.Text = option.name
    btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    btn.TextSize = 11
    btn.Font = Enum.Font.Gotham
    btn.BorderSizePixel = 0
    btn.ZIndex = 12
    btn.Parent = GunModsList

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 5)
    corner.Parent = btn

    btn.MouseEnter:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
        btn.TextColor3 = Color3.fromRGB(0, 150, 255)
    end)

    btn.MouseLeave:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
        btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    end)

    btn.MouseButton1Click:Connect(function()
        local old = btn.Text
        btn.Text = "Toggling..."
        task.spawn(function()
            if option.var == "InfiniteAmmo" then
                InfiniteAmmo = not InfiniteAmmo
                print("Infinite Ammo " .. (InfiniteAmmo and "enabled" or "disabled"))
            elseif option.var == "AlwaysAutomatic" then
                AlwaysAutomatic = not AlwaysAutomatic
                print("Always Automatic " .. (AlwaysAutomatic and "enabled" or "disabled"))
            elseif option.var == "NoRecoil" then
                NoRecoil = not NoRecoil
                print("No Recoil " .. (NoRecoil and "enabled" or "disabled"))
            elseif option.var == "NoSpread" then
                NoSpread = not NoSpread
                print("No Spread " .. (NoSpread and "enabled" or "disabled"))
            elseif option.var == "FireRateBoost" then
                FireRateBoost = not FireRateBoost
                print("Fire Rate Boost " .. (FireRateBoost and "enabled" or "disabled"))
            elseif option.var == "InfiniteDamage" then
                InfiniteDamage = not InfiniteDamage
                print("Infinite Damage " .. (InfiniteDamage and "enabled" or "disabled"))
            end
            
            task.wait(0.3)
            btn.Text = old
            GunModsList.Visible = false
            GunModsSection.Size = UDim2.new(1, 0, 0, 78)
            GunModsDropdown.Text = "Select Gun Mod ▼"
        end)
    end)
end

-- ============================================
-- VISUALS SECTION (ESP DROPDOWN)
-- ============================================

local VisualsSection = Instance.new("Frame")
VisualsSection.Size = UDim2.new(1, 0, 0, 78)
VisualsSection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
VisualsSection.BorderSizePixel = 0
VisualsSection.ZIndex = 10
VisualsSection.Parent = ContentFrame

local VisualsCorner = Instance.new("UICorner")
VisualsCorner.CornerRadius = UDim.new(0, 10)
VisualsCorner.Parent = VisualsSection

local VisualsStroke = Instance.new("UIStroke")
VisualsStroke.Color = Color3.fromRGB(40, 40, 50)
VisualsStroke.Thickness = 1
VisualsStroke.Transparency = 0.5
VisualsStroke.Parent = VisualsSection

local VisualsTitle = Instance.new("TextLabel")
VisualsTitle.Size = UDim2.new(1, -16, 0, 24)
VisualsTitle.Position = UDim2.new(0, 8, 0, 4)
VisualsTitle.BackgroundTransparency = 1
VisualsTitle.Text = "👁️ VISUALS"
VisualsTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
VisualsTitle.TextSize = 14
VisualsTitle.Font = Enum.Font.GothamBold
VisualsTitle.TextXAlignment = Enum.TextXAlignment.Left
VisualsTitle.ZIndex = 11
VisualsTitle.Parent = VisualsSection

local VisualsDropdown = Instance.new("TextButton")
VisualsDropdown.Size = UDim2.new(1, -16, 0, 36)
VisualsDropdown.Position = UDim2.new(0, 8, 0, 32)
VisualsDropdown.BackgroundColor3 = Color3.fromRGB(28, 28, 33)
VisualsDropdown.Text = "Select ESP Option ▼"
VisualsDropdown.TextColor3 = Color3.fromRGB(200, 200, 200)
VisualsDropdown.TextSize = 12
VisualsDropdown.Font = Enum.Font.GothamBold
VisualsDropdown.BorderSizePixel = 0
VisualsDropdown.ZIndex = 11
VisualsDropdown.Parent = VisualsSection

local VisualsDropdownCorner = Instance.new("UICorner")
VisualsDropdownCorner.CornerRadius = UDim.new(0, 6)
VisualsDropdownCorner.Parent = VisualsDropdown

local VisualsList = Instance.new("ScrollingFrame")
VisualsList.Size = UDim2.new(1, -16, 0, 0)
VisualsList.Position = UDim2.new(0, 8, 0, 73)
VisualsList.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
VisualsList.BorderSizePixel = 0
VisualsList.ScrollBarThickness = 3
VisualsList.ScrollBarImageColor3 = Color3.fromRGB(0, 150, 255)
VisualsList.Visible = false
VisualsList.CanvasSize = UDim2.new(0, 0, 0, 0)
VisualsList.ZIndex = 11
VisualsList.Parent = VisualsSection

local VisualsListCorner = Instance.new("UICorner")
VisualsListCorner.CornerRadius = UDim.new(0, 6)
VisualsListCorner.Parent = VisualsList

local VisualsListLayout = Instance.new("UIListLayout")
VisualsListLayout.SortOrder = Enum.SortOrder.LayoutOrder
VisualsListLayout.Padding = UDim.new(0, 2)
VisualsListLayout.Parent = VisualsList

local ESPOptions = {
    {name = "👥 Player ESP", var = "PlayerESP"},
}

VisualsListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    VisualsList.CanvasSize = UDim2.new(0, 0, 0, VisualsListLayout.AbsoluteContentSize.Y + 5)
end)

for i, option in ipairs(ESPOptions) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -8, 0, 28)
    btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
    btn.Text = option.name
    btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    btn.TextSize = 11
    btn.Font = Enum.Font.Gotham
    btn.BorderSizePixel = 0
    btn.ZIndex = 12
    btn.Parent = VisualsList

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 5)
    corner.Parent = btn

    btn.MouseEnter:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
        btn.TextColor3 = Color3.fromRGB(0, 150, 255)
    end)

    btn.MouseLeave:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
        btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    end)

    btn.MouseButton1Click:Connect(function()
        local old = btn.Text
        btn.Text = "Toggling..."
        task.spawn(function()
            if option.var == "PlayerESP" then
                PlayerESP = not PlayerESP
                ESPEnabled = PlayerESP
                if PlayerESP then
                    updateESP()
                else
                    clearAllESP()
                end
            end
            
            task.wait(0.3)
            btn.Text = old
            VisualsList.Visible = false
            VisualsSection.Size = UDim2.new(1, 0, 0, 78)
            VisualsDropdown.Text = "Select ESP Option ▼"
        end)
    end)
end

-- ============================================
-- TELEPORTS SECTION (EXPANDED)
-- ============================================

local TeleportSection = Instance.new("Frame")
TeleportSection.Size = UDim2.new(1, 0, 0, 78)
TeleportSection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
TeleportSection.BorderSizePixel = 0
TeleportSection.ZIndex = 10
TeleportSection.Parent = ContentFrame

local TeleportCorner = Instance.new("UICorner")
TeleportCorner.CornerRadius = UDim.new(0, 10)
TeleportCorner.Parent = TeleportSection

local TeleportStroke = Instance.new("UIStroke")
TeleportStroke.Color = Color3.fromRGB(40, 40, 50)
TeleportStroke.Thickness = 1
TeleportStroke.Transparency = 0.5
TeleportStroke.Parent = TeleportSection

local TeleportTitle = Instance.new("TextLabel")
TeleportTitle.Size = UDim2.new(1, -16, 0, 24)
TeleportTitle.Position = UDim2.new(0, 8, 0, 4)
TeleportTitle.BackgroundTransparency = 1
TeleportTitle.Text = "📍 TELEPORTS"
TeleportTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
TeleportTitle.TextSize = 14
TeleportTitle.Font = Enum.Font.GothamBold
TeleportTitle.TextXAlignment = Enum.TextXAlignment.Left
TeleportTitle.ZIndex = 11
TeleportTitle.Parent = TeleportSection

local TeleportDropdown = Instance.new("TextButton")
TeleportDropdown.Size = UDim2.new(1, -16, 0, 36)
TeleportDropdown.Position = UDim2.new(0, 8, 0, 32)
TeleportDropdown.BackgroundColor3 = Color3.fromRGB(28, 28, 33)
TeleportDropdown.Text = "Select Location ▼"
TeleportDropdown.TextColor3 = Color3.fromRGB(200, 200, 200)
TeleportDropdown.TextSize = 12
TeleportDropdown.Font = Enum.Font.GothamBold
TeleportDropdown.BorderSizePixel = 0
TeleportDropdown.ZIndex = 11
TeleportDropdown.Parent = TeleportSection

local TeleportDropdownCorner = Instance.new("UICorner")
TeleportDropdownCorner.CornerRadius = UDim.new(0, 6)
TeleportDropdownCorner.Parent = TeleportDropdown

local TeleportList = Instance.new("ScrollingFrame")
TeleportList.Size = UDim2.new(1, -16, 0, 0)
TeleportList.Position = UDim2.new(0, 8, 0, 73)
TeleportList.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
TeleportList.BorderSizePixel = 0
TeleportList.ScrollBarThickness = 3
TeleportList.ScrollBarImageColor3 = Color3.fromRGB(0, 150, 255)
TeleportList.Visible = false
TeleportList.CanvasSize = UDim2.new(0, 0, 0, 0)
TeleportList.ZIndex = 11
TeleportList.Parent = TeleportSection

local TeleportListCorner = Instance.new("UICorner")
TeleportListCorner.CornerRadius = UDim.new(0, 6)
TeleportListCorner.Parent = TeleportList

local TeleportListLayout = Instance.new("UIListLayout")
TeleportListLayout.SortOrder = Enum.SortOrder.LayoutOrder
TeleportListLayout.Padding = UDim.new(0, 2)
TeleportListLayout.Parent = TeleportList

local TeleportLocations = {
    {name = "🏦 Bank", pos = CFrame.new(-202.7586, 283.6267, -1222.1841)},
    {name = "💰 Cash Wash", pos = CFrame.new(-987.11, 253.72, -685.13)},
    {name = "🏢 Penthouse", pos = CFrame.new(-163, 397, -594)},
    {name = "🏠 Apartment", pos = CFrame.new(-613.7843017578125, 356.49395751953125, -689.0292358398438)},
    {name = "🔫 Gunshop 1", pos = CFrame.new(92984, 122099, 17236)},
    {name = "🔫 Gunshop 2", pos = CFrame.new(66192.453, 123615.711, 5744.736)},
    {name = "🔫 Gunshop 3", pos = CFrame.new(72426.188, 128855.641, -1081.063)},
    {name = "🚗 Dealership", pos = CFrame.new(-385.97552490234375, 253.4141082763672, -1236.3612060546875)},
    {name = "🎒 Backpack", pos = CFrame.new(-670.86, 253.60, -682.25)},
    {name = "🛒 Market", pos = CFrame.new(-388.34, 340.34, -562.64)},
    {name = "🏚️ Abandoned ($$$)", pos = CFrame.new(-733.03, 286.94, -779.16)},
    {name = "🎬 Studio ($$$)", pos = CFrame.new(93426.23 + 2, 14484.71, 561.80)},
    {name = "🏡 House 1", pos = CFrame.new(-670, 256, -484)},
    {name = "🏡 House 2", pos = CFrame.new(-647, 256, -485)},
    {name = "🏥 Hospital", pos = CFrame.new(-1590.833251953125, 254.272216796875, 18.926502227783203)},
    {name = "🍔 MarGreens", pos = CFrame.new(-336.8796691894531, 254.45382690429688, -394.1875)},
    {name = "💵 Dollar Central", pos = CFrame.new(-393.72430419921875, 253.82049560546875, -1108.29052734375)},
}

TeleportListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    TeleportList.CanvasSize = UDim2.new(0, 0, 0, TeleportListLayout.AbsoluteContentSize.Y + 5)
end)

for i, loc in ipairs(TeleportLocations) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -8, 0, 28)
    btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
    btn.Text = loc.name
    btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    btn.TextSize = 11
    btn.Font = Enum.Font.Gotham
    btn.BorderSizePixel = 0
    btn.ZIndex = 12
    btn.Parent = TeleportList

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 5)
    corner.Parent = btn

    btn.MouseEnter:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
        btn.TextColor3 = Color3.fromRGB(0, 150, 255)
    end)

    btn.MouseLeave:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
        btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    end)

    btn.MouseButton1Click:Connect(function()
        local old = btn.Text
        btn.Text = "Teleporting..."
        task.spawn(function()
            pcall(function()
                if LocalPlayer.Character then
                    LocalPlayer.Character.Humanoid:ChangeState(0)
                    repeat task.wait() until not LocalPlayer:GetAttribute("LastACPos")
                    LocalPlayer.Character.HumanoidRootPart.CFrame = loc.pos
                end
            end)
            btn.Text = old
            TeleportList.Visible = false
            TeleportSection.Size = UDim2.new(1, 0, 0, 78)
            TeleportDropdown.Text = "Select Location ▼"
        end)
    end)
end

-- ============================================
-- BYPASSES SECTION
-- ============================================

local BypassSection = Instance.new("Frame")
BypassSection.Size = UDim2.new(1, 0, 0, 78)
BypassSection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
BypassSection.BorderSizePixel = 0
BypassSection.ZIndex = 10
BypassSection.Parent = ContentFrame

local BypassCorner = Instance.new("UICorner")
BypassCorner.CornerRadius = UDim.new(0, 10)
BypassCorner.Parent = BypassSection

local BypassStroke = Instance.new("UIStroke")
BypassStroke.Color = Color3.fromRGB(40, 40, 50)
BypassStroke.Thickness = 1
BypassStroke.Transparency = 0.5
BypassStroke.Parent = BypassSection

local BypassTitle = Instance.new("TextLabel")
BypassTitle.Size = UDim2.new(1, -16, 0, 24)
BypassTitle.Position = UDim2.new(0, 8, 0, 4)
BypassTitle.BackgroundTransparency = 1
BypassTitle.Text = "🛡️ BYPASSES"
BypassTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
BypassTitle.TextSize = 14
BypassTitle.Font = Enum.Font.GothamBold
BypassTitle.TextXAlignment = Enum.TextXAlignment.Left
BypassTitle.ZIndex = 11
BypassTitle.Parent = BypassSection

local BypassDropdown = Instance.new("TextButton")
BypassDropdown.Size = UDim2.new(1, -16, 0, 36)
BypassDropdown.Position = UDim2.new(0, 8, 0, 32)
BypassDropdown.BackgroundColor3 = Color3.fromRGB(28, 28, 33)
BypassDropdown.Text = "Select Bypass ▼"
BypassDropdown.TextColor3 = Color3.fromRGB(200, 200, 200)
BypassDropdown.TextSize = 12
BypassDropdown.Font = Enum.Font.GothamBold
BypassDropdown.BorderSizePixel = 0
BypassDropdown.ZIndex = 11
BypassDropdown.Parent = BypassSection

local BypassDropdownCorner = Instance.new("UICorner")
BypassDropdownCorner.CornerRadius = UDim.new(0, 6)
BypassDropdownCorner.Parent = BypassDropdown

local BypassList = Instance.new("ScrollingFrame")
BypassList.Size = UDim2.new(1, -16, 0, 0)
BypassList.Position = UDim2.new(0, 8, 0, 73)
BypassList.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
BypassList.BorderSizePixel = 0
BypassList.ScrollBarThickness = 3
BypassList.ScrollBarImageColor3 = Color3.fromRGB(0, 150, 255)
BypassList.Visible = false
BypassList.CanvasSize = UDim2.new(0, 0, 0, 0)
BypassList.ZIndex = 11
BypassList.Parent = BypassSection

local BypassListCorner = Instance.new("UICorner")
BypassListCorner.CornerRadius = UDim.new(0, 6)
BypassListCorner.Parent = BypassList

local BypassListLayout = Instance.new("UIListLayout")
BypassListLayout.SortOrder = Enum.SortOrder.LayoutOrder
BypassListLayout.Padding = UDim.new(0, 2)
BypassListLayout.Parent = BypassList

local ModFlags = {
    InfiniteHunger = false,
    InfiniteStamina = false,
    InfiniteSleep = false,
    DisableCameraBobbing = false,
    DisableBloodEffects = false,
    NoFallDamage = false,
    NoJumpCooldown = false,
    NoRentPay = false,
    DisableCameras = false,
    NoKnockback = false,
    RespawnWhereYouDied = false,
    InfiniteJump = false,
    Fullbright = false,
    Noclip = false,
}

local OriginalSettings = {}
local DeathFrame = nil

local function enableFullbright()
    if not next(OriginalSettings) then
        local Lighting = game:GetService("Lighting")
        OriginalSettings.Brightness = Lighting.Brightness
        OriginalSettings.ClockTime = Lighting.ClockTime
        OriginalSettings.FogEnd = Lighting.FogEnd
        OriginalSettings.GlobalShadows = Lighting.GlobalShadows
        OriginalSettings.OutdoorAmbient = Lighting.OutdoorAmbient
    end
    local Lighting = game:GetService("Lighting")
    Lighting.Brightness = 2
    Lighting.ClockTime = 12
    Lighting.FogEnd = 1e5
    Lighting.GlobalShadows = false
    Lighting.OutdoorAmbient = Color3.new(0.2, 0.4, 1)
end

local function disableFullbright()
    local Lighting = game:GetService("Lighting")
    for prop, val in pairs(OriginalSettings) do
        Lighting[prop] = val
    end
end

local noclipConnection
local function enableNoclip()
    if noclipConnection then noclipConnection:Disconnect() end
    noclipConnection = RunService.Stepped:Connect(function()
        if ModFlags.Noclip then
            local character = LocalPlayer.Character
            if character then
                for _, part in ipairs(character:GetDescendants()) do
                    if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
                        part.CanCollide = false
                    end
                end
            end
        end
    end)
end

local infiniteJumpConnection
local function setupInfiniteJump()
    if infiniteJumpConnection then infiniteJumpConnection:Disconnect() end
    infiniteJumpConnection = UserInputService.InputBegan:Connect(function(input, gp)
        if gp then return end
        if not ModFlags.InfiniteJump then return end
        if input.KeyCode == Enum.KeyCode.Space then
            local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid")
            if hum and hum.Health > 0 then
                hum:ChangeState(Enum.HumanoidStateType.Jumping)
            end
        end
    end)
end

local function SetupCharacterEvents(char)
    local hum = char:WaitForChild("Humanoid")
    local root = char:WaitForChild("HumanoidRootPart")
    hum.Died:Connect(function() DeathFrame = root.CFrame end)
    char.DescendantAdded:Connect(function(desc)
        if (desc:IsA("BodyVelocity") or desc:IsA("LinearVelocity") or desc:IsA("VectorForce")) and ModFlags.NoKnockback then
            task.wait()
            desc:Destroy()
        end
    end)
    if ModFlags.RespawnWhereYouDied and typeof(DeathFrame) == "CFrame" then
        root.CFrame = DeathFrame
    end
end

if LocalPlayer.Character then SetupCharacterEvents(LocalPlayer.Character) end
LocalPlayer.CharacterAdded:Connect(SetupCharacterEvents)

RunService.RenderStepped:Connect(function()
    local gui = LocalPlayer:FindFirstChild("PlayerGui")
    local char = LocalPlayer.Character

    if gui then
        local hungerGui = gui:FindFirstChild("Hunger", true)
        if hungerGui then
            local hungerScript = hungerGui:FindFirstChild("HungerBarScript", true)
            if hungerScript then hungerScript.Disabled = ModFlags.InfiniteHunger end
        end

        local runGui = gui:FindFirstChild("Run", true)
        if runGui then
            local staminaScript = runGui:FindFirstChild("StaminaBarScript", true)
            if staminaScript then staminaScript.Disabled = ModFlags.InfiniteStamina end
        end

        local sleepGui = gui:FindFirstChild("SleepGui", true)
        if sleepGui then
            local sleepScript = sleepGui:FindFirstChild("sleepScript", true)
            if sleepScript then sleepScript.Disabled = ModFlags.InfiniteSleep end
        end

        local bloodGui = gui:FindFirstChild("BloodGui")
        if bloodGui then
            bloodGui.Enabled = not ModFlags.DisableBloodEffects
        end

        local jumpDebounce = gui:FindFirstChild("JumpDebounce")
        if jumpDebounce and jumpDebounce:FindFirstChild("LocalScript") then
            jumpDebounce.LocalScript.Disabled = ModFlags.NoJumpCooldown
        end

        local rentGui = gui:FindFirstChild("RentGui")
        if rentGui and rentGui:FindFirstChild("LocalScript") then
            rentGui.LocalScript.Disabled = ModFlags.NoRentPay
        end

        local camTexts = gui:FindFirstChild("CameraTexts")
        if camTexts and camTexts:FindFirstChild("LocalScript") then
            camTexts.Enabled = not ModFlags.DisableCameras
            camTexts.LocalScript.Disabled = ModFlags.DisableCameras
        end
    end

    if char then
        local camBob = char:FindFirstChild("CameraBobbing")
        if camBob then camBob.Disabled = ModFlags.DisableCameraBobbing end

        local fallDamage = char:FindFirstChild("FallDamageRagdoll")
        if fallDamage then fallDamage.Disabled = ModFlags.NoFallDamage end
    end
end)

LocalPlayer.CharacterAdded:Connect(function()
    if ModFlags.DisableCameras then
        local Lighting = game:GetService("Lighting")
        if Lighting:FindFirstChild("Shiesty") then
            local remote = Lighting.Shiesty:FindFirstChildWhichIsA("RemoteEvent", true)
            if remote then remote:FireServer() end
        end
    end
end)

local TrxpBypasses = {
    {name = "🍔 Infinite Hunger", func = function()
        ModFlags.InfiniteHunger = not ModFlags.InfiniteHunger
        print("Infinite Hunger " .. (ModFlags.InfiniteHunger and "enabled" or "disabled"))
    end},
    {name = "⚡ Infinite Stamina", func = function()
        ModFlags.InfiniteStamina = not ModFlags.InfiniteStamina
        print("Infinite Stamina " .. (ModFlags.InfiniteStamina and "enabled" or "disabled"))
    end},
    {name = "😴 Infinite Sleep", func = function()
        ModFlags.InfiniteSleep = not ModFlags.InfiniteSleep
        print("Infinite Sleep " .. (ModFlags.InfiniteSleep and "enabled" or "disabled"))
    end},
    {name = "📷 Disable Camera Bobbing", func = function()
        ModFlags.DisableCameraBobbing = not ModFlags.DisableCameraBobbing
        print("Disable Camera Bobbing " .. (ModFlags.DisableCameraBobbing and "enabled" or "disabled"))
    end},
    {name = "🩸 Disable Blood Effects", func = function()
        ModFlags.DisableBloodEffects = not ModFlags.DisableBloodEffects
        print("Disable Blood Effects " .. (ModFlags.DisableBloodEffects and "enabled" or "disabled"))
    end},
    {name = "🛡️ No Fall Damage", func = function()
        ModFlags.NoFallDamage = not ModFlags.NoFallDamage
        print("No Fall Damage " .. (ModFlags.NoFallDamage and "enabled" or "disabled"))
    end},
    {name = "🦘 No Jump Cooldown", func = function()
        ModFlags.NoJumpCooldown = not ModFlags.NoJumpCooldown
        print("No Jump Cooldown " .. (ModFlags.NoJumpCooldown and "enabled" or "disabled"))
    end},
    {name = "💰 No Rent Pay", func = function()
        ModFlags.NoRentPay = not ModFlags.NoRentPay
        print("No Rent Pay " .. (ModFlags.NoRentPay and "enabled" or "disabled"))
    end},
    {name = "📹 Disable Cameras", func = function()
        ModFlags.DisableCameras = not ModFlags.DisableCameras
        print("Disable Cameras " .. (ModFlags.DisableCameras and "enabled" or "disabled"))
    end},
    {name = "💪 No Knockback", func = function()
        ModFlags.NoKnockback = not ModFlags.NoKnockback
        print("No Knockback " .. (ModFlags.NoKnockback and "enabled" or "disabled"))
    end},
    {name = "🔄 Respawn Where You Died", func = function()
        ModFlags.RespawnWhereYouDied = not ModFlags.RespawnWhereYouDied
        print("Respawn Where You Died " .. (ModFlags.RespawnWhereYouDied and "enabled" or "disabled"))
    end},
    {name = "🦘 Infinite Jump", func = function()
        ModFlags.InfiniteJump = not ModFlags.InfiniteJump
        if ModFlags.InfiniteJump then
            setupInfiniteJump()
            print("Infinite Jump enabled")
        else
            if infiniteJumpConnection then infiniteJumpConnection:Disconnect() end
            print("Infinite Jump disabled")
        end
    end},
    {name = "🌟 Fullbright", func = function()
        ModFlags.Fullbright = not ModFlags.Fullbright
        if ModFlags.Fullbright then
            enableFullbright()
            print("Fullbright enabled")
        else
            disableFullbright()
            print("Fullbright disabled")
        end
    end},
    {name = "👻 Noclip", func = function()
        ModFlags.Noclip = not ModFlags.Noclip
        if ModFlags.Noclip then
            enableNoclip()
            print("Noclip enabled")
        else
            if noclipConnection then noclipConnection:Disconnect() end
            print("Noclip disabled")
        end
    end},
}

BypassListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    BypassList.CanvasSize = UDim2.new(0, 0, 0, BypassListLayout.AbsoluteContentSize.Y + 5)
end)

for i, bypass in ipairs(TrxpBypasses) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -8, 0, 28)
    btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
    btn.Text = bypass.name
    btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    btn.TextSize = 11
    btn.Font = Enum.Font.Gotham
    btn.BorderSizePixel = 0
    btn.ZIndex = 12
    btn.Parent = BypassList

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 5)
    corner.Parent = btn

    btn.MouseEnter:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
        btn.TextColor3 = Color3.fromRGB(0, 150, 255)
    end)

    btn.MouseLeave:Connect(function()
        btn.BackgroundColor3 = Color3.fromRGB(32, 32, 37)
        btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    end)

    btn.MouseButton1Click:Connect(function()
        local old = btn.Text
        btn.Text = "Executing..."
        task.spawn(function()
            pcall(bypass.func)
            task.wait(0.5)
            btn.Text = old
            BypassList.Visible = false
            BypassSection.Size = UDim2.new(1, 0, 0, 78)
            BypassDropdown.Text = "Select Bypass ▼"
        end)
    end)
end

-- ============================================
-- OPEN BUTTON WITH "ScriptHouse"
-- ============================================

local OpenButton = Instance.new("TextButton")
OpenButton.Size = UDim2.new(0, 110, 0, 42)
OpenButton.Position = UDim2.new(0.5, -55, 0, 12)
OpenButton.BackgroundColor3 = Color3.fromRGB(18, 18, 23)
OpenButton.Text = "ScriptHouse"
OpenButton.TextColor3 = Color3.fromRGB(0, 162, 255)
OpenButton.TextSize = 18
OpenButton.Font = Enum.Font.GothamBold
OpenButton.BorderSizePixel = 0
OpenButton.ZIndex = 100
OpenButton.Parent = ScreenGui

local OpenCorner = Instance.new("UICorner")
OpenCorner.CornerRadius = UDim.new(0, 10)
OpenCorner.Parent = OpenButton

local OpenStroke = Instance.new("UIStroke")
OpenStroke.Thickness = 3
OpenStroke.Color = Color3.fromRGB(0, 150, 255)
OpenStroke.Transparency = 0.3
OpenStroke.Parent = OpenButton

-- Pulsing glow effect
task.spawn(function()
    while OpenStroke and OpenStroke.Parent do
        for i = 0, 1, 0.05 do
            if OpenStroke and OpenStroke.Parent then
                OpenStroke.Transparency = 0.2 + (math.sin(i * math.pi * 2) * 0.3)
            end
            task.wait(0.05)
        end
    end
end)

-- ============================================
-- GUI ANIMATIONS & EVENT HANDLERS
-- ============================================

local isOpen = false

local function openGUI()
    isOpen = true
    GradientContainer.Visible = true
    GradientContainer.Size = UDim2.new(0, 0, 0, 0)
    GradientContainer.Position = UDim2.new(0.5, 0, 0.5, 0)
    
    local tweenInfo = TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
    local openTween = TweenService:Create(GradientContainer, tweenInfo, {
        Size = UDim2.new(0, 420, 0, 480),
        Position = UDim2.new(0.5, -210, 0.5, -240)
    })
    openTween:Play()
end

local function closeGUI()
    isOpen = false
    
    local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.In)
    local closeTween = TweenService:Create(GradientContainer, tweenInfo, {
        Size = UDim2.new(0, 0, 0, 0),
        Position = UDim2.new(0.5, 0, 0.5, 0)
    })
    closeTween:Play()
    
    closeTween.Completed:Connect(function()
        GradientContainer.Visible = false
    end)
end

OpenButton.MouseButton1Click:Connect(function()
    if isOpen then
        closeGUI()
    else
        openGUI()
    end
end)

CloseButton.MouseButton1Click:Connect(function()
    closeGUI()
end)

-- Visuals dropdown
local visualsOpen = false
VisualsDropdown.MouseButton1Click:Connect(function()
    visualsOpen = not visualsOpen
    VisualsList.Visible = visualsOpen
    if visualsOpen then
        VisualsDropdown.Text = "Select ESP Option ▲"
        VisualsList.Size = UDim2.new(1, -16, 0, 35)
        VisualsSection.Size = UDim2.new(1, 0, 0, 115)
    else
        VisualsDropdown.Text = "Select ESP Option ▼"
        VisualsList.Size = UDim2.new(1, -16, 0, 0)
        VisualsSection.Size = UDim2.new(1, 0, 0, 78)
    end
end)

-- Teleport dropdown
local teleportOpen = false
TeleportDropdown.MouseButton1Click:Connect(function()
    teleportOpen = not teleportOpen
    TeleportList.Visible = teleportOpen
    if teleportOpen then
        TeleportDropdown.Text = "Select Location ▲"
        TeleportList.Size = UDim2.new(1, -16, 0, 220)
        TeleportSection.Size = UDim2.new(1, 0, 0, 300)
    else
        TeleportDropdown.Text = "Select Location ▼"
        TeleportList.Size = UDim2.new(1, -16, 0, 0)
        TeleportSection.Size = UDim2.new(1, 0, 0, 78)
    end
end)

-- Bypass dropdown
local bypassOpen = false
BypassDropdown.MouseButton1Click:Connect(function()
    bypassOpen = not bypassOpen
    BypassList.Visible = bypassOpen
    if bypassOpen then
        BypassDropdown.Text = "Select Bypass ▲"
        BypassList.Size = UDim2.new(1, -16, 0, 220)
        BypassSection.Size = UDim2.new(1, 0, 0, 300)
    else
        BypassDropdown.Text = "Select Bypass ▼"
        BypassList.Size = UDim2.new(1, -16, 0, 0)
        BypassSection.Size = UDim2.new(1, 0, 0, 78)
    end
end)

-- Gun Mods dropdown
local gunModsOpen = false
GunModsDropdown.MouseButton1Click:Connect(function()
    gunModsOpen = not gunModsOpen
    GunModsList.Visible = gunModsOpen
    if gunModsOpen then
        GunModsDropdown.Text = "Select Gun Mod ▲"
        GunModsList.Size = UDim2.new(1, -16, 0, 190)
        GunModsSection.Size = UDim2.new(1, 0, 0, 270)
    else
        GunModsDropdown.Text = "Select Gun Mod ▼"
        GunModsList.Size = UDim2.new(1, -16, 0, 0)
        GunModsSection.Size = UDim2.new(1, 0, 0, 78)
    end
end)

-- Instant Interaction Toggle
InstantToggle.MouseButton1Click:Connect(function()
    if InstantInteraction then
        InstantInteraction = false
        InstantToggle.Text = "START"
        InstantToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        InstantToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        InstantStatus.Text = "Instant interaction disabled"
        disableInstantInteraction()
    else
        InstantInteraction = true
        InstantToggle.Text = "STOP"
        InstantToggle.TextColor3 = Color3.fromRGB(255, 100, 100)
        InstantToggleStroke.Color = Color3.fromRGB(255, 100, 100)
        InstantStatus.Text = "All prompts are instant!"
        enableInstantInteraction()
    end
end)

-- Fast Respawn Toggle
FastRespawnToggle.MouseButton1Click:Connect(function()
    if InstantRespawnEnabled then
        SetInstantRespawn(false)
        FastRespawnToggle.Text = "START"
        FastRespawnToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        FastRespawnToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        FastRespawnStatus.Text = "Fast respawn disabled"
    else
        SetInstantRespawn(true)
        FastRespawnToggle.Text = "STOP"
        FastRespawnToggle.TextColor3 = Color3.fromRGB(255, 100, 100)
        FastRespawnToggleStroke.Color = Color3.fromRGB(255, 100, 100)
        FastRespawnStatus.Text = "Instant respawn active!"
    end
end)

-- Auto Max Money Toggle
MaxMoneyToggle.MouseButton1Click:Connect(function()
    if IsAutoMaxMoney then
        IsAutoMaxMoney = false
        MaxMoneyToggle.Text = "START"
        MaxMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        MaxMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        MaxMoneyStatus.Text = "Auto farm stopped"
    else
        IsAutoMaxMoney = true
        MaxMoneyToggle.Text = "STOP"
        MaxMoneyToggle.TextColor3 = Color3.fromRGB(255, 100, 100)
        MaxMoneyToggleStroke.Color = Color3.fromRGB(255, 100, 100)
        MaxMoneyStatus.Text = "Auto farming ice fruit..."
        
        task.spawn(function()
            while IsAutoMaxMoney do
                pcall(IceFruitSell)
                task.wait(4)
            end
        end)
    end
end)

-- Clean Money Toggle
CleanMoneyToggle.MouseButton1Click:Connect(function()
    if IsAutoCleanMoney then
        IsAutoCleanMoney = false
        CleanMoneyToggle.Text = "START"
        CleanMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        CleanMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        CleanMoneyStatus.Text = "Auto clean stopped"
    else
        IsAutoCleanMoney = true
        CleanMoneyToggle.Text = "STOP"
        CleanMoneyToggle.TextColor3 = Color3.fromRGB(255, 100, 100)
        CleanMoneyToggleStroke.Color = Color3.fromRGB(255, 100, 100)
        CleanMoneyStatus.Text = "Cleaning money..."
        
        task.spawn(function()
            while IsAutoCleanMoney do
                pcall(CleanMoney)
                task.wait(2)
            end
        end)
    end
end)

-- Reset on character respawn
LocalPlayer.CharacterAdded:Connect(function()
    if IsAutoMaxMoney then
        IsAutoMaxMoney = false
        MaxMoneyToggle.Text = "START"
        MaxMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        MaxMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        MaxMoneyStatus.Text = "Character died - farm stopped"
    end
    if IsAutoCleanMoney then
        IsAutoCleanMoney = false
        CleanMoneyToggle.Text = "START"
        CleanMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        CleanMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        CleanMoneyStatus.Text = "Character died - clean stopped"
    end
end)

ScreenGui.Parent = PlayerGui

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: