File downloader (Ai generated codes)
Key RequiredUniversal

File downloader (Ai generated codes)

Universal Scriptpnsdgsapnsdgsa 747 views 20 executesUpdated Oct 17, 2025
Unrated
00
Lua Script•1176 lines (41441 chars)
--[[
	WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
-- Dara File Downloader - Compact Tabbed UI
-- Creates "Dara File downloader" folder in workspace
-- Auto-saves loaded scripts with metadata

local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

-- Configuration
local FOLDER_NAME = "DaraFileDownloader"
local METADATA_TEMPLATE = [[
-- ========================================
-- Dara File Downloader - Auto-Saved Script
-- Downloaded: %s
-- URL: %s
-- Filename: %s
-- ========================================
]]

-- Create/Switch to workspace folder
local function ensureFolder()
    local success, result = pcall(function()
        if not isfolder(FOLDER_NAME) then
            makefolder(FOLDER_NAME)
            print("Created folder: " .. FOLDER_NAME)
        end
    end)
    if not success then
        warn("Folder creation failed, using root workspace: " .. tostring(result))
        return ""
    end
    return FOLDER_NAME .. "/"
end

local workspacePath = ensureFolder()

-- Create GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DaraFileDownloader"
screenGui.Parent = playerGui

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 450, 0, 400)
mainFrame.Position = UDim2.new(0.5, -225, 0.5, -200)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

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

-- Title with buttons
local title = Instance.new("Frame")
title.Size = UDim2.new(1, 0, 0, 35)
title.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
title.Parent = mainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 8)
titleCorner.Parent = title

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -80, 1, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "🎯 Dara File Downloader"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextScaled = true
titleLabel.Font = Enum.Font.SourceSansBold
titleLabel.Parent = title

local minimizeBtn = Instance.new("TextButton")
minimizeBtn.Size = UDim2.new(0, 30, 0, 30)
minimizeBtn.Position = UDim2.new(1, -60, 0, 2)
minimizeBtn.BackgroundColor3 = Color3.fromRGB(255, 165, 0)
minimizeBtn.Text = "_"
minimizeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
minimizeBtn.TextScaled = true
minimizeBtn.Font = Enum.Font.SourceSansBold
minimizeBtn.Parent = title

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -30, 0, 2)
closeBtn.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.TextScaled = true
closeBtn.Font = Enum.Font.SourceSansBold
closeBtn.Parent = title

-- Tabs Container
local tabsContainer = Instance.new("Frame")
tabsContainer.Size = UDim2.new(1, 0, 0, 35)
tabsContainer.Position = UDim2.new(0, 0, 0, 35)
tabsContainer.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
tabsContainer.BorderSizePixel = 0
tabsContainer.Parent = mainFrame

local tabsLayout = Instance.new("UIListLayout")
tabsLayout.FillDirection = Enum.FillDirection.Horizontal
tabsLayout.Parent = tabsContainer

-- Content Area
local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, -10, 0, 320)
contentFrame.Position = UDim2.new(0, 5, 0, 75)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = mainFrame

-- Tab Data Storage
local tabContents = {}
local currentTab = "Executor"

-- Create Tab Function
local function createTab(tabName, layoutOrder)
    local tabButton = Instance.new("TextButton")
    tabButton.Size = UDim2.new(0.33, 0, 1, 0)
    tabButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    tabButton.Text = tabName
    tabButton.TextColor3 = Color3.fromRGB(200, 200, 200)
    tabButton.TextScaled = true
    tabButton.Font = Enum.Font.SourceSansBold
    tabButton.LayoutOrder = layoutOrder
    tabButton.Parent = tabsContainer
    
    local tabContent = Instance.new("ScrollingFrame")
    tabContent.Size = UDim2.new(1, 0, 1, 0)
    tabContent.BackgroundTransparency = 1
    tabContent.ScrollBarThickness = 6
    tabContent.Visible = false
    tabContent.AutomaticCanvasSize = Enum.AutomaticSize.Y
    tabContent.Parent = contentFrame
    
    local contentLayout = Instance.new("UIListLayout")
    contentLayout.SortOrder = Enum.SortOrder.LayoutOrder
    contentLayout.Padding = UDim.new(0, 8)
    contentLayout.Parent = tabContent
    
    tabContents[tabName] = {button = tabButton, content = tabContent}
    
    tabButton.MouseButton1Click:Connect(function()
        -- Hide all tabs
        for name, tabData in pairs(tabContents) do
            tabData.content.Visible = false
            tabData.button.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
            tabData.button.TextColor3 = Color3.fromRGB(200, 200, 200)
        end
        
        -- Show selected tab
        tabContent.Visible = true
        tabButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
        tabButton.TextColor3 = Color3.fromRGB(255, 255, 255)
        currentTab = tabName
    end)
    
    return tabContent
end

-- Create Tabs
local executorTab = createTab("Executor", 1)
local saveScriptsTab = createTab("SaveScripts", 2)
local scriptsTab = createTab("Scripts", 3)

-- Show first tab by default
executorTab.Visible = true
tabContents["Executor"].button.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
tabContents["Executor"].button.TextColor3 = Color3.fromRGB(255, 255, 255)

-- ==================== EXECUTOR TAB ====================
local function createSection(parent, titleText, height, layoutOrder)
    local section = Instance.new("Frame")
    section.Size = UDim2.new(1, 0, 0, height)
    section.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    section.LayoutOrder = layoutOrder
    section.Parent = parent
    
    local sectionCorner = Instance.new("UICorner")
    sectionCorner.CornerRadius = UDim.new(0, 6)
    sectionCorner.Parent = section
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -10, 0, 20)
    label.Position = UDim2.new(0, 8, 0, 5)
    label.BackgroundTransparency = 1
    label.Text = titleText
    label.TextColor3 = Color3.fromRGB(200, 200, 200)
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Font = Enum.Font.SourceSansSemibold
    label.TextSize = 14
    label.Parent = section
    
    return section
end

-- Executor: Script/Link Input
local executorInputSection = createSection(executorTab, "📝Script/Link", 100, 1)

local executorInputBox = Instance.new("TextBox")
executorInputBox.Size = UDim2.new(1, -16, 1, -30)
executorInputBox.Position = UDim2.new(0, 8, 0, 25)
executorInputBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
executorInputBox.PlaceholderText = "Paste script code or pastebin/raw link..."
executorInputBox.Text = ""
executorInputBox.TextColor3 = Color3.fromRGB(255, 255, 255)
executorInputBox.TextXAlignment = Enum.TextXAlignment.Left
executorInputBox.TextYAlignment = Enum.TextYAlignment.Top
executorInputBox.MultiLine = true
executorInputBox.TextWrapped = true
executorInputBox.ClearTextOnFocus = false
executorInputBox.Font = Enum.Font.Code
executorInputBox.TextSize = 12
executorInputBox.Parent = executorInputSection

local inputBoxCorner = Instance.new("UICorner")
inputBoxCorner.CornerRadius = UDim.new(0, 4)
inputBoxCorner.Parent = executorInputBox

-- Executor: Buttons
local executorButtonsSection = createSection(executorTab, "⚡Actions", 50, 2)

local executeBtn = Instance.new("TextButton")
executeBtn.Size = UDim2.new(0.48, -5, 0, 30)
executeBtn.Position = UDim2.new(0, 8, 0, 25)
executeBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
executeBtn.Text = "▶️Execute"
executeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
executeBtn.TextScaled = true
executeBtn.Font = Enum.Font.SourceSansBold
executeBtn.Parent = executorButtonsSection

local executeCorner = Instance.new("UICorner")
executeCorner.CornerRadius = UDim.new(0, 4)
executeCorner.Parent = executeBtn

local loadFromLinkBtn = Instance.new("TextButton")
loadFromLinkBtn.Size = UDim2.new(0.48, 0, 0, 30)
loadFromLinkBtn.Position = UDim2.new(0.52, 0, 0, 25)
loadFromLinkBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
loadFromLinkBtn.Text = "🔗Load&Run"
loadFromLinkBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
loadFromLinkBtn.TextScaled = true
loadFromLinkBtn.Font = Enum.Font.SourceSansBold
loadFromLinkBtn.Parent = executorButtonsSection

local loadFromLinkCorner = Instance.new("UICorner")
loadFromLinkCorner.CornerRadius = UDim.new(0, 4)
loadFromLinkCorner.Parent = loadFromLinkBtn

-- ==================== SAVE SCRIPTS TAB ====================
-- Save Scripts: URL Input
local saveUrlSection = createSection(saveScriptsTab, "📥SaveFromURL", 70, 1)

local saveUrlBox = Instance.new("TextBox")
saveUrlBox.Size = UDim2.new(1, -16, 0, 30)
saveUrlBox.Position = UDim2.new(0, 8, 0, 25)
saveUrlBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
saveUrlBox.PlaceholderText = "https://pastebin.com/raw/..."
saveUrlBox.Text = ""
saveUrlBox.TextColor3 = Color3.fromRGB(255, 255, 255)
saveUrlBox.TextSize = 14
saveUrlBox.Font = Enum.Font.SourceSans
saveUrlBox.ClearTextOnFocus = false
saveUrlBox.Parent = saveUrlSection

local urlBoxCorner = Instance.new("UICorner")
urlBoxCorner.CornerRadius = UDim.new(0, 4)
urlBoxCorner.Parent = saveUrlBox

-- Save Scripts: Code Input
local saveCodeSection = createSection(saveScriptsTab, "💾SaveCodeAsFile", 100, 2)

local saveCodeBox = Instance.new("TextBox")
saveCodeBox.Size = UDim2.new(1, -16, 1, -30)
saveCodeBox.Position = UDim2.new(0, 8, 0, 25)
saveCodeBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
saveCodeBox.PlaceholderText = "Paste script code to save as file..."
saveCodeBox.Text = ""
saveCodeBox.TextColor3 = Color3.fromRGB(255, 255, 255)
saveCodeBox.TextXAlignment = Enum.TextXAlignment.Left
saveCodeBox.TextYAlignment = Enum.TextYAlignment.Top
saveCodeBox.MultiLine = true
saveCodeBox.TextWrapped = true
saveCodeBox.ClearTextOnFocus = false
saveCodeBox.Font = Enum.Font.Code
saveCodeBox.TextSize = 12
saveCodeBox.Parent = saveCodeSection

local codeBoxCorner = Instance.new("UICorner")
codeBoxCorner.CornerRadius = UDim.new(0, 4)
codeBoxCorner.Parent = saveCodeBox

-- Save Scripts: Filename & Buttons
local saveOptionsSection = createSection(saveScriptsTab, "💾SaveOptions", 70, 3)

local saveFileNameBox = Instance.new("TextBox")
saveFileNameBox.Size = UDim2.new(0.6, -5, 0, 30)
saveFileNameBox.Position = UDim2.new(0, 8, 0, 25)
saveFileNameBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
saveFileNameBox.PlaceholderText = "filename.lua"
saveFileNameBox.Text = ""
saveFileNameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
saveFileNameBox.TextSize = 14
saveFileNameBox.Font = Enum.Font.SourceSans
saveFileNameBox.Parent = saveOptionsSection

local fileNameCorner = Instance.new("UICorner")
fileNameCorner.CornerRadius = UDim.new(0, 4)
fileNameCorner.Parent = saveFileNameBox

local saveUrlBtn = Instance.new("TextButton")
saveUrlBtn.Size = UDim2.new(0.38, 0, 0, 30)
saveUrlBtn.Position = UDim2.new(0.62, 0, 0, 25)
saveUrlBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
saveUrlBtn.Text = "⬇️FromURL"
saveUrlBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
saveUrlBtn.TextScaled = true
saveUrlBtn.Font = Enum.Font.SourceSansBold
saveUrlBtn.Parent = saveOptionsSection

local saveUrlCorner = Instance.new("UICorner")
saveUrlCorner.CornerRadius = UDim.new(0, 4)
saveUrlCorner.Parent = saveUrlBtn

local saveCodeBtn = Instance.new("TextButton")
saveCodeBtn.Size = UDim2.new(1, -16, 0, 30)
saveCodeBtn.Position = UDim2.new(0, 8, 0, 60)
saveCodeBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
saveCodeBtn.Text = "💾SaveCodeAsFile"
saveCodeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
saveCodeBtn.TextScaled = true
saveCodeBtn.Font = Enum.Font.SourceSansBold
saveCodeBtn.Parent = saveOptionsSection

local saveCodeCorner = Instance.new("UICorner")
saveCodeCorner.CornerRadius = UDim.new(0, 4)
saveCodeCorner.Parent = saveCodeBtn

-- ==================== SCRIPTS TAB ====================
-- Scripts: File List
local scriptsFilesSection = createSection(scriptsTab, "📁SavedScripts", 240, 1)
scriptsFilesSection.Size = UDim2.new(1, 0, 0, 240)

local filesFrame = Instance.new("ScrollingFrame")
filesFrame.Size = UDim2.new(1, -16, 1, -30)
filesFrame.Position = UDim2.new(0, 8, 0, 25)
filesFrame.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
filesFrame.ScrollBarThickness = 6
filesFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
filesFrame.Parent = scriptsFilesSection

local filesFrameCorner = Instance.new("UICorner")
filesFrameCorner.CornerRadius = UDim.new(0, 4)
filesFrameCorner.Parent = filesFrame

local filesLayout = Instance.new("UIListLayout")
filesLayout.SortOrder = Enum.SortOrder.LayoutOrder
filesLayout.Padding = UDim.new(0, 4)
filesLayout.Parent = filesFrame

-- Context Menu
local contextMenu = Instance.new("Frame")
contextMenu.Size = UDim2.new(0, 120, 0, 140)
contextMenu.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
contextMenu.BorderSizePixel = 1
contextMenu.BorderColor3 = Color3.fromRGB(100, 100, 100)
contextMenu.Visible = false
contextMenu.ZIndex = 10
contextMenu.Parent = screenGui

local contextCorner = Instance.new("UICorner")
contextCorner.CornerRadius = UDim.new(0, 4)
contextCorner.Parent = contextMenu

local contextLayout = Instance.new("UIListLayout")
contextLayout.SortOrder = Enum.SortOrder.LayoutOrder
contextLayout.Parent = contextMenu

local viewContextBtn = Instance.new("TextButton")
viewContextBtn.Size = UDim2.new(1, 0, 0, 28)
viewContextBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
viewContextBtn.Text = "👁️View"
viewContextBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
viewContextBtn.TextSize = 14
viewContextBtn.Font = Enum.Font.SourceSans
viewContextBtn.ZIndex = 11
viewContextBtn.Parent = contextMenu

local editContextBtn = Instance.new("TextButton")
editContextBtn.Size = UDim2.new(1, 0, 0, 28)
editContextBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
editContextBtn.Text = "✏️Edit"
editContextBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
editContextBtn.TextSize = 14
editContextBtn.Font = Enum.Font.SourceSans
editContextBtn.ZIndex = 11
editContextBtn.Parent = contextMenu

local duplicateContextBtn = Instance.new("TextButton")
duplicateContextBtn.Size = UDim2.new(1, 0, 0, 28)
duplicateContextBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
duplicateContextBtn.Text = "📋Duplicate"
duplicateContextBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
duplicateContextBtn.TextSize = 14
duplicateContextBtn.Font = Enum.Font.SourceSans
duplicateContextBtn.ZIndex = 11
duplicateContextBtn.Parent = contextMenu

local renameContextBtn = Instance.new("TextButton")
renameContextBtn.Size = UDim2.new(1, 0, 0, 28)
renameContextBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
renameContextBtn.Text = "🔄Rename"
renameContextBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
renameContextBtn.TextSize = 14
renameContextBtn.Font = Enum.Font.SourceSans
renameContextBtn.ZIndex = 11
renameContextBtn.Parent = contextMenu

local deleteContextBtn = Instance.new("TextButton")
deleteContextBtn.Size = UDim2.new(1, 0, 0, 28)
deleteContextBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
deleteContextBtn.Text = "🗑️Delete"
deleteContextBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
deleteContextBtn.TextSize = 14
deleteContextBtn.Font = Enum.Font.SourceSans
deleteContextBtn.ZIndex = 11
deleteContextBtn.Parent = contextMenu

-- Status Bar
local statusBar = Instance.new("Frame")
statusBar.Size = UDim2.new(1, 0, 0, 25)
statusBar.Position = UDim2.new(0, 0, 1, -25)
statusBar.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
statusBar.Parent = mainFrame

local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, -10, 1, 0)
statusLabel.Position = UDim2.new(0, 8, 0, 0)
statusLabel.BackgroundTransparency = 1
statusLabel.Text = "📁"..(workspacePath ~= "" and FOLDER_NAME or "Root").."|Ready!"
statusLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Font = Enum.Font.SourceSans
statusLabel.TextSize = 12
statusLabel.Parent = statusBar

-- Shared Variables
local selectedFile = ""
local contextMenuFile = ""
local isMinimized = false

-- Utility Functions
local function updateStatus(text, color)
    statusLabel.Text = text
    statusLabel.TextColor3 = color or Color3.fromRGB(255, 255, 255)
    print("[DaraDownloader] "..text)
end

local function generateFilename(baseName)
    local name = baseName or saveFileNameBox.Text or "script"
    if name == "" then
        name = "script_"..tostring(tick()):sub(-4)
    end
    if not name:match("%.lua$") then
        name = name..".lua"
    end
    return name
end

local function safeWriteFile(filename, content, url)
    local fullPath = workspacePath..filename
    local withMetadata = string.format(METADATA_TEMPLATE, os.date("%Y-%m-%d %H:%M:%S"), url or "manual", filename).."\n"..content
    
    local success, result = pcall(function()
        writefile(fullPath, withMetadata)
    end)
    if success then
        updateStatus("✓Saved:"..filename, Color3.fromRGB(0, 255, 0))
        return true
    else
        updateStatus("✗Write failed:"..tostring(result), Color3.fromRGB(255, 0, 0))
        return false
    end
end

local function safeReadFile(filename)
    local fullPath = workspacePath..filename
    local success, result = pcall(function()
        return readfile(fullPath)
    end)
    if success then
        -- Remove metadata header for execution
        local content = result:gsub(METADATA_TEMPLATE:gsub("%%s", ".+"), "")
        return content
    else
        updateStatus("✗Read failed:"..tostring(result), Color3.fromRGB(255, 0, 0))
        return nil
    end
end

local function safeExecute(content, autoSave, url, filename)
    local success, result = pcall(function()
        local func = loadstring(content)
        if func then
            func()
            return true
        end
    end)
    
    if success and result then
        if autoSave then
            local saveName = filename or generateFilename()
            safeWriteFile(saveName, content, url or "loadstring_auto")
        end
        updateStatus("✓Executed successfully!"..(autoSave and "(Auto-saved)" or ""), Color3.fromRGB(0, 255, 0))
        return true
    else
        updateStatus("✗Execution error:"..tostring(result), Color3.fromRGB(255, 0, 0))
        return false
    end
end

local function loadFromUrl(url)
    if not string.find(url, "http") then
        updateStatus("❌Invalid URL!", Color3.fromRGB(255, 0, 0))
        return nil
    end
    
    updateStatus("⬇️Downloading from URL...", Color3.fromRGB(255, 255, 0))
    
    local success, result = pcall(function()
        return game:HttpGet(url)
    end)
    
    if success and result and result ~= "" then
        updateStatus("✓Downloaded successfully", Color3.fromRGB(0, 255, 0))
        return result
    else
        updateStatus("❌Download failed:"..tostring(result), Color3.fromRGB(255, 0, 0))
        return nil
    end
end

local function showContextMenu(position, fileName)
    contextMenuFile = fileName
    contextMenu.Position = UDim2.new(0, position.X, 0, position.Y)
    contextMenu.Visible = true
end

local function hideContextMenu()
    contextMenu.Visible = false
end

local function showDeleteWarning(filename, callback)
    local popup = Instance.new("Frame")
    popup.Size = UDim2.new(0.4, 0, 0.2, 0)
    popup.Position = UDim2.new(0.3, 0, 0.4, 0)
    popup.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    popup.BorderSizePixel = 2
    popup.BorderColor3 = Color3.fromRGB(255, 50, 50)
    popup.ZIndex = 20
    popup.Parent = screenGui
    
    local popupCorner = Instance.new("UICorner")
    popupCorner.CornerRadius = UDim.new(0, 8)
    popupCorner.Parent = popup

    local titleR = Instance.new("TextLabel")
    titleR.Size = UDim2.new(1, 0, 0, 30)
    titleR.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
    titleR.Text = "⚠️Delete File"
    titleR.TextColor3 = Color3.fromRGB(255, 255, 255)
    titleR.TextScaled = true
    titleR.Font = Enum.Font.SourceSansBold
    titleR.ZIndex = 21
    titleR.Parent = popup
    
    local titleCorner = Instance.new("UICorner")
    titleCorner.CornerRadius = UDim.new(0, 8)
    titleCorner.Parent = titleR

    local closeR = Instance.new("TextButton")
    closeR.Size = UDim2.new(0, 30, 0, 30)
    closeR.Position = UDim2.new(1, -30, 0, 0)
    closeR.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
    closeR.Text = "X"
    closeR.TextColor3 = Color3.fromRGB(255, 255, 255)
    closeR.TextScaled = true
    closeR.ZIndex = 21
    closeR.Parent = titleR
    
    local closeCorner = Instance.new("UICorner")
    closeCorner.CornerRadius = UDim.new(0, 6)
    closeCorner.Parent = closeR

    closeR.MouseButton1Click:Connect(function()
        popup:Destroy()
    end)

    local warningLabel = Instance.new("TextLabel")
    warningLabel.Size = UDim2.new(1, -20, 0, 40)
    warningLabel.Position = UDim2.new(0, 10, 0, 35)
    warningLabel.BackgroundTransparency = 1
    warningLabel.Text = "Delete "..filename.."?\nThis action cannot be undone!"
    warningLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    warningLabel.TextSize = 14
    warningLabel.TextWrapped = true
    warningLabel.ZIndex = 21
    warningLabel.Parent = popup

    local deleteBtn = Instance.new("TextButton")
    deleteBtn.Size = UDim2.new(0.45, 0, 0, 30)
    deleteBtn.Position = UDim2.new(0.05, 0, 0, 80)
    deleteBtn.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
    deleteBtn.Text = "DELETE"
    deleteBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    deleteBtn.TextScaled = true
    deleteBtn.ZIndex = 21
    deleteBtn.Font = Enum.Font.SourceSansBold
    deleteBtn.Parent = popup
    
    local deleteCorner = Instance.new("UICorner")
    deleteCorner.CornerRadius = UDim.new(0, 4)
    deleteCorner.Parent = deleteBtn

    deleteBtn.MouseButton1Click:Connect(function()
        popup:Destroy()
        callback()
    end)

    local cancelBtn = Instance.new("TextButton")
    cancelBtn.Size = UDim2.new(0.45, 0, 0, 30)
    cancelBtn.Position = UDim2.new(0.5, 0, 0, 80)
    cancelBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
    cancelBtn.Text = "Cancel"
    cancelBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    cancelBtn.TextScaled = true
    cancelBtn.ZIndex = 21
    cancelBtn.Font = Enum.Font.SourceSansBold
    cancelBtn.Parent = popup
    
    local cancelCorner = Instance.new("UICorner")
    cancelCorner.CornerRadius = UDim.new(0, 4)
    cancelCorner.Parent = cancelBtn

    cancelBtn.MouseButton1Click:Connect(function()
        popup:Destroy()
    end)
end

local function refreshFileList()
    for _, child in pairs(filesFrame:GetChildren()) do
        if child:IsA("TextButton") then
            child:Destroy()
        end
    end
    
    local success, files = pcall(function()
        if isfolder(FOLDER_NAME) then
            return listfiles(FOLDER_NAME)
        else
            return {}
        end
    end)
    
    if success and files then
        for i, filePath in ipairs(files) do
            local fileName = filePath:match("([^/\\]+)$")
            if fileName:match("%.lua$") then
                -- Use TextButton for the entire file item
                local fileItem = Instance.new("TextButton")
                fileItem.Size = UDim2.new(1, 0, 0, 30)
                fileItem.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
                fileItem.Text = ""
                fileItem.AutoButtonColor = false
                fileItem.Parent = filesFrame
                
                local itemCorner = Instance.new("UICorner")
                itemCorner.CornerRadius = UDim.new(0, 4)
                itemCorner.Parent = fileItem
                
                -- File name label (non-interactive)
                local fileNameLabel = Instance.new("TextLabel")
                fileNameLabel.Size = UDim2.new(0.7, 0, 1, 0)
                fileNameLabel.BackgroundTransparency = 1
                fileNameLabel.Text = "📄"..fileName
                fileNameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
                fileNameLabel.TextSize = 12
                fileNameLabel.TextXAlignment = Enum.TextXAlignment.Left
                fileNameLabel.Font = Enum.Font.SourceSans
                fileNameLabel.Parent = fileItem
                
                -- Execute button
                local executeButton = Instance.new("TextButton")
                executeButton.Size = UDim2.new(0.15, 0, 1, 0)
                executeButton.Position = UDim2.new(0.7, 0, 0, 0)
                executeButton.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
                executeButton.Text = "▶️"
                executeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
                executeButton.TextScaled = true
                executeButton.Font = Enum.Font.SourceSansBold
                executeButton.AutoButtonColor = false
                executeButton.Parent = fileItem
                
                local execCorner = Instance.new("UICorner")
                execCorner.CornerRadius = UDim.new(0, 4)
                execCorner.Parent = executeButton
                
                executeButton.MouseButton1Click:Connect(function()
                    local content = safeReadFile(fileName)
                    if content then
                        safeExecute(content, false)
                    end
                end)
                
                local menuButton = Instance.new("TextButton")
                menuButton.Size = UDim2.new(0.15, 0, 1, 0)
                menuButton.Position = UDim2.new(0.85, 0, 0, 0)
                menuButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
                menuButton.Text = "..."
                menuButton.TextColor3 = Color3.fromRGB(255, 255, 255)
                menuButton.TextSize = 14
                menuButton.Font = Enum.Font.SourceSansBold
                menuButton.AutoButtonColor = false
                menuButton.Parent = fileItem
                
                local menuCorner = Instance.new("UICorner")
                menuCorner.CornerRadius = UDim.new(0, 4)
                menuCorner.Parent = menuButton
                
                -- File selection - click on the entire item
                fileItem.MouseButton1Click:Connect(function()
                    selectedFile = fileName
                    saveFileNameBox.Text = fileName
                    updateStatus("Selected:"..fileName, Color3.fromRGB(0, 255, 0))
                end)
                
                -- Context menu
                menuButton.MouseButton1Click:Connect(function()
                    local absolutePosition = menuButton.AbsolutePosition
                    local absoluteSize = menuButton.AbsoluteSize
                    showContextMenu(
                        Vector2.new(absolutePosition.X, absolutePosition.Y + absoluteSize.Y),
                        fileName
                    )
                end)
                
                -- Right click to execute on the entire file item
                fileItem.MouseButton2Click:Connect(function()
                    local content = safeReadFile(fileName)
                    if content then
                        safeExecute(content, false)
                    end
                end)
            end
        end
    end
end

local function duplicateFile(filename)
    if not filename or filename == "" then return end
    
    local content = safeReadFile(filename)
    if not content then return end
    
    local newName = filename:gsub("%.lua$", "_copy.lua")
    if safeWriteFile(newName, content, "duplicate") then
        refreshFileList()
        updateStatus("📋Duplicated:"..newName, Color3.fromRGB(0, 255, 0))
    end
end

local function editFile(filename)
    if not filename or filename == "" then return end
    
    local content = safeReadFile(filename)
    if content then
        saveCodeBox.Text = content
        saveFileNameBox.Text = filename
        -- Switch to SaveScripts tab by manually triggering the tab switch
        for name, tabData in pairs(tabContents) do
            tabData.content.Visible = false
            tabData.button.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
            tabData.button.TextColor3 = Color3.fromRGB(200, 200, 200)
        end
        saveScriptsTab.Visible = true
        tabContents["SaveScripts"].button.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
        tabContents["SaveScripts"].button.TextColor3 = Color3.fromRGB(255, 255, 255)
        currentTab = "SaveScripts"
        updateStatus("✏️Editing:"..filename, Color3.fromRGB(0, 255, 0))
    end
end

-- Context Menu Events
viewContextBtn.MouseButton1Click:Connect(function()
    if contextMenuFile == "" then return end
    
    local content = safeReadFile(contextMenuFile)
    if content then
        -- Create a popup to view the script
        local viewPopup = Instance.new("Frame")
        viewPopup.Size = UDim2.new(0.8, 0, 0.8, 0)
        viewPopup.Position = UDim2.new(0.1, 0, 0.1, 0)
        viewPopup.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
        viewPopup.BorderSizePixel = 2
        viewPopup.BorderColor3 = Color3.fromRGB(0, 120, 255)
        viewPopup.ZIndex = 20
        viewPopup.Parent = screenGui
        
        local popupCorner = Instance.new("UICorner")
        popupCorner.CornerRadius = UDim.new(0, 8)
        popupCorner.Parent = viewPopup

        local titleR = Instance.new("TextLabel")
        titleR.Size = UDim2.new(1, 0, 0, 30)
        titleR.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
        titleR.Text = "👁️Viewing:"..contextMenuFile
        titleR.TextColor3 = Color3.fromRGB(255, 255, 255)
        titleR.TextScaled = true
        titleR.Font = Enum.Font.SourceSansBold
        titleR.ZIndex = 21
        titleR.Parent = viewPopup
        
        local titleCorner = Instance.new("UICorner")
        titleCorner.CornerRadius = UDim.new(0, 8)
        titleCorner.Parent = titleR

        local closeR = Instance.new("TextButton")
        closeR.Size = UDim2.new(0, 30, 0, 30)
        closeR.Position = UDim2.new(1, -30, 0, 0)
        closeR.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
        closeR.Text = "X"
        closeR.TextColor3 = Color3.fromRGB(255, 255, 255)
        closeR.TextScaled = true
        closeR.ZIndex = 21
        closeR.Parent = titleR
        
        local closeCorner = Instance.new("UICorner")
        closeCorner.CornerRadius = UDim.new(0, 6)
        closeCorner.Parent = closeR

        closeR.MouseButton1Click:Connect(function()
            viewPopup:Destroy()
        end)

        local contentBox = Instance.new("ScrollingFrame")
        contentBox.Size = UDim2.new(1, -20, 1, -40)
        contentBox.Position = UDim2.new(0, 10, 0, 35)
        contentBox.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
        contentBox.ScrollBarThickness = 8
        contentBox.ZIndex = 21
        contentBox.Parent = viewPopup
        
        local contentCorner = Instance.new("UICorner")
        contentCorner.CornerRadius = UDim.new(0, 4)
        contentCorner.Parent = contentBox

        local codeText = Instance.new("TextLabel")
        codeText.Size = UDim2.new(1, -10, 1, -10)
        codeText.Position = UDim2.new(0, 5, 0, 5)
        codeText.BackgroundTransparency = 1
        codeText.Text = content
        codeText.TextColor3 = Color3.fromRGB(255, 255, 255)
        codeText.TextSize = 12
        codeText.TextXAlignment = Enum.TextXAlignment.Left
        codeText.TextYAlignment = Enum.TextYAlignment.Top
        codeText.TextWrapped = true
        codeText.Font = Enum.Font.Code
        codeText.ZIndex = 22
        codeText.Parent = contentBox
    end
    hideContextMenu()
end)

editContextBtn.MouseButton1Click:Connect(function()
    if contextMenuFile == "" then return end
    editFile(contextMenuFile)
    hideContextMenu()
end)

duplicateContextBtn.MouseButton1Click:Connect(function()
    if contextMenuFile == "" then return end
    duplicateFile(contextMenuFile)
    hideContextMenu()
end)

renameContextBtn.MouseButton1Click:Connect(function()
    if contextMenuFile == "" then return end
    
    local popup = Instance.new("Frame")
    popup.Size = UDim2.new(0.4, 0, 0.2, 0)
    popup.Position = UDim2.new(0.3, 0, 0.4, 0)
    popup.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    popup.BorderSizePixel = 2
    popup.BorderColor3 = Color3.fromRGB(0, 120, 255)
    popup.ZIndex = 20
    popup.Parent = screenGui
    
    local popupCorner = Instance.new("UICorner")
    popupCorner.CornerRadius = UDim.new(0, 8)
    popupCorner.Parent = popup

    local titleR = Instance.new("TextLabel")
    titleR.Size = UDim2.new(1, 0, 0, 30)
    titleR.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
    titleR.Text = "Rename:"..contextMenuFile
    titleR.TextColor3 = Color3.fromRGB(255, 255, 255)
    titleR.TextScaled = true
    titleR.Font = Enum.Font.SourceSansBold
    titleR.ZIndex = 21
    titleR.Parent = popup
    
    local titleCorner = Instance.new("UICorner")
    titleCorner.CornerRadius = UDim.new(0, 8)
    titleCorner.Parent = titleR

    local closeR = Instance.new("TextButton")
    closeR.Size = UDim2.new(0, 30, 0, 30)
    closeR.Position = UDim2.new(1, -30, 0, 0)
    closeR.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
    closeR.Text = "X"
    closeR.TextColor3 = Color3.fromRGB(255, 255, 255)
    closeR.TextScaled = true
    closeR.ZIndex = 21
    closeR.Parent = titleR
    
    local closeCorner = Instance.new("UICorner")
    closeCorner.CornerRadius = UDim.new(0, 6)
    closeCorner.Parent = closeR

    closeR.MouseButton1Click:Connect(function()
        popup:Destroy()
        hideContextMenu()
    end)

    local newNameBox = Instance.new("TextBox")
    newNameBox.Size = UDim2.new(1, -20, 0, 30)
    newNameBox.Position = UDim2.new(0, 10, 0, 40)
    newNameBox.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
    newNameBox.Text = contextMenuFile
    newNameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
    newNameBox.TextSize = 14
    newNameBox.Font = Enum.Font.SourceSans
    newNameBox.ClearTextOnFocus = false
    newNameBox.ZIndex = 21
    newNameBox.Parent = popup
    
    local nameBoxCorner = Instance.new("UICorner")
    nameBoxCorner.CornerRadius = UDim.new(0, 4)
    nameBoxCorner.Parent = newNameBox

    local okBtn = Instance.new("TextButton")
    okBtn.Size = UDim2.new(0.45, 0, 0, 30)
    okBtn.Position = UDim2.new(0.05, 0, 0, 80)
    okBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
    okBtn.Text = "OK"
    okBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    okBtn.TextScaled = true
    okBtn.ZIndex = 21
    okBtn.Font = Enum.Font.SourceSansBold
    okBtn.Parent = popup
    
    local okCorner = Instance.new("UICorner")
    okCorner.CornerRadius = UDim.new(0, 4)
    okCorner.Parent = okBtn

    okBtn.MouseButton1Click:Connect(function()
        local newName = newNameBox.Text
        if newName:match("^%s*$") or newName == contextMenuFile then
            popup:Destroy()
            hideContextMenu()
            return
        end
        if not newName:match("%.lua$") then
            newName = newName..".lua"
        end
        local oldPath = workspacePath..contextMenuFile
        local newPath = workspacePath..newName
        local success1, fullContent = pcall(readfile, oldPath)
        if not success1 then
            updateStatus("✗Read failed during rename!", Color3.fromRGB(255, 0, 0))
            popup:Destroy()
            hideContextMenu()
            return
        end
        local updated = fullContent:gsub("-- Filename: [^%s]+", "-- Filename: "..newName)
        local success2 = pcall(writefile, newPath, updated)
        local success3 = pcall(delfile, oldPath)
        if success2 and success3 then
            updateStatus("✏️Renamed to:"..newName, Color3.fromRGB(0, 255, 0))
            refreshFileList()
        else
            updateStatus("✗Rename failed!", Color3.fromRGB(255, 0, 0))
        end
        popup:Destroy()
        hideContextMenu()
    end)

    local cancelBtn = Instance.new("TextButton")
    cancelBtn.Size = UDim2.new(0.45, 0, 0, 30)
    cancelBtn.Position = UDim2.new(0.5, 0, 0, 80)
    cancelBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
    cancelBtn.Text = "Cancel"
    cancelBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    cancelBtn.TextScaled = true
    cancelBtn.ZIndex = 21
    cancelBtn.Font = Enum.Font.SourceSansBold
    cancelBtn.Parent = popup
    
    local cancelCorner = Instance.new("UICorner")
    cancelCorner.CornerRadius = UDim.new(0, 4)
    cancelCorner.Parent = cancelBtn

    cancelBtn.MouseButton1Click:Connect(function()
        popup:Destroy()
        hideContextMenu()
    end)
end)

deleteContextBtn.MouseButton1Click:Connect(function()
    if contextMenuFile == "" then return end
    
    showDeleteWarning(contextMenuFile, function()
        local fullPath = workspacePath..contextMenuFile
        local success = pcall(function()
            delfile(fullPath)
        end)
        if success then
            updateStatus("🗑️Deleted:"..contextMenuFile, Color3.fromRGB(0, 255, 0))
            refreshFileList()
        else
            updateStatus("✗Delete failed!", Color3.fromRGB(255, 0, 0))
        end
    end)
    hideContextMenu()
end)

-- Button Events
-- Executor Tab
executeBtn.MouseButton1Click:Connect(function()
    local input = executorInputBox.Text
    if input == "" then
        updateStatus("❌No script to execute!", Color3.fromRGB(255, 0, 0))
        return
    end
    
    -- Check if input is a URL
    if string.find(input, "http") then
        local content = loadFromUrl(input)
        if content then
            safeExecute(content, true, input)
        end
    else
        -- Execute as direct code
        safeExecute(input, false)
    end
end)

loadFromLinkBtn.MouseButton1Click:Connect(function()
    local input = executorInputBox.Text
    if not string.find(input, "http") then
        updateStatus("❌Not a valid URL!", Color3.fromRGB(255, 0, 0))
        return
    end
    
    local content = loadFromUrl(input)
    if content then
        executorInputBox.Text = content
        safeExecute(content, true, input)
    end
end)

-- Save Scripts Tab
saveUrlBtn.MouseButton1Click:Connect(function()
    local url = saveUrlBox.Text
    local filename = generateFilename()
    
    local content = loadFromUrl(url)
    if content then
        if safeWriteFile(filename, content, url) then
            saveFileNameBox.Text = filename
            refreshFileList()
        end
    end
end)

saveCodeBtn.MouseButton1Click:Connect(function()
    local code = saveCodeBox.Text
    local filename = generateFilename()
    
    if code == "" then
        updateStatus("❌No code to save!", Color3.fromRGB(255, 0, 0))
        return
    end
    
    if safeWriteFile(filename, code, "manual_input") then
        saveFileNameBox.Text = filename
        refreshFileList()
    end
end)

-- Minimize functionality
minimizeBtn.MouseButton1Click:Connect(function()
    if isMinimized then
        -- Restore
        mainFrame.Size = UDim2.new(0, 450, 0, 400)
        mainFrame.Position = UDim2.new(0.5, -225, 0.5, -200)
        contentFrame.Visible = true
        tabsContainer.Visible = true
        statusBar.Visible = true
        isMinimized = false
    else
        -- Minimize
        mainFrame.Size = UDim2.new(0, 450, 0, 35)
        mainFrame.Position = UDim2.new(0.5, -225, 0, 10)
        contentFrame.Visible = false
        tabsContainer.Visible = false
        statusBar.Visible = false
        isMinimized = true
    end
end)

-- Close context menu when clicking elsewhere
UserInputService.InputBegan:Connect(function(input, processed)
    if processed then return end
    
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        if contextMenu.Visible then
            local mousePos = input.Position
            local contextMenuPos = contextMenu.AbsolutePosition
            local contextMenuSize = contextMenu.AbsoluteSize
            
            if mousePos.X < contextMenuPos.X or mousePos.X > contextMenuPos.X + contextMenuSize.X or
               mousePos.Y < contextMenuPos.Y or mousePos.Y > contextMenuPos.Y + contextMenuSize.Y then
                hideContextMenu()
            end
        end
    end
end)

closeBtn.MouseButton1Click:Connect(function()
    screenGui:Destroy()
end)

-- Hotkeys
UserInputService.InputBegan:Connect(function(input, processed)
    if processed then return end
    
    if input.KeyCode == Enum.KeyCode.F1 then
        saveUrlBtn.MouseButton1Click:Fire()
    elseif input.KeyCode == Enum.KeyCode.F2 then
        executeBtn.MouseButton1Click:Fire()
    elseif input.KeyCode == Enum.KeyCode.F3 then
        loadFromLinkBtn.MouseButton1Click:Fire()
    elseif input.KeyCode == Enum.KeyCode.F5 then
        refreshFileList()
    end
end)

-- Auto-refresh file list
spawn(function()
    while screenGui.Parent do
        wait(5)
        refreshFileList()
    end
end)

-- Initial setup
updateStatus("🚀Ready!F1=SaveFromURL,F2=Execute,F3=Load&Run,F5=Refresh", Color3.fromRGB(0, 255, 0))
refreshFileList()
print("DaraFileDownloader loaded in folder: "..workspacePath)

Features & Information

Allow to save any file by pasting url via Roblox (Don't ever think it's always working lol, some website are having high protections)
#Ai generated code

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts