troll script too troll people still working on it
Key RequiredUniversal

troll script too troll people still working on it

Universal Scriptmandora_scriptsmandora_scripts 2.1K views 2.1K executesUpdated Apr 26, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Scriptβ€’1044 lines (34626 chars)
-- // DEV TROLL MENU V7 - PERSISTS AFTER DEATH // --

local player = game.Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local userInput = game:GetService("UserInputService")
local runService = game:GetService("RunService")
local lighting = game:GetService("Lighting")
local workspace = game:GetService("Workspace")
local replicatedStorage = game:GetService("ReplicatedStorage")

-- Variables
local char = player.Character or player.CharacterAdded:Wait()
local humanoid = char:WaitForChild("Humanoid")
local rootPart = char:WaitForChild("HumanoidRootPart")

-- Active connections storage
local activeConnections = {}
local activeFlags = {
    flying = false,
    noclip = false,
    infHealth = false,
    spinActive = false,
    xrayActive = false
}

-- Spawn Point Variables
local customSpawnPoint = nil
local multiSpawns = {}

-- Helper to refresh character
local function refreshChar()
    char = player.Character
    if not char then return end
    humanoid = char:FindFirstChild("Humanoid")
    rootPart = char:FindFirstChild("HumanoidRootPart")
end

-- REAPPLY TOGGLES AFTER RESPAWN (THIS KEEPS THEM ACTIVE)
local function onCharacterAdded(newChar)
    char = newChar
    humanoid = char:WaitForChild("Humanoid")
    rootPart = char:WaitForChild("HumanoidRootPart")
    
    -- Re-apply any active features after respawn
    if activeFlags.infHealth then
        startInfHealth()
    end
    if activeFlags.flying then
        startFly()
    end
    if activeFlags.noclip then
        startNoclip()
    end
    if activeFlags.xrayActive then
        startXray()
    end
    if activeFlags.spinActive then
        startSpin()
    end
    
    -- Re-apply speed/jump if they were modified
    if humanoid and savedWalkSpeed and savedWalkSpeed > 0 then
        humanoid.WalkSpeed = savedWalkSpeed
    end
    if humanoid and savedJumpPower and savedJumpPower > 0 then
        humanoid.JumpPower = savedJumpPower
    end
end

-- Store saved speeds
local savedWalkSpeed = 0
local savedJumpPower = 0

player.CharacterAdded:Connect(onCharacterAdded)

-- Helper to send chat message
local function sendChatMessage(message)
    if message == "" then return end
    local chat = replicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
    if chat and chat:FindFirstChild("SayMessageRequest") then
        chat.SayMessageRequest:FireServer(message, "All")
    end
end

-- // UI Creation // (Parented to playerGui - SURVIVES DEATH)
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DevMenu"
screenGui.Parent = playerGui
screenGui.ResetOnSpawn = false  -- THIS IS KEY - prevents reset on death

-- Main Frame
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 420, 0, 680)
mainFrame.Position = UDim2.new(0.5, -210, 0.5, -340)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
mainFrame.BackgroundTransparency = 0.05
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui

local corners = Instance.new("UICorner")
corners.CornerRadius = UDim.new(0, 12)
corners.Parent = mainFrame

-- Title Bar
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 50)
titleBar.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame

local titleCorners = Instance.new("UICorner")
titleCorners.CornerRadius = UDim.new(0, 12)
titleCorners.Parent = titleBar

local titleText = Instance.new("TextLabel")
titleText.Size = UDim2.new(1, 0, 1, 0)
titleText.BackgroundTransparency = 1
titleText.Text = "πŸ”₯ TROLL TOOLBOX v7"
titleText.TextColor3 = Color3.fromRGB(255, 80, 80)
titleText.TextSize = 18
titleText.Font = Enum.Font.GothamBold
titleText.TextXAlignment = Enum.TextXAlignment.Left
titleText.Position = UDim2.new(0, 15, 0, 0)
titleText.Parent = titleBar

-- Close Button
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 35, 1, -10)
closeBtn.Position = UDim2.new(1, -42, 0, 5)
closeBtn.Text = "βœ•"
closeBtn.TextColor3 = Color3.fromRGB(255, 80, 80)
closeBtn.TextSize = 20
closeBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
closeBtn.BorderSizePixel = 0
closeBtn.Parent = titleBar

local closeCorners = Instance.new("UICorner")
closeCorners.CornerRadius = UDim.new(0, 6)
closeCorners.Parent = closeBtn

closeBtn.MouseButton1Click:Connect(function()
    screenGui:Destroy()
    for _, conn in pairs(activeConnections) do
        if conn then conn:Disconnect() end
    end
end)

-- Tab Buttons
local tabBar = Instance.new("Frame")
tabBar.Size = UDim2.new(1, 0, 0, 50)
tabBar.Position = UDim2.new(0, 0, 0, 50)
tabBar.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
tabBar.BorderSizePixel = 0
tabBar.Parent = mainFrame

local tabs = {"MOVEMENT", "VISUALS", "CRAZY", "LIGHTING", "FAKE TXT", "IMPERSONATE", "INVENTORY", "SPAWN"}
local tabButtons = {}
local currentTab = "MOVEMENT"

-- Content Frame
local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, -15, 1, -120)
contentFrame.Position = UDim2.new(0, 8, 0, 110)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = mainFrame

local function switchTab(tabName)
    currentTab = tabName
    for _, child in ipairs(contentFrame:GetChildren()) do
        if child:IsA("ScrollingFrame") then
            child.Visible = (child.Name == tabName)
        end
    end
    for i, btn in ipairs(tabButtons) do
        btn.BackgroundColor3 = (tabs[i] == tabName) and Color3.fromRGB(255, 80, 80) or Color3.fromRGB(45, 45, 55)
        btn.TextColor3 = (tabs[i] == tabName) and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(180, 180, 200)
    end
end

for i, tabName in ipairs(tabs) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1/#tabs, 0, 1, 0)
    btn.Position = UDim2.new((i-1)/#tabs, 0, 0, 0)
    btn.Text = tabName
    btn.TextColor3 = Color3.fromRGB(180, 180, 200)
    btn.TextSize = 9
    btn.Font = Enum.Font.GothamSemibold
    btn.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
    btn.BorderSizePixel = 0
    btn.Parent = tabBar
    table.insert(tabButtons, btn)
    
    btn.MouseButton1Click:Connect(function()
        switchTab(tabName)
    end)
end

-- Helper: Create scrolling frame
local function createScrollingTab(tabName)
    local scroll = Instance.new("ScrollingFrame")
    scroll.Name = tabName
    scroll.Size = UDim2.new(1, 0, 1, 0)
    scroll.BackgroundTransparency = 1
    scroll.ScrollBarThickness = 5
    scroll.ScrollBarImageColor3 = Color3.fromRGB(255, 80, 80)
    scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
    scroll.Parent = contentFrame
    scroll.Visible = (tabName == currentTab)
    
    local layout = Instance.new("UIListLayout")
    layout.Padding = UDim.new(0, 6)
    layout.SortOrder = Enum.SortOrder.LayoutOrder
    layout.Parent = scroll
    
    layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
        scroll.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 10)
    end)
    
    return scroll
end

-- Helper: Add button
local function addButton(parent, text, color, callback)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -10, 0, 40)
    btn.Text = text
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.TextSize = 13
    btn.Font = Enum.Font.Gotham
    btn.BackgroundColor3 = color or Color3.fromRGB(55, 55, 65)
    btn.BorderSizePixel = 0
    btn.Parent = parent
    
    local btnCorners = Instance.new("UICorner")
    btnCorners.CornerRadius = UDim.new(0, 8)
    btnCorners.Parent = btn
    
    btn.MouseButton1Click:Connect(callback)
    return btn
end

-- Helper: Add toggle button
local function addToggle(parent, text, color, onToggle)
    local state = false
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -10, 0, 40)
    btn.Text = text .. " ❌"
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.TextSize = 13
    btn.Font = Enum.Font.Gotham
    btn.BackgroundColor3 = color or Color3.fromRGB(55, 55, 65)
    btn.BorderSizePixel = 0
    btn.Parent = parent
    
    local btnCorners = Instance.new("UICorner")
    btnCorners.CornerRadius = UDim.new(0, 8)
    btnCorners.Parent = btn
    
    local function updateButton()
        btn.Text = text .. (state and " βœ…" or " ❌")
        btn.BackgroundColor3 = state and Color3.fromRGB(80, 50, 50) or (color or Color3.fromRGB(55, 55, 65))
    end
    updateButton()
    
    btn.MouseButton1Click:Connect(function()
        state = not state
        updateButton()
        if onToggle then onToggle(state) end
    end)
    
    return btn, function() return state end
end

-- ========== FLY SYSTEM ==========
local flyBodyVelocity = nil
local flyConnection = nil

local function startFly()
    refreshChar()
    if not humanoid then return end
    humanoid.PlatformStand = true
    
    flyBodyVelocity = Instance.new("BodyVelocity")
    flyBodyVelocity.MaxForce = Vector3.new(1e6, 1e6, 1e6)
    flyBodyVelocity.Velocity = Vector3.new(0, 0, 0)
    if rootPart then
        flyBodyVelocity.Parent = rootPart
    end
    
    if flyConnection then flyConnection:Disconnect() end
    flyConnection = userInput.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed or not activeFlags.flying then return end
        if not flyBodyVelocity or flyBodyVelocity.Parent == nil then return end
        if not rootPart then return end
        
        local currentVel = flyBodyVelocity.Velocity
        if input.KeyCode == Enum.KeyCode.W then
            flyBodyVelocity.Velocity = currentVel + Vector3.new(0, 0, -60)
        elseif input.KeyCode == Enum.KeyCode.S then
            flyBodyVelocity.Velocity = currentVel + Vector3.new(0, 0, 60)
        elseif input.KeyCode == Enum.KeyCode.A then
            flyBodyVelocity.Velocity = currentVel + Vector3.new(-60, 0, 0)
        elseif input.KeyCode == Enum.KeyCode.D then
            flyBodyVelocity.Velocity = currentVel + Vector3.new(60, 0, 0)
        elseif input.KeyCode == Enum.KeyCode.Space then
            flyBodyVelocity.Velocity = currentVel + Vector3.new(0, 60, 0)
        elseif input.KeyCode == Enum.KeyCode.LeftShift then
            flyBodyVelocity.Velocity = currentVel + Vector3.new(0, -60, 0)
        end
    end)
end

local function stopFly()
    if flyBodyVelocity then flyBodyVelocity:Destroy() end
    if flyConnection then flyConnection:Disconnect() end
    flyBodyVelocity = nil
    flyConnection = nil
    refreshChar()
    if humanoid then
        humanoid.PlatformStand = false
    end
end

-- ========== NOCLIP SYSTEM ==========
local noclipConnection = nil

local function startNoclip()
    if noclipConnection then noclipConnection:Disconnect() end
    noclipConnection = runService.Stepped:Connect(function()
        if activeFlags.noclip and player.Character then
            for _, part in ipairs(player.Character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = false
                end
            end
        end
    end)
end

local function stopNoclip()
    if noclipConnection then noclipConnection:Disconnect() end
    noclipConnection = nil
    if player.Character then
        for _, part in ipairs(player.Character:GetDescendants()) do
            if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
                part.CanCollide = true
            end
        end
    end
end

-- ========== INFINITE HEALTH ==========
local healthConnection = nil

local function startInfHealth()
    if healthConnection then healthConnection:Disconnect() end
    healthConnection = runService.Heartbeat:Connect(function()
        if player.Character and player.Character:FindFirstChild("Humanoid") then
            local hum = player.Character.Humanoid
            if hum.Health < hum.MaxHealth then
                hum.Health = hum.MaxHealth
            end
        end
    end)
end

local function stopInfHealth()
    if healthConnection then healthConnection:Disconnect() end
    healthConnection = nil
end

-- ========== X-RAY (NO LAG) ==========
local xrayConnection = nil
local xrayParts = {}

local function startXray()
    local function updateXray()
        for _, obj in ipairs(workspace:GetDescendants()) do
            if obj:IsA("BasePart") and obj.Transparency < 0.9 and not obj:IsDescendantOf(player.Character) then
                if not xrayParts[obj] then
                    xrayParts[obj] = true
                    obj.LocalTransparencyModifier = 0.5
                end
            end
        end
    end
    
    updateXray()
    if xrayConnection then xrayConnection:Disconnect() end
    xrayConnection = workspace.DescendantAdded:Connect(function(desc)
        if desc:IsA("BasePart") and not desc:IsDescendantOf(player.Character) then
            desc.LocalTransparencyModifier = 0.5
            xrayParts[desc] = true
        end
    end)
end

local function stopXray()
    if xrayConnection then xrayConnection:Disconnect() end
    xrayConnection = nil
    for part in pairs(xrayParts) do
        if part and part.Parent then
            part.LocalTransparencyModifier = 0
        end
    end
    xrayParts = {}
end

-- ========== SPIN SYSTEM ==========
local spinConnection = nil

local function startSpin()
    if spinConnection then spinConnection:Disconnect() end
    spinConnection = runService.Stepped:Connect(function()
        if activeFlags.spinActive and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
            local hrp = player.Character.HumanoidRootPart
            hrp.CFrame = hrp.CFrame * CFrame.Angles(0, math.rad(25), 0)
        end
    end)
end

local function stopSpin()
    if spinConnection then spinConnection:Disconnect() end
    spinConnection = nil
end

-- ========== MOVEMENT TAB ==========
local moveScroll = createScrollingTab("MOVEMENT")

addToggle(moveScroll, "πŸ•ŠοΈ FLY MODE (WASD + Space/Shift)", Color3.fromRGB(70, 50, 90), function(state)
    if state then
        activeFlags.flying = true
        startFly()
    else
        activeFlags.flying = false
        stopFly()
    end
end)

addToggle(moveScroll, "πŸšͺ NOCLIP (Walk through walls)", Color3.fromRGB(70, 50, 90), function(state)
    if state then
        activeFlags.noclip = true
        startNoclip()
    else
        activeFlags.noclip = false
        stopNoclip()
    end
end)

addButton(moveScroll, "πŸ‘€ SPECTATE NEXT PLAYER", Color3.fromRGB(55, 55, 85), function()
    local players = game.Players:GetPlayers()
    for _, p in ipairs(players) do
        if p ~= player and p.Character and p.Character:FindFirstChild("Humanoid") then
            workspace.CurrentCamera.CameraSubject = p.Character.Humanoid
            break
        end
    end
end)

addButton(moveScroll, "🎯 STOP SPECTATE", Color3.fromRGB(65, 55, 55), function()
    if player.Character and player.Character:FindFirstChild("Humanoid") then
        workspace.CurrentCamera.CameraSubject = player.Character.Humanoid
    end
end)

addButton(moveScroll, "πŸƒ SPEED 50", Color3.fromRGB(55, 55, 65), function()
    refreshChar()
    if humanoid then
        savedWalkSpeed = 50
        humanoid.WalkSpeed = 50
    end
end)

addButton(moveScroll, "⚑ SPEED 200", Color3.fromRGB(55, 55, 65), function()
    refreshChar()
    if humanoid then
        savedWalkSpeed = 200
        humanoid.WalkSpeed = 200
    end
end)

addButton(moveScroll, "πŸ’¨ SPEED 500", Color3.fromRGB(55, 55, 65), function()
    refreshChar()
    if humanoid then
        savedWalkSpeed = 500
        humanoid.WalkSpeed = 500
    end
end)

addButton(moveScroll, "🦘 JUMP 100", Color3.fromRGB(55, 55, 65), function()
    refreshChar()
    if humanoid then
        savedJumpPower = 100
        humanoid.JumpPower = 100
    end
end)

addButton(moveScroll, "πŸš€ JUMP 500", Color3.fromRGB(55, 55, 65), function()
    refreshChar()
    if humanoid then
        savedJumpPower = 500
        humanoid.JumpPower = 500
    end
end)

addButton(moveScroll, "πŸ”§ RESET SPEED/JUMP", Color3.fromRGB(65, 55, 55), function()
    refreshChar()
    if humanoid then
        savedWalkSpeed = 16
        savedJumpPower = 50
        humanoid.WalkSpeed = 16
        humanoid.JumpPower = 50
    end
end)

-- ========== VISUALS TAB ==========
local visScroll = createScrollingTab("VISUALS")

addToggle(visScroll, "❀️ INFINITE HEALTH", Color3.fromRGB(70, 40, 40), function(state)
    if state then
        activeFlags.infHealth = true
        startInfHealth()
    else
        activeFlags.infHealth = false
        stopInfHealth()
    end
end)

addToggle(visScroll, "πŸ‘οΈ X-RAY VISION (No Lag)", Color3.fromRGB(40, 50, 70), function(state)
    if state then
        activeFlags.xrayActive = true
        startXray()
    else
        activeFlags.xrayActive = false
        stopXray()
    end
end)

-- ========== CRAZY TAB ==========
local crazyScroll = createScrollingTab("CRAZY")

addToggle(crazyScroll, "🚁 HELICOPTER SPIN", Color3.fromRGB(90, 50, 50), function(state)
    if state then
        activeFlags.spinActive = true
        startSpin()
    else
        activeFlags.spinActive = false
        stopSpin()
    end
end)

addButton(crazyScroll, "πŸ’€ RAGDOLL", Color3.fromRGB(90, 50, 50), function()
    refreshChar()
    if humanoid then
        humanoid.PlatformStand = false
        humanoid:BreakJoints()
        task.wait(0.1)
        humanoid.PlatformStand = true
    end
end)

addButton(crazyScroll, "πŸ”„ FIX RAGDOLL (Stand Up)", Color3.fromRGB(65, 55, 65), function()
    refreshChar()
    if humanoid then
        humanoid.PlatformStand = false
        humanoid.Health = 0
    end
end)

addButton(crazyScroll, "πŸŒ€ CRAZY SPIN (5 seconds)", Color3.fromRGB(90, 50, 50), function()
    local startTime = tick()
    local spinConn = runService.Stepped:Connect(function()
        if tick() - startTime > 5 then
            spinConn:Disconnect()
            return
        end
        if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
            local hrp = player.Character.HumanoidRootPart
            hrp.CFrame = hrp.CFrame * CFrame.Angles(math.rad(20), math.rad(20), math.rad(20))
        end
    end)
end)

addButton(crazyScroll, "πŸ“ˆ GIANT MODE", Color3.fromRGB(90, 50, 50), function()
    refreshChar()
    if char then
        for _, part in ipairs(char:GetChildren()) do
            if part:IsA("BasePart") then
                part.Size = part.Size * 2
            end
        end
    end
end)

addButton(crazyScroll, "πŸ“‰ TINY MODE", Color3.fromRGB(90, 50, 50), function()
    refreshChar()
    if char then
        for _, part in ipairs(char:GetChildren()) do
            if part:IsA("BasePart") then
                part.Size = part.Size * 0.5
            end
        end
    end
end)

-- ========== LIGHTING TAB ==========
local lightScroll = createScrollingTab("LIGHTING")

addButton(lightScroll, "πŸŒ‘ DARK MODE", Color3.fromRGB(55, 55, 65), function()
    lighting.Brightness = 0.2
    lighting.OutdoorAmbient = Color3.fromRGB(30, 30, 40)
    lighting.Ambient = Color3.fromRGB(20, 20, 30)
    lighting.ClockTime = 0
end)

addButton(lightScroll, "🌈 NEON RAVE", Color3.fromRGB(55, 55, 65), function()
    lighting.ClockTime = 0
    spawn(function()
        for i = 1, 100 do
            lighting.Ambient = Color3.fromHSV((tick() % 1), 1, 1)
            lighting.OutdoorAmbient = Color3.fromHSV((tick() % 1), 0.8, 0.8)
            wait(0.05)
        end
    end)
end)

addButton(lightScroll, "πŸ”† RESET LIGHTING", Color3.fromRGB(65, 55, 55), function()
    lighting.Brightness = 2
    lighting.OutdoorAmbient = Color3.fromRGB(127, 127, 127)
    lighting.Ambient = Color3.fromRGB(127, 127, 127)
    lighting.ClockTime = 14
end)

-- ========== FAKE TEXT TAB ==========
local fakeScroll = createScrollingTab("FAKE TXT")

local fakeMessageBox = Instance.new("TextBox")
fakeMessageBox.Size = UDim2.new(1, -10, 0, 50)
fakeMessageBox.PlaceholderText = "Type your fake message here..."
fakeMessageBox.Text = ""
fakeMessageBox.TextColor3 = Color3.fromRGB(255, 255, 255)
fakeMessageBox.TextSize = 13
fakeMessageBox.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
fakeMessageBox.BorderSizePixel = 0
fakeMessageBox.ClearTextOnFocus = false
fakeMessageBox.Parent = fakeScroll

local currentFakeMessage = ""
fakeMessageBox:GetPropertyChangedSignal("Text"):Connect(function()
    currentFakeMessage = fakeMessageBox.Text
end)

addButton(fakeScroll, "πŸ“’ FAKE SYSTEM MSG", Color3.fromRGB(70, 50, 90), function()
    local msg = currentFakeMessage
    if msg == "" then msg = "[SYSTEM] Server maintenance in 30 seconds" end
    sendChatMessage(msg)
end)

addButton(fakeScroll, "πŸ‘‘ FAKE ADMIN MSG", Color3.fromRGB(90, 50, 70), function()
    local msg = currentFakeMessage
    if msg == "" then msg = "[ADMIN] " .. player.Name .. " has been warned" end
    sendChatMessage(msg)
end)

addButton(fakeScroll, "πŸ”¨ FAKE BAN MSG", Color3.fromRGB(90, 40, 40), function()
    local msg = currentFakeMessage
    if msg == "" then msg = "πŸ”¨ " .. player.Name .. " was BANNED for exploiting" end
    sendChatMessage(msg)
end)

addButton(fakeScroll, "πŸ‘’ FAKE KICK MSG", Color3.fromRGB(90, 60, 40), function()
    local msg = currentFakeMessage
    if msg == "" then msg = "πŸ‘’ " .. player.Name .. " was kicked from the game" end
    sendChatMessage(msg)
end)

addButton(fakeScroll, "⚠️ FAKE SHUTDOWN", Color3.fromRGB(80, 60, 40), function()
    local msg = currentFakeMessage
    if msg == "" then msg = "⚠️ SERVER SHUTTING DOWN in 10 seconds! ⚠️" end
    sendChatMessage(msg)
end)

-- ========== IMPERSONATE TAB ==========
local impScroll = createScrollingTab("IMPERSONATE")

local impInstructions = Instance.new("TextLabel")
impInstructions.Size = UDim2.new(1, -10, 0, 55)
impInstructions.Text = "⚠️ Type a message below, then click a player to make them SAY it!"
impInstructions.TextColor3 = Color3.fromRGB(200, 200, 150)
impInstructions.TextSize = 11
impInstructions.TextWrapped = true
impInstructions.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
impInstructions.BorderSizePixel = 0
impInstructions.Parent = impScroll

local impMessageBox = Instance.new("TextBox")
impMessageBox.Size = UDim2.new(1, -10, 0, 45)
impMessageBox.PlaceholderText = "Message to impersonate..."
impMessageBox.Text = ""
impMessageBox.TextColor3 = Color3.fromRGB(255, 255, 255)
impMessageBox.TextSize = 13
impMessageBox.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
impMessageBox.BorderSizePixel = 0
impMessageBox.ClearTextOnFocus = false
impMessageBox.Parent = impScroll

local currentImpMessage = ""
impMessageBox:GetPropertyChangedSignal("Text"):Connect(function()
    currentImpMessage = impMessageBox.Text
end)

local impPlayerFrame = Instance.new("Frame")
impPlayerFrame.Size = UDim2.new(1, -10, 0, 200)
impPlayerFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
impPlayerFrame.BorderSizePixel = 0
impPlayerFrame.Parent = impScroll

local impPlayerScroll = Instance.new("ScrollingFrame")
impPlayerScroll.Size = UDim2.new(1, -10, 1, -10)
impPlayerScroll.Position = UDim2.new(0, 5, 0, 5)
impPlayerScroll.BackgroundTransparency = 1
impPlayerScroll.ScrollBarThickness = 4
impPlayerScroll.Parent = impPlayerFrame

local impPlayerLayout = Instance.new("UIListLayout")
impPlayerLayout.Padding = UDim.new(0, 5)
impPlayerLayout.Parent = impPlayerScroll

local function refreshImpersonateList()
    for _, child in ipairs(impPlayerScroll:GetChildren()) do
        if child:IsA("TextButton") then
            child:Destroy()
        end
    end
    
    for _, plr in ipairs(game.Players:GetPlayers()) do
        if plr ~= player then
            local plrBtn = Instance.new("TextButton")
            plrBtn.Size = UDim2.new(1, -10, 0, 40)
            plrBtn.Text = "🎭 " .. plr.Name
            plrBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
            plrBtn.TextSize = 12
            plrBtn.TextXAlignment = Enum.TextXAlignment.Left
            plrBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 75)
            plrBtn.BorderSizePixel = 0
            plrBtn.Parent = impPlayerScroll
            
            plrBtn.MouseButton1Click:Connect(function()
                local fakeMessage = currentImpMessage
                if fakeMessage == "" then
                    fakeMessage = "I'm a hacker!"
                end
                sendChatMessage(fakeMessage)
            end)
        end
    end
end

refreshImpersonateList()
game.Players.PlayerAdded:Connect(refreshImpersonateList)
game.Players.PlayerRemoving:Connect(refreshImpersonateList)

-- ========== INVENTORY TAB ==========
local invScroll = createScrollingTab("INVENTORY")

local selectedTarget = player
local dropdownOpen = false
local dropdownList = nil

local function updateInventoryDisplay(targetPlayer)
    for _, child in ipairs(invScroll:GetChildren()) do
        if child ~= dropdownBtn and child ~= refreshInvBtn and child:IsA("TextButton") then
            child:Destroy()
        end
        if child:IsA("TextLabel") and child ~= dropdownBtn and child ~= refreshInvBtn then
            child:Destroy()
        end
    end
    
    local titleLabel = Instance.new("TextLabel")
    titleLabel.Size = UDim2.new(1, -10, 0, 35)
    titleLabel.Text = "πŸŽ’ " .. targetPlayer.Name .. "'s Inventory"
    titleLabel.TextColor3 = Color3.fromRGB(255, 200, 100)
    titleLabel.TextSize = 14
    titleLabel.Font = Enum.Font.GothamBold
    titleLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
    titleLabel.BorderSizePixel = 0
    titleLabel.Parent = invScroll
    
    local backpackTitle = Instance.new("TextLabel")
    backpackTitle.Size = UDim2.new(1, -10, 0, 25)
    backpackTitle.Text = "πŸ“¦ BACKPACK"
    backpackTitle.TextColor3 = Color3.fromRGB(150, 150, 200)
    backpackTitle.TextSize = 12
    backpackTitle.Font = Enum.Font.GothamBold
    backpackTitle.BackgroundTransparency = 1
    backpackTitle.Parent = invScroll
    
    local hasItems = false
    if targetPlayer.Backpack then
        for _, tool in ipairs(targetPlayer.Backpack:GetChildren()) do
            if tool:IsA("Tool") then
                hasItems = true
                local itemBtn = Instance.new("TextButton")
                itemBtn.Size = UDim2.new(1, -20, 0, 35)
                itemBtn.Text = "πŸ”§ " .. tool.Name
                itemBtn.TextColor3 = Color3.fromRGB(220, 220, 220)
                itemBtn.TextSize = 12
                itemBtn.TextXAlignment = Enum.TextXAlignment.Left
                itemBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 65)
                itemBtn.BorderSizePixel = 0
                itemBtn.Parent = invScroll
                
                itemBtn.MouseButton1Click:Connect(function()
                    local newTool = tool:Clone()
                    newTool.Parent = player.Backpack
                    updateInventoryDisplay(selectedTarget)
                end)
            end
        end
    end
    
    if not hasItems then
        local emptyLabel = Instance.new("TextLabel")
        emptyLabel.Size = UDim2.new(1, -20, 0, 30)
        emptyLabel.Text = "   πŸ“­ Empty"
        emptyLabel.TextColor3 = Color3.fromRGB(150, 150, 150)
        emptyLabel.TextSize = 12
        emptyLabel.TextXAlignment = Enum.TextXAlignment.Left
        emptyLabel.BackgroundTransparency = 1
        emptyLabel.Parent = invScroll
    end
    
    local equippedTitle = Instance.new("TextLabel")
    equippedTitle.Size = UDim2.new(1, -10, 0, 25)
    equippedTitle.Text = "βš”οΈ EQUIPPED"
    equippedTitle.TextColor3 = Color3.fromRGB(150, 150, 200)
    equippedTitle.TextSize = 12
    equippedTitle.Font = Enum.Font.GothamBold
    equippedTitle.BackgroundTransparency = 1
    equippedTitle.Parent = invScroll
    
    local hasEquipped = false
    if targetPlayer.Character then
        for _, child in ipairs(targetPlayer.Character:GetChildren()) do
            if child:IsA("Tool") then
                hasEquipped = true
                local itemBtn = Instance.new("TextButton")
                itemBtn.Size = UDim2.new(1, -20, 0, 35)
                itemBtn.Text = "βš”οΈ " .. child.Name
                itemBtn.TextColor3 = Color3.fromRGB(255, 200, 100)
                itemBtn.TextSize = 12
                itemBtn.TextXAlignment = Enum.TextXAlignment.Left
                itemBtn.BackgroundColor3 = Color3.fromRGB(65, 50, 40)
                itemBtn.BorderSizePixel = 0
                itemBtn.Parent = invScroll
            end
        end
    end
    
    if not hasEquipped then
        local emptyLabel = Instance.new("TextLabel")
        emptyLabel.Size = UDim2.new(1, -20, 0, 30)
        emptyLabel.Text = "   ✨ Nothing equipped"
        emptyLabel.TextColor3 = Color3.fromRGB(150, 150, 150)
        emptyLabel.TextSize = 12
        emptyLabel.TextXAlignment = Enum.TextXAlignment.Left
        emptyLabel.BackgroundTransparency = 1
        emptyLabel.Parent = invScroll
    end
end

local dropdownBtn = Instance.new("TextButton")
dropdownBtn.Size = UDim2.new(1, -10, 0, 42)
dropdownBtn.Text = "πŸ“‹ SELECT PLAYER: " .. player.Name
dropdownBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
dropdownBtn.TextSize = 13
dropdownBtn.Font = Enum.Font.GothamSemibold
dropdownBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 75)
dropdownBtn.BorderSizePixel = 0
dropdownBtn.Parent = invScroll

local function closeDropdown()
    if dropdownList then dropdownList:Destroy() end
    dropdownList = nil
    dropdownOpen = false
end

dropdownBtn.MouseButton1Click:Connect(function()
    if dropdownOpen then closeDropdown() return end
    dropdownOpen = true
    
    dropdownList = Instance.new("Frame")
    dropdownList.Size = UDim2.new(1, -10, 0, 160)
    dropdownList.Position = UDim2.new(0, 5, 0, 45)
    dropdownList.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
    dropdownList.BorderSizePixel = 0
    dropdownList.Parent = invScroll
    
    local scroll = Instance.new("ScrollingFrame")
    scroll.Size = UDim2.new(1, 0, 1, 0)
    scroll.BackgroundTransparency = 1
    scroll.ScrollBarThickness = 4
    scroll.Parent = dropdownList
    
    local layout = Instance.new("UIListLayout")
    layout.Padding = UDim.new(0, 4)
    layout.Parent = scroll
    
    for _, plr in ipairs(game.Players:GetPlayers()) do
        local plrBtn = Instance.new("TextButton")
        plrBtn.Size = UDim2.new(1, -10, 0, 38)
        plrBtn.Text = "πŸ‘€ " .. plr.Name
        plrBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
        plrBtn.TextSize = 12
        plrBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 70)
        plrBtn.BorderSizePixel = 0
        plrBtn.Parent = scroll
        
        plrBtn.MouseButton1Click:Connect(function()
            selectedTarget = plr
            dropdownBtn.Text = "πŸ“‹ SELECT PLAYER: " .. plr.Name
            closeDropdown()
            updateInventoryDisplay(selectedTarget)
        end)
    end
end)

local refreshInvBtn = Instance.new("TextButton")
refreshInvBtn.Size = UDim2.new(1, -10, 0, 40)
refreshInvBtn.Text = "πŸ”„ REFRESH INVENTORY"
refreshInvBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
refreshInvBtn.TextSize = 13
refreshInvBtn.BackgroundColor3 = Color3.fromRGB(55, 75, 55)
refreshInvBtn.BorderSizePixel = 0
refreshInvBtn.Parent = invScroll

refreshInvBtn.MouseButton1Click:Connect(function()
    updateInventoryDisplay(selectedTarget)
end)

updateInventoryDisplay(player)

-- ========== SPAWN POINT TAB ==========
local spawnScroll = createScrollingTab("SPAWN")

local spawnInstructions = Instance.new("TextLabel")
spawnInstructions.Size = UDim2.new(1, -10, 0, 70)
spawnInstructions.Text = "πŸ“ SPAWN POINT SYSTEM\n\n1. Go anywhere\n2. Click 'SET SPAWN POINT'\n3. Click 'TELEPORT TO SPAWN' to return!"
spawnInstructions.TextColor3 = Color3.fromRGB(200, 200, 150)
spawnInstructions.TextSize = 11
spawnInstructions.TextWrapped = true
spawnInstructions.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
spawnInstructions.BorderSizePixel = 0
spawnInstructions.Parent = spawnScroll

local spawnDisplay = Instance.new("TextLabel")
spawnDisplay.Size = UDim2.new(1, -10, 0, 35)
spawnDisplay.Text = "πŸ“ No spawn point set yet"
spawnDisplay.TextColor3 = Color3.fromRGB(255, 200, 100)
spawnDisplay.TextSize = 12
spawnDisplay.Font = Enum.Font.GothamBold
spawnDisplay.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
spawnDisplay.BorderSizePixel = 0
spawnDisplay.Parent = spawnScroll

local spawnNameBox = Instance.new("TextBox")
spawnNameBox.Size = UDim2.new(1, -10, 0, 40)
spawnNameBox.PlaceholderText = "Spawn name (optional)..."
spawnNameBox.Text = ""
spawnNameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
spawnNameBox.TextSize = 13
spawnNameBox.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
spawnNameBox.BorderSizePixel = 0
spawnNameBox.Parent = spawnScroll

local currentSpawnName = ""
spawnNameBox:GetPropertyChangedSignal("Text"):Connect(function()
    currentSpawnName = spawnNameBox.Text
end)

addButton(spawnScroll, "πŸ“ SET SPAWN POINT", Color3.fromRGB(55, 75, 55), function()
    refreshChar()
    if rootPart then
        customSpawnPoint = rootPart.CFrame
        local name = currentSpawnName
        if name == "" then name = "Main Spawn" end
        spawnDisplay.Text = "βœ… Spawn set: " .. name
        spawnDisplay.BackgroundColor3 = Color3.fromRGB(45, 65, 45)
    end
end)

addButton(spawnScroll, "πŸš€ TELEPORT TO SPAWN", Color3.fromRGB(55, 55, 85), function()
    if customSpawnPoint then
        refreshChar()
        if rootPart then
            rootPart.CFrame = customSpawnPoint
            rootPart.Velocity = Vector3.new(0, 0, 0)
            spawnDisplay.Text = "✨ Teleported!"
            task.wait(1)
            spawnDisplay.Text = "βœ… Spawn ready"
        end
    else
        spawnDisplay.Text = "⚠️ No spawn point set!"
        spawnDisplay.BackgroundColor3 = Color3.fromRGB(65, 45, 45)
        task.wait(1.5)
        spawnDisplay.Text = "πŸ“ No spawn point set yet"
        spawnDisplay.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
    end
end)

addButton(spawnScroll, "πŸ—‘οΈ CLEAR SPAWN", Color3.fromRGB(90, 50, 50), function()
    customSpawnPoint = nil
    spawnDisplay.Text = "πŸ“ Spawn cleared"
    task.wait(1)
    spawnDisplay.Text = "πŸ“ No spawn point set yet"
end)

-- Make frame draggable
local dragging = false
local dragStart, startPos

titleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startPos = mainFrame.Position
    end
end)

titleBar.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then
        local delta = input.Position - dragStart
        mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    end
end)

titleBar.InputEnded:Connect(function()
    dragging = false
end)

switchTab("MOVEMENT")
print("βœ… Troll Menu v7 Loaded - Menu persists after death!")

Features & Information

fly work in progress noclip crazy helicopter lighting xray set spawn point speed jump n more

Community Comments (2)

RauledwardsjsRauledwardsjsApr 28, 2026

Gd job

Replying to @Rauledwardsjs
mandora_scriptsmandora_scriptsApr 28, 2026

@Rauledwardsjs thanks i will be posting the better version soon

More Scripts for Universal Scripts