RAINBOWEREED HUB
Key Required

RAINBOWEREED HUB

Free Client Script Executor *BACK*RainbowEreedRainbowEreed 518 views 19 executesUpdated Jan 31, 2026
2.5/ 5(2 votes)
1150% Positive
Lua Script•2027 lines (74801 chars)
-- Advanced Exploit GUI by RainbowEreed

local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")

local player = Players.LocalPlayer
local mouse = player:GetMouse()

-- Settings
local flying = false
local noclip = false
local xray = false
local xray2 = false
local invisible = false
local flySpeed = 50
local maxSpeed = 300
local keys = {W = false, A = false, S = false, D = false, Space = false, LeftShift = false}

-- Get GUI Parent
local function getGuiParent()
    if game:GetService("CoreGui") then
        return game:GetService("CoreGui")
    elseif player:FindFirstChild("PlayerGui") then
        return player.PlayerGui
    else
        return player:WaitForChild("PlayerGui")
    end
end

-- Create Loading Screen
local LoadingGui = Instance.new("ScreenGui")
LoadingGui.Name = "LoadingScreen"
LoadingGui.ResetOnSpawn = false
LoadingGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

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

local LoadingTitle = Instance.new("TextLabel")
LoadingTitle.Size = UDim2.new(0, 400, 0, 60)
LoadingTitle.Position = UDim2.new(0.5, -200, 0.4, -30)
LoadingTitle.BackgroundTransparency = 1
LoadingTitle.Text = "🌈 RAINBOWEREED HUB 🌈"
LoadingTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
LoadingTitle.TextSize = 32
LoadingTitle.Font = Enum.Font.GothamBold
LoadingTitle.ZIndex = 101
LoadingTitle.Parent = LoadingFrame

local LoadingText = Instance.new("TextLabel")
LoadingText.Size = UDim2.new(0, 400, 0, 40)
LoadingText.Position = UDim2.new(0.5, -200, 0.5, 0)
LoadingText.BackgroundTransparency = 1
LoadingText.Text = "Loading"
LoadingText.TextColor3 = Color3.fromRGB(200, 200, 200)
LoadingText.TextSize = 20
LoadingText.Font = Enum.Font.Gotham
LoadingText.ZIndex = 101
LoadingText.Parent = LoadingFrame

local LoadingBar = Instance.new("Frame")
LoadingBar.Size = UDim2.new(0, 400, 0, 8)
LoadingBar.Position = UDim2.new(0.5, -200, 0.55, 0)
LoadingBar.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
LoadingBar.BorderSizePixel = 0
LoadingBar.ZIndex = 101
LoadingBar.Parent = LoadingFrame

local LoadingBarCorner = Instance.new("UICorner")
LoadingBarCorner.CornerRadius = UDim.new(0, 4)
LoadingBarCorner.Parent = LoadingBar

local LoadingBarFill = Instance.new("Frame")
LoadingBarFill.Size = UDim2.new(0, 0, 1, 0)
LoadingBarFill.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
LoadingBarFill.BorderSizePixel = 0
LoadingBarFill.ZIndex = 102
LoadingBarFill.Parent = LoadingBar

local LoadingBarFillCorner = Instance.new("UICorner")
LoadingBarFillCorner.CornerRadius = UDim.new(0, 4)
LoadingBarFillCorner.Parent = LoadingBarFill

LoadingGui.Parent = getGuiParent()

-- Animate Loading
local loadingSteps = {
    {text = "Loading Assets...", progress = 0.2},
    {text = "Initializing Features...", progress = 0.4},
    {text = "Loading Admin Commands...", progress = 0.6},
    {text = "Setting Up GUI...", progress = 0.8},
    {text = "Complete!", progress = 1}
}

spawn(function()
    for i, step in ipairs(loadingSteps) do
        LoadingText.Text = step.text
        LoadingBarFill:TweenSize(UDim2.new(step.progress, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.5, true)
        task.wait(0.6)
    end
    task.wait(0.5)
    LoadingGui:Destroy()
end)

-- Rainbow animation for loading
spawn(function()
    while LoadingGui.Parent do
        local hue = tick() % 3 / 3
        LoadingTitle.TextColor3 = Color3.fromHSV(hue, 1, 1)
        LoadingBarFill.BackgroundColor3 = Color3.fromHSV(hue, 1, 1)
        task.wait(0.05)
    end
end)

task.wait(3.5)

-- Create Main GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "RainbowEreedHub"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

-- Main Frame
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 500, 0, 550)
MainFrame.Position = UDim2.new(0.5, -250, 0.5, -275)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.BorderSizePixel = 3
MainFrame.BorderColor3 = Color3.fromRGB(0, 170, 255)
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.ZIndex = 10
MainFrame.Parent = ScreenGui

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 12)
MainCorner.Parent = MainFrame

-- Title Bar
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 50)
TitleBar.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
TitleBar.BorderSizePixel = 0
TitleBar.ZIndex = 11
TitleBar.Parent = MainFrame

local TitleCorner = Instance.new("UICorner")
TitleCorner.CornerRadius = UDim.new(0, 12)
TitleCorner.Parent = TitleBar

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -100, 1, 0)
Title.Position = UDim2.new(0, 10, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "🌈 RainbowEreed Hub"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 20
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.ZIndex = 12
Title.Parent = TitleBar

-- Close Button
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 40, 0, 40)
CloseBtn.Position = UDim2.new(1, -45, 0, 5)
CloseBtn.BackgroundColor3 = Color3.fromRGB(220, 50, 50)
CloseBtn.BorderSizePixel = 0
CloseBtn.Text = "✖"
CloseBtn.TextColor3 = Color3.new(1, 1, 1)
CloseBtn.TextSize = 18
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.ZIndex = 12
CloseBtn.Parent = TitleBar

local CloseBtnCorner = Instance.new("UICorner")
CloseBtnCorner.CornerRadius = UDim.new(0, 8)
CloseBtnCorner.Parent = CloseBtn

CloseBtn.MouseButton1Click:Connect(function()
    ScreenGui:Destroy()
end)

-- Reset All Button
local ResetBtn = Instance.new("TextButton")
ResetBtn.Size = UDim2.new(0, 90, 0, 40)
ResetBtn.Position = UDim2.new(1, -140, 0, 5)
ResetBtn.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
ResetBtn.BorderSizePixel = 0
ResetBtn.Text = "🔄 Reset All"
ResetBtn.TextColor3 = Color3.new(1, 1, 1)
ResetBtn.TextSize = 14
ResetBtn.Font = Enum.Font.GothamBold
ResetBtn.ZIndex = 12
ResetBtn.Parent = TitleBar

local ResetBtnCorner = Instance.new("UICorner")
ResetBtnCorner.CornerRadius = UDim.new(0, 8)
ResetBtnCorner.Parent = ResetBtn

ResetBtn.MouseButton1Click:Connect(function()
    -- Reset sound
    local resetSound = Instance.new("Sound")
    resetSound.SoundId = "rbxassetid://6895079853"
    resetSound.Volume = 0.5
    resetSound.Parent = game.SoundService
    resetSound:Play()
    resetSound.Ended:Connect(function() resetSound:Destroy() end)
    
    -- Turn off all features
    if flying then
        local root = getRoot()
        if root then
            flying = false
            if BV then BV:Destroy() BV = nil end
            if BG then BG:Destroy() BG = nil end
            FlyBtn.Text = "🚀 Fly: OFF [F]"
            FlyBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        end
    end
    
    if noclip then
        noclip = false
        NoclipBtn.Text = "👻 Noclip: OFF [N]"
        NoclipBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    end
    
    if xray then
        xray = false
        for obj, trans in pairs(originalTransparencies) do
            if obj and obj.Parent then
                obj.Transparency = trans
            end
        end
        originalTransparencies = {}
        XrayBtn.Text = "👁️ X-Ray Buildings: OFF"
        XrayBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    end
    
    if xray2 then
        xray2 = false
        for _, box in pairs(espBoxes) do
            if box then box:Destroy() end
        end
        espBoxes = {}
        Xray2Btn.Text = "🔦 X-Ray Players: OFF"
        Xray2Btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    end
    
    if invisible then
        invisible = false
        local char = player.Character
        if char then
            for _, part in pairs(char:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.Transparency = 0
                elseif part:IsA("Decal") then
                    part.Transparency = 0
                end
            end
            local head = char:FindFirstChild("Head")
            if head and head:FindFirstChild("face") then
                head.face.Transparency = 0
            end
        end
        InvisBtn.Text = "💨 Invisible: OFF [I]"
        InvisBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    end
    
    if sonicEnabled then
        ToggleSonic()
    end
    
    if backflipEnabled then
        ToggleBackflip()
    end
    
    if fallingEnabled then
        ToggleFalling()
    end
    
    print("All features reset!")
end)

-- Content Frame
local ContentFrame = Instance.new("ScrollingFrame")
ContentFrame.Size = UDim2.new(1, -20, 1, -70)
ContentFrame.Position = UDim2.new(0, 10, 0, 60)
ContentFrame.BackgroundTransparency = 1
ContentFrame.BorderSizePixel = 0
ContentFrame.ScrollBarThickness = 6
ContentFrame.ScrollBarImageColor3 = Color3.fromRGB(0, 170, 255)
ContentFrame.CanvasSize = UDim2.new(0, 0, 0, 900)
ContentFrame.ZIndex = 11
ContentFrame.Parent = MainFrame

-- Page System
local currentPage = 1
local pages = {}

-- Page 1 Frame
local Page1 = Instance.new("Frame")
Page1.Size = UDim2.new(1, -10, 0, 900)
Page1.Position = UDim2.new(0, 0, 0, 0)
Page1.BackgroundTransparency = 1
Page1.ZIndex = 11
Page1.Visible = true
Page1.Parent = ContentFrame
pages[1] = Page1

-- Page 2 Frame
local Page2 = Instance.new("Frame")
Page2.Size = UDim2.new(1, -10, 0, 900)
Page2.Position = UDim2.new(0, 0, 0, 0)
Page2.BackgroundTransparency = 1
Page2.ZIndex = 11
Page2.Visible = false
Page2.Parent = ContentFrame
pages[2] = Page2

-- Page Navigation
local PageNavFrame = Instance.new("Frame")
PageNavFrame.Size = UDim2.new(1, -20, 0, 45)
PageNavFrame.Position = UDim2.new(0, 10, 1, -50)
PageNavFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
PageNavFrame.BorderSizePixel = 0
PageNavFrame.ZIndex = 15
PageNavFrame.Parent = MainFrame

local PageNavCorner = Instance.new("UICorner")
PageNavCorner.CornerRadius = UDim.new(0, 8)
PageNavCorner.Parent = PageNavFrame

local PrevPageBtn = Instance.new("TextButton")
PrevPageBtn.Size = UDim2.new(0.3, -5, 1, -10)
PrevPageBtn.Position = UDim2.new(0, 5, 0, 5)
PrevPageBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
PrevPageBtn.BorderSizePixel = 0
PrevPageBtn.Text = "◀ Prev"
PrevPageBtn.TextColor3 = Color3.new(1, 1, 1)
PrevPageBtn.TextSize = 16
PrevPageBtn.Font = Enum.Font.GothamBold
PrevPageBtn.ZIndex = 16
PrevPageBtn.Parent = PageNavFrame

local PrevCorner = Instance.new("UICorner")
PrevCorner.CornerRadius = UDim.new(0, 6)
PrevCorner.Parent = PrevPageBtn

local PageLabel = Instance.new("TextLabel")
PageLabel.Size = UDim2.new(0.4, -10, 1, -10)
PageLabel.Position = UDim2.new(0.3, 0, 0, 5)
PageLabel.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
PageLabel.BorderSizePixel = 0
PageLabel.Text = "Page 1 / 2"
PageLabel.TextColor3 = Color3.fromRGB(0, 170, 255)
PageLabel.TextSize = 18
PageLabel.Font = Enum.Font.GothamBold
PageLabel.ZIndex = 16
PageLabel.Parent = PageNavFrame

local PageLabelCorner = Instance.new("UICorner")
PageLabelCorner.CornerRadius = UDim.new(0, 6)
PageLabelCorner.Parent = PageLabel

local NextPageBtn = Instance.new("TextButton")
NextPageBtn.Size = UDim2.new(0.3, -5, 1, -10)
NextPageBtn.Position = UDim2.new(0.7, 0, 0, 5)
NextPageBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
NextPageBtn.BorderSizePixel = 0
NextPageBtn.Text = "Next ▶"
NextPageBtn.TextColor3 = Color3.new(1, 1, 1)
NextPageBtn.TextSize = 16
NextPageBtn.Font = Enum.Font.GothamBold
NextPageBtn.ZIndex = 16
NextPageBtn.Parent = PageNavFrame

local NextCorner = Instance.new("UICorner")
NextCorner.CornerRadius = UDim.new(0, 6)
NextCorner.Parent = NextPageBtn

-- Page navigation functions
local function showPage(pageNum)
    for i, page in pairs(pages) do
        page.Visible = (i == pageNum)
    end
    currentPage = pageNum
    PageLabel.Text = "Page " .. pageNum .. " / " .. #pages
    ContentFrame.CanvasPosition = Vector2.new(0, 0) -- Reset scroll to top
end

PrevPageBtn.MouseButton1Click:Connect(function()
    if currentPage > 1 then
        showPage(currentPage - 1)
        
        local clickSound = Instance.new("Sound")
        clickSound.SoundId = "rbxassetid://6895079853"
        clickSound.Volume = 0.3
        clickSound.Parent = game.SoundService
        clickSound:Play()
        game:GetService("Debris"):AddItem(clickSound, 1)
    end
end)

NextPageBtn.MouseButton1Click:Connect(function()
    if currentPage < #pages then
        showPage(currentPage + 1)
        
        local clickSound = Instance.new("Sound")
        clickSound.SoundId = "rbxassetid://6895079853"
        clickSound.Volume = 0.3
        clickSound.Parent = game.SoundService
        clickSound:Play()
        game:GetService("Debris"):AddItem(clickSound, 1)
    end
end)

-- Create Button Function
local function createButton(text, position, callback, parent)
    local targetParent = parent or Page1
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.48, 0, 0, 45)
    btn.Position = position
    btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    btn.BorderSizePixel = 2
    btn.BorderColor3 = Color3.fromRGB(60, 60, 60)
    btn.Text = text
    btn.TextColor3 = Color3.new(1, 1, 1)
    btn.TextSize = 14
    btn.Font = Enum.Font.GothamBold
    btn.ZIndex = 12
    btn.Parent = targetParent
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 8)
    corner.Parent = btn
    
    -- Add circle indicators
    local function createCircle(pos, color)
        local circle = Instance.new("Frame")
        circle.Size = UDim2.new(0, 8, 0, 8)
        circle.Position = pos
        circle.BackgroundColor3 = color
        circle.BorderSizePixel = 0
        circle.ZIndex = 13
        circle.Parent = btn
        
        local circleCorner = Instance.new("UICorner")
        circleCorner.CornerRadius = UDim.new(1, 0)
        circleCorner.Parent = circle
        
        return circle
    end
    
    -- Top, Bottom, Left, Right circles
    local topCircle = createCircle(UDim2.new(0.5, -4, 0, -4), Color3.fromRGB(0, 170, 255))
    local bottomCircle = createCircle(UDim2.new(0.5, -4, 1, -4), Color3.fromRGB(0, 170, 255))
    local leftCircle = createCircle(UDim2.new(0, -4, 0.5, -4), Color3.fromRGB(0, 170, 255))
    local rightCircle = createCircle(UDim2.new(1, -4, 0.5, -4), Color3.fromRGB(0, 170, 255))
    
    btn.MouseButton1Click:Connect(callback)
    
    return btn
end

-- Movement Section
local MovementLabel = Instance.new("TextLabel")
MovementLabel.Size = UDim2.new(1, 0, 0, 30)
MovementLabel.Position = UDim2.new(0, 0, 0, 0)
MovementLabel.BackgroundTransparency = 1
MovementLabel.Text = "✈️ Movement"
MovementLabel.TextColor3 = Color3.fromRGB(0, 170, 255)
MovementLabel.TextSize = 16
MovementLabel.Font = Enum.Font.GothamBold
MovementLabel.TextXAlignment = Enum.TextXAlignment.Left
MovementLabel.ZIndex = 12
MovementLabel.Parent = Page1

local FlyBtn = createButton("🚀 Fly: OFF [F]", UDim2.new(0, 0, 0, 35), function() end, Page1)
local NoclipBtn = createButton("👻 Noclip: OFF [N]", UDim2.new(0.52, 0, 0, 35), function() end, Page1)

-- Speed Controls
local SpeedLabel = Instance.new("TextLabel")
SpeedLabel.Size = UDim2.new(1, 0, 0, 25)
SpeedLabel.Position = UDim2.new(0, 0, 0, 90)
SpeedLabel.BackgroundTransparency = 1
SpeedLabel.Text = "⚡ Speed: 50"
SpeedLabel.TextColor3 = Color3.new(1, 1, 1)
SpeedLabel.TextSize = 14
SpeedLabel.Font = Enum.Font.GothamBold
SpeedLabel.ZIndex = 12
SpeedLabel.Parent = Page1

local SliderBG = Instance.new("Frame")
SliderBG.Size = UDim2.new(1, 0, 0, 10)
SliderBG.Position = UDim2.new(0, 0, 0, 120)
SliderBG.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
SliderBG.BorderSizePixel = 0
SliderBG.ZIndex = 12
SliderBG.Parent = Page1

local SliderCorner = Instance.new("UICorner")
SliderCorner.CornerRadius = UDim.new(0, 5)
SliderCorner.Parent = SliderBG

local SliderFill = Instance.new("Frame")
SliderFill.Size = UDim2.new(flySpeed / maxSpeed, 0, 1, 0)
SliderFill.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
SliderFill.BorderSizePixel = 0
SliderFill.ZIndex = 13
SliderFill.Parent = SliderBG

local SliderFillCorner = Instance.new("UICorner")
SliderFillCorner.CornerRadius = UDim.new(0, 5)
SliderFillCorner.Parent = SliderFill

-- Vision Section
local VisionLabel = Instance.new("TextLabel")
VisionLabel.Size = UDim2.new(1, 0, 0, 30)
VisionLabel.Position = UDim2.new(0, 0, 0, 145)
VisionLabel.BackgroundTransparency = 1
VisionLabel.Text = "👁️ Vision"
VisionLabel.TextColor3 = Color3.fromRGB(0, 170, 255)
VisionLabel.TextSize = 16
VisionLabel.Font = Enum.Font.GothamBold
VisionLabel.TextXAlignment = Enum.TextXAlignment.Left
VisionLabel.ZIndex = 12
VisionLabel.Parent = Page1

local XrayBtn = createButton("👁️ X-Ray Buildings: OFF", UDim2.new(0, 0, 0, 180), function() end, Page1)
local Xray2Btn = createButton("🔦 X-Ray Players: OFF", UDim2.new(0.52, 0, 0, 180), function() end, Page1)

-- Player Section
local PlayerLabel = Instance.new("TextLabel")
PlayerLabel.Size = UDim2.new(1, 0, 0, 30)
PlayerLabel.Position = UDim2.new(0, 0, 0, 235)
PlayerLabel.BackgroundTransparency = 1
PlayerLabel.Text = "👤 Player"
PlayerLabel.TextColor3 = Color3.fromRGB(0, 170, 255)
PlayerLabel.TextSize = 16
PlayerLabel.Font = Enum.Font.GothamBold
PlayerLabel.TextXAlignment = Enum.TextXAlignment.Left
PlayerLabel.ZIndex = 12
PlayerLabel.Parent = Page1

local InvisBtn = createButton("💨 Invisible: OFF [I]", UDim2.new(0, 0, 0, 270), function() end, Page1)
local SonicBtn = createButton("💨 Sonic Speed: OFF [G]", UDim2.new(0.52, 0, 0, 270), function() end, Page1)

-- Animation Section (Still on Page 1)
local AnimLabel = Instance.new("TextLabel")
AnimLabel.Size = UDim2.new(1, 0, 0, 30)
AnimLabel.Position = UDim2.new(0, 0, 0, 325)
AnimLabel.BackgroundTransparency = 1
AnimLabel.Text = "🎬 Animations"
AnimLabel.TextColor3 = Color3.fromRGB(0, 170, 255)
AnimLabel.TextSize = 16
AnimLabel.Font = Enum.Font.GothamBold
AnimLabel.TextXAlignment = Enum.TextXAlignment.Left
AnimLabel.ZIndex = 12
AnimLabel.Parent = Page1

local BackflipBtn = createButton("🤸 Backflip: OFF [H]", UDim2.new(0, 0, 0, 360), function() end, Page1)
local FallingBtn = createButton("🌀 Falling Anim: OFF [J]", UDim2.new(0.52, 0, 0, 360), function() end, Page1)

-- Tools Section (PAGE 2)
local ToolsLabel = Instance.new("TextLabel")
ToolsLabel.Size = UDim2.new(1, 0, 0, 30)
ToolsLabel.Position = UDim2.new(0, 0, 0, 0)
ToolsLabel.BackgroundTransparency = 1
ToolsLabel.Text = "🛠️ Tools"
ToolsLabel.TextColor3 = Color3.fromRGB(0, 170, 255)
ToolsLabel.TextSize = 16
ToolsLabel.Font = Enum.Font.GothamBold
ToolsLabel.TextXAlignment = Enum.TextXAlignment.Left
ToolsLabel.ZIndex = 12
ToolsLabel.Parent = Page2

local LightSwordBtn = createButton("⚔️ Light Sword", UDim2.new(0, 0, 0, 35), function() end, Page2)
local BToolsBtn = createButton("🔧 BTools", UDim2.new(0.52, 0, 0, 35), function() end, Page2)
local SpawnPartBtn = createButton("🟦 Spawn Part", UDim2.new(0, 0, 0, 85), function() end, Page2)

-- Credits
local Credits = Instance.new("TextLabel")
Credits.Size = UDim2.new(1, 0, 0, 35)
Credits.Position = UDim2.new(0, 0, 1, -35)
Credits.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Credits.BorderSizePixel = 0
Credits.Text = "🌈 Made by RainbowEreed 🌈"
Credits.TextColor3 = Color3.fromRGB(255, 255, 255)
Credits.TextSize = 14
Credits.Font = Enum.Font.GothamBold
Credits.ZIndex = 12
Credits.Parent = MainFrame

local CreditsCorner = Instance.new("UICorner")
CreditsCorner.CornerRadius = UDim.new(0, 12)
CreditsCorner.Parent = Credits

ScreenGui.Parent = getGuiParent()

-- Functions
local function getRoot()
    local char = player.Character
    return char and (char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso"))
end

local BV, BG

-- Fly Function
local function ToggleFly()
    flying = not flying
    if flying then
        -- Play enable sound
        local enableSound = Instance.new("Sound")
        enableSound.SoundId = "rbxassetid://3398620867"
        enableSound.Volume = 0.5
        enableSound.Parent = game.SoundService
        enableSound:Play()
        enableSound.Ended:Connect(function() enableSound:Destroy() end)
        
        local root = getRoot()
        if not root then return end
        
        FlyBtn.Text = "🚀 Fly: ON [F]"
        FlyBtn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
        
        BV = Instance.new("BodyVelocity")
        BV.Velocity = Vector3.new(0, 0, 0)
        BV.MaxForce = Vector3.new(9e9, 9e9, 9e9)
        BV.Parent = root
        
        BG = Instance.new("BodyGyro")
        BG.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
        BG.CFrame = root.CFrame
        BG.Parent = root
        
        local char = player.Character
        if char then
            local hum = char:FindFirstChildOfClass("Humanoid")
            if hum then hum.PlatformStand = true end
        end
    else
        -- Play disable sound
        local disableSound = Instance.new("Sound")
        disableSound.SoundId = "rbxassetid://4590662766"
        disableSound.Volume = 0.5
        disableSound.Parent = game.SoundService
        disableSound:Play()
        disableSound.Ended:Connect(function() disableSound:Destroy() end)
        
        FlyBtn.Text = "🚀 Fly: OFF [F]"
        FlyBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        
        if BV then BV:Destroy() BV = nil end
        if BG then BG:Destroy() BG = nil end
        
        local char = player.Character
        if char then
            local hum = char:FindFirstChildOfClass("Humanoid")
            if hum then hum.PlatformStand = false end
        end
    end
end

FlyBtn.MouseButton1Click:Connect(ToggleFly)

-- Noclip Function
local function ToggleNoclip()
    noclip = not noclip
    
    -- Play toggle sound
    local toggleSound = Instance.new("Sound")
    toggleSound.SoundId = "rbxassetid://6895079853"
    toggleSound.Volume = 0.5
    toggleSound.Parent = game.SoundService
    toggleSound:Play()
    toggleSound.Ended:Connect(function() toggleSound:Destroy() end)
    
    if noclip then
        NoclipBtn.Text = "👻 Noclip: ON [N]"
        NoclipBtn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
    else
        NoclipBtn.Text = "👻 Noclip: OFF [N]"
        NoclipBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    end
end

NoclipBtn.MouseButton1Click:Connect(ToggleNoclip)

-- X-Ray Buildings
local originalTransparencies = {}

local function ToggleXray()
    xray = not xray
    
    -- Play toggle sound
    local toggleSound = Instance.new("Sound")
    toggleSound.SoundId = "rbxassetid://6895079853"
    toggleSound.Volume = 0.5
    toggleSound.Parent = game.SoundService
    toggleSound:Play()
    toggleSound.Ended:Connect(function() toggleSound:Destroy() end)
    
    if xray then
        XrayBtn.Text = "👁️ X-Ray Buildings: ON"
        XrayBtn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
        
        for _, obj in pairs(workspace:GetDescendants()) do
            if obj:IsA("BasePart") and not obj:IsDescendantOf(player.Character) then
                if obj.Transparency < 1 then
                    originalTransparencies[obj] = obj.Transparency
                    obj.Transparency = 0.7
                end
            end
        end
    else
        XrayBtn.Text = "👁️ X-Ray Buildings: OFF"
        XrayBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        
        for obj, trans in pairs(originalTransparencies) do
            if obj and obj.Parent then
                obj.Transparency = trans
            end
        end
        originalTransparencies = {}
    end
end

XrayBtn.MouseButton1Click:Connect(ToggleXray)

-- X-Ray Players (ESP)
local espBoxes = {}

local function ToggleXray2()
    xray2 = not xray2
    
    -- Play toggle sound
    local toggleSound = Instance.new("Sound")
    toggleSound.SoundId = "rbxassetid://6895079853"
    toggleSound.Volume = 0.5
    toggleSound.Parent = game.SoundService
    toggleSound:Play()
    toggleSound.Ended:Connect(function() toggleSound:Destroy() end)
    
    if xray2 then
        Xray2Btn.Text = "🔦 X-Ray Players: ON"
        Xray2Btn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
        
        for _, plr in pairs(Players:GetPlayers()) do
            if plr ~= player then
                spawn(function()
                    local function createESP(char)
                        if not char then return end
                        local root = char:FindFirstChild("HumanoidRootPart")
                        if not root then return end
                        
                        local box = Instance.new("BoxHandleAdornment")
                        box.Size = Vector3.new(4, 6, 4)
                        box.Color3 = Color3.fromRGB(255, 0, 0)
                        box.Transparency = 0.5
                        box.AlwaysOnTop = true
                        box.ZIndex = 10
                        box.Adornee = root
                        box.Parent = root
                        
                        espBoxes[plr] = box
                    end
                    
                    if plr.Character then
                        createESP(plr.Character)
                    end
                    
                    plr.CharacterAdded:Connect(createESP)
                end)
            end
        end
    else
        Xray2Btn.Text = "🔦 X-Ray Players: OFF"
        Xray2Btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        
        for _, box in pairs(espBoxes) do
            if box then box:Destroy() end
        end
        espBoxes = {}
    end
end

Xray2Btn.MouseButton1Click:Connect(ToggleXray2)

-- Invisible Function
local function ToggleInvisible()
    invisible = not invisible
    local char = player.Character
    if not char then return end
    
    -- Play toggle sound
    local toggleSound = Instance.new("Sound")
    toggleSound.SoundId = "rbxassetid://6895079853"
    toggleSound.Volume = 0.5
    toggleSound.Parent = game.SoundService
    toggleSound:Play()
    toggleSound.Ended:Connect(function() toggleSound:Destroy() end)
    
    if invisible then
        InvisBtn.Text = "💨 Invisible: ON [I]"
        InvisBtn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
        
        for _, part in pairs(char:GetDescendants()) do
            if part:IsA("BasePart") or part:IsA("Decal") then
                part.Transparency = 1
            end
        end
        
        local head = char:FindFirstChild("Head")
        if head and head:FindFirstChild("face") then
            head.face.Transparency = 1
        end
    else
        InvisBtn.Text = "💨 Invisible: OFF [I]"
        InvisBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        
        for _, part in pairs(char:GetDescendants()) do
            if part:IsA("BasePart") then
                part.Transparency = 0
            elseif part:IsA("Decal") then
                part.Transparency = 0
            end
        end
        
        local head = char:FindFirstChild("Head")
        if head and head:FindFirstChild("face") then
            head.face.Transparency = 0
        end
    end
end

InvisBtn.MouseButton1Click:Connect(ToggleInvisible)

-- Sonic Speed Function
local sonicEnabled = false
local originalWalkSpeed = 16
local runningLoop = nil
local footstepSound = nil
local jumpConnection = nil

local function ToggleSonic()
    sonicEnabled = not sonicEnabled
    local char = player.Character
    if not char then return end
    
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end
    
    local rootPart = char:FindFirstChild("HumanoidRootPart")
    if not rootPart then return end
    
    -- Play toggle sound
    local toggleSound = Instance.new("Sound")
    toggleSound.SoundId = "rbxassetid://6895079853"
    toggleSound.Volume = 0.5
    toggleSound.Parent = game.SoundService
    toggleSound:Play()
    toggleSound.Ended:Connect(function() toggleSound:Destroy() end)
    
    if sonicEnabled then
        SonicBtn.Text = "💨 Sonic Speed: ON [G]"
        SonicBtn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
        
        -- Set speed
        originalWalkSpeed = humanoid.WalkSpeed
        humanoid.WalkSpeed = 515
        
        -- Stop all default animations
        for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do
            track:Stop()
        end
        
        -- Get character parts (R6 and R15 support)
        local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
        local rightArm = char:FindFirstChild("Right Arm") or char:FindFirstChild("RightUpperArm")
        local leftArm = char:FindFirstChild("Left Arm") or char:FindFirstChild("LeftUpperArm")
        local rightLeg = char:FindFirstChild("Right Leg") or char:FindFirstChild("RightUpperLeg")
        local leftLeg = char:FindFirstChild("Left Leg") or char:FindFirstChild("LeftUpperLeg")
        
        -- Get or create Motor6Ds
        local function getOrCreateMotor(name, part0, part1, c0, c1)
            local motor = torso:FindFirstChild(name)
            if not motor then
                motor = Instance.new("Motor6D")
                motor.Name = name
                motor.Part0 = part0
                motor.Part1 = part1
                motor.C0 = c0
                motor.C1 = c1
                motor.Parent = torso
            end
            return motor
        end
        
        local rightShoulder = getOrCreateMotor("Right Shoulder", torso, rightArm, 
            CFrame.new(1, 0.5, 0), CFrame.new(-0.5, 0.5, 0))
        local leftShoulder = getOrCreateMotor("Left Shoulder", torso, leftArm, 
            CFrame.new(-1, 0.5, 0), CFrame.new(0.5, 0.5, 0))
        local rightHip = getOrCreateMotor("Right Hip", torso, rightLeg, 
            CFrame.new(1, -1, 0), CFrame.new(0, 1, 0))
        local leftHip = getOrCreateMotor("Left Hip", torso, leftLeg, 
            CFrame.new(-1, -1, 0), CFrame.new(0, 1, 0))
        
        -- Footstep sound
        footstepSound = Instance.new("Sound")
        footstepSound.SoundId = "rbxassetid://142070127"
        footstepSound.Volume = 0.5
        footstepSound.Looped = true
        footstepSound.PlaybackSpeed = 2.5
        footstepSound.Parent = rootPart
        
        -- Jump backflip detection
        local isJumping = false
        local backflipLoop = nil
        
        jumpConnection = humanoid.StateChanged:Connect(function(old, new)
            if new == Enum.HumanoidStateType.Jumping or new == Enum.HumanoidStateType.Freefall then
                if not isJumping then
                    isJumping = true
                    
                    -- Jump sound
                    local jumpSound = Instance.new("Sound")
                    jumpSound.SoundId = "rbxassetid://1083819158"
                    jumpSound.Volume = 0.6
                    jumpSound.Parent = rootPart
                    jumpSound:Play()
                    game:GetService("Debris"):AddItem(jumpSound, 2)
                    
                    -- Smooth backflip animation
                    local flipStartTime = tick()
                    local flipDuration = 0.6
                    
                    backflipLoop = RunService.RenderStepped:Connect(function()
                        local elapsed = tick() - flipStartTime
                        local progress = math.min(elapsed / flipDuration, 1)
                        
                        -- Smooth rotation (0 to 360 degrees)
                        local rotation = progress * 360
                        
                        -- Apply backflip rotation to root
                        local originalCFrame = rootPart.CFrame
                        rootPart.CFrame = originalCFrame * CFrame.Angles(math.rad(-rotation), 0, 0)
                        
                        -- Arms and legs tucked during flip
                        local tuckAmount = math.sin(progress * math.pi) -- Creates smooth in-out curve
                        
                        rightShoulder.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(160 * tuckAmount), math.rad(0), math.rad(-20 * tuckAmount))
                        leftShoulder.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(160 * tuckAmount), math.rad(0), math.rad(20 * tuckAmount))
                        
                        rightHip.C0 = CFrame.new(1, -1, 0) * CFrame.Angles(math.rad(90 * tuckAmount), math.rad(0), math.rad(0))
                        leftHip.C0 = CFrame.new(-1, -1, 0) * CFrame.Angles(math.rad(90 * tuckAmount), math.rad(0), math.rad(0))
                        
                        -- End flip when complete
                        if progress >= 1 then
                            if backflipLoop then
                                backflipLoop:Disconnect()
                                backflipLoop = nil
                            end
                        end
                    end)
                end
            elseif new == Enum.HumanoidStateType.Landed then
                isJumping = false
                
                -- Stop backflip loop if still running
                if backflipLoop then
                    backflipLoop:Disconnect()
                    backflipLoop = nil
                end
                
                -- Landing effect
                local landEffect = Instance.new("Part")
                landEffect.Size = Vector3.new(6, 0.2, 6)
                landEffect.Material = Enum.Material.Neon
                landEffect.BrickColor = BrickColor.new("Cyan")
                landEffect.Transparency = 0.5
                landEffect.CanCollide = false
                landEffect.Anchored = true
                landEffect.Shape = Enum.PartType.Cylinder
                landEffect.CFrame = rootPart.CFrame * CFrame.new(0, -3, 0) * CFrame.Angles(0, 0, math.rad(90))
                landEffect.Parent = workspace
                
                game:GetService("TweenService"):Create(landEffect, TweenInfo.new(0.3), 
                    {Transparency = 1, Size = Vector3.new(10, 0.2, 10)}):Play()
                game:GetService("Debris"):AddItem(landEffect, 0.3)
                
                -- Landing sound
                local landSound = Instance.new("Sound")
                landSound.SoundId = "rbxassetid://730625345"
                landSound.Volume = 0.5
                landSound.Parent = rootPart
                landSound:Play()
                game:GetService("Debris"):AddItem(landSound, 1)
            end
        end)
        
        -- Custom animation loop
        runningLoop = RunService.RenderStepped:Connect(function()
            -- Only animate if not jumping
            if not isJumping then
                local moveDir = humanoid.MoveDirection.Magnitude
                
                if moveDir > 0 then
                    -- RUNNING ANIMATION
                    local runTime = tick() * 20
                    
                    -- Arms straight back (Sonic style)
                    rightShoulder.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(-45), math.rad(10), math.rad(0))
                    leftShoulder.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(-45), math.rad(-10), math.rad(0))
                    
                    -- Legs pumping up and down rapidly
                    local rightLegAngle = math.sin(runTime) * 70
                    local leftLegAngle = math.sin(runTime + math.pi) * 70
                    
                    rightHip.C0 = CFrame.new(1, -1, 0) * CFrame.Angles(math.rad(rightLegAngle), math.rad(0), math.rad(0))
                    leftHip.C0 = CFrame.new(-1, -1, 0) * CFrame.Angles(math.rad(leftLegAngle), math.rad(0), math.rad(0))
                    
                    -- Play footstep sound
                    if not footstepSound.Playing then
                        footstepSound:Play()
                    end
                    
                    -- Speed trail effects
                    if math.random(1, 2) == 1 then
                        local trail = Instance.new("Part")
                        trail.Size = Vector3.new(3, 5, 1)
                        trail.Material = Enum.Material.Neon
                        trail.BrickColor = BrickColor.new("Cyan")
                        trail.Transparency = 0.5
                        trail.CanCollide = false
                        trail.Anchored = true
                        trail.CFrame = rootPart.CFrame * CFrame.new(0, 0, 2)
                        trail.Parent = workspace
                        
                        game:GetService("TweenService"):Create(trail, TweenInfo.new(0.4), 
                            {Transparency = 1, Size = Vector3.new(3, 5, 0.1)}):Play()
                        game:GetService("Debris"):AddItem(trail, 0.4)
                    end
                    
                    -- Speed lines
                    if math.random(1, 3) == 1 then
                        local line = Instance.new("Part")
                        line.Size = Vector3.new(0.3, 0.3, 4)
                        line.Material = Enum.Material.Neon
                        line.BrickColor = BrickColor.new("White")
                        line.Transparency = 0.6
                        line.CanCollide = false
                        line.Anchored = true
                        line.CFrame = rootPart.CFrame * CFrame.new(math.random(-3, 3), math.random(-2, 2), 5)
                        line.Parent = workspace
                        
                        game:GetService("Debris"):AddItem(line, 0.2)
                    end
                    
                else
                    -- STOPPED ANIMATION - Arms crossed, foot tapping
                    local idleTime = tick() * 4
                    
                    -- Arms crossed over chest
                    rightShoulder.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(0), math.rad(0), math.rad(-70))
                    leftShoulder.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(0), math.rad(0), math.rad(70))
                    
                    -- Right foot tapping up and down
                    local tapAngle = math.abs(math.sin(idleTime)) * 30
                    rightHip.C0 = CFrame.new(1, -1, 0) * CFrame.Angles(math.rad(-tapAngle), math.rad(0), math.rad(0))
                    leftHip.C0 = CFrame.new(-1, -1, 0) * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0))
                    
                    -- Stop footstep sound
                    if footstepSound and footstepSound.Playing then
                        footstepSound:Stop()
                    end
                end
            end
        end)
        
        print("Sonic Speed enabled! Run with WASD, Jump with Space!")
    else
        SonicBtn.Text = "💨 Sonic Speed: OFF [G]"
        SonicBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        
        -- Reset speed
        humanoid.WalkSpeed = originalWalkSpeed
        
        -- Disconnect jump detection
        if jumpConnection then
            jumpConnection:Disconnect()
            jumpConnection = nil
        end
        
        -- Stop animation loop
        if runningLoop then
            runningLoop:Disconnect()
            runningLoop = nil
        end
        
        -- Stop and remove footstep sound
        if footstepSound then
            footstepSound:Stop()
            footstepSound:Destroy()
            footstepSound = nil
        end
        
        -- Reset limbs to default positions
        local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
        if torso then
            local rightShoulder = torso:FindFirstChild("Right Shoulder")
            local leftShoulder = torso:FindFirstChild("Left Shoulder")
            local rightHip = torso:FindFirstChild("Right Hip")
            local leftHip = torso:FindFirstChild("Left Hip")
            
            if rightShoulder then
                rightShoulder.C0 = CFrame.new(1, 0.5, 0)
            end
            if leftShoulder then
                leftShoulder.C0 = CFrame.new(-1, 0.5, 0)
            end
            if rightHip then
                rightHip.C0 = CFrame.new(1, -1, 0)
            end
            if leftHip then
                leftHip.C0 = CFrame.new(-1, -1, 0)
            end
        end
        
        -- Restore default animations
        humanoid:ChangeState(Enum.HumanoidStateType.Landed)
        
        print("Sonic Speed disabled!")
    end
end

SonicBtn.MouseButton1Click:Connect(ToggleSonic)

-- Backflip Function
local backflipEnabled = false
local backflipConnection = nil

local function ToggleBackflip()
    backflipEnabled = not backflipEnabled
    local char = player.Character
    if not char then return end
    
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end
    
    local rootPart = char:FindFirstChild("HumanoidRootPart")
    if not rootPart then return end
    
    -- Play toggle sound
    local toggleSound = Instance.new("Sound")
    toggleSound.SoundId = "rbxassetid://6895079853"
    toggleSound.Volume = 0.5
    toggleSound.Parent = game.SoundService
    toggleSound:Play()
    toggleSound.Ended:Connect(function() toggleSound:Destroy() end)
    
    if backflipEnabled then
        BackflipBtn.Text = "🤸 Backflip: ON [H]"
        BackflipBtn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
        
        -- Get character parts
        local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
        local rightArm = char:FindFirstChild("Right Arm") or char:FindFirstChild("RightUpperArm")
        local leftArm = char:FindFirstChild("Left Arm") or char:FindFirstChild("LeftUpperArm")
        local rightLeg = char:FindFirstChild("Right Leg") or char:FindFirstChild("RightUpperLeg")
        local leftLeg = char:FindFirstChild("Left Leg") or char:FindFirstChild("LeftUpperLeg")
        
        -- Create motors if needed
        local function getOrCreateMotor(name, part0, part1, c0, c1)
            local motor = torso:FindFirstChild(name)
            if not motor then
                motor = Instance.new("Motor6D")
                motor.Name = name
                motor.Part0 = part0
                motor.Part1 = part1
                motor.C0 = c0
                motor.C1 = c1
                motor.Parent = torso
            end
            return motor
        end
        
        local rightShoulder = getOrCreateMotor("Right Shoulder", torso, rightArm, 
            CFrame.new(1, 0.5, 0), CFrame.new(-0.5, 0.5, 0))
        local leftShoulder = getOrCreateMotor("Left Shoulder", torso, leftArm, 
            CFrame.new(-1, 0.5, 0), CFrame.new(0.5, 0.5, 0))
        local rightHip = getOrCreateMotor("Right Hip", torso, rightLeg, 
            CFrame.new(1, -1, 0), CFrame.new(0, 1, 0))
        local leftHip = getOrCreateMotor("Left Hip", torso, leftLeg, 
            CFrame.new(-1, -1, 0), CFrame.new(0, 1, 0))
        
        local isFlipping = false
        
        backflipConnection = humanoid.StateChanged:Connect(function(old, new)
            if new == Enum.HumanoidStateType.Jumping and not isFlipping then
                isFlipping = true
                
                -- Jump sound
                local jumpSound = Instance.new("Sound")
                jumpSound.SoundId = "rbxassetid://1083819158"
                jumpSound.Volume = 0.6
                jumpSound.Parent = rootPart
                jumpSound:Play()
                game:GetService("Debris"):AddItem(jumpSound, 2)
                
                -- Backflip animation
                local flipStart = tick()
                local flipDuration = 0.6
                
                local flipLoop = nil
                flipLoop = RunService.RenderStepped:Connect(function()
                    local elapsed = tick() - flipStart
                    local progress = math.min(elapsed / flipDuration, 1)
                    
                    -- Smooth rotation curve
                    local rotation = progress * 360
                    
                    -- Rotate character
                    local vel = rootPart.AssemblyLinearVelocity
                    rootPart.CFrame = rootPart.CFrame * CFrame.Angles(math.rad(-6), 0, 0)
                    rootPart.AssemblyLinearVelocity = vel
                    
                    -- Tuck limbs during flip
                    local tuckAmount = math.sin(progress * math.pi)
                    
                    rightShoulder.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(160 * tuckAmount), 0, math.rad(-20 * tuckAmount))
                    leftShoulder.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(160 * tuckAmount), 0, math.rad(20 * tuckAmount))
                    rightHip.C0 = CFrame.new(1, -1, 0) * CFrame.Angles(math.rad(90 * tuckAmount), 0, 0)
                    leftHip.C0 = CFrame.new(-1, -1, 0) * CFrame.Angles(math.rad(90 * tuckAmount), 0, 0)
                    
                    if progress >= 1 then
                        flipLoop:Disconnect()
                        
                        -- Reset limbs
                        rightShoulder.C0 = CFrame.new(1, 0.5, 0)
                        leftShoulder.C0 = CFrame.new(-1, 0.5, 0)
                        rightHip.C0 = CFrame.new(1, -1, 0)
                        leftHip.C0 = CFrame.new(-1, -1, 0)
                    end
                end)
                
            elseif new == Enum.HumanoidStateType.Landed then
                isFlipping = false
                
                -- Landing effect
                local landEffect = Instance.new("Part")
                landEffect.Size = Vector3.new(6, 0.2, 6)
                landEffect.Material = Enum.Material.Neon
                landEffect.BrickColor = BrickColor.new("Cyan")
                landEffect.Transparency = 0.5
                landEffect.CanCollide = false
                landEffect.Anchored = true
                landEffect.Shape = Enum.PartType.Cylinder
                landEffect.CFrame = rootPart.CFrame * CFrame.new(0, -3, 0) * CFrame.Angles(0, 0, math.rad(90))
                landEffect.Parent = workspace
                
                game:GetService("TweenService"):Create(landEffect, TweenInfo.new(0.3), 
                    {Transparency = 1, Size = Vector3.new(10, 0.2, 10)}):Play()
                game:GetService("Debris"):AddItem(landEffect, 0.3)
                
                -- Landing sound
                local landSound = Instance.new("Sound")
                landSound.SoundId = "rbxassetid://730625345"
                landSound.Volume = 0.5
                landSound.Parent = rootPart
                landSound:Play()
                game:GetService("Debris"):AddItem(landSound, 1)
            end
        end)
        
        print("Backflip enabled! Press Space to do a backflip!")
    else
        BackflipBtn.Text = "🤸 Backflip: OFF [H]"
        BackflipBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        
        if backflipConnection then
            backflipConnection:Disconnect()
            backflipConnection = nil
        end
        
        print("Backflip disabled!")
    end
end

BackflipBtn.MouseButton1Click:Connect(ToggleBackflip)

-- Falling Animation Function
local fallingEnabled = false
local fallingConnection = nil

local function ToggleFalling()
    fallingEnabled = not fallingEnabled
    local char = player.Character
    if not char then return end
    
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end
    
    local rootPart = char:FindFirstChild("HumanoidRootPart")
    if not rootPart then return end
    
    -- Play toggle sound
    local toggleSound = Instance.new("Sound")
    toggleSound.SoundId = "rbxassetid://6895079853"
    toggleSound.Volume = 0.5
    toggleSound.Parent = game.SoundService
    toggleSound:Play()
    toggleSound.Ended:Connect(function() toggleSound:Destroy() end)
    
    if fallingEnabled then
        FallingBtn.Text = "🌀 Falling Anim: ON [J]"
        FallingBtn.BackgroundColor3 = Color3.fromRGB(50, 220, 50)
        
        -- Get character parts
        local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
        local rightArm = char:FindFirstChild("Right Arm") or char:FindFirstChild("RightUpperArm")
        local leftArm = char:FindFirstChild("Left Arm") or char:FindFirstChild("LeftUpperArm")
        
        -- Create motors if needed
        local function getOrCreateMotor(name, part0, part1, c0, c1)
            local motor = torso:FindFirstChild(name)
            if not motor then
                motor = Instance.new("Motor6D")
                motor.Name = name
                motor.Part0 = part0
                motor.Part1 = part1
                motor.C0 = c0
                motor.C1 = c1
                motor.Parent = torso
            end
            return motor
        end
        
        local rightShoulder = getOrCreateMotor("Right Shoulder", torso, rightArm, 
            CFrame.new(1, 0.5, 0), CFrame.new(-0.5, 0.5, 0))
        local leftShoulder = getOrCreateMotor("Left Shoulder", torso, leftArm, 
            CFrame.new(-1, 0.5, 0), CFrame.new(0.5, 0.5, 0))
        
        local isFalling = false
        
        fallingConnection = humanoid.StateChanged:Connect(function(old, new)
            if new == Enum.HumanoidStateType.Freefall and not isFalling then
                isFalling = true
                
                -- Falling / wind sound effect
                local fallingSound = Instance.new("Sound")
                fallingSound.SoundId = "rbxassetid://1647649255" -- Wind/falling sound
                fallingSound.Volume = 0.8
                fallingSound.PlaybackSpeed = 1.1
                fallingSound.Parent = rootPart
                fallingSound:Play()
                game:GetService("Debris"):AddItem(fallingSound, 2)
                
                -- Blue falling visual effect
                local fallingEffect = Instance.new("Part")
                fallingEffect.Size = Vector3.new(4, 6, 4) * 1.25
                fallingEffect.Material = Enum.Material.Neon
                fallingEffect.Color = Color3.fromRGB(0, 170, 255)
                fallingEffect.Transparency = 0.35
                fallingEffect.CanCollide = false
                fallingEffect.Anchored = false
                fallingEffect.Shape = Enum.PartType.Ball
                fallingEffect.CFrame = rootPart.CFrame
                fallingEffect.Parent = workspace
                
                -- Weld effect to character
                local weld = Instance.new("Weld")
                weld.Part0 = rootPart
                weld.Part1 = fallingEffect
                weld.Parent = fallingEffect
                
                -- Falling animation (1 second duration)
                local fallStart = tick()
                local fallDuration = 1.0
                
                local fallLoop = nil
                fallLoop = RunService.RenderStepped:Connect(function()
                    local elapsed = tick() - fallStart
                    
                    if elapsed <= fallDuration then
                        -- Arms straight up (falling pose)
                        -- Right Arm: X = -85, Y = 0, Z = 10
                        rightShoulder.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(-85), math.rad(0), math.rad(10))
                        
                        -- Left Arm: X = -85, Y = 0, Z = -10
                        leftShoulder.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(-85), math.rad(0), math.rad(-10))
                        
                        -- Torso tilt backward: X = 15, Y = 0, Z = 0
                        local rootJoint = torso:FindFirstChild("Root Joint") or torso:FindFirstChild("Root")
                        if rootJoint and rootJoint:IsA("Motor6D") then
                            rootJoint.C0 = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(15), math.rad(0), math.rad(0))
                        end
                        
                        -- Smooth Y rotation: 454.867 degrees per second
                        local rotationSpeed = 454.867
                        local currentRotation = elapsed * rotationSpeed
                        rootPart.CFrame = rootPart.CFrame * CFrame.Angles(math.rad(0), math.rad(rotationSpeed * 0.016), math.rad(0))
                        
                    else
                        -- Stop animation after 1 second
                        fallLoop:Disconnect()
                        
                        -- Remove effect
                        if fallingEffect then
                            fallingEffect:Destroy()
                        end
                        
                        -- Reset arms
                        rightShoulder.C0 = CFrame.new(1, 0.5, 0)
                        leftShoulder.C0 = CFrame.new(-1, 0.5, 0)
                        
                        -- Reset torso
                        local rootJoint = torso:FindFirstChild("Root Joint") or torso:FindFirstChild("Root")
                        if rootJoint and rootJoint:IsA("Motor6D") then
                            rootJoint.C0 = CFrame.new(0, 0, 0)
                        end
                    end
                end)
                
            elseif new == Enum.HumanoidStateType.Landed then
                isFalling = false
                
                -- Landing effect
                local landEffect = Instance.new("Part")
                landEffect.Size = Vector3.new(6, 0.2, 6)
                landEffect.Material = Enum.Material.Neon
                landEffect.Color = Color3.fromRGB(0, 170, 255)
                landEffect.Transparency = 0.5
                landEffect.CanCollide = false
                landEffect.Anchored = true
                landEffect.Shape = Enum.PartType.Cylinder
                landEffect.CFrame = rootPart.CFrame * CFrame.new(0, -3, 0) * CFrame.Angles(0, 0, math.rad(90))
                landEffect.Parent = workspace
                
                game:GetService("TweenService"):Create(landEffect, TweenInfo.new(0.3), 
                    {Transparency = 1, Size = Vector3.new(10, 0.2, 10)}):Play()
                game:GetService("Debris"):AddItem(landEffect, 0.3)
                
                -- Landing sound
                local landSound = Instance.new("Sound")
                landSound.SoundId = "rbxassetid://730625345"
                landSound.Volume = 0.5
                landSound.Parent = rootPart
                landSound:Play()
                game:GetService("Debris"):AddItem(landSound, 1)
            end
        end)
        
        print("Falling Animation enabled! Jump and fall to see it!")
    else
        FallingBtn.Text = "🌀 Falling Anim: OFF [J]"
        FallingBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        
        if fallingConnection then
            fallingConnection:Disconnect()
            fallingConnection = nil
        end
        
        print("Falling Animation disabled!")
    end
end

FallingBtn.MouseButton1Click:Connect(ToggleFalling)

-- Light Sword
LightSwordBtn.MouseButton1Click:Connect(function()
    -- Play sound effect
    local clickSound = Instance.new("Sound")
    clickSound.SoundId = "rbxassetid://6895079853"
    clickSound.Volume = 0.5
    clickSound.Parent = game.SoundService
    clickSound:Play()
    clickSound.Ended:Connect(function() clickSound:Destroy() end)
    
    -- Create working sword
    local sword = Instance.new("Tool")
    sword.Name = "Light Sword"
    sword.RequiresHandle = true
    sword.CanBeDropped = false
    sword.GripForward = Vector3.new(-1, 0, 0)
    sword.GripPos = Vector3.new(0, 0, -1.5)
    sword.GripRight = Vector3.new(0, 1, 0)
    sword.GripUp = Vector3.new(0, 0, 1)
    
    local handle = Instance.new("Part")
    handle.Name = "Handle"
    handle.Size = Vector3.new(1, 4, 1)
    handle.BrickColor = BrickColor.new("Cyan")
    handle.Material = Enum.Material.Neon
    handle.CanCollide = false
    handle.Parent = sword
    
    local mesh = Instance.new("SpecialMesh")
    mesh.MeshType = Enum.MeshType.FileMesh
    mesh.MeshId = "rbxasset://fonts/sword.mesh"
    mesh.TextureId = "rbxasset://textures/SwordTexture.png"
    mesh.Scale = Vector3.new(1, 1, 1)
    mesh.Parent = handle
    
    local light = Instance.new("PointLight")
    light.Brightness = 5
    light.Color = Color3.fromRGB(0, 255, 255)
    light.Range = 15
    light.Parent = handle
    
    local slashSound = Instance.new("Sound")
    slashSound.SoundId = "rbxassetid://12222216"
    slashSound.Volume = 0.5
    slashSound.Parent = handle
    
    local lungeSound = Instance.new("Sound")
    lungeSound.SoundId = "rbxassetid://12222208"
    lungeSound.Volume = 0.5
    lungeSound.Parent = handle
    
    local unsheatheSound = Instance.new("Sound")
    unsheatheSound.SoundId = "rbxassetid://12222225"
    unsheatheSound.Volume = 0.5
    unsheatheSound.Parent = handle
    
    local debounce = false
    
    sword.Equipped:Connect(function()
        unsheatheSound:Play()
    end)
    
    sword.Activated:Connect(function()
        if debounce then return end
        debounce = true
        
        local char = player.Character
        if not char then debounce = false return end
        
        local humanoid = char:FindFirstChildOfClass("Humanoid")
        local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
        
        if humanoid and torso then
            -- Slash animation
            slashSound:Play()
            
            -- Create animation value
            local anim = Instance.new("StringValue")
            anim.Name = "toolanim"
            anim.Value = "Slash"
            anim.Parent = sword
            game:GetService("Debris"):AddItem(anim, 0.1)
            
            wait(0.2)
            
            -- Damage enemies in range
            local swordPos = handle.Position
            for _, part in pairs(workspace:GetPartBoundsInRadius(swordPos, 8)) do
                if part.Parent and part.Parent:FindFirstChild("Humanoid") then
                    local enemyHumanoid = part.Parent:FindFirstChild("Humanoid")
                    if enemyHumanoid and part.Parent ~= char then
                        enemyHumanoid:TakeDamage(30)
                        
                        -- Knockback effect
                        local enemyTorso = part.Parent:FindFirstChild("Torso") or part.Parent:FindFirstChild("UpperTorso")
                        if enemyTorso then
                            local knockback = Instance.new("BodyVelocity")
                            knockback.Velocity = (enemyTorso.Position - torso.Position).Unit * 50 + Vector3.new(0, 20, 0)
                            knockback.MaxForce = Vector3.new(4000, 4000, 4000)
                            knockback.Parent = enemyTorso
                            game:GetService("Debris"):AddItem(knockback, 0.3)
                        end
                    end
                end
            end
        end
        
        wait(0.5)
        debounce = false
    end)
    
    sword.Parent = player.Backpack
    print("Light Sword given!")
end)

-- Spawn Part Tool
SpawnPartBtn.MouseButton1Click:Connect(function()
    -- Play sound effect
    local clickSound = Instance.new("Sound")
    clickSound.SoundId = "rbxassetid://6895079853"
    clickSound.Volume = 0.5
    clickSound.Parent = game.SoundService
    clickSound:Play()
    clickSound.Ended:Connect(function() clickSound:Destroy() end)
    
    local mouse = player:GetMouse()
    
    -- Part Spawner Tool
    local partTool = Instance.new("Tool")
    partTool.Name = "🟦 Part Spawner"
    partTool.RequiresHandle = false
    partTool.CanBeDropped = false
    
    partTool.Activated:Connect(function()
        -- Spawn a new part at mouse position
        local newPart = Instance.new("Part")
        newPart.Size = Vector3.new(4, 1, 2)
        newPart.Material = Enum.Material.SmoothPlastic
        newPart.BrickColor = BrickColor.new("Bright blue")
        newPart.Position = mouse.Hit.Position + Vector3.new(0, 2, 0)
        newPart.Anchored = true
        newPart.Parent = workspace
        
        -- Spawn effect
        local spawnEffect = Instance.new("Part")
        spawnEffect.Size = Vector3.new(5, 5, 5)
        spawnEffect.Material = Enum.Material.Neon
        spawnEffect.BrickColor = BrickColor.new("Cyan")
        spawnEffect.Transparency = 0.5
        spawnEffect.CanCollide = false
        spawnEffect.Anchored = true
        spawnEffect.Shape = Enum.PartType.Ball
        spawnEffect.CFrame = newPart.CFrame
        spawnEffect.Parent = workspace
        
        game:GetService("TweenService"):Create(spawnEffect, TweenInfo.new(0.5), 
            {Transparency = 1, Size = Vector3.new(8, 8, 8)}):Play()
        game:GetService("Debris"):AddItem(spawnEffect, 0.5)
        
        -- Spawn sound
        local spawnSound = Instance.new("Sound")
        spawnSound.SoundId = "rbxassetid://6895079853"
        spawnSound.Volume = 0.4
        spawnSound.Parent = newPart
        spawnSound:Play()
        game:GetService("Debris"):AddItem(spawnSound, 1)
        
        print("Part spawned!")
    end)
    
    partTool.Parent = player.Backpack
    
    print("Part Spawner tool given!")
end)

-- BTools
BToolsBtn.MouseButton1Click:Connect(function()
    -- Play sound effect
    local clickSound = Instance.new("Sound")
    clickSound.SoundId = "rbxassetid://6895079853"
    clickSound.Volume = 0.5
    clickSound.Parent = game.SoundService
    clickSound:Play()
    clickSound.Ended:Connect(function() clickSound:Destroy() end)
    
    local mouse = player:GetMouse()
    
    -- Move Tool
    local moveTool = Instance.new("Tool")
    moveTool.Name = "🔷 Move"
    moveTool.RequiresHandle = false
    moveTool.CanBeDropped = false
    
    local selectedPart = nil
    local moving = false
    local originalCFrame = nil
    
    moveTool.Activated:Connect(function()
        if not moving and mouse.Target and mouse.Target:IsA("BasePart") then
            selectedPart = mouse.Target
            moving = true
            originalCFrame = selectedPart.CFrame
            
            -- Create selection box
            local selectionBox = Instance.new("SelectionBox")
            selectionBox.Name = "MoveSelection"
            selectionBox.Adornee = selectedPart
            selectionBox.Color3 = Color3.fromRGB(0, 170, 255)
            selectionBox.LineThickness = 0.1
            selectionBox.Transparency = 0.5
            selectionBox.Parent = selectedPart
            
            print("Moving: " .. selectedPart.Name .. " (Click again to place)")
            
            -- Movement loop
            local moveConnection
            moveConnection = RunService.RenderStepped:Connect(function()
                if moving and selectedPart and selectedPart.Parent then
                    local targetPos = mouse.Hit.Position + Vector3.new(0, selectedPart.Size.Y/2, 0)
                    selectedPart.CFrame = CFrame.new(targetPos)
                else
                    moveConnection:Disconnect()
                end
            end)
            
        elseif moving and selectedPart then
            -- Stop moving
            moving = false
            
            -- Remove selection box
            local box = selectedPart:FindFirstChild("MoveSelection")
            if box then box:Destroy() end
            
            print("Placed: " .. selectedPart.Name)
            selectedPart = nil
        end
    end)
    
    moveTool.Unequipped:Connect(function()
        moving = false
        if selectedPart then
            local box = selectedPart:FindFirstChild("MoveSelection")
            if box then box:Destroy() end
            selectedPart = nil
        end
    end)
    
    moveTool.Parent = player.Backpack
    
    -- Resize Tool
    local resizeTool = Instance.new("Tool")
    resizeTool.Name = "📏 Resize"
    resizeTool.RequiresHandle = false
    resizeTool.CanBeDropped = false
    
    local resizingPart = nil
    local resizeAxis = "Y"
    local axisIndex = 1
    local axes = {"Y", "X", "Z"}
    
    resizeTool.Equipped:Connect(function()
        print("Resize Tool: Click part, then press Q to grow / E to shrink. R to change axis.")
    end)
    
    resizeTool.Activated:Connect(function()
        if mouse.Target and mouse.Target:IsA("BasePart") then
            -- Clear old selection
            if resizingPart then
                local oldBox = resizingPart:FindFirstChild("ResizeSelection")
                if oldBox then oldBox:Destroy() end
            end
            
            resizingPart = mouse.Target
            
            -- Create selection box
            local selectionBox = Instance.new("SelectionBox")
            selectionBox.Name = "ResizeSelection"
            selectionBox.Adornee = resizingPart
            selectionBox.Color3 = Color3.fromRGB(255, 170, 0)
            selectionBox.LineThickness = 0.1
            selectionBox.Transparency = 0.5
            selectionBox.Parent = resizingPart
            
            print("Selected: " .. resizingPart.Name .. " | Axis: " .. resizeAxis .. " | Q=Grow E=Shrink R=ChangeAxis")
        end
    end)
    
    resizeTool.Unequipped:Connect(function()
        if resizingPart then
            local box = resizingPart:FindFirstChild("ResizeSelection")
            if box then box:Destroy() end
            resizingPart = nil
        end
    end)
    
    resizeTool.Parent = player.Backpack
    
    -- Resize key controls
    local resizeConnection
    resizeConnection = UIS.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed then return end
        
        if resizingPart and resizingPart.Parent then
            if input.KeyCode == Enum.KeyCode.Q then
                -- Grow
                local currentSize = resizingPart.Size
                if resizeAxis == "X" then
                    resizingPart.Size = currentSize + Vector3.new(1, 0, 0)
                elseif resizeAxis == "Y" then
                    resizingPart.Size = currentSize + Vector3.new(0, 1, 0)
                elseif resizeAxis == "Z" then
                    resizingPart.Size = currentSize + Vector3.new(0, 0, 1)
                end
                print("Grew on " .. resizeAxis .. " axis")
                
            elseif input.KeyCode == Enum.KeyCode.E then
                -- Shrink
                local currentSize = resizingPart.Size
                if resizeAxis == "X" and currentSize.X > 1 then
                    resizingPart.Size = currentSize - Vector3.new(1, 0, 0)
                elseif resizeAxis == "Y" and currentSize.Y > 1 then
                    resizingPart.Size = currentSize - Vector3.new(0, 1, 0)
                elseif resizeAxis == "Z" and currentSize.Z > 1 then
                    resizingPart.Size = currentSize - Vector3.new(0, 0, 1)
                end
                print("Shrunk on " .. resizeAxis .. " axis")
                
            elseif input.KeyCode == Enum.KeyCode.R then
                -- Change axis
                axisIndex = (axisIndex % 3) + 1
                resizeAxis = axes[axisIndex]
                print("Changed to " .. resizeAxis .. " axis")
            end
        end
    end)
    
    -- Clone Tool
    local cloneTool = Instance.new("Tool")
    cloneTool.Name = "📋 Clone"
    cloneTool.RequiresHandle = false
    cloneTool.CanBeDropped = false
    
    cloneTool.Activated:Connect(function()
        if mouse.Target and mouse.Target:IsA("BasePart") then
            local clone = mouse.Target:Clone()
            clone.Position = clone.Position + Vector3.new(0, 5, 0)
            clone.Parent = workspace
            
            local sound = Instance.new("Sound")
            sound.SoundId = "rbxassetid://6895079853"
            sound.Volume = 0.3
            sound.Parent = game.SoundService
            sound:Play()
            game:GetService("Debris"):AddItem(sound, 1)
            
            print("Cloned: " .. mouse.Target.Name)
        end
    end)
    
    cloneTool.Parent = player.Backpack
    
    -- Delete Tool
    local deleteTool = Instance.new("Tool")
    deleteTool.Name = "🗑️ Delete"
    deleteTool.RequiresHandle = false
    deleteTool.CanBeDropped = false
    
    deleteTool.Activated:Connect(function()
        if mouse.Target and mouse.Target:IsA("BasePart") then
            local targetName = mouse.Target.Name
            mouse.Target:Destroy()
            
            local sound = Instance.new("Sound")
            sound.SoundId = "rbxassetid://4590662766"
            sound.Volume = 0.3
            sound.Parent = game.SoundService
            sound:Play()
            game:GetService("Debris"):AddItem(sound, 1)
            
            print("Deleted: " .. targetName)
        end
    end)
    
    deleteTool.Parent = player.Backpack
    
    -- Paint Tool
    local paintTool = Instance.new("Tool")
    paintTool.Name = "🎨 Paint"
    paintTool.RequiresHandle = false
    paintTool.CanBeDropped = false
    
    local colors = {
        BrickColor.new("Bright red"),
        BrickColor.new("Bright blue"),
        BrickColor.new("Bright green"),
        BrickColor.new("Bright yellow"),
        BrickColor.new("Hot pink"),
        BrickColor.new("Cyan"),
        BrickColor.new("Really black"),
        BrickColor.new("Institutional white")
    }
    local colorIndex = 1
    
    paintTool.Activated:Connect(function()
        if mouse.Target and mouse.Target:IsA("BasePart") then
            mouse.Target.BrickColor = colors[colorIndex]
            colorIndex = colorIndex % #colors + 1
            
            local sound = Instance.new("Sound")
            sound.SoundId = "rbxassetid://6895079853"
            sound.Volume = 0.2
            sound.Parent = game.SoundService
            sound:Play()
            game:GetService("Debris"):AddItem(sound, 1)
            
            print("Painted: " .. mouse.Target.Name)
        end
    end)
    
    paintTool.Parent = player.Backpack
    
    print("BTools loaded! Move (click twice), Resize (Q/E/R keys), Clone, Delete, Paint")
end)

-- Slider
local dragging = false
SliderBG.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
    end
end)

UIS.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = false
    end
end)

-- Key Input
UIS.InputBegan:Connect(function(input, gpe)
    if gpe then return end
    
    if input.KeyCode == Enum.KeyCode.F then
        ToggleFly()
    elseif input.KeyCode == Enum.KeyCode.N then
        ToggleNoclip()
    elseif input.KeyCode == Enum.KeyCode.I then
        ToggleInvisible()
    elseif input.KeyCode == Enum.KeyCode.G then
        ToggleSonic()
    elseif input.KeyCode == Enum.KeyCode.H then
        ToggleBackflip()
    elseif input.KeyCode == Enum.KeyCode.J then
        ToggleFalling()
    elseif input.KeyCode == Enum.KeyCode.W then keys.W = true
    elseif input.KeyCode == Enum.KeyCode.A then keys.A = true
    elseif input.KeyCode == Enum.KeyCode.S then keys.S = true
    elseif input.KeyCode == Enum.KeyCode.D then keys.D = true
    elseif input.KeyCode == Enum.KeyCode.Space then keys.Space = true
    elseif input.KeyCode == Enum.KeyCode.LeftShift then keys.LeftShift = true
    end
end)

UIS.InputEnded:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.W then keys.W = false
    elseif input.KeyCode == Enum.KeyCode.A then keys.A = false
    elseif input.KeyCode == Enum.KeyCode.S then keys.S = false
    elseif input.KeyCode == Enum.KeyCode.D then keys.D = false
    elseif input.KeyCode == Enum.KeyCode.Space then keys.Space = false
    elseif input.KeyCode == Enum.KeyCode.LeftShift then keys.LeftShift = false
    end
end)

-- Noclip Loop
RunService.Stepped:Connect(function()
    if noclip then
        local char = player.Character
        if char then
            for _, part in pairs(char:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = false
                end
            end
        end
    end
end)

-- Main Loop
RunService.Heartbeat:Connect(function()
    -- Rainbow Effects
    local hue = tick() % 5 / 5
    local rainbowColor = Color3.fromHSV(hue, 1, 1)
    MainFrame.BorderColor3 = rainbowColor
    Credits.TextColor3 = rainbowColor
    SliderFill.BackgroundColor3 = rainbowColor
    Title.TextColor3 = rainbowColor
    
    -- Animate button circles
    for _, obj in pairs(Page1:GetDescendants()) do
        if obj:IsA("Frame") and obj.Parent:IsA("TextButton") and obj.Size == UDim2.new(0, 8, 0, 8) then
            obj.BackgroundColor3 = rainbowColor
        end
    end
    
    for _, obj in pairs(Page2:GetDescendants()) do
        if obj:IsA("Frame") and obj.Parent:IsA("TextButton") and obj.Size == UDim2.new(0, 8, 0, 8) then
            obj.BackgroundColor3 = rainbowColor
        end
    end
    
    -- Slider
    if dragging then
        local mousePos = UIS:GetMouseLocation().X
        local sliderPos = SliderBG.AbsolutePosition.X
        local sliderSize = SliderBG.AbsoluteSize.X
        local relative = math.clamp(mousePos - sliderPos, 0, sliderSize)
        local percent = relative / sliderSize
        
        flySpeed = math.floor(percent * maxSpeed)
        if flySpeed < 10 then flySpeed = 10 end
        
        SliderFill.Size = UDim2.new(percent, 0, 1, 0)
        SpeedLabel.Text = "⚡ Speed: " .. flySpeed
    end
    
    -- Flying
    if flying then
        local root = getRoot()
        if not root or not BV or not BG then return end
        
        local cam = workspace.CurrentCamera
        local direction = Vector3.new()
        
        if keys.W then direction = direction + cam.CFrame.LookVector end
        if keys.S then direction = direction - cam.CFrame.LookVector end
        if keys.A then direction = direction - cam.CFrame.RightVector end
        if keys.D then direction = direction + cam.CFrame.RightVector end
        if keys.Space then direction = direction + Vector3.new(0, 1, 0) end
        if keys.LeftShift then direction = direction - Vector3.new(0, 1, 0) end
        
        if direction.Magnitude > 0 then
            direction = direction.Unit
        end
        
        BV.Velocity = direction * flySpeed
        BG.CFrame = cam.CFrame
    end
end)

print("🌈 RainbowEreed Hub Loaded!")
print("Press F to fly, N for noclip, I for invisible, G for Sonic Speed, H for Backflip, J for Falling Anim!")

Features & Information

RAINBOWEREED HUB!! This took me a couple Days to make Well enjoy :) Oh yeah I will make more when i have more time

Community Comments (0)

No comments yet for this script.

More Scripts for Free Client Script Executor *BACK*