Roblox script

Starving Artists Script

Starving Artists is a simulator where the progression wall hits hard the further you get into the game. The numbers keep going up but the core loop stays the same, and grinding through it session after session burns people out fast. These scripts break through the wall with Pastebin running automatically so your stats and resources keep climbing on their own.

Pastebin
2 scripts1 no keyTested November 2026
Starving Artists Script2 working scripts
What you get
1 no key0 key needed1 other
Fastest start, no keyScript 1
local collectionService = game:GetService("CollectionService")
local player = game.Players.LocalPlayer
_G.refreshing = true
local cloneGui = {}

function cloneGui.buildRoot()
   local paintFrame = player.PlayerGui.MainGui.PaintFrame
   local cloneFrame = paintFrame:Clone()
   
   -- Initialize root frame.
   cloneFrame.Name = 'CloneFrame'
   cloneFrame.Parent = paintFrame
   cloneFrame.ToolsFrame:Destroy()
   cloneFrame.ColorFrame:Destroy()
   cloneFrame.NextButton:Destroy()
   cloneFrame.UIAspectRatioConstraint:Destroy()
   cloneFrame.Grid:Destroy()
   cloneFrame.Confirmation:Destroy()
   cloneFrame.AnchorPoint = Vector2.new(0, 0.5)
   cloneFrame.Position = UDim2.new(1, 10, 0.5, 0)
   cloneFrame.Size = UDim2.new(0.5, 0, 1, 0)
   cloneFrame.Visible = true
   
   paintFrame.Position = UDim2.new(0.5, -((cloneFrame.AbsoluteSize.X / 2) + 5), 0.5, 0)
   
   cloneGui.root = cloneFrame
end

function cloneGui.buildButtons()
   local nextButton = player.PlayerGui.MainGui.PaintFrame.NextButton
   local copyButton = nextButton:Clone()
   local cloneButton = nextButton:Clone()
   local buttonSize = UDim2.new(0.4, 0, 0.09, 0)
   
   -- Initialize copy button.
   copyButton.Parent = cloneGui.root
   copyButton.Size = buttonSize
   copyButton.Position = UDim2.new(0.28, 0, 0.895)
   copyButton.Label.Text = 'COPY'
   copyButton.Name = 'CopyButton'
   
   -- Initialize clone button.
   cloneButton.Parent = cloneGui.root
   cloneButton.Size = buttonSize
   cloneButton.Position = UDim2.new(0.72, 0, 0.895)
   cloneButton.Label.Text = 'CLONE'
   cloneButton.Name = 'CloneButton'

   -- Animation functions.
   for i, button in pairs({cloneButton, copyButton}) do
       button.MouseEnter:Connect(function()
           button:TweenSize(UDim2.new(buttonSize.X.Scale + 0.015, 0, buttonSize.Y.Scale + 0.015, 0), 'Out', 'Quad', 0.2, true)
       end)
       
       button.MouseLeave:Connect(function()
           button:TweenSize(buttonSize, 'Out', 'Quad', 0.2, true)
       end)
   end
   
   -- Button actions.
   copyButton.MouseButton1Click:Connect(copyGrid)
   
   cloneButton.MouseButton1Click:Connect(cloneGrid)
end

function cloneGui.buildScrollingFrame()
   local scrollingFrame = Instance.new('ScrollingFrame')
   local uiListLayout = Instance.new('UIListLayout')
   local uiPadding = Instance.new('UIPadding')
   
   -- Initialize scrolling frame.
   scrollingFrame.Parent = cloneGui.root
   scrollingFrame.AnchorPoint = Vector2.new(0.5, 0)
   scrollingFrame.Position = UDim2.new(0.5, 0, 0.05, 0)
   scrollingFrame.Size = UDim2.new(0.8, 0, 0.75, 0)
   scrollingFrame.BackgroundTransparency = 1
   scrollingFrame.BorderSizePixel = 0
   scrollingFrame.ScrollBarImageColor3 = Color3.new((210 / 255), (76 / 255), (71 / 255))
   scrollingFrame.ScrollBarThickness = 4
   scrollingFrame.ZIndex = 3
   
   -- Configure layout.
   uiListLayout.Parent = scrollingFrame
   uiListLayout.Padding = UDim.new(0, 10)
   uiPadding.Parent = scrollingFrame
   uiPadding.PaddingLeft = UDim.new(0.08, 0)
   uiPadding.PaddingRight = UDim.new(0.08, 0)
   uiPadding.PaddingTop = UDim.new(0, 5)
   
   uiListLayout.Changed:Connect(function()
       scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y + 10)
   end)
   
   cloneGui.scrollingFrame = scrollingFrame
end

function cloneGui.addGrid(grid)
   local UIStroke = player.PlayerGui.MainGui.PaintFrame.Grid.UIStroke:Clone()
   local container = Instance.new('Frame')
   local preview = grid:Clone()
   
   -- Initialize new container.
   container.Parent = cloneGui.scrollingFrame
   container.Size = UDim2.new(1, 0, 1, 0)
   container.SizeConstraint = Enum.SizeConstraint.RelativeXX
   container.BackgroundTransparency = 0.8
   container.ZIndex = 4
   UIStroke.Thickness = 4.5
   UIStroke.Parent = container
   UIStroke.Enabled = false
   
   -- Clone grid into container.
   preview.Parent = container
   
   if (cloneGui.selected == nil) then
       cloneGui.selected = container
       UIStroke.Enabled = true
   end
   
   container.InputBegan:Connect(function(userInput)
       if (userInput.UserInputType == Enum.UserInputType.MouseButton1) then
           cloneGui.selected.UIStroke.Enabled = false
           UIStroke.Enabled = true
           cloneGui.selected = container
       end
   end)
end

function copyGrid()
   if (cloneGui.selected ~= nil) then
       local target = cloneGui.selected.Grid
       local destination = player.PlayerGui.MainGui.PaintFrame.Grid
       
       for i = 1, 1024 do
           destination[i].BackgroundColor3 = target[i].BackgroundColor3
       end
   end
end

function cloneGrid()
   local remote = game.ReplicatedStorage.Remotes.CreateArt
   local frameColor = "ffffff"
   local frame = "Starter Frame"
   local name = "a"
   local cells = {}
   
   local grid = cloneGui.selected.Grid
   for i = 1, 1024 do
      cells[i] = grid[i].BackgroundColor3:ToHex()
   end
 
   local payload = {}
   payload["FrameColor"] = frameColor
   payload["Frame"] = frame
   payload["Name"] = name
   payload["Cells"] = cells
   
   remote:InvokeServer(payload)
end

function refreshGrids()
   local objects = game.Workspace.Plots:GetDescendants()
   for i, v in ipairs(objects) do
       if (v.Name == 'Grid' and v.ClassName == 'Frame' and not collectionService:HasTag(v, 'cloned')) then
           if (#v:GetChildren() == 1027) then
               collectionService:AddTag(v, 'cloned')
               cloneGui.addGrid(v)
           end
       end
   end
end

cloneGui.buildRoot()
cloneGui.buildButtons()
cloneGui.buildScrollingFrame()

while (_G.refreshing) do
   refreshGrids()
   wait(0.1)
end

Starving Artists Scripts (Pastebin & More)

To run any of these scripts you will need a working Roblox executor. Check out the list at that link for free and paid options that work in 2026.

Script 1No key

Starving Artists Script 4:

Starving Artists Script Pastebin2026 :

Pastebin
local collectionService = game:GetService("CollectionService")
local player = game.Players.LocalPlayer
_G.refreshing = true
local cloneGui = {}

function cloneGui.buildRoot()
   local paintFrame = player.PlayerGui.MainGui.PaintFrame
   local cloneFrame = paintFrame:Clone()
   
   -- Initialize root frame.
   cloneFrame.Name = 'CloneFrame'
   cloneFrame.Parent = paintFrame
   cloneFrame.ToolsFrame:Destroy()
   cloneFrame.ColorFrame:Destroy()
   cloneFrame.NextButton:Destroy()
   cloneFrame.UIAspectRatioConstraint:Destroy()
   cloneFrame.Grid:Destroy()
   cloneFrame.Confirmation:Destroy()
   cloneFrame.AnchorPoint = Vector2.new(0, 0.5)
   cloneFrame.Position = UDim2.new(1, 10, 0.5, 0)
   cloneFrame.Size = UDim2.new(0.5, 0, 1, 0)
   cloneFrame.Visible = true
   
   paintFrame.Position = UDim2.new(0.5, -((cloneFrame.AbsoluteSize.X / 2) + 5), 0.5, 0)
   
   cloneGui.root = cloneFrame
end

function cloneGui.buildButtons()
   local nextButton = player.PlayerGui.MainGui.PaintFrame.NextButton
   local copyButton = nextButton:Clone()
   local cloneButton = nextButton:Clone()
   local buttonSize = UDim2.new(0.4, 0, 0.09, 0)
   
   -- Initialize copy button.
   copyButton.Parent = cloneGui.root
   copyButton.Size = buttonSize
   copyButton.Position = UDim2.new(0.28, 0, 0.895)
   copyButton.Label.Text = 'COPY'
   copyButton.Name = 'CopyButton'
   
   -- Initialize clone button.
   cloneButton.Parent = cloneGui.root
   cloneButton.Size = buttonSize
   cloneButton.Position = UDim2.new(0.72, 0, 0.895)
   cloneButton.Label.Text = 'CLONE'
   cloneButton.Name = 'CloneButton'

   -- Animation functions.
   for i, button in pairs({cloneButton, copyButton}) do
       button.MouseEnter:Connect(function()
           button:TweenSize(UDim2.new(buttonSize.X.Scale + 0.015, 0, buttonSize.Y.Scale + 0.015, 0), 'Out', 'Quad', 0.2, true)
       end)
       
       button.MouseLeave:Connect(function()
           button:TweenSize(buttonSize, 'Out', 'Quad', 0.2, true)
       end)
   end
   
   -- Button actions.
   copyButton.MouseButton1Click:Connect(copyGrid)
   
   cloneButton.MouseButton1Click:Connect(cloneGrid)
end

function cloneGui.buildScrollingFrame()
   local scrollingFrame = Instance.new('ScrollingFrame')
   local uiListLayout = Instance.new('UIListLayout')
   local uiPadding = Instance.new('UIPadding')
   
   -- Initialize scrolling frame.
   scrollingFrame.Parent = cloneGui.root
   scrollingFrame.AnchorPoint = Vector2.new(0.5, 0)
   scrollingFrame.Position = UDim2.new(0.5, 0, 0.05, 0)
   scrollingFrame.Size = UDim2.new(0.8, 0, 0.75, 0)
   scrollingFrame.BackgroundTransparency = 1
   scrollingFrame.BorderSizePixel = 0
   scrollingFrame.ScrollBarImageColor3 = Color3.new((210 / 255), (76 / 255), (71 / 255))
   scrollingFrame.ScrollBarThickness = 4
   scrollingFrame.ZIndex = 3
   
   -- Configure layout.
   uiListLayout.Parent = scrollingFrame
   uiListLayout.Padding = UDim.new(0, 10)
   uiPadding.Parent = scrollingFrame
   uiPadding.PaddingLeft = UDim.new(0.08, 0)
   uiPadding.PaddingRight = UDim.new(0.08, 0)
   uiPadding.PaddingTop = UDim.new(0, 5)
   
   uiListLayout.Changed:Connect(function()
       scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y + 10)
   end)
   
   cloneGui.scrollingFrame = scrollingFrame
end

function cloneGui.addGrid(grid)
   local UIStroke = player.PlayerGui.MainGui.PaintFrame.Grid.UIStroke:Clone()
   local container = Instance.new('Frame')
   local preview = grid:Clone()
   
   -- Initialize new container.
   container.Parent = cloneGui.scrollingFrame
   container.Size = UDim2.new(1, 0, 1, 0)
   container.SizeConstraint = Enum.SizeConstraint.RelativeXX
   container.BackgroundTransparency = 0.8
   container.ZIndex = 4
   UIStroke.Thickness = 4.5
   UIStroke.Parent = container
   UIStroke.Enabled = false
   
   -- Clone grid into container.
   preview.Parent = container
   
   if (cloneGui.selected == nil) then
       cloneGui.selected = container
       UIStroke.Enabled = true
   end
   
   container.InputBegan:Connect(function(userInput)
       if (userInput.UserInputType == Enum.UserInputType.MouseButton1) then
           cloneGui.selected.UIStroke.Enabled = false
           UIStroke.Enabled = true
           cloneGui.selected = container
       end
   end)
end

function copyGrid()
   if (cloneGui.selected ~= nil) then
       local target = cloneGui.selected.Grid
       local destination = player.PlayerGui.MainGui.PaintFrame.Grid
       
       for i = 1, 1024 do
           destination[i].BackgroundColor3 = target[i].BackgroundColor3
       end
   end
end

function cloneGrid()
   local remote = game.ReplicatedStorage.Remotes.CreateArt
   local frameColor = "ffffff"
   local frame = "Starter Frame"
   local name = "a"
   local cells = {}
   
   local grid = cloneGui.selected.Grid
   for i = 1, 1024 do
      cells[i] = grid[i].BackgroundColor3:ToHex()
   end
 
   local payload = {}
   payload["FrameColor"] = frameColor
   payload["Frame"] = frame
   payload["Name"] = name
   payload["Cells"] = cells
   
   remote:InvokeServer(payload)
end

function refreshGrids()
   local objects = game.Workspace.Plots:GetDescendants()
   for i, v in ipairs(objects) do
       if (v.Name == 'Grid' and v.ClassName == 'Frame' and not collectionService:HasTag(v, 'cloned')) then
           if (#v:GetChildren() == 1027) then
               collectionService:AddTag(v, 'cloned')
               cloneGui.addGrid(v)
           end
       end
   end
end

cloneGui.buildRoot()
cloneGui.buildButtons()
cloneGui.buildScrollingFrame()

while (_G.refreshing) do
   refreshGrids()
   wait(0.1)
end
Script 2Protected build

Starving Artists Comet Hub Script:

Starving Artists Comet Hub Script:

Auto DrawScrambled Code
loadstring(game:HttpGet("https://raw.githubusercontent.com/Noxislua/Scripts/refs/heads/main/Starving%20Artist"))()
7 steps

How to Use the Starving Artists Script

Copy a script from the list above first, then follow these in order.

  1. 01

    Get a working executor - see our Roblox Executor list for free options on PC, Mobile, and Mac.

  2. 02

    Launch Roblox and open Starving Artists.

  3. 03

    Open your executor, then click Inject or Attach.

  4. 04

    Copy any script above and paste it into the executor script box.

  5. 05

    Press Execute. The menu will show up in the game.

  6. 06

    Toggle Auto Farm, Speed Hack, ESP and other features from the GUI menu.

  7. 07

    Always use an alt account to protect your main.

Starving Artists Script

About The Starving Artists Script

Starving Artists is a simulator game where the entire loop is built around clicking, collecting, and pushing your numbers higher to unlock the next tier. The early game feels rewarding but the wall between mid and late game upgrades takes a serious amount of grinding to break through.

Auto farm and auto collect scripts are the most useful here since they run the core loop automatically without any input. Most of the options above are keyless and start working the moment you execute them.

Always use an alt account to protect your main from any flags. Check back here after updates since simulator mechanics change often and scripts sometimes need a refresh.

Looking for free rewards? Check out our Starving Artists Codes page for every working code.

The Starving Artists covers the full map layout, ability tiers, and patch history if you want to dig into the mechanics beyond what the script handles.

Disclaimer

All scripts on this page are for educational purposes only. Using scripts in Roblox violates the Roblox Terms of Service and may result in your account being permanently banned or suspended without warning. RobloxDatabase.com is not responsible for any consequences from using these scripts. Always use an alt account, never your main.

More For Starving Artists

Keep exploring

More free stuff for your Roblox account.