-- GUI Setup
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 500, 0, 300)
frame.Position = UDim2.new(0.5, -250, 0.5, -150)
frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
frame.BackgroundTransparency = 0.5
frame.Parent = screenGui

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 30)
title.Text = "Detected RemoteEvents"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextSize = 20
title.BackgroundTransparency = 1
title.Parent = frame

local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, 0, 0, 250)
scrollFrame.Position = UDim2.new(0, 0, 0, 30)
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.BackgroundTransparency = 1
scrollFrame.Parent = frame

local uiListLayout = Instance.new("UIListLayout")
uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder
uiListLayout.Parent = scrollFrame

-- Fungsi untuk menampilkan RemoteEvent yang ditemukan
local function findRemoteEvents(parent)
    local remoteEvents = {}  -- Daftar untuk menyimpan nama RemoteEvent

    -- Mencari semua RemoteEvent
    for _, obj in pairs(parent:GetChildren()) do
        if obj:IsA("RemoteEvent") then
            table.insert(remoteEvents, obj.Name)  -- Menambahkan nama RemoteEvent ke dalam daftar
        elseif obj:IsA("Folder") or obj:IsA("Model") then
            -- Jika objek adalah folder atau model, lanjutkan pencarian
            local childEvents = findRemoteEvents(obj)
            for _, eventName in pairs(childEvents) do
                table.insert(remoteEvents, eventName)
            end
        end
    end

    return remoteEvents
end

-- Fungsi untuk menampilkan hasil di GUI
local function displayRemoteEvents()
    -- Menghapus semua teks yang ada di scroll frame
    for _, child in pairs(scrollFrame:GetChildren()) do
        if child:IsA("TextLabel") then
            child:Destroy()
        end
    end

    -- Mendapatkan semua RemoteEvent yang ditemukan
    local remoteEvents = findRemoteEvents(game:GetService("ReplicatedStorage"))
    
    -- Menampilkan setiap RemoteEvent sebagai TextLabel
    for _, eventName in pairs(remoteEvents) do
        local label = Instance.new("TextLabel")
        label.Size = UDim2.new(1, 0, 0, 30)
        label.Text = eventName
        label.TextColor3 = Color3.fromRGB(255, 255, 255)
        label.TextSize = 16
        label.BackgroundTransparency = 1
        label.Parent = scrollFrame
    end
    
    -- Mengatur ukuran canvas untuk menyesuaikan jumlah label
    scrollFrame.CanvasSize = UDim2.new(0, 0, 0, #remoteEvents * 30)
end

-- Tombol untuk memulai pencarian dan menampilkan RemoteEvent
local button = Instance.new("TextButton")
button.Size = UDim2.new(0, 200, 0, 50)
button.Position = UDim2.new(0.5, -100, 0.8, -25)
button.Text = "Find RemoteEvents"
button.TextColor3 = Color3.fromRGB(255, 255, 255)
button.TextSize = 18
button.BackgroundColor3 = Color3.fromRGB(0, 128, 255)
button.Parent = screenGui

button.MouseButton1Click:Connect(displayRemoteEvents)  -- Menjalankan fungsi saat tombol diklik