Remote Viewer
Key RequiredUniversal

Remote Viewer

Universal ScriptDefyzDefyz 2.1K views 330 executesUpdated Aug 20, 2025
2.5/ 5(6 votes)
3350% Positive
Lua Script•172 lines (5219 chars)
-- Remote Viewer

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local CoreGui = game:GetService("CoreGui")

local function getParent()
    local s, e = pcall(function() return gethui() end)
    if s then return gethui() end
    return CoreGui
end

-- GUI
local ScreenGui = Instance.new("ScreenGui", getParent())
ScreenGui.Name = "RemoteViewer"

local Frame = Instance.new("Frame", ScreenGui)
Frame.Size = UDim2.new(0, 300, 0, 420)
Frame.Position = UDim2.new(0.3, 0, 0.3, 0)
Frame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
Frame.Active = true
Frame.Draggable = true

local UICorner = Instance.new("UICorner", Frame)
UICorner.CornerRadius = UDim.new(0, 12)

-- Title
local Title = Instance.new("TextLabel", Frame)
Title.Size = UDim2.new(1, -70, 0, 30)
Title.Position = UDim2.new(0, 5, 0, 5)
Title.BackgroundTransparency = 1
Title.Text = "Remote Viewer"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Font = Enum.Font.GothamBold
Title.TextSize = 16

-- Minimize
local MinBtn = Instance.new("TextButton", Frame)
MinBtn.Size = UDim2.new(0, 30, 0, 30)
MinBtn.Position = UDim2.new(1, -35, 0, 5)
MinBtn.Text = "-"
MinBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
MinBtn.TextColor3 = Color3.fromRGB(255, 255, 255)

-- Args Mode toggle
local ArgsBtn = Instance.new("TextButton", Frame)
ArgsBtn.Size = UDim2.new(0, 60, 0, 25)
ArgsBtn.Position = UDim2.new(0, 5, 0, 40)
ArgsBtn.Text = "ARGS: OFF"
ArgsBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
ArgsBtn.TextColor3 = Color3.fromRGB(255, 255, 255)

-- Args Input
local ArgsBox = Instance.new("TextBox", Frame)
ArgsBox.Size = UDim2.new(1, -75, 0, 25)
ArgsBox.Position = UDim2.new(0, 70, 0, 40)
ArgsBox.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
ArgsBox.Text = "arg1; arg2; plr"
ArgsBox.TextColor3 = Color3.fromRGB(255, 255, 255)
ArgsBox.ClearTextOnFocus = false
ArgsBox.Visible = false

-- Scroll
local Scroll = Instance.new("ScrollingFrame", Frame)
Scroll.Size = UDim2.new(1, -10, 1, -110)
Scroll.Position = UDim2.new(0, 5, 0, 70)
Scroll.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
Scroll.BorderSizePixel = 0
Scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
Scroll.ScrollBarThickness = 6

local UIList = Instance.new("UIListLayout", Scroll)
UIList.Padding = UDim.new(0, 3)
UIList.SortOrder = Enum.SortOrder.LayoutOrder

-- Load more button
local LoadMore = Instance.new("TextButton", Frame)
LoadMore.Size = UDim2.new(1, -10, 0, 30)
LoadMore.Position = UDim2.new(0, 5, 1, -35)
LoadMore.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
LoadMore.Text = "+ Load More"
LoadMore.TextColor3 = Color3.fromRGB(255, 255, 255)

-- Logic
local allRemotes, shown, step = {}, 0, 20
local argsMode = false
local collapsed = false
local prevSize = Frame.Size

for _, obj in ipairs(game:GetDescendants()) do
    if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then
        table.insert(allRemotes, obj)
    end
end

-- Parse arguments
local function parseArgs(str)
    local args = {}
    for _, v in ipairs(string.split(str, ";")) do
        v = v:match("^%s*(.-)%s*$")
        if v == "plr" then
            table.insert(args, LocalPlayer)
        elseif tonumber(v) then
            table.insert(args, tonumber(v))
        elseif v == "true" then
            table.insert(args, true)
        elseif v == "false" then
            table.insert(args, false)
        elseif v ~= "" then
            table.insert(args, v)
        end
    end
    return args
end

-- Show remotes
local function showMore()
    for i = shown + 1, math.min(shown + step, #allRemotes) do
        local btn = Instance.new("TextButton", Scroll)
        btn.Size = UDim2.new(1, -5, 0, 25)
        btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
        btn.Text = allRemotes[i].Name
        btn.TextColor3 = Color3.fromRGB(255, 255, 255)

        btn.MouseButton1Click:Connect(function()
            local r = allRemotes[i]
            local args = {}
            if argsMode then
                args = parseArgs(ArgsBox.Text)
            end
            if r:IsA("RemoteEvent") then
                r:FireServer(unpack(args))
            elseif r:IsA("RemoteFunction") then
                pcall(function() r:InvokeServer(unpack(args)) end)
            end
        end)
    end
    shown = math.min(shown + step, #allRemotes)
    Scroll.CanvasSize = UDim2.new(0,0,0,UIList.AbsoluteContentSize.Y)
end

-- Toggle minimizer
MinBtn.MouseButton1Click:Connect(function()
    collapsed = not collapsed
    if collapsed then
        prevSize = Frame.Size
        Frame.Size = UDim2.new(0, 300, 0, 36)
        Scroll.Visible = false
        LoadMore.Visible = false
        ArgsBtn.Visible = false
        ArgsBox.Visible = false
        MinBtn.Text = "+"
    else
        Frame.Size = prevSize
        Scroll.Visible = true
        LoadMore.Visible = true
        ArgsBtn.Visible = true
        if argsMode then ArgsBox.Visible = true end
        MinBtn.Text = "-"
    end
end)

-- Toggle args mode
ArgsBtn.MouseButton1Click:Connect(function()
    argsMode = not argsMode
    ArgsBtn.Text = argsMode and "ARGS: ON" or "ARGS: OFF"
    ArgsBox.Visible = argsMode
end)

LoadMore.MouseButton1Click:Connect(showMore)
showMore()

Features & Information

• Remotes • Remote Fire ( Click to fire a remote ) • Add more remotes ( not show all ) • Args Mode

Community Comments (1)

daviddavidovich03daviddavidovich03Sep 11, 2025

you made it with chat gpt too

More Scripts for Universal Scripts