local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local backpack = player:WaitForChild("Backpack") -- Create a folder to store our saved tools (persists through respawns) local toolStorage = Instance.new("Folder") toolStorage.Name = "HaidarEXE_ToolStorage" toolStorage.Parent = ReplicatedStorage -- GUI Setup local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "ToolCopyGUI" ScreenGui.ResetOnSpawn = false -- This keeps the GUI after respawning ScreenGui.Parent = player:WaitForChild("PlayerGui") local MainFrame = Instance.new("Frame") local TitleLabel = Instance.new("TextLabel") local MinimizeButton = Instance.new("TextButton") local RestoreButton = Instance.new("TextButton") local CopyButton = Instance.new("TextButton") local PasteButton = Instance.new("TextButton") local StatusLabel = Instance.new("TextLabel") -- Main Frame (230x180 with rounded corners) MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 230, 0, 180) MainFrame.Position = UDim2.new(0, 15, 0, 15) MainFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) MainFrame.BackgroundTransparency = 0.1 MainFrame.BorderSizePixel = 0 MainFrame.Parent = ScreenGui MainFrame.Active = true -- Add rounded corners local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = MainFrame -- Title Label TitleLabel.Name = "TitleLabel" TitleLabel.Size = UDim2.new(1, -40, 0, 20) TitleLabel.Position = UDim2.new(0, 10, 0, 8) TitleLabel.Text = "Tool Copy GUI BY HaidarEXE" TitleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) TitleLabel.BackgroundTransparency = 1 TitleLabel.Font = Enum.Font.SourceSansBold TitleLabel.TextSize = 15 TitleLabel.TextXAlignment = Enum.TextXAlignment.Left TitleLabel.Parent = MainFrame -- Minimize Button (-) MinimizeButton.Name = "MinimizeButton" MinimizeButton.Size = UDim2.new(0, 25, 0, 25) MinimizeButton.Position = UDim2.new(1, -30, 0, 5) MinimizeButton.Text = "-" MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255) MinimizeButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) MinimizeButton.BorderSizePixel = 0 MinimizeButton.Parent = MainFrame -- Copy Button CopyButton.Name = "CopyButton" CopyButton.Size = UDim2.new(1, -20, 0, 35) CopyButton.Position = UDim2.new(0, 10, 0, 40) CopyButton.Text = "Copy Current Tool" CopyButton.TextColor3 = Color3.fromRGB(255, 255, 255) CopyButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80) CopyButton.BorderSizePixel = 0 CopyButton.Parent = MainFrame -- Paste Button PasteButton.Name = "PasteButton" PasteButton.Size = UDim2.new(1, -20, 0, 35) PasteButton.Position = UDim2.new(0, 10, 0, 85) PasteButton.Text = "Paste Saved Tool" PasteButton.TextColor3 = Color3.fromRGB(255, 255, 255) PasteButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80) PasteButton.BorderSizePixel = 0 PasteButton.Parent = MainFrame -- Status Label StatusLabel.Name = "StatusLabel" StatusLabel.Size = UDim2.new(1, -20, 0, 20) StatusLabel.Position = UDim2.new(0, 10, 0, 130) StatusLabel.Text = "" StatusLabel.TextColor3 = Color3.fromRGB(255, 255, 255) StatusLabel.TextSize = 12 StatusLabel.BackgroundTransparency = 1 StatusLabel.Parent = MainFrame -- Restore Button RestoreButton.Name = "RestoreButton" RestoreButton.Size = UDim2.new(0, 45, 0, 45) RestoreButton.Position = UDim2.new(0, 15, 0, 15) RestoreButton.Text = "+" RestoreButton.TextColor3 = Color3.fromRGB(255, 255, 255) RestoreButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40) RestoreButton.BorderSizePixel = 0 RestoreButton.Visible = false RestoreButton.Parent = ScreenGui -- Add rounded corners to all elements local function addCorners(instance, radius) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, radius or 6) corner.Parent = instance end addCorners(CopyButton, 8) addCorners(PasteButton, 8) addCorners(MinimizeButton) addCorners(RestoreButton, 8) -- Handle character respawns player.CharacterAdded:Connect(function(newChar) character = newChar backpack = player:WaitForChild("Backpack") end) -- Function to save the currently held tool local function copyCurrentTool() -- Clear old saved tools for _, child in ipairs(toolStorage:GetChildren()) do child:Destroy() end -- Check if character exists and has tools if not character then StatusLabel.Text = "Character not found!" task.delay(2, function() StatusLabel.Text = "" end) return end -- Find all tools in character (including equipped ones) local tools = {} for _, item in ipairs(character:GetDescendants()) do if item:IsA("Tool") then table.insert(tools, item) end end -- Also check backpack for _, item in ipairs(backpack:GetChildren()) do if item:IsA("Tool") then table.insert(tools, item) end end if #tools == 0 then StatusLabel.Text = "No tools found!" task.delay(2, function() StatusLabel.Text = "" end) return end -- Try to find the equipped tool first local humanoid = character:FindFirstChildOfClass("Humanoid") local equippedTool = humanoid and humanoid:FindFirstChildOfClass("Tool") -- If no equipped tool, use the first tool found local toolToCopy = equippedTool or tools[1] -- Clone the tool to storage local savedTool = toolToCopy:Clone() savedTool.Parent = toolStorage if savedTool:FindFirstChild("Handle") then savedTool.Handle.Anchored = true savedTool.Handle.CanCollide = false end StatusLabel.Text = "Copied: "..toolToCopy.Name task.delay(2, function() StatusLabel.Text = "" end) end -- Function to paste the saved tool local function pasteSavedTool() -- Check if we have a saved tool local savedTool = toolStorage:FindFirstChildOfClass("Tool") if not savedTool then StatusLabel.Text = "No tool copied yet!" task.delay(2, function() StatusLabel.Text = "" end) return end -- Create a new copy of the tool local newTool = savedTool:Clone() if newTool:FindFirstChild("Handle") then newTool.Handle.Anchored = false newTool.Handle.CanCollide = true end newTool.Parent = backpack StatusLabel.Text = "Pasted: "..savedTool.Name task.delay(2, function() StatusLabel.Text = "" end) end -- Button connections CopyButton.MouseButton1Click:Connect(copyCurrentTool) PasteButton.MouseButton1Click:Connect(pasteSavedTool) -- Dragging Function local function makeDraggable(gui) local dragging local dragInput local dragStart local startPos local function update(input) local delta = input.Position - dragStart gui.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end gui.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = gui.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) gui.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end) end -- Make both frames draggable makeDraggable(MainFrame) makeDraggable(RestoreButton) -- Minimize/Restore functionality MinimizeButton.MouseButton1Click:Connect(function() MainFrame.Visible = false RestoreButton.Visible = true end) RestoreButton.MouseButton1Click:Connect(function() MainFrame.Visible = true RestoreButton.Visible = false end)