local lastDupeTime = 0

MainTab:CreateButton({
    Name = "Trunk Dupe",
    Callback = function()
        local currentTime = tick()

        if currentTime - lastDupeTime < 30 then
            Rayfield:Notify({
                Title = "Wait!",
                Content = string.format("Cooldown: %.0f seconds left", 30 - (currentTime - lastDupeTime)),
                Duration = 3
            })
            return
        end

        Rayfield:Notify({
            Title = "Dupe Started!",
            Content = "Starting...",
            Duration = 3,
            Image = 4483345998,
        })

        local connection
        connection = game:GetService("RunService").RenderStepped:Connect(function()
            for _, gui in pairs(game.Players.LocalPlayer.PlayerGui:GetChildren()) do
                if gui:IsA("ScreenGui") then
                    for _, obj in pairs(gui:GetDescendants()) do
                        if obj:IsA("TextLabel") or obj:IsA("TextButton") then
                            local text = obj.Text:gsub("%s+", " "):lower()
                            if text:match("can't access safe!") then
                                obj:Destroy()
                            end
                        end
                    end
                end
            end
        end)

        local ReplicatedStorage = cloneref(game:GetService("ReplicatedStorage"))
        local Players = cloneref(game:GetService("Players"))
        local InventoryRemote = ReplicatedStorage:WaitForChild("Inventory")
        local BackpackRemote = ReplicatedStorage:WaitForChild("BackpackRemote")
        local TrunkStorage = ReplicatedStorage:WaitForChild("TrunkStorage")

        local character = Players.LocalPlayer.Character
        if character and character:FindFirstChildOfClass("Tool") then
            local gunTool = character:FindFirstChildOfClass("Tool")
            local gunName = gunTool.Name

            local humanoid = character:FindFirstChildOfClass("Humanoid")
            if humanoid then humanoid:UnequipTools() end

            local car = getcar()
            if not car or not car:FindFirstChild("Body") or not car.Body:FindFirstChild("TrunckStorage") then
                if connection then connection:Disconnect() end
                return Rayfield:Notify({
                    Title = "Error",
                    Content = "No Car Found",
                    Duration = 5
                })
            end

            local pos = car.Body.TrunckStorage.Position
            teleport(pos.X, pos.Y, pos.Z)

            task.wait(0.5)
            task.spawn(function() BackpackRemote:InvokeServer("Store", gunName) end)
            task.spawn(function() TrunkStorage:FireServer("Store", gunName) end)

            task.wait(0.5)
            task.spawn(function()
                InventoryRemote:FireServer("Change", gunName, "Backpack", nil)
            end)

            task.wait(1.5)
            BackpackRemote:InvokeServer("Grab", gunName)
            task.wait(0.5)

            lastDupeTime = tick()

            Rayfield:Notify({
                Title = "Dupe Finished!",
                Content = "Tool has been duped successfully!",
                Duration = 5,
                Image = 4483345998,
            })
        else
            Rayfield:Notify({
                Title = "Tool Not Found",
                Content = "You must equip a Tool before duping",
                Duration = 5
            })
        end

        if connection then connection:Disconnect() end
    end
})

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: