--[[ 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)